Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
În acest proiect creez un WordClock Scrolling cu un ESP32, LED Matrix și o cutie de trabucuri.
Un WordClock este un ceas care indică timpul, mai degrabă decât să-l imprime pe ecran sau să aibă mâini pe care le poți citi. Acest ceas vă va spune că este după 10 minute de la ora 3 după-amiaza sau la prânz. L-am programat chiar pentru a folosi numele Prevening (din Big Bang Theory) pentru perioada ambiguă de timp dintre după-amiază și seară. Începe la 16:00.
ESP32 este minunat, sunt atât de distractive și atât de ieftine, dacă vă place să programați Arduino, veți fi cu adevărat uimiți de ceea ce poate face un ESP32 pentru mai puțin de 10 USD. Folosesc Arduino IDE și sunt ușor de programat. Voi demonstra cum să fac asta în acest instructiv.
Provizii
- ESP32 - în jur de 10 USD pe Amazon
- LED Matrix (max7219) (și fire) - 9 USD amazon
- Cutie de tigari
- Cablu de alimentare USB
- Imprimantă 3D opțională pentru standul esp32
Pasul 1: Configurați ID-ul dvs. Arduino pentru a sprijini ESP32
Obțineți ID-ul Arduino:
- Într-un browser accesați
- Faceți clic pe Software apoi pe Descărcări pentru a obține ARDUINO 1.8.12
Adăugați asistență ESP32 la IDE-ul dvs. Arduino:
- Porniți IDE-ul Arduino
- Faceți clic pe meniul Fișier, apoi pe Preferințe.
Odată ajuns în „Preferințe”, adăugați asistența producătorului adăugând următoarea linie la „Managerul de bord suplimentar”
dl.espressif.com/dl/package_esp32_index.js
Acest lucru ne va oferi acces pentru a adăuga placa la IDE
Accesați meniul Instrumente, apoi Panouri și mergeți la managerul de consiliu
Urmează căutarea „ESP” și adaugă pachetul prin Expressif.
În cele din urmă, vrem să ne întoarcem la meniul „Instrumente”, apoi „Placă” din nou și să derulăm în jos pentru a găsi dispozitivul ESP32.
Al meu este un „ESP32 Wrover Module”
Pasul 2: Conectați LED Matrix la ESP32
Matricea LED este alcătuită din patru blocuri 8x8 de LED-uri și folosește un cip MAX7219. Asta ne oferă 8x32 LED-uri în Matrix sau 256 LED-uri !!!.
Esp32 stă pe o așteptare pe care am creat-o în TinkerCad. Suportul meu ține știfturile cu fața în sus, astfel încât să puteți atașa fire.
LED Matrix se conectează la ESP32 utilizând SPI (Serial Peripheral Interface).
Utilizați fire feminine / femele și conectați pinii după cum urmează:
- ESP32 - 5v la VCC pe Matrix
- ESP32 - GND la GND pe Matrix
- ESP32 - PIN5 (G5) către CS pe Matrix
- ESP32 - PIN23 (G23) către Din on Matrix
- ESP32 - Pinul 18 (G18) la CLK pe Matrix
Este posibil să utilizați alți pini sau dacă ESP32 are un pinout diferit.
Pasul 3: Puneți-l împreună
Apoi am tăiat cutia de țigări pentru a-mi da un loc unde să pun afișajul cu LED-uri. Cutia este moale și am putut folosi un cuțit de ras. Apoi am șlefuit-o ca să o netezesc.
De asemenea, am tăiat un întreg în spate pentru cablul de alimentare. Tocmai am folosit puterea USB. Aș fi putut adăuga chiar și o baterie pentru încărcător de telefon USB în cutia de trabucuri dacă aș fi vrut să fie wireless.
Pasul 4: Arduino IDE și fișierul INO
Cea mai bună parte este codul. Dar mai întâi trebuie să adăugăm o bibliotecă pentru a permite programului să utilizeze afișajul într-un mod mai simplu. Am adăugat biblioteca MD_MAX72xx.
Pentru a adăuga biblioteca, faceți clic pe meniul „Schiță”, apoi „Includeți biblioteca” și „Gestionați bibliotecile”, aceasta se va încărca și vă va permite să căutați biblioteca MD_MAX72xx. Doar faceți clic pe instalare și îl aveți.
Apoi, obțineți fișierul meu Arduino INO:
github.com/aapicella/wordClock/blob/master/Word_Clock_LED_NTP_final_.ino
Încărcați fișierul ino în ID-ul dvs. Arduino, Conectați USB-ul de la ESP32 la computer.
Faceți clic pe „Schiță”, apoi Încărcați
În acest moment ceasul nu va funcționa, ESP32 nu va afișa nimic. De ce? trebuie să adăugăm WIFI la cod deoarece WordClock se conectează la internet pentru a obține timpul. Așa este … următorul pas ->.
Pasul 5: Codul
Am ajuns în sfârșit la partea mea preferată. Programul. Îl voi acoperi de sus în jos, dacă sunteți interesat, pentru ca programul să funcționeze cu internetul de acasă, trebuie doar să schimbați aceste linii.
// Adăugați informațiile despre rețea
const char * ssid = "xxxxxx";
const char * password = "xxxxxx";
Programul este cam complex, dar foarte distractiv.
Pentru a dezactiva „Prevening”, schimbați valoarea în false:
const boolean PREVENING = adevărat; //Teoria Big Bang.
Pentru a dezactiva afișarea timpului digital după derulare, schimbați acest lucru în fals.
const boolean DISPLAY_DIGITAL = adevărat; // activați afișarea orei digitale după derulare.
Derularea timpului:
Primesc timpul de la un server de timp de pe internet folosind NTP (Network Time Protocol). Ora este ținută într-o variabilă numită timeinfo și obținem ora și minutul din ea
int hour = timeinfo.tm_hour; /// 0-23
int minute = timeinfo.tm_min; // 0-59
Următorul verifică AM sau PM
Este AM dacă ora <12
Creez un șir numit „theTime” și îl încep cu:
theTime = "Este";
Pentru a obține numărul ca cuvinte, am creat o serie de cuvinte pentru numere de până la 30
const char * numbers = {
„0”, „Unu”, „Doi”, „Trei”, „Patru”, „Cinci”, „Șase”, „Șapte”, „Opt”, „Nouă”, „Zece”, „Unsprezece”, „Doisprezece "," Treisprezece "," Paisprezece "," Sfert "," Șaisprezece "," Șaptesprezece "," Optsprezece "," Nouăsprezece "," Douăzeci "," Douăzeci și unu "," Douăzeci și doi "," Douăzeci și trei " "," Douăzeci și patru "," Douăzeci și cinci "," Douăzeci și șase "," Douăzeci și șapte "," Douăzeci și opt "," Douăzeci și nouă "," Jumătate trecut "};
Deci, când sunt 12:05 sau cinci minute după douăsprezece, este cu adevărat la Arduino
numere [5] minute după numere [12]
Pentru a determina dacă „Minutes trecut” sau „Minutes To”, ne uităm doar la minute. Dacă minutele sunt <31, este „Minutes Past” dacă minutele sunt mai mari de 31 folosim „Minutes To”, dar folosim cifre [60-minute], deci 12:50 ar fi 60-50 minute sau cifre [10] care ar fi dă-ne 10 minute până la 12 0'clock.
Bineînțeles că există alte reguli, cum ar fi la 15, 30, 45, nu folosim minute până la jumătate sau la sfert și, dacă minutul este 0, timpul este doar „ora zece” sau amiaza.
Deci, pentru a le pune împreună, adaug toate elementele la String theTime, apoi îl afișez pe LED Matrix. Folosesc o grămadă de declarații If. Probabil că ar fi trebuit să folosesc carcasa, dar a fost mai ușor să le adaug în continuare.
Pentru exemplul nostru 12:05
theTime = "Este"
dacă minutul <31 folosește „Minutes Past” în caz contrar „Minute To”
theTime + = cifre [5] + "Minute trecut" + număr [12] + "O'Clock" // Notă: notația + = este anexată.
Apoi ne uităm la oră pentru a determina dacă este dimineața, după-amiaza sau seara.
theTime + = "Seara"
Șirul final care merge la matrice este:
„Sunt cinci minute după ora 12, seara”
Acest proiect a fost foarte distractiv de scris. Dacă vă place, faceți clic pe Inimă și votați pentru mine, vă rog.