sâmbătă, 9 iunie 2018

Cum se instalează și testează programul Mosquitto Broker pe Windows 10

   Deoarece vreau să testez comunicarea MQTT cu Arduino/ESP8266, am zis să instalez programul Mosquitto Broker, doar că am constatat că trebuie un pic "săpat" pe net, că tot "mi-am instalat" goagalele" 😁și am găsit articolul Steps to Install Mosquitto Broker on Windows 10.
   Pașii sunt:
1) se descarcă programul Mosquitto de AICI
2) se descarcă progamul pentru Windows XP de AICI
3) se dezarhivează programul pentru Windows XP
4) se instalează programul Mosquitto, doar că se constată apariția unor mesaje de eroare.
5) se intră în directorul unde s-a deharhivat programul pentru Windows XP si se copiază fișierele selectate (cygcrypto-1.0.0.dll, cyggcc_s-1.dll, cygssl-1.0.0.dll, cygwin1.dll, cygz.dll, libeay32.dll, libssl32.dll, msvcr100.dll, pthreadVC2.dll, ssleay32.dll).
6) se deschide directorul unde s-a instalat (parțial) programul
7) se copiază fișierele copiate
8) se instalează din nou programul Mosquitto, apărând mesaj de instalare cu succes.
    Se verifică dacă programul rulează și funcționează, prin lansarea comenzii netstat -a
9) se verifică dacă apare portul 1883 în listă

   Bun, programul este instalat,dar ar trebui făcute niste teste funcționale, așa că am mai "săpat" pe net și am găsit filmulețul How to use MQTT Broker on Windows
   Am urmat primii pași de acolo, întâi am căutat Command Prompt prin apăsarea lupei de lângă simbolul de START scriind cmd
dau click dreapta și aleg ca programul să ruleze cu drept de Administrator
deschizându-se o fereastră de comandă
   Pentru a fi siguri că rulează programul și pentru nu scrie prea mult în fereastra de comandă, deschidem directorul unde s-a instalat programul Mosquitto 

se dă dublu click pe mosquitto.exe apărând o fereastră de comandă pentru un timp foarte scurt
se verifică dacă rulează pe portul 1883 ca la instalare prin lansarea comenzii netstart -a
   Bun, revenim la ce trebuie să facem, intrăm în directorul de instalare și copiem adresa
   În fereastra de comandă se scrie cd si se dă CTRL+V  sau PASTE după click dreapta din mouse
si se dă ENTER
Acum comenzile sunt in directorul unde este instalat programul Mosquitto. Micșorăm și mutăm mai în stânga fereastra de comandă si mai deschidem una
Se copiază adresa directorului unde este programul, ca și la prima fereastră
se pune cd si apoi calea directorului și apoi ENTER
   Revenim la prima fereastră (cea din stânga) si scriem comanda mosquitto_sub -t test
apoi trecem la fereastra de comandă din dreapta ți scriem comanda mosquitto_pub -h 127.0.0.1 -p 1883 -t test -m "Salut niq_ro!"
și constatăm că în prima fereastră apare mesajul din ghilimele
   De verificare, mai dăm o comandă în fereastra din dreapta, pentru a nu mai scrie mult, doar apăsăm simbolul de sus pentru a apare comanda anterioară și modifică mesajul
și vedem în fereastra din stânga noul mesaj


vineri, 8 iunie 2018

Cântar pentru 200kg cu afișaj mare

  În articolul anterior am testat senzorul tensiometric pentru 200kg si am afișat datele pe ecranul de monitorizare serială.
   Acest mod de utilizare este incomod, așa că m-am gândit să folosesc afișajul cu 32x16 leduri cu interfață P10 primit de la Ionuț.
   Am căutat pe  net și am găsit librăria DMD și am făcut teste după cum era indicat în articolul Using Your Freetronics DMD, realizând filmulețul test afisaj P10 32x16 leduri
   Pentru a putea folosi acest afișaj la cântar, am modificat sketck-ul din exemplul librăriei pentru a arăta niște numere, dar să fie prezentate frumos (sketch-ul folosit într-unul din filmulețe este dmd_test1b.ino), schema de conectare fiind
   Am făcut și 2 filmulete:
pregatire afisare pentru cantar 200kg
countdown on 32×16 led P10 display
   Bun, acum am conectat și senzorul de greutate cu modulul HX711 ca în articolul anterior
  Sketch-ul folosit pentru a realiza cântarul este o combinație a celui anterior cu cel din articolul anterior (dmd-weightscale.ino), încărcându-l în Arduino am obținut:
   Puteți vedea în filmuleșe cum functionează:
cantar pentru 200kg
200kg weight scale
   Trebuie să menţionez că am alimentat dintr-o sursă externă deoarece consumul este de cca 1A la 5V pentru modul asta de afişare cu 4 cifre simple.

joi, 7 iunie 2018

Cantar pentru maxim 200kg

   Fata de articolul anterior unde puteam cantari 1kg sau 5kg (functie de senzor), de data asta am testat un senzor pentru 200kg. Acest senzor mi-a fost trimis de Ruslan pentru teste, deoarece avea probleme cu implementarea lui intr-un proiect cu Arduino.
   Ca model, senzorul este 200KG Electronic Platform Scale Load Cell Pressure Balanced Cantilever Load Weight Sensor si are un pret putim mai mare de 14$.
   Acest senzor are in componenta sa tot o punte cu senzori tensiometrici, ca si fratiorii mai mici, doar ca nu mai sunt respectate culorile, asa ca m-am apucat sa masor rezistentele intre fire si le-am notat intr-un tabel:
   Am cautat pe internet informatii despre acest tip de senzor si am gasit la informati la articolul Weight Sensor (Load Cell) 0-200kg
doar ca nu sunt respectate culorile, cel putin am aflat ca pe intrarea puntii am 402ohmi, iar pe ramura celalata (iesire) 350 ohmi, cam ce masurasem si eu.
   Am incarcat exemplul de masurare a librariei Hx711 folosita si la senzorii mici si am testat cam ce banuiam eu ca ar fi configuratia corecta, pana am vazut 0,0 stabil (cu mici variatii de -0,1..+0,1) dupa indicatiile celor de pe banggoodWiring Black Power + , white Power - Red Signal + green signal -
apoi am schimbat la ambele perechi intre ele firele alb cu negru si verde cu rosu sa se respecte indicatia la plus (rosu si alb la plusuri)
    Am incercat sa apas cumva, sa inconvoi senzorul tensiometric, dar nu am reusit, asa ca am apelat la Mitel sa imi faca un cadru simplu pe care sa ma pot aseza.
    
  Am incarcat sketch-ul si am adaptat sa imi arate in kg, indicatia fiind de 90,7kg 
desi eu am 89,4kg
    Am calculat coeficientul de corectie
si am adaugat in sketch
si pe ecranul de monitorizare seriala am 89,4kg
    Programul (sketch-ul) folosit este HX711_200kg_serial.ino !!!

Control temperatura sera prin comanda a 2 ferestre electrice (partea a 2-a)

   Dupa ce am pus la teste reale prototipul am constatat ca sunt probleme la utilizarea a 2 motoare de curent continuu de tip auto (de stergatoare de parbriz), deoarece intern au minusul la carcasa.
   Am folosit metoda "izolarii" prin conectarea unor contacte pe cei 2 pini de alimentare, la fiecare motor, ceea ce a necesitat inca 3 module de cate 2 relee, schema completa ar deveni:
   Am realizat teste de functionale a partii de comanda, fara placa Arduino si fara comutatoare, dupa cum se vede in filmuletul automatizare sera
   Dupa  ce am costatat ca placile chinezesti pot avea probleme cu iesirile (nu toate "scot" 5V ci un 3,5V cand sunt in 1 logic), am schimbat pinii de comanda
   Acum exista si un comutator, cu 3 pozitii (deschis, automat, inchis), care are are montate  rezistente (capat 1 - rezistenta 1k - mijloc - rezistenta 1k - GND) ca divizor rezisitiv (daca comutatorul este pe mijloc tensiunea este la jumate - 2,5V, la o extremitate e 5V, iar in celalalt capat 0V.
   Programul 2windows_temperature_control_4b1.ino este cel folosit acum, senzorul de temperatura DS18B20 este tot la pinul A3,
   In mare, automatul da comenzi catre motoare, pe rand (niciodata ambele si datorita configuratiei releelor), urmeaza pauza, se comanda celalt motor, iar pauza.
   Pe modul automat (comutator pe mijloc, tensiune pe pin de comanda 2,5V), la temperaturi peste 30 grade Celsius, se da comanda deschiderii ferestre un timp estimat (dupa masuratori, timpul este de cca 25 secunde pentru deschidere/inchidere completa), apoi urmeaza o pauza, se comanda ulterior cealalta fereastra, iar pauza si ciclul se repeta. Deoarece in circuitul de comanda al releelor sunt limitatorii de cursa, chiar daca Arduino da comenzi, motoarele sunt oprite la cap de cursa.
   La temperaturi mai mici de 27 grade Celsius, automatul da comenzi de inchidere in aceeasi secventa: motor1 - pauza - motor2 - pauza.
   Pentru temperaturi intre 27 si 30 grade Celsius, automatul doar masoara temperatura si asteapta o perioada pana reciteste iar temperatura, apoi ia decizii (pentru un pic de animatie, apare un cronometru de la 100% catre zero).
   La trecerea pe comanda manuala de deschidere (din comutator - pozitie sus, de exemplu - 5V pe pinul de comanda), Arduino da comenzi de deschidere in aceeasi secventa ca si la modul automat.
   La trecerea pe comanda manuala de inchidere (din comutator - pozirtie jos - 0V pe pinul de comanda), Arduino da comenzi de deschidere in aceeasi secventa ca si la modul automat.
  Cateva poze cu informatiile de pe ecran:
   Am montat automatul in sera inlocuidu-l pe cel dinainte 
si am facut cateva teste,
dupa cum se vede in filmuletul test real automatizare deschidere ferestre sera.
   Schema folosita in prototipul de teste, pentru partea de comanda, este
iar partea de Arduino:

joi, 12 aprilie 2018

Actualizare ora si data la ceas RTC

   La ceasurile cu RTC (DS3231 sau DS1307) care nu au meniu de reglat ora si data, din diferite motive, si folosesc libraria RTClib sau ceva asemanator, putem face urmatorul artificiu: in bucla de setup sa avem linie de genul (cel mai bine se vede in exemplele librariei)
 //RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));

sau ceva similar.
 //RTC.adjust(DateTime(__DATE__, __TIME__));


pentru a actualiza data scoate cele 2 linii de comentare // si incarcam programul (sketch-ul):
astfel ceasul RTC (DS3231 sau DS1307) preiau ceasul si data din calculator.
Comentam iar linia si incarcam iar:
asta e tot...

Copiere bucati de schema in EAGLE Layout Editor

   Un dezavantaj major al programului de desenat scheme si cablaje Eagle Layout Editor este ca nu are explicita functia de copiere a unor bucati de schema... in articolul EAGLE Tutorial: Copy and Paste este prezentat cum se face.
   Avand o schema desenata sau o mare parte si trebuie desenate parti identice:
apasam butonul din stanga GROUP (cel din stanga cheii)
apasam pe butonul din stanga al mouselui si il tinem apasat pana incadram toata zona de vrem s-o copiem
la eliberarea butonului de la mouse apar piesele desene cu culori mai vii
apasam pe butonul COPY din stanga
si apoi dam click dreapta in zona pieselor marcate si selectam optiunea aparuta COPY: GROUP
si apare o copie a acelei zone, care se poate muta ata timop cat e apasat butonul stanga al mouseului
la eliberarea butonului apar si piesele
   Daca vrerm sa mutam o zona, procedura e similara, doar ca selectam sagetile (in stanga copierii)
   Trebuie un pic de antrenament, dar merita 😎.
   In filmuletul EAGLE copy block se vede cum am procedat eu: