Tutorial Arduino: Sensor Sentuh Kapasitif

Hai semua!

Pengajaran ini adalah tutorial yang akan membimbing anda menggunakan sensor sentuh Capacitive dengan Arduino. Sensor kapasitif adalah sejenis sensor sentuhan, yang memerlukan sedikit atau tiada daya untuk diaktifkan.

Dalam Pengajaran ini mengenai pengesan sentuhan kapasitif, saya akan menunjukkan kepada anda:

  • Bagaimana Sensor kapasitif berfungsi
  • Cara menggunakannya dengan Arduino
  • Bagaimana untuk melaksanakannya dalam 3 projek Arduino, yang termasuk dalam Pengajaran ini
  • Cara menggunakan perpustakaan CapSense - yang digunakan dalam dua projek pertama. Saya juga memasukkan kod demo dan penjelasannya untuk perpustakaan CapSense ...

Kemahiran yang diperlukan untuk projek-projek ini adalah minimum:

  • Pengetahuan asas elektronik dan arduino.
  • Pematerian (pilihan)

Oleh itu mari kita mulakan dengan terlebih dahulu mengetahui apa yang sensitif sentuhan ini adalah semua!

Langkah 1: Mengenai Perpustakaan CapSense dan Sensasi Kapasitif ...

Untuk kebanyakan projek-projek berkaitan penderiaan kapasitif, saya menggunakan perpustakaan CapSense. Taman permainan arduino mempunyai penjelasan yang baik mengenai perpustakaan Capsense. Walau bagaimanapun, jika anda seorang pemula di Arduino, saya yakin anda hanya akan memahami separuh daripada apa yang ditulis di sana. Oleh itu di sini saya mempunyai penjelasan ringkas ...

Sensasi Kapasitif:

Pengesan sentuh kapasitif adalah cara sensitif sentuhan manusia, yang memerlukan sedikit atau tiada kekuatan untuk diaktifkan. Ia boleh digunakan untuk merasakan sentuhan manusia melalui lebih daripada seperempat inci bahan plastik, kayu, seramik atau lain-lain bahan penebat (bukan sebarang jenis logam walaupun), membolehkan sensor itu dapat disembunyikan sepenuhnya.

Kenapa sentuh kapasitif?

  • Setiap sensor sentuhan memerlukan hanya satu wayar yang disambungkan kepadanya.
  • Boleh disembunyikan di bawah mana-mana bahan bukan logam.
  • Boleh digunakan dengan mudah di tempat butang.
  • Dapat mengesan tangan dari beberapa sentimeter, jika diperlukan.
  • Sangat murah.

Bagaimanakah ia berfungsi?

Plat sensor dan badan anda membentuk kapasitor. Kita tahu bahawa kedai kapasitor dikenakan. Semakin kapasitansinya, semakin banyak biaya yang dapat disimpan.

Kapasitaran sensor sentuhan kapasitif ini bergantung pada seberapa dekat tangan anda ke plat.

Apa yang dilakukan oleh Arduino?

Pada dasarnya arduino mengukur berapa banyak masa kapasitor (iaitu sensor sentuhan) mengambil untuk mengecas, memberikan anggaran kapasitansinya.

Kapasitaran mungkin sangat kecil, namun Arduino mengukurnya dengan ketepatan.

Salah satu cara menggunakan sentuhan kapasitif dalam projek adalah dengan menggunakan perpustakaan CapSense. Untuk perpustakaan Capsense, arduino menggunakan satu pin yang dihantar dan bilangan pin yang diperlukan. A menerima pin disambungkan ke pin hantar melalui perintang sederhana hingga tinggi.

Berikut adalah beberapa panduan untuk perintang tetapi pastikan untuk mencuba tindak balas yang dikehendaki.

  • Gunakan 1 megohm perintang (atau kurang mungkin) untuk sentuhan mutlak untuk diaktifkan.
  • Dengan perintang 10 megohm, sensor akan mula bertindak balas 4-6 inci.
  • Dengan perintang 40 megohm, sensor akan mula bertindak balas 12-24 inci (bergantung kepada saiz foil). Saiz resistor biasa biasanya berakhir pada 10 megohm jadi anda mungkin terpaksa menjual empat daya 10 megohm resistor ke hujungnya. Satu tradeoff dengan perintang yang lebih besar ialah kepekaan sensor yang meningkat bermakna ia lebih lambat.

* Pedoman nilai resistan ini hanya untuk menggunakan perpustakaan CapSense. Projek terakhir tidak menggunakan perpustakaan ini.

Ringkasan: Sensor sentuhan kapasitif memerlukan sedikit atau tiada daya untuk diaktifkan. Perpustakaan CapSense boleh digunakan untuk membuat beberapa sensor sentuhan dengan Arduino.

Langkah 2: Kod Demo Perpustakaan CapSense ...

Berikut adalah penjelasan kod demo untuk perpustakaan CapSense.

 CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); 

Anda boleh menggantikan 'cs_4_2' dengan nama lain. '4' ialah pin hantar, '2' adalah pin yang diterima.

 void setup () { 
Persediaan hanya dijalankan sekali sahaja.
 cs_4_2.set_CS_AutocaL_Millis (0xFFFFFFFF); // matikan autokalibrate pada saluran 1 - sama seperti contoh 
 Serial.begin (9600);} 
Memulakan Komunikasi Serial di 9600baud ...
 total1 = cs_4_2.capacitiveSensor (30); 

Kenyataan di atas dinyatakan dalam 'void loop ()'. Apabila menggunakan perintang 1M, total1 akan kurang daripada atau sekitar sepuluh. Apabila disentuh, ia menjadi lebih daripada 60 ...

 Serial.println (total1); 

Menghantar nilai total1 ke tetingkap Serial komputer ...

Bahagian penting kod tersebut dijelaskan. Ini bukan kod penuh; yang penuh adalah dalam lampiran di bawah. Langkau langkah jika anda fikir kod itu mudah.

Lampiran

  • Muat turun CapacitiveSensorSketch.pde

Langkah 3: Projek Dengan Sentuhan Kapasitif dan Arduino ...

Sekarang anda mempunyai idea tentang apa sentuhan kapasitif (jika anda berbuat demikian untuk membaca langkah sebelumnya), mari lihat apa yang boleh kita lakukan dengannya. Dalam pengajaran ini saya akan menunjukkan kepada anda 3 projek yang menyertakan sentuhan kapasitif.

Sentuh Lampu Beroperasi:

Projek asas yang akan membantu anda memahami idea sentuhan kapasitif dan melaksanakannya dalam projek lain. Menggunakan relay dan pematerian adalah pilihan, tetapi diperlukan jika anda ingin peralatan voltan ooperatehigh.

Suis Sensor Jarak:

Membawa tangan anda dekat dengan suis ini akan menghidupkan atau mematikan yang diketuai. Menambah relay dan pematerian akan membolehkannya mengendalikan peranti voltan tinggi, walaupun ia adalah pilihan.

Tracker Tangan Touchless 3D:

Jejaki kedudukan tangan anda dalam 3 dimensi. Boleh digunakan untuk aplikasi yang tak terhitung jumlahnya, namun saya telah memasukkan projek dengannya yang mudah dan mudah digodam, jadi anda boleh menggunakannya untuk tujuan anda sendiri. Tiada pematerian diperlukan .

Langkah 4: Sentuh Kawalan Lampu: - Bahan Diperlukan ...

Ini adalah projek yang sangat murah dan mudah. Ia memberikan idea yang baik tentang bagaimana sentuhan kapasitif berfungsi dan bagaimana ia boleh dilaksanakan dalam beberapa aplikasi lain. Projek mudah ini menggunakan sensor sentuhan kapasitif, yang menghidupkan dan mematikan peralatan yang diketuai, atau bahkan voltan tinggi, dengan menyentuh sekeping kerajang aluminium.

Masa : <1 jam, +1 jam untuk penyaduran pameran (pilihan)

Kos : Beberapa sen, ~ 1 $ untuk relay (tidak termasuk Arduino)

Kesukaran : Sangat Sangat Mudah.

Bahan : (Boleh didapati di RadioShack)

  • Arduino Board
  • 500K kepada 1M perintang
  • Penghalang 220ohm
  • Mana-mana warna LED
  • Kerajang
  • Kawat pelompat
  • Relay (pilihan)
  • Palam utama (lelaki dan wanita) (pilihan)

Langkah 5: Sentuh Kawalan Lampu: - Litar

Litar adalah mudah. Maksud saya sangat mudah bahawa anda tidak perlu papan roti!

Perhatikan bahawa saya telah menggunakan Mega Arduino, kerana sekarang ini satu-satunya yang saya ada. Jika anda menggunakan Uno, hubungkan LED ke sebarang pin yang lain. Bagaimanapun, anda mesti membuat perubahan kecil dalam kod kemudian. Lihat langkah seterusnya.

Ikut gambar untuk litar.

  1. Saya menyambungkan pemutar dan 220ohm perintang dalam siri di seluruh pin 42 dan tanah.
  2. Saya telah menggunakan pin 4 sebagai pin hantar dan pin 2 sebagai menerima pin pada Arduino.
  3. Terdapat 1M perintang di pin ini. Kerajang disambungkan ke pin yang diterima, iaitu pin 2.

Langkah 6: Sentuh Kawalan Cahaya: - Kod Arduino ...

Sekarang bahagian pengaturcaraan. Kod ini menggunakan perpustakaan CapSense (muat turun di sini), yang menjaga penderiaan kapasitif. Jika anda tidak biasa dengan proses memasang pustaka, lihat tutorial hebat ini:

Memasang Perpustakaan Arduino - Learn.SFE

Kod ini mudah dan mudah difahami. Cukup salin kod ini dan tampalkannya kosong Arduino wwindow. Tukar pin yang diketuai jika diperlukan. Kemudian muat naik ...

 #include int led = 42; // change '42' kepada pin yang dikehendaki ... lama = 0; int state = TINGGI; boolean ya; boolean sebelumnya = false; int debounce = 200; CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); / // 10M perintang antara pin 4 & 2, pin 2 adalah pin sensor, tambah wayar dan atau foil jika dikehendaki // Untuk menambah lebih banyak sensor ... // CapacitiveSensor cs_4_6 = CapacitiveSensor (4, 6); // 10M perintang antara pin 4 & 6, pin 6 adalah pin sensor, tambah wayar dan atau foil // CapacitiveSensor cs_4_8 = CapacitiveSensor (4, 8); / // 10M perintang antara pin 4 & 8, pin 8 adalah pin sensor, tambah wayar dan atau foil void setup () {cs_4_2. set_CS_AutocaL_Millis (0xFFFFFFFF); // Menentukib sensor ... pinMode (dipimpin, OUTPUT); } void loop () {long total1 = cs_4_2. capacitiveSensor (30); jika (total1> 60) {ya = true;} else {yes = false;} // toggle state of state if (yes == true && previous == false && millis () negeri == LOW) {negeri = TINGGI; } else state = LOW; masa = millis (); } digitalWrite (diterajui, negeri); sebelumnya = ya; Serial . println (millis () -time); kelewatan (10); } 

Langkah 7: Sentuh Kawalan Lampu: - Menambah Relay ...

Jadi anda mendapat LED dikawal sentuhan. Jadi apa? Anda boleh membuat projek sedikit lebih berguna dengan mengawal peralatan seperti lampu dan peminat dengan sentuhan. Dan mujurlah, anda hanya perlu menambah relay kepada Arduino untuk melakukan ini.

Apa itu Relay?

Relay adalah suis elektrik yang dikendalikan. Selalunya geganti menggunakan elektromagnet untuk mengendalikan secara mekanis suis terpencil. Fungsi utama adalah menggunakan voltan kecil untuk menghidupkan / mematikan voltan tinggi atau arus tinggi secara berasingan. Ia berguna untuk mengawal peralatan utama dengan litar kecil atau pengawal mikro.

Untuk mengetahui lebih lanjut mengenai geganti, periksa instruktable yang hebat ini - Bagaimana Suis Elektronik Beroperasi Untuk Noobs: Relay dan Transistor

The Circuit:

Arduino tidak dapat membekalkan arus yang cukup untuk mengendalikan geganti, oleh itu anda memerlukan transistor BC547. Transistor menguatkan Arduino semasa untuk mengaktifkan geganti. Untuk bantuan memahami pemahaman video ini - Bagaimana Mengendalikan Relay dengan Arduino

