miercuri, 29 martie 2023

Alt ceas NTP cu cifre din 7-segmente pe 4 afisaje OLED

    Rasfoind netul, am dat de o biblioteca numita multi_OLED ce poate controla 16 afisaje OLED pe i2c cu numai 5 pini de Wemos D1 (ESP8266). Anterior am realizat un ceas pe 4 afisaje OLED in care am folosit expandorul TCA9548A, asa ca intentia a fost sa il recreez cu cat mai putine piese.

   Initial, am incercat sa controlez 4 afisaje OLED cu o placa Arduino Nano, ce permite doar text, dar pentru inceput e ok. Afisajele au aceeasi adresa i2c si anume 0x3C, asa ca o conectare clasica era imposibila.
   Schema mea de test este
si incarcand programul multiOLED_test_v0.ino pot afisa pe cele 4 afisaje informatii diferite:
   Apoi am schimbat placa Arduino Nano cu un Wemos D1 Mini, schema, ce fi utilizata ulterior si la un ceas NTP cu selectie ora vara/iarna este:
   Dupa un scurt test cu programul anterior, am rescris programul sa am caractere din 7-segmente
Primul program de test afisa doar 0,1,2,3 pe afisaje, dupa cum se vede in filmuletele:
comanda 4 afisaje OLED pe i2c cu aceeasi adresa (0x3C)
apoi cu al doilea program de test, se afiseaza aleatoriu pe fiecare ecran unul din cele 14 caractere create (cifrele 0...9, litera "o", semnul de grad, litera "C", semnul minus)
   Dupa asta am trecut la treburi serioase, adica am adaptat programul sa ma un ceas NTP cu seelctie ora de vara sau de iarna, dar fata de alte proiecte, am folosit intrarea analogica, deoarece alti pini pot avea functionalitati la pornire. A ales sa am ora de iarna cu intrarea la masa (GND) si ora de vara (DST) cu intrarea la 3,3V (maximul pentru acest pin la Wemos D1).
  Primele teste, cu programul NTP_clock_4OLEDS_4.ino, ce are punctul de secunda fix (deoarece informatiile de actualizeaza greu pe ecran) se vad in fimuletele
  Apoi am facut ca ledul intern sa clipeasca, programul devenind NTP_clock_4OLEDS_4a.ino, urmand ca ulterior sa folosesc unu' sau doua leduri intre ore si minute:
    Am in plan, cu ajutorul lui zvonacfirst, sa pun putinele piese pe un cablaj si sa printez o carcasa.
 Schema cu leduri ar trebui sa fie:

luni, 20 martie 2023

Statie meteo pe afisaj tactil de 2.8" cu ILI9341

     Un proiect interesant, ce merita reprodus, este aceasta statie meteo ce foloseste si partea de comanda tactila, in stilul telefonului (doar ca ecranul senzorial este o generatie mai veche si nu e asta usor de folosit ca aceea a unuia de la un telefon).

   Proiectul se gaseste la github.com/ThingPulse/esp8266-weather-station-color si un kit se poate cumpara de aici !

   Multe detalii se gasesc si in articolul ESP8266 Colored Weather Station

dar si in articolul Statie meteo cu Esp8266 pe TFT 2,8 240X320 ILI9341

   Schema de conectare este foarte simpla

asa ca am facut montajul pe un bradboard.
   Dupa incarcarea programului (ce implica instalarea librariilor, necesare introducerea datelor de utilizator pentru datele meteo de la openweathermap.org)  pe ecran apare un mesaj sa calibram ecranul tactil, adica sa apasam in 2 colturi, unde apare o bulina, dua care vedem informatiile meteo si ora, in format de 24 ore
iar daca apasam pe ora, apare formatul de 12 ore
  Apasand pe mijloc, apar informatii despre sistem
prognoza pe zilele urmatoare
si apoi despre datele curente
  Am facut 2 filmuletele:
  Dupa asta am cautat niste proiecte de carcase ce se pot realiza la imprimanta 3D, si am ales 2:
TFT 2.8" ESP8266 NodeMCU Case
   A doua carcasa e mai usor de folosit, prima implica scoaterea pinilor de la afisaj.

PS: am gasit in instructiunile kit-ului si care sunt zonele de apasare pe ecran:

sâmbătă, 11 martie 2023

Ceas NTP pe afisaj grafic cu driver ILI9341 si Wemos D1 (ESP8266) - partea a 2-a

    Am adaugat ceasului din articolul anterior si posibilitatea selectiei orei de vara/iarna, pentru asta am adaugat un comutator

  Daca pinul D6 este conectat la masa (GND), avem selectata ora de iarna (cea normala)
iar daca pinul D6 este conectat la +3,3V, avem selectata ora de vara
programul modificat este TFT_Clock_analog_digital_v1.ino si modul de functionare al ceasului se vede in cele 2 filmulete:
    Dupa cum scriam si in articolul precedent, am gasit un ceas similar, in articolul TUTORIAL 8: ESP8266 INTERNET CLOCK
caruia i-am adaptat biblioteca folosita de mine anterior, inclusiv selectie ora de vara sau de iarna, asa ca programul devine InternetClock_ILI9341_1.ino
- ora de vara
- ora de iarna

   Am facut si 2 filmulete:

Ceas NTP pe afisaj grafic cu driver ILI9341 si Wemos D1 (ESP8266)

    Am achizitionat un afisaj de 2,8" (diagonala de 7,1cm) si driver ILI9341. In anul 2014 lucrasem cu un afisaj cu diagonala mai mica (2,2"= 5,6cm) si acelasi driver (ILI9341), controlandu-l cu Arduino Uno, Mega sau Due (vedeti articolele).

  De data asta, am vrut sa fac un ceas NTP care sa fie controlat de un ESP8266 (placa Wemos D1 mini), asa ca am apelat la mai multe biblioteci de pe net, dar am ajuns sa fiu multumit de rezultatele obtinute doar cu biblioteca lui Bodmer TFT_eSPI.

  Schema de conectare este foarte simpla

iar primul program mai complex, pentru a-mi usura munca pentru ceasul NTP a fost pentru un pseudoceas cu o prezentare de ceas analogic si unul digital: TFT_Clock_analog_digital_v0.ino., dupa cum se vede si in filmulele:
   Dupa aceea, am adaptat programul sa am un ces NTP real, programul devenind TFT_Clock_analog_digital_v0a.ino iar ceasul poate fi vazut in functiune in filmuletele:

    Am gasit un ceas similar, in articolul TUTORIAL 8: ESP8266 INTERNET CLOCK
caruia i-am adaptat biblioteca folosia de mine anterior, asa ca prograamul devine InternetClock_ILI9341_0.ino

duminică, 5 martie 2023

Termometru/higrometru cu senzor AHT20 pe afisaj IPS de 1.3" cu ST7789

   Dearece am un senzor AHT20 si tocmai am testat un termometru/higtometru cu senzorul GY-21 pe un afisaj de 1.3"cu driver ST7789, am zis sa adaptez programului pentru senzorul AHT20.

   Am gasit un articol bun, ce foloseste similar senzorul (ca si precedentul), din care am aflat si caracteristicile principale:

- tensiune de alimentare: 2,0..5,5V

- umiditate relativa masurata: 0..100% RH

- temperatura masurata: -40..+85℃

- precizia de masusa a umiditatii relative: ±2% RH (la +25℃)

- precizia de masura a temperaturii: ± 0,3 ℃

- rezolutie masura pentru umiditatea relativa: 0,024% RH

- rezolutie masura pentru temperatura: 0,01 ℃

- adresa i2c: 0x38

    Biblioteca folosita este Seeed_Arduino_AHT20 asa ca programul adaptat de mine este AHT20_ST7789_0c.ino ce foloseste schema (similara cu cea a senzorului GY-21):

   Prima deosebire sesizata intre GY-21 si AHT20, este aceea ca cel din urma este mult mai lent in initializare si trebuie interogat mai rar pentru valori corecte, mai ales ale umiditatii relative.

    Ca si termometrul/higrometrul anterior, pe ecranul de 33mm (1,3") putem vedea:

- modul 1:

    - temperatura si umiditatea cu caractere mari

    - temperatura cu caractere mari si un grafic al variatiei si umiditatea relativa cu caractere mai mici

    - umiditatea relativa cu caractere mari si un grafic al variatiei si temperatura cu caractere mai mici

- modul 2 (cu informatii in partea de jos, in stanga pentru temperatura si in mijloc pentru umiditatea relativa, pe primul rand valoarea medie, apoi valoare minima, respectiv valoarea maxima, pe randul de jos)

    - temperatura si umiditatea

    - temperatura cu caractere mari si umiditatea relativa cu caractere mai mici

    - umiditatea relativa cu carctere mari si temperatura cu caractere mai mici

Am facut si 2 filmulete:

Termometru/higrometru cu AHT20 pe afisaj IPS de 1.3" cu ST7789

AHT20 Thermometer/Hygrometer on 1.3" IPS ST7789 display

sâmbătă, 4 martie 2023

Termometru/higrometru cu senzor GY-21 pe afisaj IPS de 1.3" cu ST7789 (2)

     Dupa ce am testat, cu bune rezultate, termometrul si higrometrul prezentat in articolul precedent, am dat de un video cu prezentare frumoasa

   Am adaptat programul care se poate descarca din descrierea filmuletului, pentru senzorul GY-21 (SHT21) folosind aceeasi configuratie din schema anterioara (doar ca butonul fara retinre nu are nici o functie aici):
acesta devenind ST7789_GY21_Temp_humidity_0.ino.
   Dupa incarcarea programului, prima impresie e ca imaginea si cifrele sunt foarte mici (fata de cum era prezentat in cel precedent)
ceea ce mi-a dat un pic de cap cu telefonul folosit, ca nu are macro so nici stabilizare optica, dar mai bine vedeti filmuletele

Termometru/higrometru cu senzor GY-21 pe afisaj IPS de 1.3" cu ST7789

    Intrand in posesia unui afisaj grafic de 1,3"cu driver ST7789, am zis sa il testez, mai ales ca mi-au venit niste senzori GY-21 (unul ce sa defectat, l-am testat pe un afisaj OLED de 0,96" cum am prezentat intr-un articol precedent).

    Am reusit sa "aprind" afisajul doar cu 2 librarii
cu mentiunea ca am intercalat 4 rezistente de 2k2 (2.2kΩ) pe liniile de comanda deoarece afisajul se alimenteaza la 3,3V avand si logica la fel, iar Arduino Nano lucreaza la 5V avand si logica la fel.
   Am vrut sa am o grafica frumoasa asa ca am modificat exemplul gasit la github.com/cbm80amiga/ST7789_BME280_weather_station
asa ca schema testata de mine pentru senzorul GY-21 este

iar programul adaptat de mine este ST7789_GY21_weather_station_0.ino.
   Am modificat programul astfel ca sa am si temperatura si umiditatea cu caratere mari,

apoi la apasarea butonului sa am temperatura mare si grafic al variatiei acesteia si cu caractere mici umiditatea relativa,

la o noua apasare scurta sa am umiditatea si grafic de variatie cu temperatura mica, 

dupa care se repeta cele 3 tipuri de informatii.
   La apasare lunga de buton apar statistici de valoare medie, minima si maxima
- pentru ecranul cu ambii parametrii

- temperatura

- umiditate relativa
dar cel mai bine se vede modul de functionare in filmuletele urmatoare: