luni, 12 decembrie 2016

Bradut de Craciun cu leduri

english version


   Inspirat de o postare a lui Andy (Doz' Blog) si de gasirea unui articol numit DIY An Arduino Project: How To Make Flashy Christmas Lights Ornaments am facut si eu un mic bradut de Craciun cu 9 beculete (al zecelele este cel de la D13).
   Schema de test este urmatoarea, doar ca eu am folosit o varianta mai ieftina, o placa Nano cu microcontroler ATmega168, achizitionata de la ArduShop.ro cu reducerea de 5% prin folosirea codului Z4A413ZN (puteti sa-l folositi si voi cu incredere):
    Ledurile pot avea orice culoare si sunt inseriate cu cate o rezistenta de limitare a curentului.
Eu am pus rezistente egale de 470 ohmi, dar, in functie de culoare si curentul maxim prin led, se calculeaza usor. Curentul maxim este de 20mA, iar caderea de tensiune pe led variaza de tehnologia de relaizare si culoare, dupa cum am prezentat in articolul Verificare caracteristici LED-uri: multicolore (RGB) sau monocolore
   Pentru un led rosu, care are o cadere de tensiune de 2..2,1V si curent maxim de 20mA, rezistenta de limitare pentru comanda cu 5V ar trebui sa aiba o valoare de 150 ohmi. 
R = (Ucom - Uled)/Imax = (5-2)/0,02 = 150 ohmi (150R)
   Pentru un led verde sau alabastru, unde caderea de tensiune este 2,9-3,1V, rezistenta de limitare are valoarea de cca 100 ohmi, iar pentru un led albastru cu cadere de tensiune de 3,2V rezistenta calculata are valoarea de 90 ohmi. 
   Aceste valori sunt minime, ele se aleg un pic mai mari, adica in loc de 150 ohmi pentru led-ul rosu se alege un 180 ohmi sau 220 ohmi... la verde si albastru se poate pune 150 ohmi, iar la alb macar 100 ohmi..  
   Cum am acum curentul este mic, pentru 470 ohmi, la ledul rosu curentul este de cca 6mA, la led-ul verde 4,5mA iar la alb 3,8mA.. 
   Dar pentru a "dormi linistiti" masuram caderea de tensiune, cum am prezentat in articolul mentionat mai sus, dar masuram si curentul, deci ne trebuie 2 aparate de masura, deoarec eledurile verzi galbene au o cadere de tensiune de cca 2V nu 3V ca cele noi...
   Revenind la partea de bradut cu leduri, am folosit 2 sketch-uri derivate din cel prezentat in articolul de pe makeuseof.com, primul (chrithmas_lights_1.ino) alege aleator unul din leduri si il aprinde (nu conteaza daca a fost anterior aprins), asteapta 50ms si alege aleator un led si-i da comanda de stingere (nu conteaza daca a mai fost stins), iar in al doilea sketch (christmas_lights_1a.ino) timpul intre comanda de aprindere si stingere are valaore aleatoare intre 10 si 100ms.
  Am facut cateva filmulete, cabd am avut toate ledurile rosii:
1) cu primul sketch:
2) cu al doilea sketch:
si filmuletul luminite pentru bradul de Craciun (3) cu leduri avand culori diferite:

vineri, 9 decembrie 2016

Comanda led de pe pagina web creata cu WeMos D1 (continuare)

    In primul articol, am prezentat un sistem de control al unui led (releu, contactor, etc) de pe o pagina web protejata cu parola (1234), care are reconectare automata la reteau wi-fi, in caz de pierdere a legaturii cu acesta (oprire si repornire router, de exemplu). Pagina web este realizata folosind tehnica AJAX (pagina statica si doar o parte din informatii se schimba), doar ca in caz de intrerupere a alimentarii sau restartare automata in caz de blocare a paginii web, nu se memora starea led-ului si nici numarul de apasari (numarul de apasari il folosesc pentru a-mi da seama daca lucreaza bine), asa ca m-am gandit sa folosesc memoria EEPROM a integratului ESP8266.
    Am gasit la http://www.esp8266.com/wiki/doku.php?id=arduino-docs partea cu libraria EEPROM si am vazut ca sunt mici diferente fata de cea clasica pentru Arduino, in sensul ca trebuie sa-i spun cate memorie EEPROM folosesc (pasul 1) si sa-i spun clar ca trebuie sa scrie ceva in memorie (pas 2):
   Ca si in cazul anterior, led-ul din dreapta aprins sau clipind indica o problema la conectarea in reteaua wi-fi. 
   Am facut 2 poze, cu cele 2 cazuri, led controlat aprins si apoi stins si langa un telefon cu pagian web de control pe care se vede si starea ledului (verde - aprins si rosu - stins):
    - led comandat aprins (cel din stanga)

    - led comandat stins
   Schema de conectare este aceeasi:
   Sketch-ul led_controlled_from_webpage_auto_eeprom.ino are implementata si partea de memorare, dupa cum se vede si in cele 2 filmulete:


vineri, 2 decembrie 2016

Comanda led de pe pagina web creata cu WeMos D1 (ESP8266)

   Placa WeMos D1 are forma unei placi Arduino Uno, cu interfata USB (micro USB) doar "inima" este un ESP8266EX cu conectare Wi-Fi, care are doar 11 intrari/iesiri digitale si doar una analogica, tensiunea de lucru si comenzi/intrari fiind la 3,3V dupa cum am prezentat si in articolul Prezentare si stocare date pe pagina ThingSpeak (4) - folosind placa WeMos D1.
  Daca folosesc programul Arduino IDE pentru a programa aceasta placa WeMos D1, corespondenta pinilor este
  iar in program (in versiune folosita de mine 1.6.5) gasom placa WeMos D1 cu urmatoarele informatii:
  Pentru a aparea placile cu ESP8266, trebuie intrat in FILE -> PREFERENCES si sa introduceti un link pentru a activa si acesta placi:
dupa care in TOOLS -> BOARD->BOARDS MANAGER
vede si date suplimentare despre placile care se pot incarca cu acest program
    Pentru a vedea pasi mai detaliati de instalare a acestor tipuri de placi vedeti articolul Placa NodeMcu v.0.9 programata in Arduino IDE.
   Revenind la comanda unui led de pe o pagina web, am ales sa testez un sketch de pe forumul ESP8266 si anume din discutia GARAGE DOOR OPENER EXAMPLE V2, sketch-ul fiind scris de JoseAngel
   Pagina web este construita folosind tehnica AJAX (pagina statica si doar o parte din informatii se schimba), are si parola de acces (1234).
   Dupa ce am facut mici modificari ale sketch-ului de acolo, am ajuns la versiunea led_controlled_from_webpage.ino unde am un led rosu (direct) pus intre GPIO5 (D15/SCL) si GND; de asemenea am folosit un port anume 8087 si tot parola 1234 pentru a activa butonul de comanda pornit/oprit. pe pagina se vede si starea led-ului.
   Am facut 2 filmulete:
  Placa a fost in teste cam o luna si, uneori, din cauze externe (intrerupere tensiune alimentare, deconectare router de la net, etc), pagina web creata de WeMos era indisponibila.
  Dintr-o discutie cu Mircea Craciun, legata de un alta aplicatie a unei placi cu ESP8266 si aceeasi problema, am aflat un "post" tot de pe forumul ESP8266, care dadea o solutie de reconectare automata la reteaua wi-fi a placii cu ESP8266, asa ca am implementat-o si eu in sketch-ul meu
   Sketch-ul meu modificat este led_controlled_from_webpage_auto.ino
 
  Am conectat si un led de eroare, intre GPIO12 (D12/MISO) si GND.
 
   In schema desenata sunt inseriate rezistente de 330 ohmi cu fiecare led, pentru protejarea placii WeMos, asa ca va recomanda sa le montati.
   La pornirea placii WeMos, ledul rosu clipeste pana se conecteaza la reteaua wi-fi pentru care are datele, apoi ramane stins cat totul este in regula, daca se pierde legatura cu router-ul, ledul incepe sa clipeasca pana se reconecteaza...
   Am facut si 2 filmulete pentru a intelege mai usor cum se dau comenzi si cum reactioneaza pagina si led-ul (consumatorul, etc):

miercuri, 30 noiembrie 2016

Afisaj TFT de 1,8" cu driver ST7735B (7) - alt ceas cu alarma si reglaj manual al datei si orei + termometru si higrometru

article in english

   La versiunea de ceas prezentata in articolul Afisaj TFT de 1,8" cu driver ST7735B (5) - alt ceas cu alarma si reglaj manual al datei si orei + termometru am adaugat un senzor dedicat pentru masurare temperatura si umiditate (in cazul meu un AM2302 cu o rezistenta de 10k, care mai este cunoscut ca DHT22, dar se poate folosi si un senzor DHT11 care are o precizie mai mica). In articolul mentionat, temepratura este furnizata de integratul DS3231 care foloseste aceasta functie pentru compensarea erorilor ca ceas la variatii de temperatura.
   Schema este ca cea din articolul anterior, doar i-am adaugat senzorul de temperatura si umiditate, conectandu-l la apinul A2
   Incarcand sketch-ul educ8stv_rtctft160_alarm_dht.ino pe ecran avem informatiile:
- numele zilei, in engleza, dar se poate modifica usor in romana;
- data
- ora
- ora alarmei, cu albastru daca este dezactivata alarma, cu alb daca este in asteptare si rosu cand este activata (alarma s epoate dezactiva sau pune in stare de asteptare prin apasarea butonului separat ALARM)
- temperatura
- umiditatea
   Prin apasarea repetata a butonului MENU/OK se intra in modul de schimbare al datelor, intai ora, minutele, numele zilei (numarul zilei in saptamana), anul, luna, ziua, ora si minutele alarmei. Modificarea valorilor se face din butoanele + si -.
   Dupa teste, am realizat ca am o varianta mai buna cu memorarea orei de alram si a starii ei in eeprom, asa ca am modificat ultimul schetch cu aceasta facilitate si am introsiud partea de denzor DHT, asa ca ultima versiune este educ8stv_rtctft160_alarm_eeprom_dht.ino.
   Am facut 2 filmulete in care se prezinta modul de afisare si de schimbare a orei si datei:



vineri, 25 noiembrie 2016

Afisaj FDS-125 controlat de o placa Arduino (2)

english version


    In prima parte, am prezentat cum am conectat afisajul FDS-125 la o placa Arduino Uno si ca am reutit sa scriu niste mesaje, inclusiv un ceas cu data, doar ca modul de afisare este prea "static".
   Schema de comenctare al modulelelor la placa Arduino Uno este simpla:
   Am facut cateva modificari in sketch pentru a aparea si numele zilei (biling: romana si engleza)
    Incarcand sketch-ul FDS125_clock1b.ino, pe randul de jos este mereu ora, iar pe randul de sus, data, numele zilei in romana, iar data, numele zilei in engleza, dupa cum se vede si in filmuletele urmatoare:
   Pentru ca sketch-ul sa functioneze, trebuie ca in subdirector sa fie si fisierul font75.h, dupa cum se vede in imaginea de mai jos
   Am adaugat un senzor de temperatura AM2302 (DHT22) la pinul D8, schema devenind
   Scketch-ul folosit pentru a avea alternativ, tot pe randul de sus si temperatura si umiditatea relativa, este FDS125_clock_RTC1c.ino si informatia se prezinta astfel:
   Dupa cum se observa, pentru grad am folosit o cratima, in aceasta faza, dupa cum se vede is in filmuletele:
   Dupa asta am modificat fisierul care definea cratima pentru a aparea semnul de grad ( e vorba de fisierul font75.h care trebuie sa fie pus in subdirectorul sketch-ului). De asemenea, am facut modificari in sketch (vezi FDS125_clock_RTC1c1.ino), pentru ca la citirea datelor din senzorul de umiditate si temperatura se pierde un timp si apare o stingere a afisajului si astfel clipeste si ora, astfel ca acum am ora pe randul de jos cat timp apare pe randul de sus data si numele zile bilingv, apoi se afiseaza pe randul de sus temperatura si pe cel de jos umiditatea
dupa cum se vede si in filmuletele care urmeaza:

miercuri, 23 noiembrie 2016

Afisaj FDS-125 controlat de o placa Arduino

english version

   Intrand in posesia unui afisaj mai deosebit, prin bunavointa lui Janos Baricz, a trebuit sa "sap" dupa informatii despre el... din pacate ce informatii de gasesc doar despre FDS-132.
   Aceste informatii le-am gasit pe urmatoarele site-uri sau bloguri:
circuitsonline.net (Baco Led Matrix)
libraria FDS132-textdriver
arduinoforum.nl (Lichtkrant Surtronic FDS-132)
FDS132 ledmatrixbord
   Din ultimele 2 am folosit cele mai multe informatii, legate de modul de conectare la o placa Arduino, dar si de comanda.
   Panoul FDS-125 are 2 randuri de afisaje, fiecare din 12 afisaje de 5x7 leduri (deci 60 coloane si 7 cu 7 randuri), ele sunt comandate de registre de deplasare si amplificatoare, exact ca si cel prezentat in articolele mentionate mai inainte.
   Pentru a putea folosi panoul, se extrage microcontrolerul Lattice MACH211 si se conecteaza 8 fire de comanda, dupa cum apare in imaginele urmatoare:
   Janos a facut adaptarea prin extragerea controlerului Lattice si alimentarea integratelor de pe placa astel:
astfel ca am:
- A, fir verde, conectare la D5 Arduino
- B, fir roz, conectare la D6 Arduino
- C, fir alb, conectare la D7 Arduino
- STROBE, fir galben, conectare la D10 Arduino
- DATA, fir mov, conectare la D11 Arduino
- CLOCK, fir gri, conectare la D13 Arduino
- RESRED, fir albastru, conectare la D9 Arduino
- GND, fir negru, conectare la GND Arduino

   Legarea la Arduino se face dupa schema redesenata de mine:
   Dupa ce am testat cateva sketch-uri de pe forum, am reusit sa-l "aprind"
si sa-mi dau seama cum se trimit datele... asa ca am modificat un sketch mai de final de pe forumul olandez, acesta devenind FDS125_clock.ino si asa am obtinut un ceas care prezinta si data:
   Pentru aceasta am adaugat un modul de ceas cu DS3231 conectat pe i2c, schema de test fiind:
   In filmuletele urmatoare se vede modul de prezentare al date pe randul de sus si al orei pe cel de jos:


   Modul asta de afisare este prea static, asa ca intr-un articol viitor voi prezenta si versiuni mai animate, cu numele zilei (in romana siu engleza), temperatura si umiditatea relativa a aerului, etc.

marți, 22 noiembrie 2016

Afisaj TFT de 1,8" cu driver ST7735B (6) - ceas dublu cu reglaj manual al datei si orei

english version


   Dupa ce am prezentat pe blog(uri) si pe canalul de youtube ceasul cu reglaj al datei si orei cu date pe afisaj de 1.8", am primit o solicitare de scriere a unui sketch pentru un ceas dublu/dual, pentru ora GMT/UTC si ora locala.
   Am folosit aceeasi schema de conectare ca in articolul Afisaj TFT de 1,8" cu driver ST7735B (3) - ceas cu reglaj manual al datei si orei + termometru
doar ca sketch-ul este TFT_DualDigitalClock_RTC2.ino
    Am pastrat partile bune, sa zic asa, in care pot regla data, ora, cat este de fazajul orei locale fata de ora GMT/UTC, dupa cum se vede si in filmuletele:
ceas reglabil dublu cu DS3231 pe afisaj de 1.8" cu ST7735
adjusting dual clock using DS3231 on 1.8" ST7735 display