Saya telah menyediakan gambar rajah litar untuk transistor dan geganti. Terdapat juga gambar rajah papan Fritzing, untuk membantu anda memahami sambungan.

Selepas itu sediakan palam lelaki seperti yang ditunjukkan dalam gambar di atas ...

Langkah 8: Sentuh Kawalan Lampu: - Membuat Kotak untuk Relay ...

Saya menggunakan kotak plastik 5 * 2 * 2 inci untuk perumahan relay dan wayar. Ia mungkin sedikit terlalu besar, tetapi cukup baik untuk demonstrasi. Maksud utama saya adalah untuk menjaga wayar voltan tinggi berasingan dari Arduino dan badan saya.

Sediakan Peti:

Potong satu lubang persegi dari tudung kotak untuk menyesuaikan palam betina. Buat lubang untuk skru, dan kemudian pasangkan palamnya. Letakkan geganti ke bahagian bawah kotak.

Jadikan Sambungan:

Litar yang melibatkan voltan tinggi sangat mudah. Ikut gambar dan tag mereka, atau langkah-langkah berikut:

  1. COM Relay ke satu terminal bekalan utama.
  2. Tolak Relay ke satu terminal perkakas.
  3. Terminal lain dari induk ke terminal ke-2 perkakas.

Langkah 9: Sentuh Kawalan Lampu: - Tambah Sensor Sentuh dan Arduino ...

Keluarkan sekeping foil di dalam kotak dengan pita seperti yang ditunjukkan di atas. Ini disambungkan ke pin Arduino (pin 2 dalam kes saya). "Pin yang diketuai", atau pin 42 dalam kes saya, disambungkan kepada transistor.

Langkah 10: Sentuh Kawalan Lampu: - Selesai!

Sambungkan palam lelaki ke soket utama, dan palamkan perkakas yang anda mahu kawal ke kotak. Kuasa Arduino dengan bateri.

Di sana anda memilikinya - cahaya kawalan sentuhan anda sendiri! Anda boleh menggunakan lebih banyak geganti dan sensor sentuh untuk mengawal lebih banyak peralatan, atau memasukkannya ke dalam sistem automasi rumah. Buat masa ini saya menggunakannya untuk mengawal lampu meja saya, dan ia berfungsi dengan baik.

Berikut adalah video yang menunjukkan kerja suis sentuhan ...

Juga saya mempunyai video yang menunjukkan prototaip bekerja ...

Harap anda tidak keberatan letupan pada akhirnya: P .....

Langkah 11: Pengesan Jarak Mengesan Jarak

Membawa tangan anda dekat dengan suis, atau hanya melambai tangan anda ke atasnya akan menghidupkan atau mematikan cahaya. Ia sebenarnya sangat mirip dengan "Touch Controlled Light" dalam langkah-langkah sebelumnya. Malah, yang terakhir ini boleh diubah suai dengan mudah untuk menjadikan suis cahaya mengesan kedekatan ini ...

Masa : Jumlah <1 jam, +1 jam untuk pematerian pilihan

Kos : ~ 1 $, tidak termasuk Arduino

Kesukaran : Mudah

Bahan yang Diperlukan:

  • Arduino Board
    • Perintang 5.6M
    • Penghalang 220ohm
    • Mana-mana warna LED
    • Kerajang
    • Kawat pelompat
    • Relay (pilihan)
    • Palam utama (lelaki dan wanita) (pilihan)
  • Langkah 12: Pengesan Jarak Mendatar Jarak: - Litar ...

    Litar ini mudah, ia hanya pengubahsuaian "Lampu Terkawal Sentuh". Malah satu-satunya perkara yang perlu anda ubah ialah perintang; kali ini anda perlu menggunakan penghalang ~ 5M di seluruh pin 2 dan 4 arduino.

    Langkah 13: Pengesan Jarak Mendatar Jarak Jauh: - Kod ....

    Di sini kod itu sama dengan "Lampu Kawalan Sentuh". Anda hanya perlu mengubah masa debounce dalam kod, dan melaraskan beberapa nilai lain dengan percubaan dan ralat ...

    Salin kod ini dan tampalkannya di tetingkap Arduino ....

     #include int led = 42; // change '42' kepada pin yang dikehendaki ... lama = 0; int state = TINGGI; boolean ya; boolean sebelumnya = false; int debounce = 200; CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); / // 10M perintang antara pin 4 & 2, pin 2 adalah pin sensor, tambah wayar dan atau foil jika dikehendaki // Untuk menambah lebih banyak sensor ... // CapacitiveSensor cs_4_6 = CapacitiveSensor (4, 6); // 10M perintang antara pin 4 & 6, pin 6 adalah pin sensor, tambah wayar dan atau foil // CapacitiveSensor cs_4_8 = CapacitiveSensor (4, 8); / // 10M perintang antara pin 4 & 8, pin 8 adalah pin sensor, tambah wayar dan atau foil void setup () {cs_4_2.set_CS_AutocaL_Millis (0xFFFFFFFF); // Menentukib sensor ... pinMode (dipimpin, OUTPUT); } void loop () {long total1 = cs_4_2.capacitiveSensor (30); jika (total1> 60) {ya = true;} else {yes = false;} // toggle state of state if (yes == true && previous == false && millis () negeri == LOW) {negeri = TINGGI; } else state = LOW; masa = millis (); } digitalWrite (diterajui, negeri); sebelumnya = ya; Serial .println (millis () - masa); kelewatan (10); } 

    Langkah 14: Mengawal Peralatan Voltan Tinggi ...

    Untuk mengawal peralatan voltan tinggi, geganti diperlukan. Ikut arahan yang sama untuk menubuhkan relay seperti dalam projek sebelumnya ...

    Langkah 7- Menambah Relay

    Langkah 15: Pengawal 3D tanpa sentuh

    Pengawal 3D ini akan menjejaki kedudukan tangan anda dalam 3 dimensi. Ia berdasarkan sensor penderiaan kapasitif. Seperti projek sebelumnya, Switch Sensor Mengesan Jarak, sensor sentuh akan dapat merasakan tangan anda dari beberapa inci jauhnya.

    Ini adalah projek yang diilhamkan oleh Alat Kawalan 3D DIY kylemcdonald yang hebat. Lihatlah instruktinya juga untuk mendapatkan idea pengawal 3D ini ...

    Terdapat banyak perkara yang boleh anda lakukan dengan pengawal 3D ini, contohnya, sebagai tetikus komputer, untuk mengawal adegan animasi 3D, mengawal kiub LED, dan banyak lagi. Tetapi sudah tentu, mereka tidak begitu mudah dan murah untuk dilakukan.

    Oleh itu saya mendapat satu projek yang mudah tetapi sejuk untuk pemula - LED Tracker RGB yang dikawal oleh 3D. Pada dasarnya anda boleh mengawal warna LED dengan menggerakkan tangan anda dalam posisi yang berbeza. Tidak mendapatnya? Pergi ke langkah seterusnya untuk lebih ....

    Langkah 16: Bagaimana Ia Berfungsi, dan Bahan ...

    Pengawal 3D ini mempunyai 3 sensor sentuhan, yang bertindak balas dari beberapa sentimeter. Dengan menilai jarak dari setiap sensor, Arduino dapat mengira koordinat x, y dan z pada tangan anda.

    LED RGB mempunyai 3 warna: merah, hijau dan biru. Kecerahan setiap warna bergantung kepada koordinat tangan masing-masing. Misalnya, koordinat x yang lebih rendah (semakin dekat tangan saya adalah sensor kanan), warna merah yang lebih terang dari LED rgb.

    Masa : 1 - 1.5 jam

    Kos : <$ 1, tidak termasuk Arduino ...

    Kesukaran : mudah.

    Bahan yang Diperlukan:

    • Kerajang aluminium
    • Papan Arduino (saya cadangkan Uno)
    • 10k ohm resistor x3
    • 220kohm resistor x3
    • 220 ohm resistor x3
    • Wire
    • RGB LED

    Langkah 17: Menyediakan Sensor Sentuh ....

    Kami memerlukan tiga keping kertas berasingan, dengan dimensi kira-kira 8 * 8 inci. Satu sekeping foil terjebak pada asas Styrofoam (thermocol) tebal. Slit dibuat pada Styrofoam pada 2 sisi sisi foil, seperti yang ditunjukkan dalam gambar di atas.

    Kedua-dua kepingan kerajang yang lain terperangkap pada papan pendakap (kadbod putih).

    Kedua-dua papan lekapan dimasukkan ke dalam slit di Styrofoam, berserenjang antara satu sama lain dan Styrofoam, seperti yang ditunjukkan dalam gambar-gambar di atas.

    Untuk menjadikan semua perkara itu kukuh, saya menggunakan sekeping papan kecil kecil segi empat tepat untuk memegang dua papan papan dengan kerajang bersama-sama. Gambar-gambar di atas dan tag mereka pasti akan membantu banyak.

    Langkah 18: Litar ...

    Sambung wayar ke setiap sensor sentuhan dengan pita penebat. Kemudian memasang litar di atas papan roti, dengan bantuan susun atur papan Fritzing di atas.

    Langkah 19: Muat naik Kod ...

    Kod disediakan di lampiran di bawah. Hanya klik dan salin dan tampal kod ke dalam tetingkap kod Arduino.

    Sebelum memukul muat naik, pastikan anda membuat perubahan pada pin, jika diperlukan.

    Menentukib Sensor Sentuh ..

    Selepas memuat naik kod itu, buka Monitor Serial, dengan Arduino masih bersambung. Anda akan melihat banyak baris nilai yang bergolek, dengan setiap baris mempunyai 3 nilai yang mewakili setiap sensor sentuhan. Sentuh mana-mana satu sentuhan sentuhan (anda mesti tahu yang mana anda menyentuh), dan lihat nilai yang sepadan pada Monitor Serial.

    Anda akan melihat baris ini dalam kod sebelum batal persediaan () {

     int maxval = 20; 

    Tukar 20 kepada nilai yang anda terima selepas menyentuh salah satu sensor.

    Kemudian muat naik kod sekali lagi. Menggerakkan tangan anda di dalam pengawal 3D akan menghasilkan pelbagai warna.

    Nota Penting: Kod di bawah hanya berfungsi untuk papan serasi Arduino Uno (dan mungkin Leonardo). Saya mencuba Mega dan ia tidak berfungsi, kerana ia mempunyai 'PORTS' yang sangat berbeza (walaupun saya mendapati sukar untuk dimengerti pada mulanya - ini adalah untuk blok yang lebih berpengalaman) ....

    Ringkasan: Muat naik kod, laraskan pembolehubah "maxval" dan muat naik semula. Menggunakan Arduino Uno atau klon disyorkan.

    Lampiran

    • _3d_controller.ino Muat turun

    Langkah 20: Kesimpulan ...

    Ini hanya 3 projek yang boleh anda lakukan dengan sentuhan Capacitive. Mudah-mudahan mereka akan memberi anda idea kukuh menggunakan sensor sentuh untuk membuat perkara yang mengagumkan. Jangan hanya berhenti di sini-perkara yang boleh anda lakukan dengan penderiaan sentuhan Capacitive adalah tidak berkesudahan: Sentuhan papan kekunci, pad trek, tetikus tanpa sentuh, sentuhan jam tangan yang terkawal adalah hanya beberapa idea yang tidak dapat saya fikirkan.

    Melangkah Lagi .....

    Anda boleh berbuat lebih banyak dengan projek yang saya telah tunjukkan. Contohnya, menggunakan idea projek 1, buat papan suis sentuh untuk mengawal beberapa lampu dan peminat di dalam bilik. Atau mungkin memasukkannya dalam projek automasi rumah.

    Dengan idea cahaya mengesan kedekatan, cuba buat lampu meja automatik, yang merasakan kehadiran anda.

    Dengan pengawal 3D, cuba buat tetikus 3D dengan Arduino Leonardo. Atau gunakan program Pemprosesan untuk berkomunikasi dengan pengawal 3D.

    Tutorial lain dan banyak lagi ...

    playground.arduino.cc/Main/CapSense

    Tutorial Hackaday

    Berikut adalah video yang hebat (bukannya saya walaupun) hanya tutorial sentuhan Capacitive yang mudah, yang saya juga telah dilindungi. Video boleh membuat perkara lebih jelas walaupun ....

    Langkah 21: Sila Komen dan Ekspresikan Pendapat Anda ...

    Dengan bantuan anda, saya pasti dapat membuat Pengajaran ini lebih baik ..

    Artikel Berkaitan