» electronică » Arduino »Ceas Arduino cu senzor de temperatură și fără RTS

Ceas Arduino cu senzor de temperatură și fără RTS

Ceas Arduino cu senzor de temperatură și fără RTS

Bună după-amiaza, azi voi împărtăși instrucțiuni despre cum să faci un ceas cu un termometru de cameră. Ceasul continuă Arduino Ecranul grafic UNO, WG12864B este utilizat pentru afișarea timpului și temperaturii. Ca senzor de temperatură - ds18b20. Spre deosebire de majoritatea celorlalte ceasuri, nu voi folosi RTS (Real Time Clock), ci încearcă să trec fără acest modul suplimentar.

Pentru asta de casă Sunt necesare următoarele componente:
- Arduino UNO (sau orice altă placă compatibilă Arduino)
- Ecran grafic WG12864B
- senzor de temperatură ds18b20
- Rezistor 4,7 Kom 0,25 W
- Rezistență 100 ohmi 0,25 W
- Compartiment pentru baterii pentru 4 baterii AA „tip deget”
- Cutie potrivită
- Fișier mic
- Lac de unghii (negru sau de culoare corporală)
- Puțină plastic subțire sau carton
- banda electrica
- conectarea firelor
- placa de circuit
- Butoane
- fier de lipit
- Soldat, colofon
- bandă cu două fețe

Pasul 1 Pregătirea carcasei.
Deci, ceasurile noastre ar trebui să fie amplasate undeva. Trebuie să găsiți o cutie potrivită. Principalul lucru este că ecranul WG12864B, Arduino și o placă de circuite mici pentru butoane se potrivesc. Dimensiunea minimă a cutiei este de 7 x 7 x 10 cm. Dacă utilizați o placă mică Arduino, o puteți muta într-o cutie și mai mică, dar voi descrie procesul folosind exemplul Arduino UNO. Materialul din care este confecționată cutia este, de preferință, din plastic, dacă, la fel ca a mea, este fier, merită să aveți grijă de izolație, astfel încât să nu se „rotească” în interior. Plasticul este de preferat, deoarece este mai ușor de tăiat. Cu o cutie, el este cazul ceasurilor noastre, decis. Acum este necesar să tăiați o fereastră sub ecran cu o dimensiune de 6,5x4 cm. Dacă cutia este de fier, este extrem de dificil să o faceți cu atenție. Indiferent cum încercați, vor exista vopsea tăiată și rugozitate în apropierea tăierii. Prin urmare, mai întâi îl decupăm, pentru aceasta puteți folosi „râșnița”, un burghiu cu duză pentru tăiere sau un frezor, în general, la alegere, cu ceea ce este la îndemână. După aceea, curățăm marginile cu un fișier. Vopsim toată vopseaua ciobită cu lac de unghii, culoare adecvată. Rezultatul ar trebui să fie următorul:


Pasul 2 Pregătiți ecranul grafic.
Odată cu conectarea ecranului, la prima vedere, apar multe probleme și dificultăți. Dar dacă te ocupi mai întâi de tipurile lor, va deveni mult mai ușor și mai inteligibil. Pe controlerul ks0107 / ks0108 există multe variante și tipuri de ecrane.Toate ecranele sunt de obicei împărțite în 4 tipuri:
Opțiunea A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Opțiunea B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Afișează AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J, 1
Opțiunea C: Shenzhen Jinghua Afișează Co Ltd. JM12864
Opțiunea D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202

Lista nu este completă, sunt multe. Cel mai comun și, după părerea mea, convenabil WG12864B3 V2.0. Ecranul poate fi conectat la Arduino printr-un port serial sau paralel. Atunci când este folosit cu Arduino UNO, este mai bine să alegeți o conexiune port serială - atunci avem nevoie de doar 3 ieșiri ale microcontrolerului, în loc de cel puțin 13 linii când sunt conectate printr-un port paralel. Totul este conectat simplu. Există încă o nuanță, două tipuri de afișaje pot fi găsite la vânzare, cu un potențiometru încorporat (pentru reglarea contrastului) și fără acesta. Am ales și vă sfătuiesc să faceți același lucru cu cel încorporat.


Acest lucru reduce numărul de piese și timpul de lipire. Merită, de asemenea, să puneți un rezistor de limitare curent de 100 Ohmi pentru lumina de fundal. Prin conectarea directă a 5 volți, există riscul de a arde lumina de fundal.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - prin rezistor - + 5V
20 (BLK) - GND

Cel mai convenabil lucru este să colectați totul în spatele ecranului și să scoateți 5 fire din acesta pentru a vă conecta la Arduino UNO. Rezultatul ar trebui să fie așa:


Pentru cei care aleg încă o conexiune paralelă, voi oferi un tabel de conexiuni.


Și aspectul pentru ecranele opțiunii B:


Pasul 3 Conectați senzorul de temperatură.
După cum spuneam, vom folosi senzorul integrat DS18B20 pentru a măsura temperatura. Am ales-o pentru precizia sa mare de măsurare, eroarea nu este mai mare de 0,5 ° C. Senzorul este calibrat în momentul fabricării, nu sunt necesare setări suplimentare. Domeniul de măsurare a temperaturii -55 ... + 125 ° C. Există două moduri de funcționare: cu o sursă de alimentare externă și „putere spuriță”. Când funcționați în modul de alimentare externă, conexiunea este următoarea:


Când utilizați „putere spuriosă”, senzorul primește putere de la linia de comunicație. În acest mod, două fire sunt suficiente pentru a conecta ds18b20 la microcontroler. Condensatorul intern al senzorului este încărcat datorită energiei pe linia de comunicații la un nivel scăzut al autobuzului. Modul „nutriție parazitară” are multe caracteristici și, prin urmare, nu recomand utilizarea acestuia. Dar dacă totuși decideți să o utilizați, iată diagrama:


Sau puteți utiliza o diagramă de cabluri îmbunătățită atunci când utilizați „putere spuriosă”:


Mai mulți senzori pot fi incluși pe o singură linie de comunicare. Pentru ceasurile noastre unul este suficient. Conectăm firul de la pinul „DQ” ds18b20 la „pinul 5” Arduino UNO.

Pasul 4 Pregătirea unei plăci cu butoane.
Pentru a seta ora și data pe ceas, vom folosi trei butoane. Pentru comoditate, lipiți cele trei butoane de pe placa de circuit și scoateți cablul.


Ne conectăm după cum urmează: cablul comun pentru toate cele trei butoane este conectat la „GND” Arduino. Primul buton, servește pentru a intra în modul de setare a orei și pentru a trece timpul și data, pentru a vă conecta la „Pin 2”. Al doilea, butonul pentru creșterea valorii, este „Pin 3”, iar al treilea, butonul pentru scăderea valorii, este „Pin 4”.

Pasul 5 Pune totul la un loc.
Pentru a evita un scurtcircuit, izolați ecranul. Într-un cerc învelim cu bandă electrică, iar pe spate fixăm pe o bandă cu două fețe, tăiată la dimensiune, o bandă de material izolant. Cartonul gros sau plasticul subțire este potrivit. Am folosit plastic dintr-o tabletă de hârtie. S-a dovedit următoarele:


Pe partea din față a ecranului, de-a lungul marginii, lipim o bandă cu două fețe pe o bază de spumă, de preferință neagră.


Conectăm ecranul la Arduino:


În plus, ne conectăm de la compartimentul bateriei la „VIN” Arduino, mai puțin la „GND”. O plasăm în spatele Arduino. Înainte de instalare în carcasă, nu uitați să conectați senzorul de temperatură și placa cu butoane.


Pasul 6 Pregătiți și completați schița.
Un senzor de temperatură are nevoie de biblioteca OneWire.
onewire.rar [16.75 Kb] (descărcări: 154)


Ieșirea la ecran se face prin biblioteca U8glib:
u8glib.rar [906,95 Kb] (descărcări: 156)


Pentru a edita și completa schița, instalați aceste două biblioteci. Există două modalități de a face acest lucru. Pur și simplu decuplați aceste arhive și puneți fișierele dezarhivate în folderul „biblioteci” situat în folderul cu Arduino IDE instalat.Sau a doua opțiune este să instalați biblioteca direct în mediul de programare. Fără a despacheta arhivele descărcate, în IDE Arduino, selectați meniul Sketch - Connect Library. În partea de sus a listei derulante, selectați elementul „Adăugați biblioteca .Zip”. În fereastra de dialog care apare, selectați biblioteca pe care doriți să o adăugați. Deschideți din nou meniul Sketch - Connect Library. În partea de jos a listei derulante, ar trebui să vedeți o nouă bibliotecă. Acum biblioteca poate fi folosită în programe. Nu uitați să reporniți ID-ul Arduino după toate acestea.

Senzorul de temperatură funcționează conform protocolului One Wire și are o adresă unică pentru fiecare dispozitiv - un cod pe 64 de biți. De fiecare dată, căutarea acestui cod nu este practic. Prin urmare, trebuie mai întâi să conectați senzorul la Arduino, completați schița aflată în meniul Fișier - Exemple - Dallas Temperatură - OneWireSearch. Apoi, executați Instrumente - Port Monitor. Arduino ar trebui să găsească senzorul nostru, să-și scrie adresa și citirile actuale ale temperaturii. Copiem sau notăm pur și simplu adresa senzorului nostru. Deschideți schița Arduino_WG12864B_Term, căutați linia:

byte addr [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // adresa senzorului meu 


Notăm adresa senzorului dvs. între bretele, înlocuind adresa senzorului meu.

Foto:

//u8g.setPrintPos (44, 64); u8g.print (sek); // Tipăriți secunde pentru a verifica corectitudinea cursului


Afișează secunde lângă „Date”. Acest lucru este necesar pentru a stabili cu exactitate cursul timpului.
Dacă ceasul se grăbește sau se întârzie, ar trebui să schimbați valoarea în linie:

if (micros () - prevmicros> 494000) {// schimbarea la alta pentru ajustare a fost 500000


Am determinat experimental numărul la care ceasul merge destul de precis. Dacă ceasul tău se grăbește, ar trebui să crești acest număr, dacă sunt în urmă, scade. Pentru a determina exactitatea cursului și au nevoie de o concluzie de secunde. După calibrarea corectă a numărului, secunde pot fi comentate și astfel eliminate din ecran.

Completați schița.
arduino_wg12864b_term.rar [3,64 Kb] (descărcări: 314)

7
9
5.3

Adaugă un comentariu

    • zâmbetzâmbetexaxabinedontknowYahooNea
      șefzgârieturăpăcălidada-daagresivsecret
      scuzedansdance2dance3iertareajutorbăuturi
      oprireprietenibungoodgoodfluiersincopălimbă
      fumaplauzeCrayvestimbatjocoritorDon-t_mentiondescărcare
      căldurămânioslaugh1mdaîntâlniremoskingnegativ
      not_ifloricele de porumbpedepsicititsperiasperiecăutare
      batjocurăthank_youacestto_clueUmnikacutconveni
      răubeeeblack_eyeblum3roșilăudăroșenieplictiseală
      cenzuratpleasantrysecret2amenințavictorieyusun_bespectacled
      ShokRespektlolprevedbun venitKrutoyya_za
      ya_dobryiajutorne_huliganne_othodifludinterdicțieînchide

Vă sfătuim să citiți:

Înmânează-l pentru smartphone ...