Lista a ceea ce avem nevoie:
- Digispark Attiny85
- Display Oled 128x64 I2C
- senzor de temperatură ds18b20
- Rezistor 4,7 Kom 0,25 W
- Programator ISP sau Arduino Placă de firmware Digispark Attiny85
- Tableta de plastic cu agrafă sau foaie de plastic subțire
- fire
- Conectori Dupont 2,54 mm „femele”
- Butoane 2 buc.
- Placă de circuite mici sau garnituri mici
- fier de lipit
- Soldat, colofon
- foarfece
- cutit clerical
- pistol cu clei fierbinte
- Adeziv fierbinte
Pasul 1 Selectarea componentelor.
Ca principal controler vom folosi Digispark Attiny85. Există mai multe tipuri de ele. Avem nevoie de o placă cu conector micro USB. Restul nu se vor încadra în carcasă.
Pentru afișare, avem nevoie de un display Oled 128x64 I2C. Acestea vin în diferite culori: alb, albastru, albastru cu galben. Vă atrag atenția! Termenul „în două culori” din descrierea sau titlul acestui ecran înseamnă o fâșie de o culoare în partea de sus a ecranului și a doua culoare întregul ecran rămas, și nu posibilitatea de a afișa două culori cu acest ecran! Toate ecranele de acest tip afișează o singură culoare sau în partea de sus o bandă de o culoare în partea de jos - alta. Cum ar fi, de exemplu, cel pe care îl voi folosi. Bara de deasupra este galbenă, restul ecranului este albastru. Puteți alege orice culoare vă place.
Avem nevoie și de senzorul de temperatură integrat DS18B20. Nu a fost ales din întâmplare. În primul rând, DS18B20 comunică cu microcontrolerul printr-o linie de comunicație cu un singur fir folosind protocolul de interfață cu 1 fir. În cazul nostru, acest lucru este important, deoarece concluziile lui Attiny85 fără senzor sunt puține. În al doilea rând, acest senzor este o cifră, adică ia toate măsurătorile în sine și transmite pur și simplu date de temperatură fără a cheltui resursele de calcul ale lui Attiny85.
În ceea ce privește restul, cred că nu vor exista întrebări, deci să trecem la fabricarea carcasei.
Pasul 2 Asamblarea carcasei.
Carcasa de ceas va fi din plastic subțire. Aveam o tabletă de plastic cu o agrafă pe mâini. Este suficient de dur pentru a-și menține forma și, în același timp, poate fi tăiat cu foarfece obișnuite și un cuțit de birou. A venit perfect.Dacă nu este la îndemână, puteți cumpăra o tabletă într-un magazin de birou sau puteți găsi plasticul potrivit pentru a înlocui tableta. Realizăm marcaje pe plastic conform schemei:
Tăiați toate liniile solide. Punctat - ușor tăiat cu un cuțit clerical. Liniile punctate sunt linii de pliere. După cum ați înțeles deja, acesta este aspectul obișnuit al cubului. În continuare, trebuie să lipiți firele pe ecran, cel mai bine este să luați mai multe culori și să scrieți ceea ce duce la ce. Lipiți ecranul pe adezivul topit la cald la mijloc, astfel încât partea din față să iasă din spate. După cum vedeți, am închis denumirile pinilor ecranului. Prin urmare, a fost necesar să le notăm. Am predat ușor cuțitul și astfel am tăiat partea inferioară a corpului. Nu este nimic rău în asta, totul poate fi lipit. Dar este mai bine să nu repet greșelile mele.
Rezultatul ar trebui să fie astfel:
În acest caz este gata. Puteți tăia încă capacul din spate din același plastic, dar acest lucru este opțional.
Pasul 3 Am lipit.
Cazul nostru este mic și trebuie să ne înghesuim mult acolo. Prin urmare, luăm o bucată din placa de circuit nu mai mare de 2,8 x 2,8 mm și lipim în două butoane, un senzor ds18b20, un rezistor și mai multe contacte. În conformitate cu următoarea schemă:
Nu este necesar să lipiți fire direct la Attiny, deoarece este necesar să deconectați totul pentru firmware. Rezultatul ar trebui să fie așa:
Butoanele sunt necesare pentru a seta ora. Puterea poate fi preluată din portul USB al computerului. Combinând plusul și minusul, respectiv:
Dacă doriți să faceți fără fire, trebuie să găsiți o baterie mică cu litiu-ion. Iată unul, de exemplu:
Această baterie se încadrează în carcasă. Este necesar să furnizați doar concluzii pentru încărcarea bateriei.
Pasul 4 Pregătirea programatorului.
Digispark Attiny85 poate fi programat prin conectorul micro USB de pe placă, utilizând Arduino IDE ca mediu de programare. În același timp, trebuie să sacrificați 2 KB de memorie pentru bootloader. Attiny 85 are un total de 8 KB Flash. Schița mea nu se potrivește cu bootloader-ul, așa că trebuie să programez prin programatorul ISP. Nu am un astfel de programator, dar există o placă Arduino Uno, pe care o voi folosi ca programator. Dacă aveți un programator ISB, puteți sări peste acest articol. Deschideți ID-ul Arduino și completați schița noastră numită ArduinoISP în Arduino Uno. Îl puteți găsi astfel: Fișier - Exemple - Arduino ISP. Schița începe cu un indiciu despre conectarea Arduino la controlerul programabil. În loc de Arduino Uno, poate exista orice altă placă Arduino.
// 10: resetare sclav
// 11: MOSI
// 12: MISO
// 13: SCK
Schema de conexiune pentru Digispark Attiny85:
Arduino UNO - Digispark Attiny85
D11 - P0
D12 - P1
D13 - P2
D10 - P5
Pasul 5 Pregătirea mediului de programare.
Pentru a edita firmware-ul și a completa schița din Attiny 85, trebuie să pregătiți nu numai programatorul, ci și mediul de programare în sine. Pentru a face acest lucru, instalați ID-ul Arduino de pe site-ul oficial Arduino.cc și, de asemenea, instalați suplimentul Attiny pentru microcontrolere prin intermediul Boards Manager.
Lansați ID-ul Arduino, apoi Fișier - Setări - în câmpul Adrese de bord suplimentare Adresa URL, lipiți linkul:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
faceți clic pe OK (puteți introduce mai multe linkuri separate printr-o virgulă în acest câmp). Următoarele instrumente - Board - Boards Manager în câmpul de filtrare, introduceți Attiny și faceți clic pe „attiny de David A. Mellis”. Faceți clic pe Instalare și așteptați finalizarea descărcării. Acum, în meniul Instrumente, selectați:
Board - Attiny 25/45/85
Procesor - Attiny 85
Ceas - interior 16
și selectați portul serial la care este conectat programatorul ISP sau Arduino ca programator.
Am încercat multe biblioteci diferite pentru lucrul cu ecranul. În opinia mea, cel mai convenabil și care lucrează la Attiny85: TinyOzOLED.
Un senzor de temperatură are nevoie de biblioteca OneWire.
Instalați aceste două biblioteci. Puteți instala biblioteci terțe 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 articolul 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.Dacă acest lucru nu vă ajută, deconectați arhivele în folderul „biblioteci” situat în folderul cu Arduino IDE instalat.
Pasul 6 Editați și completați schița.
Senzorul de temperatură funcționează conform protocolului One Wire și are o adresă unică pentru fiecare dispozitiv - un cod pe 64 de biți. Resursele atent nu sunt suficiente pentru a căuta acest cod de fiecare dată. Prin urmare, trebuie să conectați mai întâi senzorul la orice placă 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 Attiny85_Oled_SPI_Term_2, căutați linia:
byte addr [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};
Notăm adresa senzorului dvs. între bretele, înlocuind adresa senzorului meu. După aceea, conectați Attiny la programator sau Arduino ca programator (acest lucru este descris în Pasul 4) și completați schița. Rămâne să deconectați programatorul și să conectați totul în conformitate cu schema în 3 pași. Montajul se dovedește ceva de genul:
Ecranul este mic, este imposibil de pus atât timpul cât și temperatura, astfel încât să fie vizibil. Prin urmare, ceasul schimbă ora cu o citire a temperaturii la fiecare 10 secunde.