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, Juli
Anonim
Oled budilnik
Oled budilnik

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

Već neko vrijeme eksperimentiram s arduinima i ESP32 -ima, ali nikada nisam stigao do gotovog proizvoda. Napravio sam budilicu sa 4 1,3 inčna monohromatska OLED -a. Sat takođe sadrži noćnu lampu koja se može prigušiti i USB priključak za punjenje (niko nema rezervne utičnice pored svog kreveta). OLED -ovi su također zatamnjeni, ovo je dodano zadnji trenutak nakon što mi je djevojka zaprijetila projektu. Ako prigušenje ne bi trebalo da bude - glas devojke - dovoljno prigušen, mogu takođe da navedem verziju koda gde se 3 ekrana napajaju između određenih sati. Cilj je bio napraviti jednostavan sat za servisiranje, sa pogledom izvan "prototipa". Prilikom izrade sata naišao sam na neke poteškoće koje sam morao riješiti, zbog čega mislim da je ovo uputstvo vrijedno podijeliti. Sat se može napraviti 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 ekran sa arduino/ESP32

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

- Kako napraviti izbornik sa 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đe koristi RTC (sat u realnom vremenu), LED upravljački program, naponski modul za smanjenje napona … Neću se baviti ovim stvarima jer za ove module postoji zaista mnogo informacija.

Želio bih napomenuti da nisam profesionalni programer. Cilj moje instrukcije je objasniti gore spomenute stvari. 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.

Supplies

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 odličan 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 ekrana (128x64, sa 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 -a

- RTC sat, koristio sam sat sa litijumskom ć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 ovo čini projekt mnogo kompaktnijim i lakim za servisiranje ako dio pogine + veća pouzdanost jer manje žica (jlcpcb.com)

- M3 vijci i vijci

- M3 mesingani umetci

- Modul za snižavanje snage 12V do 5V iz Pololua (DF24V22F5)

- 3 vata sa hladnjakom

- Žice za spajanje

- Zvučni signal

- I2C multiplekser (TCA9548A iz adafruit -a)

- 2 rotacijska enkodera (probao sam neke, ne rade svi s mojim kodom. Radi i onaj iz "DFrobota", pa radi i onaj sa okruglim PCB -om iz "DIYmore". Izgleda da moj kod ne radi za tipku tipa KY-040. Moj budilica koristi onaj iz DIYmore-a jer se vrlo lako montiraju na ploču (nisu potrebni dodatni vijci/rupe).

- Asortiman ženskih zaglavlja (opcionalno)

- Drvo za okvir: 18mmx18mmx2400mm

- Paus papir

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

Korak 1: Upotreba Oled -a

Upotreba Oleda
Upotreba Oleda
Upotreba Oleda
Upotreba Oleda
Upotreba Oleda
Upotreba Oleda

Da biste koristili OLED -ove, morate instalirati biblioteku. Koristim U8G2lib 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 I2C komunikacijski pinovi. Google za "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 vjerovatnoća da će ESP32 ostati bez memorije. Svi oledi koje sam do sada probao rade sa 3.3V (ESP32) i 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 budilnika. Većina arduina/ESP -ova ima samo jedan ili dva I2C pina. Ova vrsta ograničava upotrebu I2C dijelova. Šta ako imam 4 I2C senzora i želim prikazati njihova očitanja na I2C ekranu? Unesite multiplekser. Muliplekser vam omogućuje adresiranje 7 različitih I2C dijelova. Ovo omogućava mom ESP32 -u da koristi I2C sat u realnom vremenu i da prikazuje vrijeme koristeći ponovo I2C na 4 ekrana (ili više, nemojte me zaustaviti).

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, pozivate desni kanal sa "tcaselect (#);" funkciju, tada izvršavate bilo koji kôd koji je potreban za vaš I2C objekt.

Korak 3: Kreiranje 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 materijalima: Uspješno sam testirao svoj kôd pomoću rotacionih modula kodera iz DF robota i modula sa okruglom PCB -om iz DIYmore -a. 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 menija koju sam koristio za sat.

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

Korak 4: Spajanje prethodnog koda

Stavljanje prethodnog koda zajedno
Stavljanje prethodnog koda zajedno

Naslov sažima šta sam uradio. Isprobao sam dio po dio, a onda sam sve spojio. Ali zato što ništa nije lako, morao sam promijeniti neke stvari. Serijska komunikacija je spor proces. Ovo ometa pravilno čitanje kodera. Da bih to prevladao, dodao sam prekide pinovima kodera. Kôd za očitavanje kodera tada se odmah poziva ako pritisnete ili okrenete koder.

Kada shvatite kako su meniji izgrađeni, uvidjet ćete da je vrlo lako dodavati ili uklanjati funkcije po vlastitom nahođenju. Možda biste htjeli preuzeti 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 zaspim. 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 funkcije dok se memorija ne isprazni!

Korak 5: Prilagođena PCB sa Fritzing + shemom

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

Tačka pažnje: Adafruit ističe da iako možete napajati huzzah32 putem USB priključka, morate paziti da ne koristite istovremeno 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 sa 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. Ovo mi takođe omogućava da lako uklonim 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 kantama, nema svega. Ponekad možete pronaći dio Fritzinga na internetu, 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 željenu količinu 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 korak od 0,14 inča (2,54 mm), to će vam dati ispravan razmak za dio.

Zatim prelazite na prikaz PCB -a aplikacije za fritzing. PCB će biti postavljen, ako kliknete na njega, 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 automatskog preusmjeravanja, ali ja ga nikad ne koristim. Volim ručno organizirati svoje veze. U prikazu PCB -a žute veze su u gornjem sloju, narančaste su u donjem sloju. Opet, ako kliknete na vezu, možete odabrati njena svojstva.

Da biste napravili stvarnu PCB ploču, morate je izvesti kao gerber datoteku. Prije nego što to učinite, na kartici "usmjeravanje" možete provjeriti pravila dizajna. Ako se sve odjavi, kliknite na "izvoz za PCB". Većina proizvođača će zatražiti 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 opcije.

O shemi: postoje 2 napona koji se koriste. LED i femtobuck direktno se napajaju iz 12V napajanja. Ostatak se napaja putem opadajućeg napona sa 5 volti.

Korak 6: Dizajn + Laserski rezač

Dizajn + laserski rezač
Dizajn + laserski rezač
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 gusto, š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 rezanja, 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 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 laserske rezačice (nacrtao sam okvir oko svojih dijelova)

- Min. udaljenost između rezova

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

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

Korak 7: Montaža

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

Sat sam sagradio oko drvenog okvira, ploče se drže na mjestu vijcima M3 i umetcima u okviru. Ako bih ikada izgradio verziju 2, koristio bih aluminijske "L" profile za pričvršćivanje panela. 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 stati ovdje
Nemojte stati ovdje
Nemojte stati ovdje
Nemojte stati ovdje
Nemojte stati ovdje
Nemojte stati ovdje

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 je samo mali korak dalje. Možda želite dodatne ekrane 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 šta ste promijenili, šta biste promijenili, šta bih ja trebao promijeniti …

Preporučuje se: