sâmbătă, 13 aprilie 2019

Alt sistem de alarma

    Fata de sistemele de alarma prezentate in articolele Sistem de alarma
si Sistem de alarma (2)

aceasta a fost gandita de la zero pentru a permite adaptarea usoara la un sistem de comanda radio, ca cel prezentat in articolul Sistem simplu de comanda la distanta rotire 2 motoare in ambele sensuri
    Eu am realizat un modul simplu ce include 2 butoane fara retinere (folosesc rezistentele de pull-up active, si am contact pe LOW), dar pentru sistemul de comanda radio intrarile sunt comandate cand e nivel HIGH, dar e simpla modificarea. Partea cu comanda radio a testat-o Razvan Lazar, un prieten al lui Mircea Craciun, un vechi colaborator in proiecte cu Arduino.
   Revenind la sistemul de alarma propriu-zis, testat de mine, el are 2 butoane, unul de armare si unul de dezarmare, un senzor de detectie miscare cu intrarosii, 2 leduri, unul care insica starea de armare/dezarmare si unul pentru a indica activarea unuei goarne/sirene/claxon.
   Programul scris de mine este alarmsystem_0.ino si permite folosirea cu butoane fara retinere contact spre masa (comanda LOW)
sau cu sistemul de comanda radio, cu comanda in HIGH
    la pornire, sistemul e dezarmat:
daca se apasa pe butonul de armare, se aprinde scurt ledul galben (simuleaza goarna) si dupa circa 2 secunde se aprinde si leful galben ce indica armarea efectiva
daca se detecteaza miscare se aprinde cu intermitenta ledul galben timp de 10 secunde (se schimba usor valoarea timpului de la 10 secunde in maxim 30 cat e legal)
Daca nu mai este miscare, alarma asteapta, daca in timp ce goarna suna si se apasa butonul de dezarmare, sistemul de alarma se dezactiveaza....
    Am facut 2 filmulete;
Sistem de alarma
alarm sistem
   Razvan a facut si el 2 filmulete:
sistem alarma (2)

alarm system (2)
Nota: Daca senzorul e activat in HIGH ramane ca in program
iar daca e logica negativa, adica e activat in LOW se modifica in
Nota2: Am desenat si o schema de conectare pentru teste:
15.04.2019
    Varianta initiala are stare de asteptare la pornire si/sau repornire (variabila armare = 0)
,
dar se poate schimba sa fii armata la pornire/repornire (variabila armare = 1)
20.04.2019
   Am primit de la Razvan un scurt filmulet cu un alt tip de senzor RCWL-0516, ca cel prezentat de mine in articolul Senzor de miscare tip radar (Doppler)
   Filmuletul l-am numit alarm system with Doppler sensor

Comunicare unidirectionala intre 2 placi Arduino

english version

   Pentru a transmite unidirectional (adica doar de al un Arduino catre altul), dar si oarecum securizat  (adica fara sa apara erori de comunicare), se pot folosi mai multe metode, una find prin legare directa folosind comunicarea seriala (de fapt doar o parte din ea, TX de la cel care trimite si pinul RX de la cel ce primeste si firul de masa GND); alta metoda e cea prin transmisie radio (emitator RF -> receptor RF), comunicatii prin Wi-Fi, etc.
   Am testat, pentru simplitate, varianta cu legarea pe 2 fire (comunicatie unidirectionala) si masa (GND), schema de conectare este extrem de simpla:
   Pentru un exemplu de utilizare a unor transmissi simple dintre cel din stanga catre cel din dreapta, vedeti articolul Tech Thurday #005: Arduino to Arduino Serial Communication.
   Pentru a fi un experiment ce poate fi folosit la ceva practic, am ales sa folosesc pentru placa Arduino, ce trimite comenzi, un shield cu afisaj LCD1602 si 5 butoane conectate intr-un divizor rezisistiv, cum e cel prezentat la https://www.dfrobot.com si cel folosit de mine sa realizez un termistat; este cel prezentat in articolul Termostat cu control umiditate (higrostat) - partea a 3-a
Divizorul rezisitiv poate avea valorile astea, dar exista versiuni cu alte valori:
O schema mai detaliata se gaseste la https://www.dfrobot.com
Oricum sketch-ul de la https://www.dfrobot.com/ are posibilitatea alegerii din cele 2 versiuni
   Shiled-ul care l-am gasit eu primul este cel cu versiunea 1.0, asa ca am activat partea aceea:
   Am montat pini pentru a putea lega fire si am realizat un mic montaj la al 2-lea Arduino cu 5 led-uri (LED1 la D4, LED2 la D5, LED3 la D6, LED4 la D7 si LED5 la D8) la masa (GND, cu o rezistenta de limitare a curentului prin leduri de 220 ohmi (100 ohmi ... 1kohm) catre masa (GND).
   Pentru partea de codificare si transmitere a informatiei am folosit programul transmiter_v0.ino, iar pentru receptor si decodificator programul receiver_v0.ino.
   Starile sunt:
- nici un buton apasat
- apasat butonul SELECT (selectie)
- apasat butonul LEFT (stanga)
- apasat butonul RIGHT (dreapta)
- apasat butonul UP (sus)
- apasat butonul DOWN (jos)
  Am facut si un filmulet pentru a fi mai usor de inteles cum apar starile, este cel numit comunicare unidirectionala intre 2 Arduino
   Pentru a intelege cum functioneaza partea de codare din emitator, voi explica partea de divizor rezistiv.
- buton neapasat:
- buton RIGHT apasat
- buton UP apasat
- buton DOWN apasat
- buton LEFT apasat
- buton SELECT apasat
   Am mai facut 2 filmulete;
comunicare unidirectionala intre 2 Arduino (2)
Unidirectional Communication between 2 Arduino boards

joi, 11 aprilie 2019

Ceas matriceal animat cu ESP8266 si RTC (DS3231) cu informatii despre temperatura si umiditate (3)

    Dupa ce am tot discutat cu Mihai ce sa mai punem la acest ceas, am ajuns la concluzia ca e mai bine sa punem un fotorezisor cu care sa se regleze intensitatea luminoasa.
    Fata de schema folosita anterior
am adaugat o fotorezistenta si o rezistenta de 10k, cum este circuitul desenat in articolul NodeMCU With LDR
   Schema devine
   Deoarece placa de dezvoltare NodeMCU are un divizor rezisitiv, dupa cum se vede in materialul de la https://upverter.com/jgoldshlag/db39ed0e7f46a523/nodemcu/, trebuie adaugate inca 2 rezistente daca se foloseste un ESP12 separat, pentru limitarea tensiunii la 1V pe intrarea anlogica, ca in articolul NodeMCU ADC with Arduino IDE
   Programul MatrixClock_ESP8266_DHT_3e.ino indica, prin aprinderea unui led ca nu s-a sincronizat ceasul intern (RTC) cu cel de pe serverul NTP prin conectarea periodica la acesta folosindu-ne de reteaua wi-fi de acasa.
   Mihai a realizat un ceas intr-un patcablu de 60mm;

luni, 8 aprilie 2019

Camera de supraveghere cu ESP32-CAM

   Am cumparat o placa de dezvoltare ESP32-CAM, care are, dupa cum spune si numele, un microcontroler ESP32 si o camera OV2460 de 2Mpixeli (UXGA - 1632x1232).
   Am gasit mai multe filmulete si articole, dar eu am testat ce am gasit in articolul Ai-Thinker ESP32-CAM in the Arduino IDE si am instalat placa ESP32 cum e prezentat in articolul ESP32 Built-in OLED – Heltec WiFi Kit 32
    Am conectat-o ca in schema
si se face legatura cu firul verde cand se incarca programul, eventual se mai apasa si butonul de RESET daca nu intra in modul de programare, apoi se decupleaza legatura si se apasa si pe butonul de RESET.
    Am ales exemplul din librarie, cel cu camera si am vazut in serial adresa unde se conecteaza
   Am alimentat camera dintr-o baterie externa, pentru teste:
La adresa vazuta in serial apare o pagina cu controale:
   Am facut si 2 filmulete, pentru a vedea mai bine cum se comporta aceasta mica camera de supraveghere:
camera de supraveghere cu ESP32-CAM
ESP32-CAM as surveillance camera
09.04.2019
   Am intrerupt testele de lunga durata, deoarece am constatat ca bateria externa se descarca relativ rapid si a crescut temperatura pe placa de dezvoltare. Am masurat curentul consumat din usb si e maricel, deci trebuie o alimentare externa dintr-o sursa in comutatie sau un LM7805 cu radiator mare...
PS: Un alt articol foarte bine prezentat este ESP32-CAM Video Streaming and Face Recognition with Arduino IDE de pe site-ul https://randomnerdtutorials.com/ !

joi, 4 aprilie 2019

Ceas matriceal animat cu ESP8266 si RTC (DS3231) cu informatii despre temperatura si umiditate (2)

    Fata de articolul anterior, ceasul indica temperatura cu mai multa precizie, adica nu doar +250C, ci +24,70C.
    Programul folosit este MatrixClock_ESP8266_DHT_2.ino, iar schema este aceeasi
dupa cum constata si pisica noastra, Jessie:
   Modul de prezentare a orei, zilei, datei, temperaturii si umiditatii relative a aerului sunt prezentate in filmuletele:
LED Matrix Clock with ESP8266 (3)
09.04.2019
   Am modificat programul sa porneasca ceasul si daca nu are conexiune wi-fi, sa se reconecteze la reteaua wi-fi daca se deconecteaza intre timp, verifica la ora (sau mai rar) daca datele din RTC sunt corecte (ca si cele de pe serverul NTP) si isi schimba intensitatea de la minim pentru noapte (am ales intre orele 20 si 7 dimineata). Versiunea modifcata este MatrixClock_ESP8266_DHT_3.ino si permite:
- schimabre perioada de verificare server NTP:
- schimbare ore de noapte (intensitate luminoasa scazuta)

- indicare "evenimente" in ecranul de monitorizare seriala (conectare la retea wi-fi, verificare server NTP, primire date dae de la server NTP, autoreglaj ceas, schimbare intensitate luminoasa, masurare temperatura si umiditate relativa aer, etc)