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:


Monitorizare senzor BME280 de pe server ThingSpeak

   Am achizitionat un senzor de presiune-temperatura-umiditate de tip BME280. In trecut am achizitionat si testat un senzor BMP280, care este senzor doar pentru presiune-temperatura, dar mie mi se pare utila si informatia despre umiditatea relativa a aerului, asa ca va prezint ce am testat acum.
   Dupa ce am lipit conectorii tata la partea de i2c, deoarece asa are implicit realizate legaturile (puntile, strapurile) pe cablaj .
   Avand de mai mult timp instalata libraria Adafruit_BME280, am urmat indicatiile din articolelele Adafruit BME280 Humidity + Barometric Pressure + Temperature Sensor Breakout si SparkFun BME280 Breakout Hookup Guide, realizand schema aceasta, alimentat ca acolo, cu 3,3V:
    Am modificat programul de test pentru a avea presiunea in unitatile uzuale de la noi, in mmHg (milimetri coloana de mercur), acesta devenind BME280_test1.ino
  Primul test a fost facut cu o placa de dezvoltare Arduino Uno
apoi am conectat o placa de dezvoltare cu ESP32
conectand la comunicatia i2c (SDA.SCL) ca in articolul ESP32 Web Server with BME280 – Advanced Weather Station
   Deoarece imi emai comod de programat o placa cu ESP8266, am pus si la una mai veche, de a fost la indemana. Puteti vedea un material in articolul Create A Simple ESP8266 Weather Station With BME280, unde se vede si schema de conectare:
   Am adaptat un program ce functioneaza pe un canal de pe serverul Thingspeak, acesta devenind BME280_Thingspeak.ino.
   In ecranul de monitorizare seriala vedem conectare reusita
pentru ca deja placa era configurata, dar daca nu trebuie urmati pasii prezentati in articolul Configurare usoara conectare la retea Wi-Fi pentru microcontrolerele ESP8266/ESP32 !
   Pe canalul a carui cheie am utilizat-o (APIkey) am informatii depsre temperatura, presiune si uniditatea din camera:
   Am facut si 2 filmulete;
date senzor BME280 vizualizate pe server Thingspeak
BME280 sensor on ThingSpeak channel

sâmbătă, 26 octombrie 2019

Senzor de amprenta DY50

   Sosindu-mi un senzor de amprenta DY50, am inceput sa caut ceva informatii si am gasit cateva:
Adafruit Optical Fingerprint Sensor
https://github.com/hanifizzudinrahman/Module-Fingerprint-DY50-FPM10A
    Bun, dupa instalarea librariei Adafruit-Fingerprint-Sensor, am legat ca in schema din articolul de la Adafruit, de fapt, cum e in libraria lor, doar ca am alimentat dintr-o sursa externa de 3,6V deoarece nu am fost sigur ca e ok si la 5V, bineinteles ca am avut fir comun (GND) intre sursa externa si Arduino.
   Am mai conectat si un led RGB cu rezistente de 100-220 ohmi fiecare.
   Pentru a inregistra amprente, am incarcat programul enroll din librarie
si am memorat 3 amprente, degetul mare de la mana stanga, degetul mare si degetul mic de la mana dreapta. Memorarea se face simplu, se apasa pe cifra 1, se pune degetul, se astepta confirmarea si apoi se ia degetul, apoi se repune cand este solicitat in ecranul de monitorizare seriala.
   Apoi se incarca programul fingerprint din exemple si vedem in ecranul de monitorizare ca a recunoscut amprenta.
    Eu adaugand modulul cu ledul RGB, l-am configurat sa palpaie ledul albastru pentru a sti ca sistemul e activ, 
se aprinde cca o secunda ledul verde cand este recunoscuta una din amprente,
respectiv se aprinde ledul rosu cand se recunoaste o ampreinta, dar nu este din cele memorate.
   In filmuletele urmatoare se vede modul de functionare, daca se foloseste programul modificat de mine numit fingerprint_rgb.ino


   Am constatat ca modulul alimentat la 3,6V consuma foarte putine, intre 10 si 30mA, asa ca am zis dupa vreo ora de teste sa il alimentez si la 5V, dar modulul a "decedat subit", (la comutarea de la 3,6V la 4,8V, dupa cum am constatat ulterior) consumul crescand la 220mA chiar daca are ledurile stinse si nu reactioneaza de nici un fel. 
   Am utilizat microscopul sa vad ce microcontroler e folosit si apoi cautat pe internet datasheet-ul "cipului" AS608, gasind ca e produs de SynoCHIP, dar am constatat si ca are un stabilizator integrat de la 5V la 3,3V si altele pentru teniuni reduse
   Momentan, am intrerupt testele, dar dupa ce o sa imi ajunga alt modul, o sa reaiu testele, iar ca masura de precautie o sa pun o dioda Zenner de 3,6V.

7.11.2019
    Din pacate, modulul s-a defectat deoarece sursa de alimentare, la comutarea de pe treapta de 3,6V la 4,6V are un "spike" (salt) pana la cca 12V, dupa cum se vede pe oscilogramele cu un osciloscop Hantek DSO5072P:
- captura generala:
- valoare maxima impuls ~12V
- detaliu varf, la o alta actionare
- timpul tranzistiei periculoase este de 28ms:
    Asa ca o regula generala, cand se fac schimbari de trepte sau chiar potentiometru, mai ales la surse ieftine, trebuie deconectata sarcina pe perioare reglajului..

12.11.2019
    A sosit un alt senzor, ce are scris clar alimentare la 3,3V asa ca nu am mai riscat. Din teste a rezultat ca acest senzor e "mai greu de cap", in sensul ca recunoaste mai greu o amprenta, nu recunoaste intotdeauna amprentele corecte, dar macar nu a recunoscut vreunul necunoscut ca fiind "acceptat".
Poze:
- in asteptare
- amprenta recunoscuta
- amprenta nerecunoscuta
   Am facut 2 filmulete cu noul senzor