Cuprins:

4 proiecte în 1 folosind DFRobot FireBeetle ESP32 și LED Matrix Cover: 11 pași (cu imagini)
4 proiecte în 1 folosind DFRobot FireBeetle ESP32 și LED Matrix Cover: 11 pași (cu imagini)

Video: 4 proiecte în 1 folosind DFRobot FireBeetle ESP32 și LED Matrix Cover: 11 pași (cu imagini)

Video: 4 proiecte în 1 folosind DFRobot FireBeetle ESP32 și LED Matrix Cover: 11 pași (cu imagini)
Video: как сделать тестер электронных компонентов, используя Arduino nano, dfrobot 2024, Iulie
Anonim
Image
Image
Instalați biblioteci comune pentru proiecte
Instalați biblioteci comune pentru proiecte

M-am gândit să fac un instructable pentru fiecare dintre aceste proiecte - dar în cele din urmă am decis că într-adevăr cea mai mare diferență este software-ul pentru fiecare proiect.

Hardware-ul este același pentru fiecare proiect și folosim Arduino IDE pentru a programa dispozitivul ESP32.

Deci, ce este hardware-ul: tot hardware-ul a fost furnizat de prietenii mei de la DFRobot, au tutoriale foarte bune și sunt ușor de instalat plăcile de bază pentru acest lucru. De asemenea, aveți la dispoziție un sistem de asistență bun și livrare destul de rapidă în S. U. A.

Dezvăluirea completă a plăcii Firebeetle ESP32 și LED Matrix au fost furnizate de DF Robot, proiectele prezentate și în videoclipuri sunt ale mele.

Toate aceste proiecte folosesc toate un microcontroler DFRobot FireBeetle ESP32 IOT

www.dfrobot.com/product-1590.html

Wiki de asistență - cu instrucțiunile de instalare a plăcii de bază pot fi găsite aici:

www.dfrobot.com/wiki/index.php/FireBeetle_…

De asemenea, avem nevoie de un FireBeetle Covers 24x8 LED Matrix (BLUE)

www.dfrobot.com/product-1595.html

Nu vă plac ledurile ALBASTRU - Au și culori diferite.

VERZ -

RED -

ALB -

GALBEN -

Ai nevoie doar de un LED Matrix - culoarea este alegerea ta, toate funcționează la fel.

Wiki de asistență LED Matrix poate fi găsit aici:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Aici găsim un link către Biblioteca Arduino.

github.com/Chocho2017/FireBeetleLEDMatrix

Mai multe despre acestea puțin mai târziu …

Ceva care este opțional, dar poate la îndemână este un suport pentru baterii MicroUSB 3xAA.

www.dfrobot.com/product-1130.html

Deci acesta este hardware-ul necesar - Care sunt cele 4 proiecte -

Pasul 1: Proiectele

Image
Image

Proiectul 1: Este un ceas simplu NTP cu matrice LED, fie cu afișaj de timp militar, fie de afișare de timp AMPM, Acest ceas se va conecta la un server NTP (server de timp) care va prelua ora și va aplica un set off pentru a obține ora locală. Va afișa ora pe matricea LED. - Este un ceas foarte simplu și primul proiect foarte simplu.

Proiect 2: ISS Pass Prediction Display, acest proiect utilizează al doilea nucleu al procesorului. Va afișa cât de aproape (în mile) este ISS, când să vă așteptați la următoarea trecere ISS la locația dvs. (în ora UTC) și, opțional, câți oameni sunt în spațiu. Deoarece multe dintre aceste informații nu se schimbă des, folosim al doilea nucleu pentru a verifica doar actualizările predicțiilor de trecere sau câte persoane sunt în spațiu la fiecare 15 minute. În acest fel putem preveni prea multe apeluri API către server. Acest proiect este puțin mai complicat, dar este destul de ușor de realizat.

Proiectul 3: Un semn de mesaj simplu în mișcare folosind MQTT, am revizuit un proiect care a fost făcut pentru mini-placa ESP8266 D1 și este 8x8 LED Matrix - Ideea este să vă conectați la un broker MQTT, să trimiteți un mesaj la un subiect pe care este dispozitivul ascultarea - și afișarea acelui mesaj. Este destul de ușor și foarte simplu de făcut odată ce totul este configurat. Și există câțiva pași pentru configurarea software-ului client MQTT pe un computer desktop. Odată configurat, MQTT este un protocol de mesagerie foarte puternic folosit de multe dispozitive IoT pentru a trimite și primi mesaje.

Proiectul 4: Afișarea stației meteo - bazat pe mini stația meteo ESP8266 D1 realizată de Squix78 și ThingPulse. Ne luăm datele de la Wunderground și afișăm condițiile actuale și temperatura în grade Fahrenheit. Folosim al doilea nucleu al ESP32, pentru a ne actualiza datele la fiecare 10 minute. De asemenea, este simplu de configurat.

BOUNS MINI EXEMPLE: Biblioteca (și schițele de mai sus) utilizează un font 8x4, biblioteca conține și un font 5x4, pe care l-am folosit pentru majoritatea acestor mini exemple BOUNS. Există câteva probleme pe care le pot observa cu fontul mic, una care pare să cauzeze probleme atunci când utilizați WIFI-ul dispozitivului. Este ceva ce vreau să explorez mai mult, dar am avut timp. Cealaltă problemă este că nu derulează, doar fontul mai mare poate derula. Deci niciunul dintre aceste exemple nu utilizează WIFI - doar actualizează afișajul și mai multe despre acestea vor fi mai târziu.

Să începem…..

Pasul 2: Instalați placa DFRobot FireBeetle ESP32 în ID-ul Arduino

Deci, mă voi referi la robotul DF Wiki despre instalarea nucleului plăcii pentru Arduino IDE.

Este destul de ușor de făcut cu IDE-ul modern (1.8.x sau mai bun).

www.dfrobot.com/wiki/index.php/FireBeetle_…

Am constatat că biblioteca WiFi încorporată în IDE-ul Arduino cauzează probleme (PS orice altă bibliotecă WiFi care poate fi instalată în directorul bibliotecii dvs. poate provoca sau nu probleme). Singurul mod (sau cel puțin cel mai ușor) pe care l-am găsit pentru a rezolva problema este de a elimina biblioteca WiFi din directorul IDE. Din păcate, nu există o modalitate bună de a vă spune unde poate este instalat - depinde de modul în care este instalat IDE și de sistemul de operare pe care îl utilizați.

Ceea ce am făcut este să găsesc biblioteca WiFi care cauzează probleme și să mutați directorul WiFi direct pe desktop … și să reporniți IDE-ul. În acest fel puteți păstra biblioteca în cazul în care aveți nevoie de ea pentru plăcile Arduino WIFI.

90% dintre problemele pe care le-am văzut au fost legate de problema de mai sus. Dacă primiți o mulțime de erori de compilare, legate de utilizarea WiFi din directorul Arduino IDE sau din directorul Arduino Library, aceasta este problema pe care o aveți.

Al doilea număr al meu este uneori că încărcarea schiței nu reușește să se încarce - caz în care trebuie să apăs din nou butonul de încărcare și funcționează.

Și, în sfârșit, dacă aveți consola serială deschisă și apoi închideți-o - FireBeetle se blochează.

Știu că DF Robot lucrează activ la nucleul plăcii și chiar în scurtul timp în care am primit placa au lansat un nou nucleu. Din păcate, nu a rezolvat problema WiFi, care este cea mai mare problemă a mea.

* Espressif are un manager de bază „generic” care poate fi instalat, nucleul include placa FireBeetle ESP32, dar am avut o problemă cu modul în care are pinii numerotați. Interesant aici este că biblioteca WiFi funcționează cu biblioteca WiFi încorporată - așa că știu că există o soluție la această problemă chiar după colț.

Dacă doriți să încercați nucleele Espressif, puteți afla mai multe informații aici:

github.com/espressif/arduino-esp32

Personal îmi place cum funcționează nucleul DF-Robot, chiar și cu puținele probleme pe care le am.

** NOTĂ: Folosesc LinuxMint 18, care se bazează pe Ubuntu 16.04, cred că nu am încercat acest lucru pe nicio altă mașină, dar cred că problema este prezentă pentru toate sistemele de operare pe baza unor căutări pe internet pe care le-am făcut. **

Pasul 3: Instalați biblioteci comune pentru proiecte

Instalați biblioteci comune pentru proiecte
Instalați biblioteci comune pentru proiecte

Toate aceste proiecte utilizează câteva biblioteci comune, deci este mai ușor să faceți acest pas acum.

În funcție de bibliotecă, o puteți găsi în managerul de bibliotecă - care este de departe cel mai simplu mod de a instala o bibliotecă.

O altă modalitate obișnuită este instalarea printr-un fișier zip, care funcționează la fel de bine. Dar, în general, folosesc metoda de instalare manuală. Există un tutorial bun cu privire la cele trei metode de pe site-ul Arduino.

www.arduino.cc/en/guide/libraries

Pentru aceste biblioteci, aș recomanda metoda manuală - deoarece există câteva biblioteci diferite cu același nume, folosind managerul de bibliotecă puteți ajunge la una greșită.

Toate aceste proiecte utilizează un Manager WiFi pentru a vă face mai ușor conectarea la wifi - Am decis să fac acest lucru, deci dacă trebuie să vă mutați proiectul, nu este nevoie să reprogramați placa. Acesta este ceva pe care îl folosesc pentru plăcile ESP8266 și funcționează bine - nu este perfect. Noroc pentru utilizare, biblioteca a fost portată pentru a utiliza ESP32 de către un utilizator github numit bbx10. (Acest manager ar trebui să lucreze și cu plăcile ESP8266)

Trebuie să instalăm trei biblioteci și pentru acest lucru.

WiFiManager -

WebServer -

Și în cele din urmă DNSServer -

De asemenea, comună tuturor schițelor este biblioteca DF Robot DFRobot_HT1632C pentru LED Matrix.

www.dfrobot.com/wiki/index.php/FireBeetle_…

Biblioteca poate fi găsită aici (din nou aș recomanda metoda de instalare manuală)

github.com/Chocho2017/FireBeetleLEDMatrix

O notă specială: în depozitul meu github - am câteva biblioteci DFRobot_HT1632C ușor modificate

github.com/kd8bxp/DFRobot-FireBeetle-ESP32…

Modificarea este pentru un font mai mic și este utilizată numai pentru unele dintre exemplele bonus. Puteți utiliza biblioteca modificată și nu ar trebui să cauzeze probleme. Există, de asemenea, o bibliotecă ușor modificată (atașată unor schițe ca file) care poate face imagini bitmap.

Dacă alegeți să utilizați versiunea ușor modificată, trebuie să redenumiți directorul „biblioteca modificată” în FireBeetleLEDMatrix și să mutați acel folder în directorul bibliotecii Arduino. Nu trebuie să utilizați această versiune pentru aceste proiecte, este necesară dacă doriți să încercați unele dintre fonturile mai mici din exemplele bonus.

Acestea sunt bibliotecile comune - vom instala câteva biblioteci specifice pentru fiecare proiect.

Să trecem la LED Matrix….

Pasul 4: capacul matricei LED 24x8

Capacul matricei LED 24x8
Capacul matricei LED 24x8
Capacul matricei LED 24x8
Capacul matricei LED 24x8
Capacul matricei LED 24x8
Capacul matricei LED 24x8

Căci Vom urma împreună cu Tutorialul robot DF pentru LED Matrix

www.dfrobot.com/wiki/index.php/FireBeetle_…

Introducere: Acest afișaj cu matrice LED 24 × 8 este special conceput pentru seria FireBeetle. Suportă modul de consum redus de energie și afișajul cu defilare. Cu un cip de driver LED de înaltă performanță HT1632C, fiecare led are un registru independent, ceea ce îl face ușor de condus separat. Acesta integrează un ceas RC de 256KHz, doar 5uA în modul de consum redus de energie, acceptă reglarea luminozității PWM pe 16 scări. Acest produs funcționează și cu celălalt microcontroler Arduino precum Arduino UNO.

Specificație:

  • Tensiune de operare: 3.3 ~ 5VLED
  • Culoare: o singură culoare (alb / albastru / galben / roșu / verde)
  • Cip de unitate: HT1632C
  • Curent de lucru: 6 ~ 100mA
  • Consum redus de energie: 5uARC
  • ceas: 256KHz
  • Chip Select (CS): D2, D3, D4, D5 selectabil
  • Suport afișare defilare

Coduri PIN implicite:

  1. DATAD6
  2. WRD7 (În general, nu este utilizat)
  3. CSD2, D3, D4, D5 selectabil (implicit D2)
  4. RDD8
  5. VCC 5VUSB; 3.7V Baterie Lipo

(Toate aceste proiecte utilizează D2 pentru pinul selectat, acest lucru poate fi ușor schimbat după cum este necesar.)

Pe partea din spate a LED Matrix veți vedea 4 comutatoare mici, asigurați-vă că selectați doar unul dintre pinii CS. Aceste mici comutatoare sunt modul în care vă selectați PIN-ul CS, iar valoarea implicită este D2.

DF Robot WIKI are câteva exemple de cod, acest cod se află și în exemplele pentru bibliotecă. (Eu cred)

O altă notă: utilizați numerele Dx pentru pinii dvs. - în caz contrar, numerele pinilor vor fi numerele / numele IO pin

Și asta vă poate cauza unele probleme.

Stabilirea unui punct:

X este de la 0 la 23 (sau dacă vă gândiți la asta ca la o foaie de calcul, acestea sunt coloane).

Y este de la 0 la 7 (sau dacă vă gândiți la asta ca la o foaie de calcul, acestea sunt rânduri).

Biblioteca oferă o funcție set point.

display.setPoint (x, y) aceasta va seta cursorul la acea locație, unde puteți imprima acum un mesaj.

display.print ("Hello World", 40); // aceasta va face ca afișajul să afișeze „Hello World” începând de la punctul x, y și derulând de pe ecran.

Există, de asemenea, un setPixel (x, y) și clrPixel (x, y) - setPixel va aprinde un LED la locația x, y, iar clrPixel va opri un LED la locația x, y.

Există câteva alte lucruri pe care le poate face această bibliotecă - iar majoritatea sunt incluse în exemple.

(Aș recomanda rularea și modificarea exemplelor pentru a vedea ce poate face).

* Un lucru care pare să lipsească este desenarea hărților de biți - biblioteca poate face acest lucru, dar din anumite motive este o funcție privată a bibliotecii. Vedeți câteva dintre exemplele mele bonus pentru o versiune ușor modificată a bibliotecii

** Un alt lucru care include un set de fonturi 5x4, ceea ce este plăcut să ai un font mai mic - este comentat cât de des în bibliotecă. L-am descomentat și l-am funcționat, dar am observat câteva probleme cu el - cel mai mare pe care nu îl derulează. Și am observat că pare să provoace probleme fie cu wifi, fie poate cu o altă bibliotecă pe care am vrut să o folosesc.

Una dintre bibliotecile modificate pe care le includ totuși folosește fontul 5x4.

Să trecem la proiecte …..

Pasul 5: Proiectul 1: un ceas NTP LED cu matrice simplă, fie cu afișaj de timp militar, fie cu afișaj AMPM

Proiectul 1: un ceas NTP cu matrice LED simplu, cu afișaj de timp militar sau afișaj AMPM
Proiectul 1: un ceas NTP cu matrice LED simplu, cu afișaj de timp militar sau afișaj AMPM
Proiectul 1: un ceas NTP LED cu matrice simplă, cu afișaj de timp militar sau afișaj AMPM
Proiectul 1: un ceas NTP LED cu matrice simplă, cu afișaj de timp militar sau afișaj AMPM
Proiectul 1: un ceas NTP cu matrice LED simplu, cu afișaj de timp militar sau afișaj AMPM
Proiectul 1: un ceas NTP cu matrice LED simplu, cu afișaj de timp militar sau afișaj AMPM

Proiectul 1: Este un ceas NTP LED Matrix simplu, cu afișaj de timp militar sau afișare de timp AMPM, Acest ceas se va conecta la un server NTP (server de timp) care va prelua ora și va aplica un set off pentru a obține ora locală. Va afișa ora pe matricea LED. - Este un ceas foarte simplu și primul proiect foarte simplu.

Înainte de a începe cu acest proiect simplu, poate fi o idee bună să știm ce este NTP -

NTP este un protocol de internet utilizat pentru a sincroniza ceasurile computerelor cu o referință temporală. Este un protocol standard. NTP înseamnă Network Time Protocol.

NTP folosește UTC ca timp de referință (UTC este timpul universal coordonat), a evoluat de la GMT (Greenwich Mean Time), iar în unele cercuri se numește ora Zulu (militar). UTC se bazează pe o rezonanță cuantică a unui atom de cesiu.

NTP este tolerant la erori și foarte scalabil, protocolul este extrem de precis, utilizând o rezoluție mai mică de o nanosecundă.

*

Un ceas UTC nu este foarte folosit de majoritatea oamenilor, așa că trebuie să ne ajustăm ceasul la ora locală. Din fericire putem face asta destul de ușor. Deci, să începem cu acest ceas NTP simplu …

În primul rând, trebuie să instalăm o bibliotecă care facilitează vorbirea cu serverele NTP.

github.com/arduino-libraries/NTPClient (această bibliotecă este probabil în managerul bibliotecii)

Ați omis pasul 3 - și nu sunteți sigur cum să instalați bibliotecile (?) Mai bine reveniți și citiți pasul 3:-)

Trebuie să accesați acest site web și să introduceți cel mai apropiat oraș de dvs., care se află în fusul orar.

www.epochconverter.com/timezones

Când apăsați tasta Enter, veți vedea „Rezultate de conversie”, iar în rezultate veți obține decalajul (diferența față de GMT / UTC) în câteva secunde (pentru mine, adică -14400)

În schița dfrobot_firebeetle_led_matrix_ntp_clock de pe linia 66 veți vedea:

#define TIMEOFFSET -14400 // Găsește-ți fusul orar setat aici https://www.epochconverter.com/timezones OFF Setat în secunde # define AMPM 1 // 1 = AM PM time, 0 = MILITAR / 24 HR Time

înlocuiți -14400 cu offsetul. Următoarea linie veți vedea AMPM 1 - acest lucru va face ca ceasul să afișeze ora în AM / PM - dacă preferați să-l vedeți în 24 de ore, faceți cel zero.

Apoi încărcați schița pe tablă, conectați-vă la punctul de acces (manager wifi) și introduceți detaliile pentru wifi. DACĂ ați făcut deja acest lucru, ar trebui să vedeți derularea „conectată” pe ecran și câteva secunde mai târziu ar trebui să vedeți ora.

Gata pentru acest proiect - simplu și ușor de utilizat …..

(Posibile îmbunătățiri: afișați luna, ziua și anul, configurați un buzzer și alarme - în general controlați ceea ce vedeți printr-o pagină web. Aceste idei ar necesita o mare rescriere a schiței simple curente)

Gata pentru un alt proiect simplu - Afișați unde este ISS - Treceți predicții și câți oameni sunt în Spațiu! (PS această schiță folosește o pagină web pentru a controla ceea ce este afișat) …..

Pasul 6: Proiectul 2: Afișaj predicție ISS Pass,

Proiectul 2: Afișare predicție ISS Pass,
Proiectul 2: Afișare predicție ISS Pass,
Proiect 2: Afișare predicție ISS Pass,
Proiect 2: Afișare predicție ISS Pass,
Proiectul 2: Afișare predicție ISS Pass,
Proiectul 2: Afișare predicție ISS Pass,

Proiect 2: ISS Pass Prediction Display, acest proiect utilizează al doilea nucleu al procesorului. Va afișa cât de aproape (în mile) este ISS, când să vă așteptați la următoarea trecere ISS la locația dvs. (în ora UTC) și, opțional, câți oameni sunt în spațiu. Deoarece multe dintre aceste informații nu se schimbă des, folosim al doilea nucleu pentru a verifica doar actualizările predicțiilor de trecere sau câte persoane sunt în spațiu la fiecare 15 minute. În acest fel putem preveni prea multe apeluri API către server. Acest proiect este puțin mai complicat, dar este destul de ușor de realizat.

Acest proiect se bazează pe unul dintre proiectele mele anterioare, care poate fi găsit aici:

(Un sistem simplu de notificare ISS) În aceea am folosit un ESP8266 cu un ecran OLED la bord (D-Duino). În cea mai mare parte, acest proiect folosește doar un alt sistem de afișare, l-am extins, astfel încât să puteți schimba ceea ce doriți să vedeți din mers, printr-o pagină web. Deci sa începem….

Cea mai mare parte a creditului pentru ușurința de utilizare merge la https://open-notify.org, care are un API foarte simplu și ușor de utilizat. API-ul de notificare deschisă are trei lucruri care pot fi afișate, locația ISS în latitudine și longitudine, predicții de trecere bazate pe o latitudine și longitudine date. Și în cele din urmă câți oameni (și numele lor) sunt în spațiu.

Va trebui să instalăm o altă bibliotecă - Biblioteca ArduinoJson.

github.com/bblanchon/ArduinoJson

Avem nevoie și de TimeLib.h, dar nu sunt sigur de unde am luat-o sau dacă este inclusă în IDE (îmi pare rău) ….

Deci, de ce să prezicem unde va fi ISS - ISS conține diverse echipamente de radio amator, iar când este „peste cap”, un operator de radioamatori poate intra în contact cu ISS utilizând niște aparate de radio foarte simple (și ieftine). Am făcut-o chiar în timp ce eram mobil (conducând în mașină). Chiar nu ai nevoie de mult pentru ca acest lucru să funcționeze. Singurul lucru de care aveți nevoie este să știți unde este. Și îndreptarea antenei în direcția sa generală ajută.

Linia 57, 58, 59 sunt câteva variabile de afișare - dacă sunt setate la 1 veți vedea un afișaj, dacă sunt setate la 0 (zero) nu veți vedea un afișaj. (Aceste variabile pot fi setate în schiță sau actualizate de pe o pagină web pe care Firebeetle o creează - mai multe despre asta mai târziu).

int locDis = 1; // Afișați locația ISSint pasDis = 0; // Afișează predicții de trecere în pplDis = 1; // Afișează oamenii în spațiu

deci locDis va afișa locația ISS în latitudine și longitudine - afișează, de asemenea, câte mile depărtează.

pasDis va primi predicțiile de trecere de la open-notify.org și le va afișa.

și, în cele din urmă, pplDis va afișa numele și câți oameni sunt în spațiu - acest lucru poate deveni foarte lung, nu

schimbă-te deseori. (le puteți schimba sau le puteți lăsa, este total opțional)

De asemenea, trebuie să ne cunoaștem latitudinea și longitudinea și să le punem în schiță.

Acest lucru nu trebuie să fie un lat / lung precis, poate fi centrul orașului dvs. sau doar puțin. Amprenta ISS este largă în timp ce depășește capul și sute (sau mii) de mile pot fi parcurse, așa că a fi puțin oprit pe lat / lung nu va fi o problemă (de cele mai multe ori), comunicarea peste 500 de mile este destul de comună.

Dacă nu vă cunoașteți latitudinea și longitudinea, acest site vă poate ajuta.

www.latlong.net Aproape de linia 84 a schiței veți vedea așa ceva:

// Găsește-ți latitudinea și longitudinea aici // https://www.latlong.net/ float mylat = 39.360095; float mylon = -84.58558;

Asta ar trebui să fie tot ceea ce trebuie schimbat. Încărcați schița și conectați Firebeetle la internet - și ar trebui să vedeți, locația ISS dată în lat / lungime și câți kilometri distanță este (amintiți-vă că aceasta va fi o distanță aproximativă. ISS se mișcă foarte repede și până la terminarea afișajului, ISS s-a deplasat la mulți kilometri de locul în care era). Ar trebui să vezi și oamenii din spațiu. (DACĂ nu ați modificat variabila de mai sus).

Folosim cel de-al doilea nucleu al ESP32 pentru a rula un site web, utilizarea site-ului ne oferă control asupra a ceea ce este afișat pe matricea LED. Ar trebui să fie destul de intuitiv cu privire la modul în care funcționează, o secțiune arată ce este activat pentru afișare, o altă secțiune are butoane „da” „nu” - făcând clic pe „da” înseamnă că doriți să o vedeți, „nu” înseamnă să nu nu o arăt. De asemenea, ar trebui să vedeți că secțiunea de sus se modifică în funcție de butoane.

Singurul lucru care nu este atât de tăiat și uscat aici este cum să găsiți adresa IP a Firebeetle - din păcate nu am putut găsi o modalitate bună de ao găsi - așa că am folosit doar consola serială a IDE pentru a afișa acesta (9600 baud).

Deschideți consola și ar trebui să vedeți adresa IP. (deschideți-l înainte de a primi mesajul conectat) - cealaltă alegere a mea a fost să îl afișez pe LED Matrix o dată chiar la pornire - am decis împotriva acestui lucru, deoarece s-ar putea să nu vă uitați la momentul respectiv și îl veți pierde. Mă gândisem să trimit un mesaj sms sau ceva de genul acesta, dar, în cele din urmă, îl simplific. (De asemenea, am încercat să atribuie un IP static / gateway / etc, nu am reușit să funcționeze corect cu managerul wifi - codul este încă în schiță, deci dacă cineva își dă seama, anunță-mă)

Schița avansează, de asemenea, asupra construcției FreeRTOS în nucleul ESP32 - Avem o sarcină care rulează la fiecare 15 minute aproximativ, ceea ce face este să actualizăm predicțiile de trecere, precum și oamenii din spațiu. Așa cum am spus mai devreme, oamenii din spațiu nu se schimbă atât de mult, așa că probabil ar putea fi mutat într-o altă sarcină și poate rula o dată la 12 ore (sau 6 ore) - dar acest lucru funcționează și păstrează lucrurile simple.

Pentru cei care nu știu, FreeRTOS este o modalitate de a permite unui singur microcontroler central să ruleze sarcini de multiplicare

În mod normal, trebuie să includeți câteva biblioteci și alte lucruri pentru a-l face să funcționeze - cu toate acestea, este integrat în nucleul pentru ESP32 - care fac din ESP32 un dispozitiv foarte puternic. pentru mai multe informații despre FreeRTOS

freertos.org/

ÎMBUNĂTĂȚIRI: există o serie de lucruri care pot fi îmbunătățite pentru acest proiect și aproape în fiecare zi mă gândesc la ceva care ar putea fi făcut puțin diferit, sau schimbat sau adăugat.

Și în directorul cu mai multe exemple ale depozitului puteți vedea unele dintre lucrurile anterioare / diferite la care m-am gândit - unele dintre acestea nu au funcționat, altele doar s-au schimbat, iar altele au fost incluse în schița curentă.

* La un moment dat, am încercat să adaug un neopixel pe afișaj, astfel încât să fie un pic mai asemănător cu proiectul meu anterior - nu am reușit niciodată să funcționeze destul de bine (am găsit că este o problemă de putere pe care nu o luasem în considerare) lucrând la o modalitate de a îmbunătăți această idee *

În timp ce scriu acest pas, m-am gândit că poate aș putea adăuga o modalitate de a vă actualiza latitudinea și longitudinea pe site - așa schița nu ar trebui niciodată să fie modificată - Mă voi gândi și la asta un pic mai mult.

O modalitate îmbunătățită de a obține adresa IP este altceva pe care aș vrea să-l fac (încă mă gândesc și la asta)

Să trecem la următorul nostru proiect …..

Pasul 7: Proiectul 3: un semn de mesaj simplu în mișcare utilizând MQTT

Proiectul 3: un semn de mesaj simplu în mișcare utilizând MQTT
Proiectul 3: un semn de mesaj simplu în mișcare utilizând MQTT
Proiectul 3: un semn simplu de mesaj în mișcare utilizând MQTT
Proiectul 3: un semn simplu de mesaj în mișcare utilizând MQTT
Proiectul 3: un semn simplu de mesaj în mișcare utilizând MQTT
Proiectul 3: un semn simplu de mesaj în mișcare utilizând MQTT

"încărcare =" leneș "" încărcare = "leneș"

Partea 2 a bonusului - Afișați imagini
Partea 2 a bonusului - Afișați imagini
Partea 2 a bonusului - Afișați imagini
Partea 2 a bonusului - Afișați imagini
Partea 2 a bonusului - Afișați imagini
Partea 2 a bonusului - Afișați imagini

Se pare că biblioteca poate afișa imagini - din anumite motive, funcția pare a fi „privată” - bine, pentru următoarele schițe am modificat încă o dată biblioteca și am făcut din drawImage o funcție publică.

De data aceasta, am pus biblioteca modificată în directorul schițelor, deci nu este nevoie să reinstalați biblioteca, schița se uită mai întâi la ea însăși, apoi va arăta în directorul bibliotecii, deci suntem buni!

*** Plănuiesc să trimit această modificare către DFRobot, deoarece este foarte interesant și cam îngrijit să pot face aceste tipuri de schițe ***

Schiță LED Matrix Images, aici încercam mai întâi să-mi dau seama ce dorea biblioteca și ce ar funcționa și ce nu ar funcționa - cu diferite grade de succes. Am constatat că imaginile de 8x8 funcționează cel mai bine, dar puteți face și alții să lucreze. Am găsit și câțiva editori cu matrice conduși online, unii funcționând mai bine decât alții.

xantorohara.github.io/led-matrix-editor/ - pare să funcționeze ok, face imagini de 8x8 și le doriți ca tablouri de octeți.

www.riyas.org/2013/12/online-led-matrix-fo… acesta funcționează bine și are capacitatea de a face afișaje mai mari de 8x8, afișajul pare să fie pornit lateral cu acest afișaj in orice caz. Matricile de octeți par să funcționeze cel mai bine aici. L-am folosit pentru a face „invadatorii de spațiu” văzuți în videoclipul de mai sus.

Deci, cum funcționează acest lucru, drawImage (octet const * img, uint8_t width_t, uint8_t height_t, int8_t x, int8_t y, int img_offset);

variabilă matrice de octeți a imaginii, lățimea imaginii (8), înălțimea imaginii (8), poziția de pornire pe ecran x (0), y (0) de obicei și un număr de offset, care nu sunt 100% sigur ce face, așa că de cele mai multe ori l-am lăsat la zero.

În schița LED Matrix Images - există 8 matrice de octeți diferiți - cu ele și trei metode diferite.

- artificiile sunt primele tablouri, sincer nu sunt sigur cum funcționează acesta - dar funcționează.

în continuare, există o gură - acest lucru nu funcționează foarte bine, gura se așează într-un mod greșit și încercarea de a face orice modificări o înrăutățește. (învățarea a ceea ce funcționează și ce nu este jumătate din distracție)

Urmat de primul marioImg - acest lucru este prea mare pentru afișare și cred că aici intră în joc setul off - l-am folosit aici și puteți vedea partea din față a lui Mario, dacă schimbați offsetul la 1 tu ' Voi vedea spatele lui. (tu nu pot să-ți spun cu adevărat de ce sau ce face offset-ul. Se pare că schimbă imaginea, dar de ce 2 o schimbă, astfel încât să poți vedea fața lui și de ce 1 schimbă cealaltă direcție, nu îți pot spune)

IMAGINI - matricea de octeți este un semn @ pe care l-am făcut - arată ca ceea ce am făcut folosind instrumentul de la

pic1 byte array arată, de asemenea, ca ceea ce încercam să fac, doar că este mai mic decât încercam - ceea ce este nu pot să spun, dar pot spune în general că arată ca ceea ce făceam în editor.

mario2Img - aceasta este versiunea mea a lui Mario mai mare, realizat pentru o dimensiune a ecranului de 8x8 - și tu, acolo, unul sau doi pixeli deplasate (vina mea, nu afișajele), arată ca un Mario mic (sorta).

invader1 și invader2 - ambele ideea mea pentru un invadator spațial. au ieșit destul de bine și, punând imaginile una peste cealaltă, pot crea efectul mișcării picioarelor.

Există două schițe de artificii în director, fiecare este puțin diferit și merită încercat.

Una are focurile de artificii care se mișcă pe ecran, deci o animație puțin mai diferită … cealaltă are două artificii afișate în același timp

Există, de asemenea, trei schițe de „invadatori”, fiecare este puțin diferit, unul are invadatorul care se deplasează pe ecran și puteți vedea cum am făcut asta - (există modalități mai bune de a face asta, nu știu)

Mai mult: Există câteva schițe în directorul de testare al depozitului - cele mai multe dintre acestea nu au funcționat exact așa cum mi-am dorit, sau au fost idei pe care vreau să le fac, dar nu au funcționat așa cum am vrut. Le-am părăsit pentru că cineva meu are niște idei * (am făcut un mic "scut" cu un pixel WS2812 pe el pentru a fi utilizat cu afișajul ISS, dar l-am conectat la linia 3v și pur și simplu nu am avut suficient cu LED-ul Matrix funcționând, pixelul a funcționat bine, fără LED Matrix tu, așa că mai pot face ceva cu el) *

Există, de asemenea, un director numit „Mai multe exemple” - acestea sunt variații ale schițelor proiectului, fie că ceva a fost adăugat sau eliminat, fie modificat într-un fel. Pentru acestea, ele funcționează - pur și simplu nu sunt proiectul final. Așa că i-am lăsat din nou pe cineva care să le scoată ceva util. (Poate)

Sper că ți-a plăcut acest instructable la fel de mult ca și mie mi-a plăcut să realizez aceste proiecte:-)

Pasul 11: LInks …

Acest proiect a fost sponsorizat și susținut de DF Robot. Vă rugăm să utilizați linkurile de mai jos pentru produse:

Firebeetle ESP32 -

Firebeetle Cover 24x8 LED Matrix -

Depozitul meu de coduri:

Dacă vi se pare util sau plăcut acest proiect sau oricare dintre proiectele mele, vă rugăm să mă sprijiniți. Orice primesc este să cumpăr mai multe piese și să fac proiecte mai bune / mai bune.

www.patreon.com/kd8bxp

Biblioteca NTPClient

ArduinoJson.h

Biblioteca meteo ESP8266

Biblioteca Json-Streaming-Parser

Recomandat: