Cuprins:

Multi-Timer cu control extern: 13 pași
Multi-Timer cu control extern: 13 pași

Video: Multi-Timer cu control extern: 13 pași

Video: Multi-Timer cu control extern: 13 pași
Video: Uite încă o funcție ascunsă de pe iPhone👆🏻 2024, Noiembrie
Anonim
Multi-Timer W / Control extern
Multi-Timer W / Control extern

Acest proiect Instructable este construirea unui cronometru multifuncțional

Acest temporizator poate funcționa ca:

  1. O alarmă de uz general cu timpi selectabili între 1 secundă și +90 ore. Având o numărătoare inversă cu alarmă sonoră și / sau control al dispozitivului extern până la finalizare, apoi o indicație de numărare inversă a timpului de la alarmă.
  2. Un cronometru cu pui de somn cu 7 ori selectabile, numărătoare inversă și alarmă la finalizare.
  3. Un cronometru de meditație cu 4 timpi selectabili, cu numărătoare inversă și un scurt ciripit la finalizare, numărare cu un alt ciripit la 5 minute după aceea.

Acest proiect poate fi construit așa cum este descris aici sau modificat pentru a se potrivi. Am construit anterior un cronometru cu această funcționalitate și l-am folosit în primul meu instructabil pentru a controla cutia de expunere la UV.

Am crezut că aș putea publica doar programul original și proiectele de bord. Cu toate acestea, din anumite motive nu am putut găsi codul. De asemenea, am vrut să aduc îmbunătățiri hardware-ului pentru a face circuitele de control mai flexibile și pentru a reduce consumul bateriei. Reproiectarea rezultată a plăcii principale și re-scrierea codului oferă o oportunitate de a discuta despre programare și abordarea de proiectare hardware.

Ori de câte ori creez o placă de circuit, găsesc adesea că există defecte în proiectarea sau amplasarea componentelor, plăcile pe care le construiesc sunt, de asemenea, una dintre cele două opțiuni. În plus, îmi place să fiu implicat în toate aspectele unui proiect de la început până la sfârșit. Acestea sunt câteva dintre motivele pentru care îmi creez propriile plăci de circuite, decât să trimit fișierele Gerber în străinătate pentru fabricare. Poate sunt doar bătrân și blocat în căile mele. Acest proiect reflectă această prejudecată. Deoarece îmi fac propriile plăci de circuite, proiectele și fișierele mele Gerber nu îndeplinesc standardele de fabricație, nu am inclus aceste fișiere. Cei care nu doresc să graveze și să termine tablele sunt bineveniți să își pregătească propriile modele și să posteze fișierele Gerber în secțiunea de comentarii. Vă rugăm să fabricați și să testați plăcile înainte de postare.

Pasul 1: Prezentare generală a elementelor hardware

Dispozitivul este alimentat de 4 baterii AAA și este controlat de un Arduino Pro Mini 5V.

Un difuzor mic / difuzor oferă o alarmă sonoră.

Un releu miniatural de 5v asigură tensiuni de control dispozitivelor externe. Flexibilitatea este asigurată în sursa acestei ieșiri de tensiune de control.

Un codificator rotativ cu buton oferă selecție de meniu.

Un afișaj OLED și un comutator de pornire / oprire momentan completează interfața cu utilizatorul.

Hardware-ul electronic suplimentar constă dintr-un comutator de alimentare SPDT și o mufă telefonică miniaturală pentru conectarea la dispozitive externe.

În plus, sunt furnizate fișiere pentru a vă ajuta în acest proiect:

Fișiere STL pentru o carcasă de proiect tipărită 3D.

Imagini de mască de cupru și lipit pentru gravarea și finisarea plăcii de circuit de control și a codificatorului rotativ.

Imagini schematice și de bord ca referință pentru cei care doresc să-mi modifice designul.

Poate doriți să revizuiți Instructable-ul meu despre crearea plăcilor de circuite duble, ca un exemplu de instrucțiuni de producție a plăcilor de circuite.

Pasul 2: Prezentare generală a software-ului

Împreună cu fișierele sursă Arduino, câteva informații suplimentare care ar putea fi utile..

Bibliotecile de control hardware sunt utilizate atunci când sunt disponibile (buton de-bounce, control OLED, citire codificator rotativ).

Programul implementează o mașină simplă de stare finită (FSM) pentru a controla executarea codului ca instrucțiune de comutare în funcția de buclă..

O clasă de meniu este definită pentru a permite selectarea opțiunilor afișate pe OLED și selecția utilizând codificatorul rotativ.

Intrarea este implementată prin interogare directă (fără întrerupere), deoarece nu este critică în timp și face codul mai clar.

Instrucțiunile tipărite pe Serial sunt utilizate pentru a ajuta la urmărirea executării codului și a depanării

Diferite tipuri de elemente ale structurii programului, inclusiv:

  • Mai multe file de cod pentru a izola unele funcții și variabile de control hardware.
  • Comutați instrucțiunile pentru a seta valoarea de stare (FSM) și variabilele de control.
  • Definirea structurii
  • Enumerații pentru a permite atribuirea valorilor de stare ca text.
  • #definește definițiile pre-procesorului pentru pinul hardware și valorile standard.

Pasul 3: Lista pieselor

Creați incinta
Creați incinta

Nu eram sigur unde să fac acest pas, deoarece se poate face în aproape orice moment. Am folosit o cutie imprimată 3D. Este posibil să nu aveți acces la o imprimantă 3D sau să preferați un alt tip de carcasă, cum ar fi cutia de aluminiu, plasticul tăiat cu laser, lemnul sculptat manual sau alt tip pe care îl utilizați pentru proiectele dvs. electronice. Am inclus fișierele STL pentru partea superioară, inferioară, butonul codificatorului rotativ și rama OLED. Utilizați aceste fișiere și feliatorul la alegere pentru a crea fișiere gcode pentru imprimanta dvs.

Imprim toate piesele folosind filament PLA, o culoare pentru partea superioară și inferioară a carcasei, alta contrastantă pentru buton și ramă (care este lipită în partea de sus.) -Completați cu hexagon cel puțin 35% pentru a permite atingerea șuruburilor de colț și setarea „fără suport” pentru citirea literelor incizate. Am tipărit cutia folosind imprimantele mele înălțimea stratului „normală”.

Pasul 9: Proiectarea și scrierea codului

Acest pas este opțional, dar sugerat pentru o mai bună înțelegere.

Cea mai mare parte a efortului în termeni de ore este scrierea codului. Puteți sări peste acest pas dacă utilizați programul atașat ca -is. Cu toate acestea, vi se recomandă să vă alocați timp pentru a revizui codul pentru o mai bună înțelegere sau modificare pentru a vă satisface nevoile.

Următoarele comentarii pot fi utile în înțelegerea acestui proces.

  • Comentarii - Comentează extensiv pe măsură ce mergi - de multe ori scriu comentariile înainte de a scrie codul.
  • Împărțiți și cuceriți - utilizați funcții, clase și module (file). Utilizați compilări frecvente (Verificați) pentru a verifica sintaxa. Depanare - Utilizați instrucțiuni de imprimare pentru a verifica fluxul și a testa valorile și interfețele hardware. Nu vă fie frică să rezolvați problemele pe măsură ce mergeți, nimeni nu scrie cod care să nu conțină erori!
  • Constante - #define instrucțiunile pre-compilator atribuie nume numerelor PIN. Definițiile variabilelor Const cu comentarii reduc sau elimină numerele „Magic”. Utilizarea constantelor situate la începutul unui program sau funcție permite modificarea parametrilor fără rescrierea codului
  • Biblioteci predefinite - Utilizarea bibliotecilor predefinite reduce sarcina programării și timpul de depanare.
  • Blocuri de proiectare - Creat folosind funcții, codul de izolare în file separate (programe asociate și.hfiles), enumerări, clase și structuri. Concentrați-vă atenția asupra fiecăruia pentru a înțelege modul în care funcționează în raport cu restul codului.
  • State Machine (s) - Acesta este un model de programare care funcționează excelent cu Arduinos sau orice programe care sunt utilizate pentru a controla ieșirile sau pentru a reacționa la intrări. Există mai multe arome ale mașinilor de stat. Acest cod folosește o mașină de stare bazată pe instrucțiunea switch din funcția de buclă. Acest formular este ușor de înțeles și de depanat.
  • Afișare și meniuri - ieșirea OLED este concisă, dar oferă suficient feedback pentru utilizatorii obișnuiți și acceptă selectarea opțiunilor. Se integrează bine cu mașina de stare (aproape toate statele au un ecran OLED asociat). Clasa Meniu a fost utilă în izolarea codului pentru a afișa și selecta opțiunile meniului

Vă rugăm să citiți programul de mai multe ori. Vă ajută să luați o funcție sau o secțiune la un moment dat. De multe ori nu înțeleg codul pe care l-am scris decât dacă l-am citit cel puțin de două ori!

Pasul 10: Instalați programul

Copiați fișierul atașat pe computer, apoi dezarhivați-l în directorul Sketches

Conectați Arduino la computer și descărcați codul programului în mod normal. Deschideți monitorul serial Arduino IDE pentru a verifica dacă programul rulează și pentru a ajuta la depanare.

Pasul 11: Asamblați temporizatorul

Asamblați temporizatorul
Asamblați temporizatorul
Asamblați temporizatorul
Asamblați temporizatorul
Asamblați temporizatorul
Asamblați temporizatorul
Asamblați temporizatorul
Asamblați temporizatorul

Odată ce părțile superioare și inferioare ale carcasei sunt tipărite și curățate, componentele pot fi atașate cu ajutorul șuruburilor mici din plastic care se autofiletează. Mai întâi, suportul bateriei este fixat în spate. Restul pieselor sunt atașate la partea superioară a carcasei în următoarea ordine:

  1. OLED și cablu
  2. Comutator de pornire / oprire și cablare
  3. Codificator rotativ și cablu
  4. Difuzor / buzzer și cablare
  5. Mufă de control extern și cablare
  6. Pornire / Oprire glisare comutator și cablare (verificați dublă orientarea astfel încât pornirea să fie în direcția dorită

Dacă lipiți cablurile direct pe placa de circuit, faceți acest lucru după ce toate piesele sunt atașate la carcasă pentru a reduce ruperea firului. Trebuie să așteptați până când cablurile sunt conectate la placa principală înainte de a înșuruba placa respectivă în spate.

Dacă utilizați anteturi pin și conectori Dupont, atașați mai întâi placa principală în spate folosind șuruburi, apoi conectați componentele. Aveți grijă când conectați bateria la placa principală și respectați polaritatea corectă. De asemenea, ar trebui să configurați jumperii sau cablajul de control al releului în acest moment.

Partea inferioară a incintei se conectează la partea superioară prin intermediul a 4-40 șuruburi cu cap rotund, câte unul în fiecare colț. Cele patru găuri din partea superioară ar trebui fie să fie lovite cu un robinet 4/40, fie dacă utilizați inserții cu filet 4-40, va trebui să găuriți găurile pentru a le accepta. Cele 4 găuri pentru montarea plăcii de circuite principale pe partea de jos trebuie, de asemenea, să fie găurite. Conectați această placă la suportul pentru baterie și marcați locațiile găurilor. Găuriți după cum este potrivit pentru șuruburile de montare.

Pasul 12: Testarea integrării

Testarea integrării
Testarea integrării
Testarea integrării
Testarea integrării
Testarea integrării
Testarea integrării

Testarea finală (integrare) se realizează încercând toate opțiunile din meniu și verificând că funcționează cu hardware-ul așa cum a fost proiectat. Pentru codul pe care l-am furnizat, ar trebui să fie suficient. Dacă ați scris propriul cod sau ați modificat al meu, testarea va trebui să fie mai extinsă. Nu cred că trebuie efectuate toate selecțiile de sincronizare, dar trebuie să încercați toate opțiunile standard de alarmă și să validați funcționarea alarmelor Nap și Meditation așa cum a fost conceput.

Pasul 13: Gânduri finale

Felicitări pentru proiectul dvs. de succes, sper, Sunt sigur că ați întâmpinat probleme pe parcurs pe care trebuia să le rezolvați. De asemenea, sunt sigur că unele dintre instrucțiunile mele ar fi putut fi mai complete sau mai clare. Vă rog să-mi spuneți prin secțiunea de comentarii care au fost rezultatele dvs. și să vă oferiți sugestii cu privire la modul în care aceste instrucțiuni pot fi îmbunătățite.

Vă mulțumim pentru timpul acordat vizionării și / sau construirii acestui proiect.

Recomandat: