Kazalo:

Oledna budilka: 8 korakov (s slikami)
Oledna budilka: 8 korakov (s slikami)

Video: Oledna budilka: 8 korakov (s slikami)

Video: Oledna budilka: 8 korakov (s slikami)
Video: Аниша прокляла чарли 2024, November
Anonim
Oled budilka
Oled budilka

Naokrog je veliko ur arduino/ESP32, vendar uporabljajo te lepe in jasne OLED -je?

Že nekaj časa eksperimentiram z arduinosom in ESP32, vendar mi nikoli ni uspelo dokončati izdelka. Naredil sem budilko s 4 1,3 -palčnimi enobarvnimi OLED -ji. Ura ima tudi nočno svetilko, ki jo je mogoče zatemniti, in priključek za polnjenje USB (poleg postelje nihče nima rezervnih vtičnic). OLED -ji so tudi zatemnjeni, to je bilo dodano zadnjo minuto, potem ko je moje dekle ogrozilo moj projekt. Če dim ne bi bil -pri dekletih dovolj glasen, lahko navedem tudi različico kode, kjer se 3 prikazovalniki napajajo med določenimi urami. Cilj je bil narediti enostavno uporabno uro, s pogledom zunaj "prototipa". Med izdelavo ure sem naletel na nekatere težave, ki sem jih moral rešiti, zato menim, da je to navodilo vredno deliti. Uro lahko naredite z majhnim orodjem, ne maram navodil "in za naslednji korak sem uporabil svoje vaje 10.000 €/$ CNC mlin".

Nekaj stvari, ki bodo razložene v tem navodilu (in-structable-ception):

- Kako uporabljati/povezati I2C OLED zaslon z arduino/ESP32

- Kako uporabljati več predmetov I2C z enim arduinom/ESP32

- Kako narediti meni z možnostjo pomikanja z vrtljivim dajalnikom (+ kako uporabljati kodirnik z ESP32/arduino)

- Kako oblikovati in naročiti tiskano vezje po meri s fritzingom.

- Ura uporablja tudi RTC (ura v realnem času), LED gonilnik, odmikalni napetostni modul … V te se ne bom prav spuščal, ker je za te module na voljo veliko informacij.

Rad bi opozoril, da nisem profesionalni programer. Cilj mojega poučevanja je razložiti zgoraj omenjene točke. Morda ni najbolj čisti način, kako sem vse skupaj sestavil za svoj končni izdelek. To je način, ki mi je omogočil, da spremljam vse.

Zaloge

Pri nakupu zalog vedno poskušam pretehtati pomen kakovosti/dokumentacije v primerjavi s ceno. Moje zaloge so mešanica blagovnih znamk A in cenejših kitajskih delov. Mouser je odličen dobavitelj, če je kakovost pomembna, naročam pri Banggoodu/Aliexpressu za cenejše dele.

- Plošča ESP32, uporabil sem Huzzah32 iz adafruta, vendar obstaja veliko drugih (cenejših) možnosti. Za Huzzah32 sem se odločil, ker je zelo dobro dokumentiran.

- 4 1,3 -palčni zasloni I2C OLED (128 x 64, z gonilnikom SH1106), pogostejši so 0,96 -palčni, za ta projekt pa imam raje 1,3 -palčne

- Sparkfun femtobuck gonilnik za pogon LED

- RTC ura, uporabil sem eno z litijevo celico

- Arduino nano

-ženski vhod USB 2.0 (uporabljal sem: SS-52200-002 iz Stewart priključka)

- ženski vtič DC (uporabljal sem: L722A iz Switchcraft)

- 12V 3A enosmerni adapter (GST36E12-P1J iz Mean Well)

- PCB po meri, neobvezno, vendar je zaradi tega projekt veliko bolj kompakten in enostaven za uporabo, če del odmre + večja zanesljivost, ker manj žic (jlcpcb.com)

- Vijaki in vijaki M3

- medeninasti vložki M3

- 12- do 5 -stopinjski modul za znižanje pololu (DF24V22F5)

- 3 vati s hladilnikom

- Mostične žice

- zvočni signal

- I2C multiplekser (TCA9548A iz adafruit)

- 2 rotacijska dajalnika (poskusil sem nekaj, vsi ne delujejo z mojo kodo. Tisti iz "DFrobota" deluje in tako tudi tisti z okroglim tiskanim vezjem iz "DIYmore". Moja koda ne deluje za gumb tipa KY-040. Moja budilka uporablja tisto iz DIYmore, ker jih je zelo enostavno namestiti na ploščo (brez dodatnih vijakov/lukenj).

- izbor ženskih glav (neobvezno)

- Les za okvir: 18mmx18mmx2400mm

- Paus papir

Uporabil sem tudi nekaj orodij (spajkalnik, tretja roka, žaga …), vendar prav nič eksotičnega.

1. korak: Uporaba Oled

Uporaba Oled
Uporaba Oled
Uporaba Oled
Uporaba Oled
Uporaba Oled
Uporaba Oled

Za uporabo OLED -jev morate namestiti knjižnico. Uporabljam U8G2lib Oli Krausa, je zelo razumljiv in ima referenčni vodnik z jasnimi primeri.

Če želite priključiti svojo ploščo (ESP ali arduino), morate najti zatiče SDA in SCL. Ti zatiči so komunikacijski zatiči I2C. Poiščite Google za "pinout" vaše posebne plošče, če jih ne najdete.

Dodal sem nekaj vzorčne kode. Koda deluje tako za arduino kot za ESP32, vendar je manj verjetno, da bo ESP32 zmanjkalo pomnilnika. Vsi oledi, ki sem jih do sedaj poskusil, delujejo tako z 3.3V (ESP32) kot s 5V.

2. korak: Več OLED -jev

Več OLED -jev
Več OLED -jev

Tu se moj projekt začne razlikovati od številnih drugih budilk. Večina arduino/ESP ima samo en ali dva I2C zatiča. Ta vrsta omejuje uporabo delov I2C. Kaj pa, če imam 4 senzorje I2C in želim prikazati njihove odčitke na zaslonu I2C? Vnesite multiplekser. Muliplexer vam omogoča, da naslovite 7 različnih delov I2C. To omogoča, da moj ESP32 uporablja uro realnega časa I2C in prikaže čas z uporabo znova I2C na štirih zaslonih (ali več, ne dovolite, da vas ustavim).

Dodal sem nekaj vzorčne kode za ESP32, od zdaj naprej nisem prepričan, da bo arduino sledil. Primer uporablja samo zaslone, lahko so tudi druge stvari, kot so senzorji I2C itd. Princip je vedno enak, pravi kanal pokličete z "tcaselect (#);" funkcijo, nato izvedete katero koli kodo, potrebno za vaš objekt I2C.

3. korak: Ustvarjanje pomičnega menija z vrtljivim dajalnikom

Ustvarjanje pomičnega menija z vrtljivim dajalnikom
Ustvarjanje pomičnega menija z vrtljivim dajalnikom
Ustvarjanje pomičnega menija z vrtljivim dajalnikom
Ustvarjanje pomičnega menija z vrtljivim dajalnikom
Ustvarjanje pomičnega menija z vrtljivim dajalnikom
Ustvarjanje pomičnega menija z vrtljivim dajalnikom

Najprej preizkusite kodirnike. Dodal sem nekaj kode za preizkušanje modulov kodirnika. Kot je navedeno v zalogi: Svojo kodo sem uspešno preizkusil le z moduli rotacijskega dajalnika robota DF in modulom z okroglim tiskanim vezjem podjetja DIYmore. Za desne kodirnike si oglejte zgornje slike.

Knjižnica, ki sem jo uporabil, je ta:

PDF, ki sem ga dodal, upam, da pomaga pri strukturi menija, ki sem jo uporabil za uro.

Delovanje kodirnika je bilo zame pri tem projektu najtežji del. Obstaja veliko različnih kodirnikov in veliko različnih knjižnic, ki niso vedno združljive z ESP32. Mislim pa, da je (delujoč) rotacijski dajalnik elegantna rešitev, če želite nekaj vnesti. Če bi uporabljal samo gumbe, bi potreboval več kot 1 in nastavitev časa bi zahtevala veliko pritiskov.

4. korak: Združite prejšnjo kodo

Sestavljanje prejšnje kode
Sestavljanje prejšnje kode

Naslov povzema, kaj sem naredil. Delno sem poskusil delno in potem sem vse sestavil. Ker pa nikoli ni nič lahko, sem moral nekaj spremeniti. Serijska komunikacija je počasen proces. To ovira pravilno branje kodirnika. Za premagovanje tega sem dodal prekinitve na nožice dajalnika. Koda za branje kodirnika se takoj pokliče, če dajalnik pritisnete ali obrnete.

Ko boste razumeli, kako so zgrajeni meniji, boste ugotovili, da je zelo enostavno dodati ali odstraniti funkcije po vaših željah. Morda bi radi vzeli trenutno vreme ali čas iz interneta in ga prikazali?

Veliko takšnih idej sem izpustil, ker sem si želel predvsem zanesljivega časovnega miru. Taka, ki ničesar ne naredi samodejno. Delam zelo čudne ure v poletnem času. Vsakič, ko se ura spremeni, sem nervozen, da zaspim. Ali bo moj telefon samodejno spremenil uro? Bo moja ura? No, moja ura ne bo, če je sam ne zamenjam. Morda pa želite svojo uro postaviti v kuhinjo? Drugačen scenarij, dodajte funkcije, dokler ne zmanjka pomnilnika!

5. korak: PCB po meri s Fritzing + shemo

PCB po meri s Fritzing + shemo
PCB po meri s Fritzing + shemo
PCB po meri s Fritzing + shemo
PCB po meri s Fritzing + shemo
PCB po meri s Fritzing + shemo
PCB po meri s Fritzing + shemo

Točka pozornosti: Adafruit poudarja, da čeprav lahko napajate huzzah32 prek vtiča USB, morate paziti, da hkrati ne uporabljate vtičnice za mikro USB. Moje tiskano vezje se napaja preko stopnice navzdol, ki nato napaja huzzah prek vtiča USB. Zato pri nalaganju vedno izključite zunanje napajanje/odstranite huzzah s plošče.

Odločil sem se za spajkanje ženskih glav na tiskanem vezju, ker olajša zamenjavo dela ali dodajanje na primer dodatnega senzorja I2C. To mi omogoča tudi preprosto odstranitev nano ali ESP32 za nalaganje programov.

Dodal sem datoteko Frizting, tukaj lahko vnesem roman, vendar mislim, da primer najbolje govori. Začel sem s shemo celotne nastavitve. Medtem ko ima Fritzing v zabojih veliko delov, ni vse tam. Včasih lahko na internetu najdete del Fritzing, včasih pa ne. Deli, ki jih nisem našel, sem preprosto zamenjal z ženskim delom glave. Če ga kliknete z desnim gumbom, lahko glavo uredite na želeno število zatičev in ji dodelite izpis. To sem naredil z vsakim delom, ki ga nisem našel. Ker skoraj vsi moduli uporabljajo enak razpon 0,15 palca (2,54 mm), boste dobili pravilen razmik za del.

Nato preklopite na pogled PCB aplikacije za fritzing. PCB bo postavljen, če ga kliknete, lahko nastavite njegovo velikost in izberete enoslojno ali dvoslojno tiskano vezje. Moj uporablja 2 sloja. Fritzing bo predlagal povezave, ki ste jih naredili v shematskem pogledu. Program ima možnost samodejnega preusmerjanja, vendar ga nikoli ne uporabljam. Rada ročno organiziram svoje povezave. V pogledu PCB so rumene povezave v zgornji plasti, oranžne v spodnji plasti. Če znova kliknete povezavo, lahko izberete njene lastnosti.

Za izdelavo dejanskega tiskanega vezja ga morate izvoziti kot datoteko gerber. Preden to storite, lahko na zavihku "usmerjanje" preverite pravila oblikovanja. Če se vse odjavi, lahko kliknete "izvoz za tiskano vezje". Večina proizvajalcev bo zahtevala datoteko gerber, zato izberite izvoz v gerber.

PCB sem naročil pri JLCPCB, všeč mi je, da vam takoj navedejo ceno. Seveda obstaja še veliko drugih možnosti.

O shemi: uporabljeni sta 2 napetosti. LED in femtobuck se napajata neposredno iz 12V napajanja. Preostanek se napaja preko znižanega izpada s 5 volti.

Korak 6: Oblikovanje + laserski rezalnik

Oblikovanje + laserski rezalnik
Oblikovanje + laserski rezalnik
Oblikovanje + laserski rezalnik
Oblikovanje + laserski rezalnik

Za prvo zasnovo sem poskusil uporabiti masiven hrast (sledim tečajem obdelave lesa), vendar je hitro postalo jasno, da to ni idealno. Les je predebel, zato je težko namestiti dele. 3 -milimetrski brezovi multipleks omogoča lažje pritrditev kodirnikov in prikazovalnikov.

Našel sem spletno storitev lasercut, snijlab.nl, ki je na voljo za ljubitelje v Rotterdamu (pošiljajo v Belgijo, na Nizozemsko in v Nemčijo). Na njihovo spletno stran lahko naložite svoje risbe in takoj navedejo vašo ceno. Uporabil sem Autocad, ki ga imam pri delu, vendar programska oprema ni pomembna. To mora biti le vektorska risba (Vectr, Illustrator, Inkscape …). Večina trgovin uporablja barve, da določi, ali želite rezati ali gravirati.

Nekaj stvari, ki jih morate upoštevati:

- Maks. dimenzije laserskega rezalnika (okoli svojih delov sem narisal okvir)

- Min. razdalja med rezi

- Pazite, da ne narišete dvojnih črt, laser bo naredil dodaten prehod, kar vas bo stalo več.

- Pri načrtovanju v PDF preverite, ali ste narisali 1: 1. Ne želite zmanjšati velikosti ali se prilegati papirju.

7. korak: Montaža

Montaža
Montaža
Montaža
Montaža
Montaža
Montaža

Uro sem zgradil okoli lesenega okvirja, plošče so pritrjene na mestu z vijaki M3 in vložki v okvirju. Če bi kdaj izdelal različico 2, bi za pritrditev plošč uporabil aluminijaste "L" profile. Zelo težko je bilo natančno izvrtati luknje za medeninaste vložke. Trajalo je zelo dolgo, samo sprejemljiv rezultat. To bi seveda pomenilo, da je treba risbo laserskega reza pregledati. Mislim, da bi z aluminijastimi profili in samo maticami in vijaki dobili boljši rezultat.

Za boljšo razpršitev svetlobe sem na notranjo stran perforacij prilepila sledilni papir. To daje svetlobi lep sijaj.

8. korak: Ne ustavite se tukaj

Ne ustavite se tukaj
Ne ustavite se tukaj
Ne ustavite se tukaj
Ne ustavite se tukaj
Ne ustavite se tukaj
Ne ustavite se tukaj

Projekt se osredotoča na ESP32, komaj sem ga uporabljal. Moje luči v spalnici je trenutno mogoče daljinsko upravljati z blynkom. Upravljanje z uro je le majhen korak naprej. Morda želite dodatne zaslone, ki vam prikazujejo temperaturo v hiši? Ali pa nekateri lokalni senzorji (na tem multiplekserju so še rezervne povezave I2C!). Morda nastavite čas/alarm prek aplikacije in bluetootha?

Sporočite mi, kaj ste spremenili, kaj bi spremenili, kaj bi moral spremeniti jaz …

Priporočena: