duminică, 5 ianuarie 2020

Ceas cu reglaj pe afisaj P10 de 32x16 leduri

 
   Am adaugat ceasului prezentat anterior (1 si 2) reglaj pentru ora si data. Reglajul se face din 2 butoane: MENIU/URMATORUL si CRESTE/PLUS.
    Schema difera de cea anterioara prin adaugarea celor 2 butoane la pinii D2 si D3, catre masa.
   Programul ce face toate "minunatiile" astea este DMD-P10-clock3.ino.
   La apasarea scurta a butonului MENIU se intra la reglajul orelor, iar prin apasarea repetata sau tinerea apasata a butonului PLUS se mareste valoarea pana la 23, in cazul orelor, dupa care revine la 0.
  La urmatoarea apasare a butonului MENIU se pot modifica minutele din butonul PLUS (maxim 59)
   Se trece la reglarea anilor prin apasarea scurta a butonului MENIU si se modifica din butonul PLUS (maxim 2039)
   La apasarea butonului MENIU se trece la reglajul lunii, schimaband valoarea prin apasarea repetata sau tinerea apasata a butonului PLUS (maxim 12)
   Ultimul reglaj este cel al zilelor, intrandu-se prin apasarea butonulu MENIU si se schimba valoarea din butonul PLUS (valoarea maxima difera de la luna la luna, sistemul de alegere este preluat de la Andy Doz).
    Am facut si 2 filme, pentru a se intelege mai usor cum apar informatiile si cum se schimba ora si data:
ceas cu reglaj pe afisaj P10 32x16 leduri
manual adjust clock on P10 32x16 led display
   Mentionez ca am incerc si fontul mai mare, din exemplul librariei, dar cifrele sunt lipite si ora e greu de citit.
   Singura problema ce nu am reusit s-o rezolv din soft este aceea a reglajului intensitatii, Rezolvarea momentana este acea a alimentarii cu tensiune reglabila, 5V pentru maxim si 3,1-3,2V pentru minim.

07.01.2020
    Am reluat testele cu un caracterul mai mare,
programul devine DMD-P10-clock3a.ino si in filmuletele urmatoare se vede cum se prezinta informatiile:
ceas cu reglaj pe afisaj P10 32x16 leduri (2)
manual adjust clock on P10 32x16 led display (2)

08.01.2020
    Am pus secundele mai mici, programul devenind DMD-P10-clock3a2.ino



sâmbătă, 4 ianuarie 2020

Ceas si data pe afisaj P10 cu 32x16 leduri

   Am modificat putin ceasul prezentat anterior si am adaugat si data, ce e afisata timp de 5 secunde.
   Schema de conectare ramane nemodificata, doar programul are imbunatatiri, acesta fiind acum  DMD-P10-clock2.ino.
   Am facut 2 filmulete, pentru a se intelege mai usor modul de afisare:
ceas pe afisaj P10 32x16 leduri (4)
clock on big display (P10) - part 3
   Urmeaza s aimplementez si reglajul manual al ceasului, din 2 butoane fara retinere.

Ceas pe afisaj P10 cu 32x16 leduri

   In mica pauza de sarba(u)tori, am reusit sa ma relaxez cu Arduino. Afisajul cu interfata P10 si realizat din 32x16 leduri l-am mai folosit cand am realizat cantarul pentru 200kg.
   Initial, am vrut sa fac un ceas cu ESP8266 cu obtinere ora de pe un server NTP, dar nu am fost multumit de rezultat, asa ca am renuntat la acel proiect.
   Am gasit pe net articolul Project I - 19 Digital Clock using LED Matrix P10 Module (Arduino Based) si de acolo am folosit doar schema de conectare, care este cea pentru libraria DMD, completata cu partea de conectare pe i2c a modului de ceas RTC cu DS1307 (DS3231).
   In prima faza, am realizat ceasul se regleaza doar de la calculator, dacae conectat la PC prin cablu USB si ceasul nu functioneaza preia data de la calculaor automat, dar daca ora este diferita, este necesar sa se activeze ultima linie din setup prin indepartarea // din fata:
incarcarea programuluui, apoi repunerea semnelor // pentru a "comenta" linia, adica e doar un comentariu, nu e o linie activa:
si se reincarca programul.
    In afara librariei DMD pentru controlul afisajului, care se descarca de la https://github.com/freetronics/DMD si TimeOne, ce se descarca de la https://code.google.com/archive/p/arduino-timerone/downloads, am mai folosit libraria RTClib, a carei versiune o gasiti salvata in https://github.com/tehniq3/used_library sau se preia versiunea actualizata de la https://github.com/adafruit/RTClib.
    Am folosit, pentru inceput, doar afisarea orei si am pus punctele de secunda sa fie animate (sa "bata" secunda), sketch-ul este DMD-P10-clock.ino
    Mentionez ca afisajul trebuie alimentat separat dintr-o sursa capabila de 5A si minim 2A, eu folosind surse reglabile, una liniara cu control digital si apoi una in comutatie deoarece puterea disipata pe cea liniara pornea des ventilatoarele de racire si ma deranja. Cu aceasta ocazie am constatat ca pot regla intensitatea luminoasa prin alimentarea la o tensiune de cca 3,1V (si Arduino este alimentat impreuna cu afisajul, pentru a fi ceva independent).
   Cateva poze:

   Am facut mai multe filmulele, pentru a observa mai bine cum apare ora si nivelul luminos:




   Deoarece am primit multe comentarii dupa postarea filmuletelor pentru a afisa si data si sa existe si posibilitate de reglaj din butoane sau tastatura, o sa continui, in limitata timpului disponibil, acest proiect.

duminică, 1 decembrie 2019

Trimitere date pe server ThingSpeak de pe 2 dispozitive separate (2)

   In articolul anterior am trimis date pe un canal Thingspeak de pe 2 dispozitive total diferite, primul era bazat pe o placa Arduino Nano ce trimite comenzi AT catre un ESP8266-05, celalalt dispozitiv e o placa Wemos cu ESP8266
   Am primit un comentariu de la Djokimus, un pasionat de albine din Serbia, ce voia sa conecteze un DS18B20 la o placa cu ESP8266 (WeMos, NodeMCU, etc), asa ca am modificat sketch-ul primit de la el, unde avea doar date de la BME280 si le trimitea pe un canal pe campurile 1, 2 si 3, astfel incat sa trimita cu alta placa cu ESP8266 datele de la un DS18B20 pe acelasi canal, dar pe campul 4. Dupa ce am aflat ca totul e ok, am modificat programul sa foloseasca ambii senzori pe o singura placa cu ESP18B20.
   Programul doar pentru BME280 si o placa Wemos  v3, primit de la Djokimus este wemos1_thingspeak_BME280.ino si trimite date catre un canal Thingspeak de la senzorul BME280 (temperatura, umitidate relativa si presiune), apoi eu am trimis programul wemos2_thingspeak_ds18b20.ino (e un pic diferit fata ce ce primisem, dar trimite date pe campul 4 al aceluiasi canal temperatura).
    Djokimus a postat pe canalul sotiei un filmulet numit Monitoraggio temperatura dell'arnia
   Programul ce foloseste ambii senzori (BME280 pe i2c si DS18B20 pe D5/GPIO14) este wemos_thingspeak_BME280_DS18B20.ino.
   Canalul pe care trimite este, cel putin momentan, https://thingspeak.com/channels/900095.
   In articolul NodeMCU V1 V2 V3 size and pinout comparison am gasit o prezentare frumoasa a placilor Wemos:

03.12.2019
   Am primit poze de la Djokimus cu sistemul realizat cu o singura placa si 2 senzori, unul BME280 si celalalt DS18B20:
19.12.2019
   Am primit acum vreo saptamana o modificare a programului pentru a reduce consumul, deoarece sistemul este folosit intr-o zona izolata (wemos_bme280_ds18b20_niq_ro_modificato.ino).

luni, 25 noiembrie 2019

Termostat MQTT cu ESP8266 (2)

    Acum un an si ceva, am publicat articolul Termostat MQTT cu ESP8266 pe care l-am testat in gol cca 3-4 luni. El nu a controlat o centrala termica sau un sistem de aer conditionat, ci doar a aprins un led rosu cand ar fi trebuit sa actioneze in gol.
   Zilele trecute am reluat testele, pornind o placa Raspberry Pi Zero W cu cardul SD de la o alta placa, ce avea instalat serverul broker Mosquitto dupa cum am prezentat in articolul Sonerie cu comandă locală sau prin protocol MQTT prin server Mosquitto (2)
    Am adaptat ultimul sketch prezentat in primul articol (MQTT_ESP8266_termostat_base.ino) sa aprinda afisajul doar cand apas butonul sau daca dau comenzi de pe telefon. La sketck-ul din link, afisajul OLED sta aprins mereu, dar nu se recomanda, deoarece textele raman imprimate... asa ca incarcati versiunea MQTT_ESP8266_termostat_ok.ino dupa ce finalizati testele.
   Deci, in mod normal, afisajul este stins, dar functioneaza termostatul:
- temperatura ambianta mai mare decat temperatura dorita
- temperatura ambianta mai scazuta decat temperatura dorita
   Daca se apasa butonul de pe cablaj sau se dau comenzi de pe telefon:
- temperatura ambianta mai mare decat temperatura dorita
- temperatura ambianta mai scazuta decat temperatura dorita
    Schema de conectare este eceeasi, bineinteles:
   Aplicatia folosita este aceeasi, IoT MQTT Panel.
unde am creat un un canal numit termostat
care e configurat astfel:
eu am completat doar numele, adresa IP a serverului (gasite de aplicatia Advanced IP scanner) si portul 1883 si conexiune TCP (ID-ul canalului este geberat automat de aplicatie).
   Dupa ce am creat butoane, indicatoarele si graficul, pe telefon apare asa:
   Pentru a creea un buton, grafic sau indicator, se apasa butonul + din partea de jos a ecranului

si se alege ce sa creez.

   Pentru cele 3 butoane, configuratiile sunt in stanga, iar in dreapta corespondenta din program (sketch):
- crestere temepratura

- scadere temperatura

- aprindere afisaj
unde "topic" este cel din linia 137

   Pentru cele indicatoare, configurarile sunt:
- temperatura reala
- umiditatea relativa a aerului
- temperatura dorita
- stare releu / led
unde in program, comenzile sunt:
   Pentru grafic, vom avea configurarile in aplicatie;
   De data aceasta nu am mai facut filmulete, dar pun 2 din ele, realizate anul trecut:


   Cred ca datele prezentate sunt suficiente sa realizati si voi un termostat de genul asta.
Eu mai am de implementat partea de conectare cu parola, dar nu am timp momentan de teste.