marți, 30 iulie 2019

Prezentare, stocare date si executare comenzi de pe pagina Cayenne (3)

   De data asta, aplicatia este una practica, aceea de a prezenta pe ecranul telefonului (sau calculatorului) temperaturile din mai multe zone, mai precis 6, masurate cu senzori DS18B20 (conectati in paralel), apoi temperatura si umiditatea relativa, masurate cu un senzor DHT22 (AM2302) si, in plus, se pot comanda 4 consumatori prin intermediul unor relee. Toate acestea au fost realizate de amicul meu Dan pentru a avea o sera supravegheata si comandata de la distanta.
  Ca placa de dezvoltare folosesc una WeMos D1 ca are un microcontroler ESP8266 si are forma unui Arduino Uno
de aceea, Dan a folosit o placa tip shield cu 4 relee (Relay Shield v3.0), care are pinii de comanda  D4, D5, D6 si D7, care corespund placii WeMos D1 la GPIO4, GPIO14, GPIO12 si GPIO13.
ce are schema
si aranjamentul componentelor si conexiunilor
    Senzorul DHT22 (AM2302) este conectat la D9 ce corespunde la GPIO2, iar senzorii DS18B20 la pinul D3 ce corespunde la GPIO5.
    In programul WeMosD1_DHT22_6DS18B20_4relays_Cayenne.ino se vad configurarile pinilor
  In pagina serverului se configureaza butoanele si indicatoarele, de pe PC, cum am aratat in alte articole
pe telefon, interfata aratand mult mai prietenoasa
   Dupa conectarea placii WeMos D1 la reteaua locala Wi-Fi, 
se primesc date de la la senzori, eu am doar un DS18B20 conectat asa ca restul apare -127..
   Daca se comanda unul din cele 4 relee sau toate, pe ecran apar informatii de genul
- releul 1 actionat
- releul 2 actionat
- releul 3 actionat
- releul 4 actionat
- toate cele 4 relee actionate
   Placa cu relee are leduri la fiecare comanda, asa ca avem si local informatia ca sunt actionate sua nu
   Am facut si 2 filmulete, postate pe canalul de youtube;




miercuri, 24 iulie 2019

Monitorizare parametrii panou solar (1)

    Intr-un articol anterior am prezentat cum s-ar putea masura tensiunea si curentul cu o placa de dezvoltare cu ESP8266 ce are o singura intrare analogica,
 de data asta voi face masurarea cu o placa Arduino (Nano), folosind tot divizor rezistiv pentru tensiune si senzor ACS712 pentru curent, informatiile le voi afisa local pe un display OLED si le voi trimite la o placa WeMos pentru a fi stocate pe un server IoT, de exemplu ThingSpeak.
    In mare, modulele achizitionate sunt:
- placa Arduino Nano
- afisaj OLED cu interfata i2c
- placa de dezvoltare WeMos cu ESP8266
- senzor de curent ACS712
   Schema de baza este:
   Bineinteles, placile de dezvoltare Arduino si WeMos, afisajul, senzorul de curent se vor alimenta dintr-o sursa stabilizata de 5V.

Indicator nivel combustibil

   Pornind de la solicitarea lui Gabiel Rotariu, un pasionat de Arduino, de a-i prezenta o metoda de a realiza un indicator de combustibil pentru un plutitor cu variatie de la 54 la 291 ohmi (rezervor gol, respectiv plin), am gandit o schema simpla de divizor rezistiv.
   In prima faza, consideram variatia liniara a indicatiei, asca ca o schema de conectare ar putea fi
    Pentru  rezervor gol, unde rezistenta este de 54 ohmi (in simulare 53+1), vom avea
iar pentru rezervor plin, unde rezistenta este de 291 ohmi (in simulare 53+238), vom avea
    Pentru a conecta la o placa de dezvoltare Arduino, schema de test ar fi
    In mare, avem un divizor rezistiv alimentat de la o tensiune redusa de 1,1V (tensiune de referinta interna).
    Tensiunea de la intrarea analogica A0, neglijand curentul prin acest pin analogic, care se masoara, este
  
tensiunea pe rezistenta plutitorului este
   
curentul prin rezistentele serie din divizor
iar valoarea rezistentei plutitorului este
    Programul ce arata nivelul in procente este fuel_0.ino, considerand ca variatia nivelului de combustibil este liniara cu cea a plutitorului.

25.7.2019
   Am realizat ca pentru utilizare pe masina, potentiometrul din plutitor este conectat la masa (sau asa ar fi normal), asa ca am inversat componentele din divizorul rezistiv:
   Pentru rezervorul gol, valorile ar fi
iar pentru rezervor plin
iar schema de test devine:

   Programul, ce va indica liniar nivelul combustibilului in procente, este fuel_1.ino.

28.7.2019
   Gabi a facut teste cu un senzor real, un rezistor bobinat variabil (de pe o masina)
realizand si un scurt filmulet, ce l-am postat pe youtube
6.8.2019
   Am facut si captura video la simularea functionarii, pentru cele 2 variante:
fuel level indicator ver.1
fuel level indicator ver.2

marți, 23 iulie 2019

Sistem deschidere/inchidere porti duble (2)

   In continuarea articolului de testare a comenzilor unor porti duble din 2 butoane, de data asta, am pus un sistem de comanda radio, ce l-am mai prezentat si anterior in articolul Sistem simplu de comanda la distanta rotire 2 motoare in ambele sensuri
   Conenctarea a fost foarte simpla, alimentand modulul radio (receptorul) si conectand iesirile la intraile placii Arduino. 
   Programul de test este acelasi: dualgate_0.ino.
   Poze din timpul experimentelor, de deschidere, respectiv inchidere:
   Am facut 2 filmulete demonstrative:
   Partea de comanda a celor 2 motoare de curent continuu, cu cate 2 limitatoare de cursa fiecare, este

Sistem deschidere/inchidere porti duble

   Pentru a comanda un sistem de porti duble, controlate individual, pentru a avea un curent mic la actionare, adica se deschide poarta dreapta si apoi dupa scurt timp stanga, la inchidere, se actioneaza intai poarta stanga si apoi dreapta.
   Deoarece ideea e sa se folosesca ulterior un sistem de comanda la distanta radio
am pus pe cele 2 intrari (D2 si D3), cate o rezistenta la masa (GND) si comanda se da cu 5V, ca si cum as avea comenzi logice.
   Fiind vorba de 2 porti, fiecare are 2 pini de comanda, pentru o punte H, cum am prezentat in articolul Circuit de schimbare polaritate alimentare motor de curent continuu
   Schema de test are 2 butoane fara retinere, pe intrari sunt 2 rezistente de 10k catre masa pentru a "tine" intrarile in 0 logic, butoanele fara retinere sunt la +5V. La fiecare din cele 4 iesiri sunt conectate cate un led in serie cu o rezistenta de limitare a curentului.
   In repaus, cele 4 iesiri sunt in 0 logic, deci ledurile sunt stinse
   Daca se apasa butonul de deschidere (cel din dreapta), ledul rosu din dreapta se aprinde, confirmand ca iesirea este in 1 logic, ceea ce ar permite deschiderea primei porti (din dreapta),
la scurt timp se aprinde si ledul rosu din stanga lui, confirmand ca iesirea este in 1 logic, ceea ce permite si deschiderea portii din stanga.
    Daca se apasa butonul de inchidere (cel din stanga), ledul galben dinstanga se aprinde, confirmand ca iesirea este in 1 logic, ceea ce ar permite inchiderea portii din stanga,
la scurt timp se aprinde si ledul galben din dreapta lui, confirmand ca iesirea este in 1 logic, ceea ce  permite si inchiderea portii din dreapta.
   Daca in timpul deschiderii sau inchiderii portilor se apasa oricare din butoane, portile se opresc, pentru a se evita un accident
   Pentru a fi mai usor de inteles modul de functionare, am facut 2 filmulete:
   Programul folosit la teste este dualgate_0.ino.
   Partea de comanda a celor 2 motoare de curent continuu, cu cate 2 limitatoare de cursa fiecare, este