ESP32 pomični WordClock na LED matrici: 5 koraka (sa slikama)
ESP32 pomični WordClock na LED matrici: 5 koraka (sa slikama)
Anonim
Image
Image

U ovom projektu stvaram pomični WordClock s ESP32, LED matricom i kutijom za cigare.

WordClock je sat koji ispisuje vrijeme, a ne samo ispisuje ga na ekranu ili ima kazaljke koje možete čitati. Ovaj sat će vam reći da je 10 minuta iza 3 sata popodne ili podne. Čak sam ga programirao da koristi naziv Prevencija (iz Teorije velikog praska) za dvosmislen vremenski period između popodneva i večeri. Počinje u 16:00 sati.

ESP32 je sjajan, toliko su zabavni i jeftini. Ako volite programirati Arduino, zaista ćete biti zapanjeni što sve ESP32 može učiniti za manje od 10 USD. Koriste Arduino IDE i lako ih je programirati. Pokazat ću kako to učiniti u ovom uputstvu.

Pribor

  • ESP32 - oko 10 USD na Amazonu
  • LED matrica (max7219) (i žice) - 9 USD Amazon
  • Kutija cigara
  • USB kabel za napajanje
  • Opcijski 3d pisač za stalak esp32

Korak 1: Postavite svoj Arduino IDE za podršku ESP32

Nabavite Arduino IDE:

  • U pregledniku idite na
  • Pritisnite Softver pa Preuzimanja da biste dobili ARDUINO 1.8.12
Slika
Slika

Dodajte podršku za ESP32 u svoj Arduino IDE:

  • Pokrenite Arduino IDE
  • Pritisnite izbornik Datoteka pa Postavke.

Jednom u "Postavkama" dodajte podršku proizvođača dodavanjem sljedećeg retka u "Dodatni upravitelj odbora"

Slika
Slika

dl.espressif.com/dl/package_esp32_index.js

To će nam omogućiti pristup dodavanju ploče u IDE

Idite na izbornik Alati, a zatim ploče i idite na upravitelja ploče

Slika
Slika

Zatim potražite "ESP" i dodajte paket prema Expressifu.

Slika
Slika

Naposljetku, želimo se vratiti na izbornik "Alati", zatim ponovno "Upravljač" i pomaknuti se prema dolje kako bismo pronašli vaš ESP32 uređaj.

Moj je "ESP32 Wrover Module"

Slika
Slika

Korak 2: Spojite LED matricu na ESP32

Slika
Slika

LED matrica sastoji se od četiri LED bloka 8x8 i koristi čip MAX7219. To nam daje 8x32 LED dioda u Matrixu ili 256 LED dioda !!!.

Esp32 sjedi na čekanju koje sam stvorio u TinkerCadu. Moj držač drži igle okrenute prema gore tako da možete pričvrstiti žice.

LED matrica povezuje se s ESP32 pomoću SPI (serijsko periferno sučelje).

Upotrijebite ženske/ženske žice i priključke za spajanje na sljedeći način:

  • ESP32 - 5v na VCC na Matrixu
  • ESP32 - GND u GND na Matrixu
  • ESP32 - PIN5 (G5) u CS na Matrixu
  • ESP32 - PIN23 (G23) za Din na matrici
  • ESP32 - Pin 18 (G18) za CLK na Matrixu

Moguće je koristiti druge pinove ili ako vaš ESP32 ima drugačiji pinout.

Korak 3: Sastavite to zajedno

Sastavljajući to zajedno
Sastavljajući to zajedno

Zatim sam izrezao kutiju cigara kako bih dobio mjesto za postavljanje LED zaslona. Kutija je mekana i mogao sam koristiti britvicu. Zatim sam izbrusio da to izgladim.

Također sam izrezao cjelinu straga za kabel za napajanje. Upravo sam koristio USB napajanje. Mogao sam čak dodati i bateriju za punjenje USB telefona unutar kutije cigara da sam htio da bude bežična.

Korak 4: Arduino IDE i INO datoteka

Arduino IDE i INO datoteka
Arduino IDE i INO datoteka

Najbolji dio je kod. No prvo moramo dodati knjižnicu kako bismo omogućili programu da koristi zaslon na jednostavniji način. Dodao sam biblioteku MD_MAX72xx.

Za dodavanje knjižnice kliknite izbornik "Sketch", zatim "Include Library" i "Manage Libraries" ovo će se učitati i omogućiti vam pretraživanje knjižnice MD_MAX72xx. Samo kliknite na instalaciju i imate je.

Zatim preuzmite moju Arduino INO datoteku:

github.com/aapicella/wordClock/blob/master/Word_Clock_LED_NTP_final_.ino

Učitajte ino datoteku u svoj Arduino IDE, Spojite USB iz ESP32 na računalo.

Pritisnite "Sketch", a zatim Upload

U ovom trenutku sat neće raditi, ESP32 neće ništa prikazati. Zašto? moramo dodati vaš WIFI u kôd jer se WordClock povezuje s internetom kako bi dobili vremena. Tako je … sljedeći korak ->.

Korak 5: Kôd

Konačno smo stigli do mog omiljenog dijela. Program. Pokrivat ću to od vrha do dna ako ste zainteresirani. Da bi program radio s vašim kućnim internetom, samo trebate promijeniti ove retke.

// Dodajte svoje podatke o mreži

const char *ssid = "xxxxxx";

const char *lozinka = "xxxxxx";

Program je pomalo složen, ali vrlo zabavan.

Da biste onemogućili "Prevenciju", samo promijenite vrijednost na false:

const boolean PREVENING = true; //Teorija velikog praska.

Da biste onemogućili prikaz digitalnog vremena nakon pomicanja, promijenite ovu vrijednost u Netačno.

const boolean DISPLAY_DIGITAL = istina; // uključivanje prikaza digitalnog vremena nakon pomicanja.

Pomicanje po vremenu:

Vrijeme dobivam s vremenskog poslužitelja na internetu koristeći NTP (Network Time Protocol). Vrijeme se drži u varijabli koja se naziva timeinfo i iz nje dobivamo sat i minute

int sat = timeinfo.tm_hour; /// 0-23

int minuta = timeinfo.tm_min; // 0-59

Sljedeće provjerite ujutro ili poslije podne

AM je ako je sat <12

Stvaram niz pod nazivom "theTime" i započinjem ga s:

theTime = "To je";

Da bih dobio broj kao riječi, stvorio sam niz riječi za brojeve do 30

const char *brojevi = {

"0", "Jedan", "Dva", "Tri", "Četiri", "Pet", "Šest", "Sedam", "Osam", "Devet", "Deset", "Jedanaest", "Dvanaest" "," Trinaest "," Četrnaest "," Četvrtina "," Šesnaest "," Sedamnaest "," Osamnaest "," Devetnaest "," Dvadeset "," Dvadeset jedna "," Dvadeset dva "," Dvadeset tri "," Dvadeset četiri "," Dvadeset pet "," Dvadeset šest "," Dvadeset sedam "," Dvadeset osam "," Dvadeset devet "," Pola prošlih "};

Dakle, kad je 12:05 ili pet minuta iza dvanaest, stvarno je na Arduinu

brojevi [5] minuta iza brojeva [12]

Da bismo utvrdili jesu li "protekle minute" ili "minute do", samo gledamo zapisnike. Ako su minute <31, to je "Minutes Past", ako su minute veće od 31, koristimo "Minutes To", ali koristimo brojeve [60-minutes] pa bi 12:50 bilo 60-50 minuta ili brojevi [10] koji bi dajte nam 10 minuta do 12 0 sati.

Naravno, postoje i druga pravila poput 15, 30, 45 koje ne koristimo za minute tek prije pola ili četvrtine, a ako je minuta 0, vrijeme je samo "deset sati" ili podne.

Da bih to sastavio, sve stavke dodajem u String theTime, a zatim ih prikazujem na LED matrici. Koristim hrpu If naredbi. Vjerojatno sam trebao koristiti case, ali bilo je lakše nastaviti ih dodavati.

Za naš primjer 12:05

theTime = "To je"

ako je minuta <31 upotrijebi "Minutes Past", inače "Minute To"

theTime + = brojevi [5] + "Minute Past" + broj [12] + "O'Clock" // Napomena: Oznaka + = se dodaje.

Zatim gledamo sat kako bismo utvrdili je li jutro, popodne ili navečer.

theTime+= "Navečer"

Završni niz koji ide do matrice je:

"Navečer je pet minuta iza dvanaest sati"

Ovaj projekt je bilo jako zabavno napisati. Ako vam se sviđa, kliknite Srce i glasajte za mene.