sâmbătă, 9 iunie 2018

Trimitere comenzi MQTT la o placa NodeMCU (ESP8266) prin server local Mosquitto (Broker)

   Vrând neapărat să trimit comenzi către o placă NedeMCU (ESP8266) de pe calculator sau de pe un telefon (Android) folosind protocol MQTT și server local (Mosquitto - Broker), am tot săpat pe internet și, cu greu, am găsit ceva care să pot testa.
   Serverul Mosquitto l-am instalat pe un laptop cu Windows 10 cum am prezentat în articolul anterior), ulterior o să folosesc un Raspberry Pi.
   Am dat de articolul Use NodeMCU to send temperature/humidity data to MQTT IOT broker în care se folosește un NodeMCU cu un senzor de temperatură și umiditate de tip DHT22 (AM2302), care trimite periodic către serverul local temperatura și umiditatea, iar dacă dacă serverul primește comenzi de la un alt periferic, într-o anumită configurație, trimite temperatura sau umiditatea din acel moment. Serverul trimite și perifericelor, care au pus un anumit cuvânt ce corespunde mesajului, valorile temperaturii și umidității.
   Am modificat programul (sketch-ul) el devenind MQTT_ESP8266_DHT_simple.ino și am obținut în ecranul de monitorizare serială informații îmbucurătoare
   Am verificat dacă serverul Mosquitto este pornit și dacă apare conectarea plăcii la el (laptopul are IP 192.168.1.105). Portul 1883 folosit de server este activ la IP-ul laptopului, deci totul e în regulă până acum.
   Trebuie să dăm comenzi pentru a afișa temperatura sau umiditatea la un anumit moment, așa că am lansat Command promt ca Administrator
și am schimbat directorul de lucru cu cel al aplicatiei serverului
   Am dat comanda 0 pe canalul Show 
și placa NodeMCU programată cu limbaj Arduino răspunde cât e umiditatea la acel moment
 Am dat comanda 1 pe canalul Show 
și placa NodeMCU programată cu limbaj Arduino răspunde cât e temperatura la acel moment.
   Am mai da o dată comanda
și placa a răspuns imediat.
   Am instalat pe un telefon cu Android aplicatia MyMQTT, care era recomandată în articolul The Seven Best MQTT Client Tools și am configurat aplicaâia pentru serverul meu, fiind nevoie doar de adresa IP.
apoi am trims comanda Show și 0 pentru a arăta umiditatea
serverul primețte comanda ș o trimit emai departe plăcii NodeMCU, care trimite informația.
  Am trimis apoi comanda  Show și 1 pentru a arăta temperatura 


  Am configurat în telefon și cuvântul Show pentru a primi de la server datele de le trimite placa NodeMCU
și vedem datele
   A realizat un prim filmulet numit comenzi MQTT catre ESP8266 prin server local Mosquitto în care prezint pe scurt ce am scris ma înainte despre modul de a da comenzile.


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.