Cuprins:
- Pasul 1: Hardware
- Pasul 2: Software
- Pasul 3: Despre software
- Pasul 4: „Proiectul viitoare”
- Pasul 5: Următorul: Intrare analogică a sondei de temperatură ESP32 NTP cu corecție Steinhart-Hart
Video: Intrare tactilă capacitivă ESP32 utilizând „dopuri metalice” pentru butoane: 5 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
În timp ce finalizam deciziile de proiectare pentru un viitor proiect ESP32 WiFi Kit 32 care necesită intrare cu trei butoane, o problemă remarcabilă a fost că WiFi Kit 32 nu are un singur buton mecanic, ci doar trei butoane mecanice, pentru intrare. Cu toate acestea, WiFi Kit 32 are o mulțime de intrări tactile capacitive, așa că am petrecut ceva timp asamblând hardware, scriind software și testând un design de intrare cu trei butoane utilizând funcția de intrare tactilă capacitivă ESP32 și trei prize de 3/8 "" gaură metalică "pentru butoane.
Așa cum a descoperit oricine a experimentat cu intrările tactile capacitive ESP32, intrările tactile sunt cu siguranță suficient de zgomotoase pentru a necesita filtrare pentru detectarea fiabilă a intrărilor. Pentru a minimiza numărul total de piese pentru viitorul proiect, am stabilit că un simplu filtru digital acționat prin întrerupere (mai degrabă un „debounce” decât un filtru, dar deviez), spre deosebire de adăugarea hardware-ului de filtru extern, ar putea liniști intrările zgomotoase. Și după testare, a devenit evident că intrările capacitive ESP32, trei prize de gaură metalică de 3/8 "și unele programe digitale de" filtrare ", ar oferi într-adevăr o intrare fiabilă cu trei butoane pentru proiectare.
Deci, dacă sunteți interesat să testați intrarea capacitivă cu filtrare digitală pe un ESP32, am inclus codul sursă "Buttons.ino" în formatul de mediu Arduino împreună cu instrucțiunile de asamblare și programare, plus o scurtă descriere a codului sursă, pentru ceea ce am descoperit a fi o intrare extrem de fiabilă cu trei butoane.
Și, ca de obicei, probabil că am uitat un dosar sau două sau cine știe ce altceva, așa că, dacă aveți întrebări, vă rog să nu ezitați să întrebați, deoarece fac multe greșeli.
Și o notă finală, nu primesc nicio compensație sub nici o formă, inclusiv, dar fără a se limita la eșantioane gratuite, pentru oricare dintre componentele utilizate în acest design
Pasul 1: Hardware
Proiectarea utilizează următorul hardware:
- Unul, WiFi Kit 32.
- Trei dopuri cu găuri metalice de 3/8 ".
- Trei, 4 "lungimi de sârmă de 28awg.
Pentru a asambla hardware-ul, am parcurs următorii pași:
- Îndepărtați și conservați capetele fiecărei lungimi de sârmă de 4 "așa cum se arată.
- Am lipit primul fir la pinul 13 al ESP32 (intrarea TOUCH4 sau "T4").
- A lipit al doilea fir la pinul 12 al ESP32 (intrarea TOUCH5 sau "T5").
- A lipit al treilea fir la pinul 14 al ESP32 (intrarea TOUCH6 sau "T6").
- Sudat câte unul din fiecare dintre cele trei dopuri de găuri metalice de 3/8 "la capetele libere ale celor trei lungimi de sârmă.
Pasul 2: Software
Fișierul „Buttons.ino” este un fișier de mediu Arduino care conține software-ul pentru proiectare. În plus față de acest fișier, veți avea nevoie de biblioteca grafică "U8g2lib" pentru afișajul WiFi Kit32 OLED (consultați https://github.com/olikraus/u8g2/wiki pentru informații suplimentare despre această bibliotecă).
Cu biblioteca grafică U8g2lib instalată în directorul dvs. Arduino și „Buttons.ino” încărcat în mediul Arduino, compilați și descărcați software-ul în ESP32.
Odată descărcat și rulat, linia de sus a afișajului ar trebui să citească „Butoane” cu a doua linie a afișajului citind „1 2 3” ca indicatori de buton. Sub fiecare dintre 1, 2, 3 indicatoare de buton se află valorile de citire la atingere nefiltrate, iar sub fiecare dintre acestea sunt indicatoarele de apăsare a butonului ("1" pentru apăsat, "0" pentru neapăsat). Așa cum se poate vedea în videoclip (și dacă testarea pe termen lung este confirmată), filtrul software asigură detectarea fiabilă a intrării butoanelor fără declanșare falsă.
Pasul 3: Despre software
Software-ul conține trei secțiuni principale de cod; Arduino necesită secțiuni „setup ()” și „loop ()” și o secțiune „Întrerupe”. Secțiunea setup () conține codul necesar pentru a inițializa OLED și a întrerupe serviciile. Funcțiile de configurare OLED sunt descrise în linkul de mai sus. Funcțiile de configurare a serviciului de întrerupere sunt după cum urmează:
- "timerLoopSemaphore = xSemaphoreCreateBinary ()" creează un semafor pentru "InterruptService ()" (rutina serviciului de întrerupere) pentru a informa bucla () când este timpul să executați o trecere de buclă.
- "timerInterruptService = timerBegin (0, 80, true)" creează un temporizator utilizând temporizatorul hardware 0 cu o prescală de 80.
- „timerAttachInterrupt (timerInterruptService, & InterruptService, true)” atașează InterruptService () la cronometru.
- „timerAlarmWrite (timerInterruptService, 1000, true)” setează rata serviciului de întrerupere la 1000hz.
- „timerAlarmEnable (timerInterruptService)” pornește alarma temporizatorului și astfel întrerupe serviciul.
Odată ce configurarea este completă, bucla () este introdusă și se oprește imediat la linie:
if (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), loop loop () va aștepta în acest moment până când sosește semaforul din InterruptService (). Când semaforul ajunge, codul loop () se execută, actualizând afișajul OLED cu datele butonului, apoi revenind în partea de sus pentru a aștepta din nou următorul semafor. Cu InterruptService () care rulează la 1000hz și o valoare LOOP_DELAY de 30, loop () se execută la fiecare 30ms sau la o rată de actualizare a afișajului de 33,333hz. Deși aceasta este o rată de reîmprospătare a afișajului mai mare decât cea necesară pentru majoritatea aplicațiilor ESP32, am folosit această setare pentru a ilustra reacția filtrului. Am testat și am determinat timpul necesar pentru a executa o singură buclă () pass să fie de 20 ms.
InterruptService () este apelat de cronometrul creat în setup () la o rată de 1000hz. Când este apelat, actualizează două contoare descendente, nLoopDelay și nButtonDelay. Când nLoopDelay este numărat în jos până la zero, acesta trimite semaforul care permite loop () să execute o singură trecere, apoi resetează nLoopDelay. Când nButtonDelay este numărat până la zero, acesta este resetat și apoi butonul „filtre” se execută.
Fiecare filtru de buton are un contor de filtru unic (de exemplu, nButton1Count, nButton2Count și nButton3Count). Atâta timp cât valoarea de intrare tactilă alocată butonului este mai mare sau egală cu valoarea pragului definită (BUTTON_THRESHHOLD), contorul de filtru atribuit butonului și butonul rămân zero. Dacă valoarea de intrare tactilă atribuită butonului este mai mică decât pragul definit, contorul filtrului atribuit butonului este incrementat cu unul la fiecare 20 ms. Când contorul filtrului depășește valoarea filtrului butonului (BUTTON_FILTER), butonul este considerat „apăsat”. Efectul acestei metode este de a crea un filtru care necesită 80 ms (20 ms nButtonDelay * 4ms nButtonCountN unde N este numărul butonului) de valori de intrare continuă tactilă sub pragul definit pentru a lua în considerare butonul efectiv apăsat. Orice timp mai mic de 80ms este considerat o „problemă” și este respins de filtru.
Având în vedere această scurtă descriere, dacă aveți întrebări, nu ezitați să întrebați și voi face tot posibilul să le răspund.
Sper ca ti-a placut!
Pasul 4: „Proiectul viitoare”
Viitorul proiect, „Intelligrill® Pro”, este un monitor pentru fumători cu sondă cu temperatură dublă, care conține:
- Calculele sondei de temperatură Steinhart-Hart (spre deosebire de tabelele „căutare”) pentru o precizie sporită.
- Timp predictiv până la finalizare pe sonda 1 încorporând precizia crescută derivată din calculele Steinhart-Hart.
- O a doua sondă, sonda 2, pentru monitorizarea temperaturii fumătorului (limitată la 32 până la 399 grade).
- Comenzi capacitive de intrare tactilă (ca în acest instructabil).
- Monitorizare la distanță bazată pe WIFI (cu o adresă IP fixă, permite monitorizarea progresului fumătorului de oriunde este disponibilă o conexiune la internet).
- Domeniu extins de temperatură (din nou de la 32 la 399 de grade).
- Alarme sonore de finalizare atât în cadrul transmițătorului Intelligrill®, cât și pe majoritatea dispozitivelor de monitorizare compatibile WiFi.
- Afișarea temperaturii fie în grade F, fie în grade C.
- Formatul orei fie în HH: MM: SS, fie în HH: MM.
- Afișarea bateriei fie în volți, fie în% încărcat.
- Și în curând, ieșirea PID pentru fumătorii pe bază de melc.
"Intelligrill® Pro" testează pentru a deveni cel mai precis, mai bogat în funcții și mai fiabil bazat pe Intelligrill® pe care l-am proiectat.
Este încă sub test, dar cu mesele pe care le ajută să le pregătesc în timpul testării, am câștigat mai mult de câteva kilograme.
Din nou, sper să vă placă!
Pasul 5: Următorul: Intrare analogică a sondei de temperatură ESP32 NTP cu corecție Steinhart-Hart
Fiți pregătiți să vă îndepărtați cărțile de algebră pentru aceasta.
Recomandat:
Control computer folosind gesturi și intrare tactilă: 3 pași
Control computer folosind gesturi și intrare tactilă: Acesta este un proiect demonstrativ pentru noul Piksey Atto. Folosim IC tactil TTP224 și modulul gestual APDS-9960 pentru a controla un computer. Încărcăm o schiță pe Atto, care o face să acționeze ca o tastatură USB și apoi trimite codurile cheie corespunzătoare în funcție de
Jocuri cu 4 butoane folosind o intrare analogică: 6 pași (cu imagini)
Jocuri cu 4 butoane folosind o singură intrare analogică: această instrucțiune se concentrează pe utilizarea unei linii de intrare analogice pentru mai multe butoane care pot fi detectate independent una de cealaltă. Și pentru a evidenția utilizarea acestor butoane incluse este un software pentru a juca patru jocuri diferite cu 4 butoane. Toate jocurile (8 în t
Utilizați 1 intrare analogică pentru 6 butoane pentru Arduino: 6 pași
Utilizați 1 intrare analogică pentru 6 butoane pentru Arduino: M-am întrebat adesea cum aș putea obține mai multe intrări digitale pentru Arduino. Recent mi-a trecut prin minte că ar trebui să pot folosi una dintre intrările analogice pentru a introduce mai multe intrări digitale. Am făcut o căutare rapidă și am găsit unde erau oamenii
Circuit de comutare tactilă utilizând tranzistorul MOSFET: 5 pași (cu imagini)
Circuit de comutare tactilă utilizând tranzistorul MOSFET: Cum se realizează un circuit de comutare tactilă utilizând un tranzistor MOsfet pentru orice proiecte electronice Proiect foarte ușor și util pentru orice circuit care necesită un astfel de comutator tactil electronic
Atmosferă tactilă capacitivă / Ambilight: 8 pași
Capacitive Touch Mood / Ambilight: Acest instructable este o scriere rapidă a experienței mele creând o lumină de dispoziție multifuncțională. Se așteaptă unele cunoștințe de bază despre circuitele electronice. Proiectul nu s-a finalizat încă, unele adăugând funcționalitate și modificările trebuie făcute, dar eu