Isi kandungan:
- Langkah 1: Perkakasan
- Langkah 2: Perisian
- Langkah 3: Mengenai Perisian
- Langkah 4: "Projek Akan Datang"
- Langkah 5: Seterusnya: Input Analog Suhu ESP32 NTP Dengan Pembetulan Steinhart-Hart
Video: Input Sentuh Kapasitif ESP32 Menggunakan "Palam Lubang Logam" untuk Butang: 5 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Semasa saya menyelesaikan keputusan reka bentuk untuk projek berasaskan ESP32 WiFi Kit 32 yang akan datang yang memerlukan input tiga butang, satu masalah yang ketara adalah bahawa WiFi Kit 32 tidak mempunyai satu butang tekan mekanikal, tetapi tiga butang mekanikal sahaja, untuk input. Walau bagaimanapun, Kit WiFi 32 mempunyai banyak input sentuhan kapasitif, jadi saya meluangkan masa untuk mengumpulkan perkakasan, menulis perisian dan menguji reka bentuk input tiga butang menggunakan ciri input sentuh kapasitif ESP32 dan tiga "lubang palam logam" 3/8 untuk butang.
Seperti yang diketahui oleh sesiapa yang telah bereksperimen dengan input sentuh kapasitif ESP32, input sentuhan pastinya cukup bising sehingga memerlukan penapisan untuk pengesanan input yang boleh dipercayai. Untuk meminimumkan jumlah bahagian untuk projek yang akan datang, saya menentukan bahawa penapis digital yang didorong oleh gangguan sederhana (lebih daripada "penyingkiran" daripada penapis, tetapi saya merosot), berbanding menambah perkakasan penapis luaran, dapat meredakan input yang bising. Dan setelah menguji, menjadi jelas bahawa input kapasitif ESP32, tiga palam lubang logam 3/8 ", dan beberapa perisian" penyaringan "digital, sememangnya akan memberikan input tiga butang yang boleh dipercayai untuk reka bentuk.
Oleh itu, jika anda berminat untuk menguji input kapasitif dengan penapisan digital pada ESP32, saya telah memasukkan kod sumber "Buttons.ino" dalam format persekitaran Arduino bersama dengan arahan pemasangan dan pengaturcaraan, serta penerangan ringkas mengenai kod sumber, untuk apa yang saya dapati menjadi input tiga butang yang sangat dipercayai.
Dan seperti biasa, saya mungkin lupa satu atau dua fail atau yang tahu apa lagi, jadi jika anda mempunyai sebarang pertanyaan, jangan ragu untuk bertanya kerana saya melakukan banyak kesilapan.
Dan satu catatan terakhir, saya tidak menerima pampasan dalam bentuk apa pun, termasuk tetapi tidak terhad kepada sampel percuma, untuk mana-mana komponen yang digunakan dalam reka bentuk ini
Langkah 1: Perkakasan
Reka bentuk menggunakan perkakasan berikut:
- Satu, Kit WiFi 32.
- Palam lubang logam 3/8 ".
- Tiga, 4 "panjang wayar 28awg.
Untuk memasang perkakasan, saya melakukan langkah-langkah berikut:
- Dilucutkan dan diikat hujung setiap panjang wayar 4 "seperti yang ditunjukkan.
- Memateri wayar pertama ke pin 13 dari ESP32 (input TOUCH4, atau "T4").
- Memateri wayar kedua ke pin 12 dari ESP32 (input TOUCH5, atau "T5").
- Memateri wayar ketiga ke pin 14 dari ESP32 (input TOUCH6, atau "T6").
- Memateri salah satu daripada tiga palam lubang logam 3/8 "ke hujung bebas dari tiga panjang wayar.
Langkah 2: Perisian
Fail "Buttons.ino" adalah fail persekitaran Arduino yang mengandungi perisian untuk reka bentuk. Sebagai tambahan kepada fail ini, anda memerlukan pustaka grafik "U8g2lib" untuk paparan OLED WiFi Kit32 (lihat https://github.com/olikraus/u8g2/wiki untuk maklumat lebih lanjut mengenai perpustakaan ini).
Dengan perpustakaan grafik U8g2lib dipasang di direktori Arduino anda, dan "Buttons.ino" dimuat ke dalam persekitaran Arduino, menyusun dan memuat turun perisian ke dalam ESP32.
Setelah dimuat dan dijalankan, baris atas paparan harus dibaca "Butang" dengan baris kedua paparan berbunyi "1 2 3" sebagai penunjuk butang. Di bawah setiap indikator butang 1, 2, 3 adalah nilai baca sentuh yang tidak difilter, dan di bawah masing-masing terdapat petunjuk penekan butang ("1" untuk ditekan, "0" untuk tidak ditekan). Seperti yang dapat dilihat dalam video (dan seperti yang telah lama diuji), penapis perisian menyediakan pengesanan input butang yang boleh dipercayai tanpa pemicu palsu.
Langkah 3: Mengenai Perisian
Perisian ini mengandungi tiga bahagian kod utama; bahagian Arduino yang diperlukan "persediaan ()" dan "gelung ()", dan bahagian "Selang". Bahagian persediaan () mengandungi kod yang diperlukan untuk memulakan perkhidmatan OLED dan mengganggu perkhidmatan. Fungsi penyediaan OLED dijelaskan dalam pautan di atas. Fungsi penyediaan perkhidmatan gangguan adalah seperti berikut:
- "timerLoopSemaphore = xSemaphoreCreateBinary ()" membuat semaphore untuk "InterruptService ()" (rutin perkhidmatan interrupt) untuk memberitahu loop () apabila tiba masanya untuk melaksanakan loop loop.
- "timerInterruptService = timerBegin (0, 80, true)" membuat pemasa menggunakan pemasa perkakasan 0 dengan prescale 80.
- "timerAttachInterrupt (timerInterruptService, & InterruptService, true)" melampirkan InterruptService () pada pemasa.
- "timerAlarmWrite (timerInterruptService, 1000, true)" menetapkan kadar perkhidmatan gangguan kepada 1000hz.
- "timerAlarmEnable (timerInterruptService)" memulakan penggera pemasa, dan dengan itu mengganggu perkhidmatan.
Dengan penyiapan selesai, gelung () dimasukkan dan segera berhenti di garisan:
jika (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), bermaksud loop () akan menunggu pada ketika ini sehingga semaphore dari InterruptService () tiba. Apabila semaphore tiba, kod gelung () dijalankan, mengemas kini paparan OLED dengan data butang, kemudian kembali ke atas lagi untuk menunggu semaphore seterusnya. Dengan InterruptService () berjalan pada 1000hz dan nilai LOOP_DELAY 30, loop () dijalankan setiap 30ms, atau pada kadar kemas kini paparan 33.333hz. Walaupun ini adalah kadar penyegaran paparan yang lebih tinggi daripada yang diperlukan untuk kebanyakan aplikasi ESP32, saya menggunakan tetapan ini untuk menggambarkan respons penapis. Saya melakukan ujian dan menentukan masa yang diperlukan untuk melaksanakan satu gelung () lulus menjadi 20ms.
InterruptService () dipanggil oleh pemasa yang dibuat dalam persediaan () pada kadar 1000hz. Apabila dipanggil, ia mengemas kini dua kaunter turun, nLoopDelay dan nButtonDelay. Apabila nLoopDelay dikira ke bawah menjadi sifar, ia menghantar semaphore yang membolehkan gelung () untuk melaksanakan satu hantaran kemudian menetapkan semula nLoopDelay. Apabila nButtonDelay dihitung ke bawah menjadi sifar, ia juga diset semula kemudian tombol "filter" dijalankan.
Setiap penapis butang mempunyai kaunter penapis unik (mis. NButton1Count, nButton2Count dan nButton3Count). Selagi nilai input sentuhan yang diberikan pada butang lebih besar daripada atau sama dengan nilai ambang yang ditentukan (BUTTON_THRESHHOLD), penghitung penapis yang diberikan pada butang dan butang tetap sifar. Sekiranya nilai input sentuhan yang diberikan pada butang kurang dari ambang yang ditentukan, penghitung penapis yang diberikan pada butang akan bertambah satu setiap 20ms. Apabila penghitung penapis melebihi nilai penapis butang (BUTTON_FILTER), butang tersebut dianggap "ditekan". Kesan kaedah ini adalah untuk membuat penapis yang memerlukan 80ms (20ms nButtonDelay * 4ms nButtonCountN di mana N adalah nombor butang) nilai input sentuhan berterusan di bawah ambang yang ditentukan untuk mempertimbangkan butang sebenarnya ditekan. Bila-bila masa kurang dari 80ms dianggap "kesalahan" dan ditolak oleh penapis.
Dengan penerangan ringkas ini, jika anda mempunyai sebarang pertanyaan, jangan ragu untuk bertanya dan saya akan berusaha sebaik mungkin untuk menjawabnya.
Semoga anda menikmatinya!
Langkah 4: "Projek Akan Datang"
Projek yang akan datang, "Intelligrill® Pro", adalah monitor perokok probe suhu ganda yang menampilkan:
- Pengiraan probe suhu Steinhart-Hart (berbanding jadual "cari") untuk peningkatan ketepatan.
- Masa ramalan hingga selesai pada probe 1 yang menggabungkan peningkatan ketepatan yang diperoleh dari pengiraan Steinhart-Hart.
- Probe kedua, probe 2, untuk memantau suhu perokok (terhad kepada 32 hingga 399 darjah).
- Kawalan input sentuhan kapasitif (seperti dalam Instructable ini).
- Pemantauan jarak jauh berasaskan WIFI (dengan alamat IP tetap, membolehkan pemantauan kemajuan perokok dari mana sahaja sambungan internet tersedia).
- Julat suhu yang dilanjutkan (sekali lagi 32 hingga 399 darjah).
- Penggera penyelesaian yang dapat didengar baik dalam pemancar Intelligrill® dan pada kebanyakan peranti pemantauan berkemampuan WiFi.
- Paparan suhu sama ada darjah F atau darjah C.
- Format masa sama ada HH: MM: SS atau HH: MM.
- Paparan bateri sama ada volt atau% dicas.
- Dan akan datang, output PID untuk perokok berasaskan auger.
"Intelligrill® Pro" sedang diuji untuk menjadi Intelligrill® yang telah dirancang oleh HTML yang paling tepat, lengkap dan boleh dipercayai.
Masih dalam ujian, tetapi dengan makanan yang membantu untuk disiapkan semasa ujian, saya mendapat lebih daripada beberapa paun.
Sekali lagi, saya harap anda menikmatinya!
Langkah 5: Seterusnya: Input Analog Suhu ESP32 NTP Dengan Pembetulan Steinhart-Hart
Bersedia untuk membersihkan buku aljabar anda untuk buku ini.
Disyorkan:
Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED: 4 Langkah
Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED: " Push-It " Permainan interaktif menggunakan papan Arduino yang kosong, tidak memerlukan bahagian luaran atau pendawaian (menggunakan input 'sentuhan' kapasitif). Ditunjukkan di atas, menunjukkan ia berjalan di dua papan yang berbeza. Tekan-Ia mempunyai dua tujuan. Untuk menunjukkan dengan cepat / v
4 Permainan Butang Menggunakan Satu Input Analog: 6 Langkah (dengan Gambar)
Permainan 4 Butang Menggunakan Satu Input Analog: Instruksional ini memberi tumpuan kepada penggunaan satu baris input analog untuk beberapa butang yang dapat dikesan bebas antara satu sama lain. Dan untuk menonjolkan penggunaan butang ini termasuk perisian untuk memainkan empat permainan 4-Butang yang berbeza. Semua permainan (8 in t
Visuino Cara Menggunakan Butang Sebagai Input untuk Mengawal Perkara Seperti LED: 6 Langkah
Visuino Cara Menggunakan Tombol Sebagai Input untuk Mengawal Perkara Seperti LED: Dalam tutorial ini kita akan belajar cara Menghidupkan dan Mematikan LED menggunakan butang sederhana dan Visuino. Tonton video demonstrasi
Gunakan 1 Input Analog untuk 6 Butang untuk Arduino: 6 Langkah
Gunakan 1 Input Analog untuk 6 Butang untuk Arduino: Saya sering bertanya-tanya bagaimana saya boleh mendapatkan lebih banyak Input Digital untuk Arduino saya. Baru-baru ini saya terfikir bahawa saya boleh menggunakan salah satu Input Analog untuk membawa pelbagai input digital. Saya melakukan carian pantas dan mendapati di mana orang berada
Cara Membuat Kamera Lubang Lubang dari Tangkapan N Old Point: 5 Langkah (dengan Gambar)
Cara Membuat Kamera Lubang Pin Dari Titik Tua N 'Tangkap: Kamera lubang jarum adalah jenis kemunduran romantis dari kamera paling asas yang pernah dibuat. Anda boleh membuat kamera dari cahaya yang ketat, tetapi jika anda tidak mempunyai akses ke bilik gelap atau bahan kimia, anda perlu menggunakan kamera yang memerlukan beberapa standard