Sadržaj:

Oled budilnik: 8 koraka (sa slikama)
Oled budilnik: 8 koraka (sa slikama)

Video: Oled budilnik: 8 koraka (sa slikama)

Video: Oled budilnik: 8 koraka (sa slikama)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Studeni
Anonim
Oled budilica
Oled budilica

Puno je arduino/ESP32 satova, ali koriste li oni te oštre OLED -ove?

Već neko vrijeme eksperimentiram s arduinima i ESP32 -ima, ali nikada nisam stigao do gotovog proizvoda. Napravio sam budilicu s 4 1,3 -inčna monokromatska OLED -a. Sat također sadrži noćnu svjetiljku koja se može prigušiti i USB priključak za punjenje (nitko nema rezervne utičnice pored svog kreveta). OLED -ovi su također prigušivi, ovo je dodano zadnji trenutak nakon što mi je djevojka zaprijetila projektu. Ako prigušenje ne mora biti - u djevojkama glas - dovoljno prigušen, mogu također dati verziju koda gdje se 3 zaslona napajaju između određenih sati. Cilj je bio napraviti jednostavan sat za servisiranje, s pogledom izvan "prototipa". Prilikom izrade sata naišao sam na neke poteškoće koje sam morao riješiti, pa mislim da je ovo uputstvo vrijedno podijeliti. Sat se može izraditi s malim alatima, ne sviđaju mi se "i za sljedeći korak sam upotrijebio svoje vodiče od 10.000 €/$ CNC mlina".

Neke stvari koje će biti objašnjene u ovom uputstvu (in-structable-ception):

- Kako koristiti/povezati I2C OLED zaslon s arduinom/ESP32

- Kako koristiti više I2C objekata s jednim arduino/ESP32

- Kako napraviti izbornik s mogućnošću pomicanja pomoću rotacijskog kodera (+ kako koristiti koder s ESP32/arduino)

- Kako dizajnirati i naručiti prilagođenu PCB ploču pomoću fritzinga.

- Sat također koristi RTC (sat u stvarnom vremenu), LED upravljački program, naponski modul za smanjenje napona … Neću se baviti ovim stvarima jer je za te module zaista dostupno mnogo informacija.

Želio bih napomenuti da nisam profesionalni programer. Cilj mog poučavanja je objasniti gore spomenute točke. To kako sam sve to spojio za svoj konačni proizvod možda nije najčišći način. To mi je omogućio da sve to pratim.

Pribor

Prilikom kupovine zaliha uvijek nastojim odvagnuti važnost kvalitete/dokumentacije u odnosu na cijenu. Moje zalihe su mješavina marki A i jeftinijih kineskih dijelova. Mouser je izvrstan dobavljač ako je kvaliteta važna, naručujem od Banggood/Aliexpress za jeftinije dijelove.

- ESP32 ploča, koristio sam Huzzah32 iz adafruit -a, ali postoji mnogo drugih (jeftinijih) opcija. Odabrao sam Huzzah32 jer je vrlo dobro dokumentiran.

- 4 1,3 -inčna I2C OLED zaslona (128x64, s upravljačkim programom SH1106), češći su oni od 0,96 ", ali za ovaj projekt preferiram one od 1,3"

- Sparkfun femtobuck upravljački program za pogon LED

- RTC sat, koristio sam jedan s litijevom ćelijom

- Arduino nano

-ženski USB 2.0 port (koristila sam: SS-52200-002 sa Stewart konektora)

- ženski DC priključak (koristila sam: L722A iz Switchcrafta)

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

- Prilagođena PCB, opcionalno, ali to projekt čini mnogo kompaktnijim i lakim za servisiranje ako dio pogine + veća pouzdanost jer manje žica (jlcpcb.com)

- M3 vijci i vijci

- mesingani umetci M3

- Modul za smanjenje snage 12V do 5V iz Pololua (DF24V22F5)

- 3 watta napajana hladnjakom

- Žice za kratkospojnike

- Zvučni signal

- I2C multiplekser (TCA9548A iz adafruit -a)

- 2 rotacijska davača (pokušao sam neke, ne rade svi s mojim kodom. Radi i onaj iz "DFrobota", pa tako i onaj s okruglim tiskanim pločicama iz "DIYmore". Čini se da moj kôd ne radi za tipku tipa KY-040. Moj budilica koristi onaj iz DIYmore jer ih je vrlo lako montirati na ploču (nisu potrebni dodatni vijci/rupe).

- Asortiman ženskih zaglavlja (izborno)

- Drvo za okvir: 18mmx18mmx2400mm

- Papir za precrtavanje

Koristio sam i neke alate (lemilicu, treću ruku, pilu …), ali ništa zaista egzotično.

Korak 1: Upotreba Oled -a

Korištenje Oleda
Korištenje Oleda
Korištenje Oleda
Korištenje Oleda
Korištenje Oleda
Korištenje Oleda

Za korištenje OLED -ova morate instalirati knjižnicu. Koristim U8G2lib od Oli Krausa, vrlo je razumljiv i ima referentni vodič s jasnim primjerima.

Za spajanje ploče (ESP ili arduino) morate pronaći SDA i SCL pinove. Ovi pinovi su komunikacijski pinovi I2C. Google ne traži "pinout" vaše posebne ploče ako ih ne možete pronaći.

Dodao sam primjer koda. Kod radi i za arduino i za ESP32, ali je manja vjerojatnost da će ESP32 ostati bez memorije. Svi oledi koje sam do sada probao rade i sa 3.3V (ESP32) i sa 5V.

Korak 2: Više OLED -ova

Više OLED -ova
Više OLED -ova

Tu se moj projekt počinje razlikovati od mnogih drugih budilica. Većina arduina/ESP -ova ima samo jedan ili dva I2C pina. Ova vrsta ograničava uporabu I2C dijelova. Što ako imam 4 I2C senzora i želim prikazati njihova očitanja na I2C zaslonu? Unesite multiplekser. Muliplekser vam omogućuje adresiranje 7 različitih I2C dijelova. To omogućuje mom ESP32 -u da koristi I2C sat u stvarnom vremenu i da prikazuje vrijeme koristeći opet I2C na 4 zaslona (ili više, nemojte dopustiti da vas zaustavim).

Dodao sam neki primjer koda za ESP32, odavde nadalje nisam siguran da li arduino može nastaviti. Primjer koristi samo zaslone, to mogu biti i druge stvari poput I2C senzora itd. Princip je uvijek isti, desni kanal pozivate s "tcaselect (#);" funkciju, tada izvršavate bilo koji kôd koji je potreban za vaš I2C objekt.

Korak 3: Stvaranje izbornika koji se može pomicati pomoću rotacijskog kodera

Stvaranje izbornika koji se može pomicati pomoću rotacijskog kodera
Stvaranje izbornika koji se može pomicati pomoću rotacijskog kodera
Stvaranje izbornika koji se može pomicati pomoću rotacijskog kodera
Stvaranje izbornika koji se može pomicati pomoću rotacijskog kodera
Stvaranje izbornika koji se može pomicati pomoću rotacijskog kodera
Stvaranje izbornika koji se može pomicati pomoću rotacijskog kodera

Prije svega, testirajte svoje enkodere. Dodao sam neki kôd za testiranje vaših modula kodera. Kao što je navedeno u potrošnom materijalu: Uspješno sam testirao svoj kôd pomoću modula rotacijskog davača iz DF robota i modula s okruglom PCB -om tvrtke DIYmore. Za gornje slike kodera pogledajte gornje slike.

Biblioteka koju sam koristio je ova:

Nadam se da će PDF koji sam dodao pomoći u strukturi izbornika koju sam koristio za sat.

Omogućavanje rada kodera bio mi je najteži dio u ovom projektu. Postoji mnogo različitih enkodera i mnogo različitih knjižnica koje nisu uvijek kompatibilne s ESP32. Ali mislim da je (radni) rotacijski koder elegantno rješenje ako želite unijeti nešto. Da sam koristio samo gumbe, trebalo bi mi više od 1, a za postavljanje vremena potrebno je mnogo pritisaka.

Korak 4: Spajanje prethodnog koda

Spajanje prethodnog koda
Spajanje prethodnog koda

Naslov sažima ono što sam učinio. Dio sam isprobao, a onda sam sve spojio. Ali budući da nikad ništa nije lako, morao sam promijeniti neke stvari. Serijska komunikacija je spor proces. To ometa pravilno čitanje kodera. Kako bih to prevladao, dodao sam prekide pinovima davača. Kôd za čitanje kodera tada se odmah poziva ako pritisnete ili okrenete davač.

Kad shvatite kako su izbornici izgrađeni, uvidjet ćete da je vrlo jednostavno dodati ili ukloniti značajke po vlastitom nahođenju. Možda biste htjeli dohvatiti trenutno vrijeme ili vrijeme s interneta i prikazati ih?

Mnoge sam takve ideje izostavio jer sam prije svega želio pouzdan vremenski mir. Ona koja ne radi ništa automatski. Radim vrlo čudne sate u zoni ljetnog računanja vremena. Svaki put kad se sat promijeni, nervozan sam da prespavam. Hoće li moj telefon automatski promijeniti sat? Hoće li moj sat? Pa moj sat neće, osim ako ga sam ne promijenim. Ali možda želite staviti svoj sat u kuhinju? Drugačiji scenarij, dodajte značajke dok se ne isprazni memorija!

Korak 5: Prilagođena PCB s Fritzing + shemom

Prilagođena PCB sa Fritzing + shemom
Prilagođena PCB sa Fritzing + shemom
Prilagođena PCB s Fritzing + shemom
Prilagođena PCB s Fritzing + shemom
Prilagođena PCB s Fritzing + shemom
Prilagođena PCB s Fritzing + shemom

Točka pažnje: Adafruit ističe da, iako možete napajati huzzah32 putem USB priključka, morate paziti da istovremeno ne koristite mikro USB ulaz za napajanje. Moje PCB se napaja putem step down dolara, koji zatim napaja huzzu putem USB pina. Zato uvijek isključite vanjsko napajanje/uklonite huzzu s ploče pri učitavanju.

Odlučio sam lemiti ženska zaglavlja na PCB jer olakšava zamjenu dijela ili dodavanje, na primjer, dodatnog I2C senzora. To mi također omogućuje jednostavno uklanjanje nano ili ESP32 za učitavanje programa.

Dodao sam datoteku Frizting, ovdje mogu upisati roman, ali mislim da primjer najbolje govori. Počeo sam sa shemom cijele postavke. Iako Fritzing ima puno dijelova u spremnicima, nema svega. Ponekad na internetu možete pronaći dio Fritzing, ponekad ne možete. Dijelove koje nisam mogao pronaći jednostavno sam zamijenio ženskim dijelom zaglavlja. Ako desnom tipkom miša kliknete zaglavlje, možete urediti željeni broj pinova i dodijeliti mu isječak. Učinio sam to sa svakim dijelom koji nisam mogao pronaći. Budući da gotovo svi moduli koriste isti razmak od 0,14 inča (2,54 mm), to će vam dati ispravan razmak za dio.

Zatim se prebacujete na prikaz PCB -a aplikacije za fritzing. PCB će biti postavljen, ako ga kliknete, možete postaviti njegovu veličinu i odabrati jednoslojnu ili dvoslojnu PCB. Moj koristi 2 sloja. Fritzing će predložiti veze koje ste uspostavili u shematskom prikazu. Program ima opciju autoroute, ali ja ga nikad ne koristim. Volim ručno organizirati svoje veze. U prikazu PCB -a žute su veze u gornjem sloju, narančaste su u donjem sloju. Opet, ako kliknete na vezu, možete odabrati njezina svojstva.

Za izradu stvarnog PCB -a morate ga izvesti kao gerber datoteku. Prije nego što to učinite, na kartici "usmjeravanje" možete provjeriti pravila dizajna. Ako se sve odjavi, možete kliknuti na "izvoz za PCB". Većina proizvođača zatražit će gerber datoteku, pa odaberite izvoz u gerber.

Naručio sam svoj PCB od JLCPCB, sviđa mi se što vam odmah navode cijenu. Naravno, postoje mnoge druge mogućnosti.

O shemi: postoje 2 napona koji se koriste. LED i femtobuck izravno se napajaju iz 12V napajanja. Ostatak se napaja putem step-down dolara sa 5 volti.

Korak 6: Dizajn + Laserski rezač

Dizajn + Laserski stroj
Dizajn + Laserski stroj
Dizajn + laserski rezač
Dizajn + laserski rezač

Za svoj prvi dizajn pokušao sam koristiti masivni hrast (pratim tečajeve obrade drveta), ali brzo je postalo jasno da to nije idealno. Drvo je previše debelo, što otežava uklapanje vaših dijelova. Multipleks od 3 mm breze omogućuje lakše pričvršćivanje kodera i zaslona.

Pronašao sam internetsku uslugu laserskog izrezivanja, snijlab.nl, dostupnu za hobiste iz Rotterdama (isporučuju se u Belgiju, Nizozemsku i Njemačku). Na njihovu web stranicu možete postaviti svoje crteže i oni će odmah citirati vašu cijenu. Koristio sam Autocad koji imam na poslu, ali softver zapravo nije bitan. To mora biti samo vektorski crtež (Vectr, Illustrator, Inkscape …). Većina trgovina koristi boje za određivanje želite li rezati ili gravirati.

Neke stvari koje treba imati na umu:

- Maks. dimenzije laserskog rezača (nacrtao sam okvir oko svojih dijelova)

- Min. udaljenost između rezova

- Pazite da ne povučete nikakve dvostruke crte, laser će napraviti dodatni prolaz, što će vas više koštati.

- Prilikom iscrtavanja u PDF formatu, iscrtajte 1: 1. Ne želite smanjiti ili stati na papir.

Korak 7: Montaža

Skupština
Skupština
Skupština
Skupština
Skupština
Skupština

Sat sam sagradio oko drvenog okvira, ploče se drže na mjestu vijcima M3 i umetcima u okviru. Kad bih ikada izgradio verziju 2, za pričvršćivanje ploča upotrijebio bih aluminijske "L" profile. Bilo je vrlo teško precizno izbušiti rupe za mesingane umetke. Trebalo mi je jako dugo, samo za prihvatljiv rezultat. To bi naravno značilo da se crtež laserskog reza mora revidirati. Mislim da biste s aluminijskim profilima i samo maticama i vijcima dobili bolji rezultat.

Da bih bolje raspršio svjetlo, zalijepio sam papir za praćenje s unutarnje strane perforacija. To svjetlu daje lijep sjaj.

Korak 8: Nemojte stati ovdje

Nemojte ovdje stati
Nemojte ovdje stati
Nemojte ovdje stati
Nemojte ovdje stati
Nemojte ovdje stati
Nemojte ovdje stati

Projekt se fokusira na ESP32, jedva sam ga koristio. Svjetla moje spavaće sobe trenutno se mogu daljinski upravljati pomoću blynk -a. Upravljanje njima satom samo je mali korak dalje. Možda želite dodatne zaslone koji vam pokazuju temperaturu oko kuće? Ili neki lokalni senzori (na tom multiplekseru još uvijek postoje rezervne I2C veze!). Možda postaviti vrijeme/alarm putem aplikacije i bluetootha?

Javite mi što ste promijenili, što biste promijenili, što bih ja trebao promijeniti …

Preporučeni: