joi, 7 noiembrie 2019

Cablaj universal pentru ceasuri cu ESP8266 si afisaje matriceale led cu MAX7219

   In ultima perioada, am tot testat si realizat ceasuri ce se folosesc placide dezvoltare de cu ESP8266 programate cu limbaj Arduino.
   Unele sunt simple, ce au doar placa de dezvoltare cu ESP8266 (NedeMCU, WeMos, etc) si 4-6 afisaje matriceale de 8x8 leduri (cu 4-6 driver-e MAX7219),
schema de test fiind
   Ceasul, data si datele meteo sunt preluate de pe internet prin conectarea la reteaua locala wi-fi.
   Am pus pe blog urmatoarele articole, cu aceasta schema:
   Varianta a doua, cea complexa, are o placa cu ESP8266, un modul de ceas RTC (cu DS1307 sau DS3231), senzor DGT22 (AM2302) pentru umiditate si temperatura + o fotorezistenta pentru reglajul automat al intensitatii luminoase.
schema fiind
   Articole cu aceasta schema:
   Deoarece am folosit diverse librarii, dintre care una nu foarte flexibila, am lasat conectarea pinilor ca la schema complexa, adaptand-o si pe cea simpla. Ca un rezumat, pentru o placa de dezvoltare Wemo D1 Mini, 
am urmatoarea configurare generala:
   Am testat pentru ceasul cu schema simpla si a functionat normal, asa ca am desenat o schema cu ajutorul programului Autodesk Eagle pentru care am un articol gen tutorial (vedeti articolul Cum facem un cablaj).
    Pentru varianta simpla voi pune doar o placa WeMos D1 Mini si voi conecta afisajul cu 4 sau 6 module, iar pentru varianta complexa voi pune placa WeMos D1 Mini, voi pune un modul RTC cu DS3231 (pentru el a fost desenata schema), un senzor AM2302 sau un modul cu senzor de tip DHT22 (sau DHT11, dar precizia e foarte scazuta) si o fotorezistenta, apoi voi conecta si afisajul cu 4 sau 6 module. 
   E posibil sa modific si programele sa am la versiunea minimala si partea de reglaj automat al intensitatii sau sa am si informatii din camera pentru temperatura si umiditate, poate vois schimba senzorul cu un DS18B20, doar pentru temperatura, etc.
   Dupa schema, am desenat un cablaj dublu strat, dearece vreau sa-l fac la cei de la PCBWay deoarece am un cupon si costurile sunt mai reduse, oricum pretul este foarte bun, fiind 3,90$ pentru 10 placute la care se adauga transportul in valoare de 8$ deoarece am ales posta normala, nu curier rapid, ca data trecuta. Puteti vedea ce am mai comandat la firma aceasta in articolul Cablaje realizate la PCBWay 
   Cablajul rezultat arata asa:
   Deoarece trebuie trimise fisiere Gerber, am urmat pasii prezentati in articolul Prepare Eagle PCB project to generate Gerber files and than to order custom board
   Fisierele le puteti descarca de pe site-ul PCBway fiind clock.zip, o previzualizare foarte aproape de adevar apare daca se foloseste site-ul www.gerber-viewer.com:
   De asemenea, fisierele pot fi descarcate si din galeria Universal PCB for LEDmatrixClock
    Am lansat comanda si cand vor sosi placutele, voi posta poze cu ele, apoi cu montajele, in cele 2 variante.

03.12.2019
   Au sosit cablajele, dupa cca 3-4 saptamani:
04.12.2019
   Nu am avut rabdare si am pus conectori mama pentru placa Wemos D1 Mini si pentru afisaj, dar am constatat ca mufa de la afisaj e in oglinda;
si ar fi ocupat spatiu mult intr-o carcasa si fiindu-mi mila de cablaj, am schimbat mufa mama cu una tata cu 5 pini si am pus cabluri-plate cu conectori mama-mama
    Am mai montat conectori mama si tata pentru afisaj pe o alta placa, dar am realizat ca nu pot muta proiectul cu ceasul cu modul RTC si senzor DHT ca nu mai am placa Wemos D1 Mini, asa ca am oprit lucrarile 😇.

19.12.2019
    Mi-au sosit niste placi Wemos D1 Mini, asa ca am "mutat" si ceasul cu modul de ceas RTC si senzot DHT22:
ramanand pe breadboard
31.12.2019
   Am realizat 2 filmulete pentru a fi mai usor de vazut cum este utilizat cablajul universal, unul echipat minimal (doar placa Wemos D1 mini) si cealalta maximal (placa Wemos D1 mini, modul de ceas RTC cu DS3231, fotorezistenta si senzor DHT22):

sâmbătă, 2 noiembrie 2019

Alta versiune de ceas animat cu date meteo (2)

   Fata de versiunea anterioara am adaugat sageti cu directii diferite pentru vant. O contributie importanta o are unul din urmaritorii mei din strainatate (novax1/Antonio C.P), care a tot insistat si mi-a trimis un exemplu din care sa ma inspir.
   Am zis sa pastrez ce testasem eu si sa fac modificari in fisierele mele, dar am constatat ca apar probleme de conectare, de fapt, programul nu astepta suficient raspuns de la serverul openwhearmap.org care ofera informatiile pe baza unui chei unice si localitate (cititi articolul Ceas matriceal animat cu date meteo pentru detalii).
    Am schimbat in fisierul wheater.h sa astepte raspuns:
    Am facut un fisier Excel sa vad cum s-au creat celelalte caractere, ultimele mai ales;
   Dupa cum se observa, ce e in dreapta e in sus (rotire in stanga), asa ca am creat si celelalte "sageti", pentru NE, E, SE, E, SV, V si NV, deoarece am pentru N sageata in sus si pentru S sageata in jos.
      Am marit numarul de caractere acceptate in fisierul char.h
am definit caracterele speciale in fisierul fonts.h
apoi mi-am definit in fisierul weather.h unde pregatesc datele meteo si nume la caractere:
punand si conditiile de afisare
   Am facut si 2 filmulete, deoarece e mult mai usor de inteles ce am prezentat mai sus:
ceas "online" cu date meteo pe afisaj de 32x8 leduri (2)
"online" clock with weather data on 32x8 led display (2)
   Pentru a realiza acest tip de ceas cu date meteo trebuie sa incarcati toate fisierele din subdirectorul LEDMatrixV2ro3
iar in calculator trebuie sa aveti ceva de genul

schema este aceeasi:
adica legaturile sunt

duminică, 27 octombrie 2019

Trimitere date pe server ThingSpeak de pe 2 dispozitive separate

   Deoarece voiam sa monitorizez 2 camere ale apartamentului, creasem 2 canale pe contul meu, pe unul aveam de ceva timp un senzor DS18B20 ce trimite prin intermediul unei placi Arduino Nano, care comanda un ESP8266-05 prin comenzi AT, dupa cum se vede in articolul Prezentare si stocare date pe pagina ThingSpeak (3) - folosind Arduino si ESP8266-05
si un al doilea canal cu senzor BME280 conectat la o placa de dezvolare cu ESP8266, dupa cum se vede in articolul Monitorizare senzor BME280 de pe server ThingSpeak
   Dupa ce am citit si vazut ca senzorii gen Sonoff sau Xiomi au toate informatiile intr-un loc, apoi am vazut la setari ca un canal ThingSpeak poate avea 8 campuri (Fields), am zis sa trimit, ca si pana  acum pe campul 1 temperatura de la senzorul DS18B20, prin intermediul grupului Arduino Nano - ESO8266, apoi pe campurile 3, 4 si 5 informatiile de la senzorul BME280 ce trimite prin intermediul unei mai vechi placi Wemos D1. Am lasat canalul 2 liber in ideea ca voi schimba senzorul DS18B20 cu un DHT22 (AM2302) si sa pot pune si umiditatea relativa din prima camera, deoarece e simplu de inlocuit fizic DS18B20 cu DHT22, deoarece am alimentare (+5V), pin de masura si masa (GND).
    Revenind la realizarea practica, am pastrat montajul, ce are schema
si am lasat programul ThingSpeak_arduino_esp8266_ds18b20_v3.ino.
    Pe placa WeMos D1 cu senzorul BME280 am facut mici modificari, programul fiind BME280_Thingspeak2.ino si schema nemodificata:
    In mare, primul sistem va trimite doar valoarea temperaturii de la DS18B20, iar al doilea va trimite valorile temperaturii, umiditatii relative si presiunii de la senzorul BME280.


   Am facut 2 filmulete, care descriu ce e prezentat mai sus:
Trimitere date pe server ThingSpeak de pe 2 dispozitive separate
2 devices send data to same ThingSpeak channel
28.10.2019
   Am facut o noua captura de ecran deoarece acum sunt mai multe date si arata a grafice: