Servicii cloud pentru controlul Arduino. Dezvoltarea de dispozitive IoT pe Arduino folosind serviciul myDevices Cayenne

Eespeshniks - alăturați-vă rândurilor ochilor!
Astăzi vom configura controlul ESP8266 de pe smartphone-ul tău (iOS sau Android) în 5 minute folosind noul serviciu cloud Blink. Video și detalii sub tăietură.


Instalați aplicația Blynk pe smartphone-ul dvs

Înregistrați-vă în aplicație și creați un nou proiect.

Introduceți numele proiectului, de exemplu ESP8266. În câmp model hardware Selectați ESP8266. (sper că veți observa lista impresionantă de hardware acceptat) Generat automat Jeton de autentificare trimiteți la căsuța dvs. poștală.

După apăsarea butonului Crea veți avea un câmp gol pentru proiectarea interfeței de utilizare a panoului de control ESP8266.

Faceți clic pe semnul plus din dreapta sus - va apărea o bară de instrumente Caseta cu widgeturi pentru a adăuga widget-uri la tabloul de bord. Este de remarcat faptul că lista de widget-uri va fi încă completată.

Pentru testare, selectați tipul de widget buton- acest widget va fi adăugat imediat la panoul dvs. Editați-l cu o singură atingere. Numele poate fi lăsat necompletat, puțin în dreapta poți selecta culoarea indicatorului, în câmp PIN IEȘIRE selectați dreapta Digital, iar în stânga este orice pin liber GPIO. Mai jos comutați tipul butonului la intrerupator.

Apoi, instalați biblioteca Blynk în Arduino IDE. Instrucțiunile oficiale vă vor ajuta în acest sens. De asemenea, puteți lua cea mai recentă versiune a bibliotecii direct din depozit și o puteți instala manual. Apoi, alegeți un exemplu ESP8266_Standaloneși scrie în ea Jeton de autentificare pe care le-am primit prin poștă SSID și parola rețeaua dvs. WiFi. Compilați și încărcați schița pe ESP8266.

Gândindu-ne la vremurile vechi, când biblioteca Wire era încă „brută”, platforma Arduino era doar un microcontroler cu unele cablaje. Acum avem computere cu o singură placă și microcontrolere ieftine cu Wi-Fi încorporat, cum ar fi ESP32. Cu toate acestea, există întotdeauna o nevoie de a face programarea și dezvoltarea încorporate mai accesibile și mai susținute pe scară largă printre sutele de dispozitive disponibile astăzi.



Așadar, recent, la Conferința Embedded Linux, fondatorul Arduino, Massimo Banzi, a anunțat începutul a ceea ce va fi răspunsul Arduino la conceptul de cloud - un mediu de dezvoltare online și un ecosistem vast de dispozitive conectate. Toate acestea se numesc Arduino Create și este un IDE online care permite oricărui dezvoltator să creeze proiecte de sisteme încorporate și să le gestioneze de la distanță.


După cum s-a demonstrat în prezentarea lui Massimo, ideea principală a Arduino Create este de a aduce dispozitive plug-in pe internet și de a permite programarea de la distanță și intermiterea prin aer. Deoarece acesta este un ecosistem Arduino, un număr mare de biblioteci au fost folosite pentru a face acest lucru posibil, disponibile pentru sute de platforme diferite. În prezent, sunt acceptate un număr mare de plăci, inclusiv Raspberry Pi, BeagleBone și mai multe plăci Intel IoT.


Accentul principal al acestei dezvoltări este independența platformei și se concentrează aproape în întregime pe ușurința de utilizare și interoperabilitate. Aceasta este o schimbare notabilă față de ecosistemul Arduino, care a fost, de exemplu, acum cinci ani, când plăcile Arduino se bazau în mare parte pe microcontrolere ATmega328p. Câțiva ani mai târziu, a fost deja posibil să se programeze și să scrie schițe Arduino pe microcontrolerele ATtiny85. S-au schimbat multe de atunci. Acum avem Raspberry Pi, Intel și-a făcut un nume pe piața IoT, la urma urmei, avem un milion de CPU și plăci de sistem pe cip (SoC) pentru smartphone-uri.


În timp ce alte companii și organizații au contribuit deja la mediul online pentru Raspberry Pi și alte computere cu o singură placă, ceea ce Massimo Banzi a dezvăluit în sfârșit este o schimbare mult așteptată și semnificativă a organizației Arduino.


Pentru cei care doresc să urmărească spectacolul lui Massimo Banzi, este oferit un videoclip.

Conectarea prin serverul cloud RemoteXY vă permite să controlați dispozitivul de oriunde din lume, unde există Internet.

Modulul ESP8266 va fi configurat ca client pentru a se conecta la un hotspot WiFi. Punctul de acces trebuie să aibă acces la Internet. Biblioteca RemoteXY se va asigura că dispozitivul este înregistrat pe serverul cloud.

Aplicația mobilă se va conecta la serverul cloud și nu direct la dispozitiv. Astfel, dispozitivul va fi accesibil de oriunde de pe Internet.

Notă:În acest moment, conexiunea prin serverul cloud trece printr-o fază de testare. Ca urmare, sunt posibile întreruperi în funcționarea serverului.

Pasul 1: Creați un proiect GUI

Pasul 5 Configurați ESP8266

Modulul ESP8266 trebuie configurat. Poate că modulul dumneavoastră are deja setările implicite necesare, dar este mai bine să-l verificați.

Ce trebuie verificat:

  • Modulul are firmware cu suport pentru comenzi AT cu versiunea nu mai mică de v0.40;
  • Modulul este configurat pentru o viteză de 115200.

Pasul 6 Conectați ESP8266 la Arduino Uno

Conectați ESP8266 la Arduino Uno așa cum se arată mai jos. Rețineți că pinii RX-TX sunt interconectați.

Deoarece nivelurile de semnal ale modulului ESP8266 sunt de 3,3 V, iar Arduino este de 5 V, trebuie să utilizați un divizor de tensiune rezistiv pentru a converti nivelul semnalului.


Pasul 7 Încărcați schița pe Arduino.

Schița este încărcată în Arduino în mod obișnuit. Cu toate acestea, deoarece modulul ESP8266 este conectat la pinii 0 și 1, programarea devine imposibilă. Compilatorul va afișa o eroare.

Înainte de programare, deconectați firele care merg la ESP8266 de la pinii 0 și 1. Efectuați programarea. Apoi puneți contactele la loc. Apăsați butonul de resetare Arduino.

Notă: Prima indicație că programarea a avut succes este LED-ul albastru de pe modulul ESP8266 care pâlpâie imediat după resetare. LED-ul albastru intermitent înseamnă comunicarea dintre Arduino și ESP8266. În această jumătate de secundă, Arduino configurează ESP8266 pentru a se conecta la punctul de acces. După un timp, LED-ul va clipi din nou, ceea ce înseamnă o încercare de înregistrare pe serverul cloud RemoteXY.

Pasul 8. Conectați-vă din aplicația mobilă.

Verificați puterea ESP8266

De asemenea, este posibil ca ESP8266 să nu aibă suficientă putere de la sursa de alimentare. Unele plăci Arduino au un regulator slab de tensiune de 3,3 V care nu este capabil să furnizeze 200-300 mA în modurile de vârf. În acest caz, veți vedea, de asemenea, o întrerupere în secvența de comandă în Monitorul serial.

Anul trecut, Microsoft a anunțat un backend bazat pe cloud pentru gestionarea dispozitivelor inteligente și a electronicelor integrate. Azure IoT Hub vă permite să configurați interacțiunea între dispozitive cu un minim de programare și să o încorporați în proiectele dvs. bazate pe Azure. Pentru a vedea cum funcționează, vom analiza o sarcină simplă - trimiterea citirilor de la un senzor conectat la un controler Arduino către cloud.

Deci, avem un dispozitiv simplu. Este alcătuit dintr-un controler, o placă mică, un fotorezistor (senzor de lumină) și un rezistor stabilizator. Controlerul este un Genuino MKR1000 cu Wi-Fi încorporat - dacă doriți același lucru, va costa 35 USD. Placa este alimentată de micro-USB.


În principiu, orice senzor ar putea fi instalat - acest lucru nu va afecta în niciun fel planurile noastre de viitor. Imaginea de mai jos arată schema prin care dispozitivul nostru va comunica cu cloud-ul.



Dispozitivul trimite date către IoT Hub, unde, după ce trec prin serviciul Stream Analytics, acestea intră în baza de date și sunt procesate folosind Power BI. Ne vom ocupa de toate aceste lucruri puțin mai târziu, dar deocamdată să începem cu elementele de bază.

INFO

La sfârșitul articolului există surse ale proiectului rezultat. Nu uitați să le verificați dacă intenționați să faceți ceva similar.

IoT Hub este tradus oficial în rusă ca „Centrul Internet of Things”. Poate atât să primească date de la dispozitive, cât și să le trimită mesaje sau comenzi.

Pe lângă IoT Hub, un alt serviciu numit Event Hub („event hub”) poate interacționa și cu dispozitivele. Are o lățime de bandă mai mare, dar trimite mesaje într-o singură direcție - de la dispozitiv la cloud. IoT Hub acceptă protocoale precum MQTT, MQTT prin WebSocket, AMQP, AMQP prin WebSocket și HTTP. Event Hub acceptă AMQP, AMQP prin WebSocket și HTTP. Puteți citi mai multe despre diferența dintre hub-uri și despre cum să le utilizați împreună pe site-ul Microsoft. Vom studia Hub-ul IoT (este mai interesant).

Anterior, el a inventat bicicleta pentru a crea un dispozitiv Arduino pentru monitorizare.

A fost interesant.

/* -- Proiect nou -- Acest cod sursă al interfeței grafice cu utilizatorul a fost generat automat de editorul RemoteXY. Pentru a compila acest cod folosind biblioteca RemoteXY 2.3.5 sau versiunea ulterioară, descărcați prin link http://remotexy.com/en/library/ Pentru a vă conecta folosind aplicația mobilă RemoteXY prin link http://remotexy.com/en/download/ - pentru ANDROID 4.3.1 sau o versiune ulterioară; - pentru iOS 1.3.5 sau o versiune ulterioară; Acest cod sursă este software gratuit; îl puteți redistribui și/sau modifica în conformitate cu termenii GNU Lesser General Public License publicat de Free Software Foundation; fie versiunea 2.1 a Licenței, fie (la alegerea dvs.) orice versiune ulterioară. */ ///////////////////////////////////////////// // RemoteXY include biblioteca // /////////////////////////////////////////////////////////////////////////// // definirea modului de conectare și conectarea bibliotecii RemoteXY #define REMOTEXY_MODE__ESP8266_HARDSERIAL_CLOUD #include // setări de conectare #define REMOTEXY_SERIAL Serial #define REMOTEXY_SERIAL_SPEED 9600 #define REMOTEXY_WIFI_SSID "***********" #define REMOTEXY_WIFI_PASSWORD "************" #define REMOTEXY_CLOUD_remotexy "cloud. .com" #define REMOTEXY_CLOUD_PORT 6376 #define REMOTEXY_CLOUD_TOKEN "********************************" #include // Adăugați biblioteca DHT11 dht11 DHT; // Declararea variabilei clasei dht11 #define DHT11_PIN 7 // Senzorul DHT11 conectat la pinul digital numărul 4 const int analogSignal = A3; //conectarea semnalului analogic pin const int digitalSignal = 8; //conectați pinul semnalului digital boolean noGas; //variabilă de stocare a valorii prezenței gazului int gaz = 0; //variabilă pentru stocarea cantității de gaz float hum = 0; //variabilă pentru stocarea umidității float temp = 0; //variabilă pentru stocarea temperaturii int chk; //variabilă pentru stocarea erorii DHT char msgBuffer; // configurarea interfeței #pragma pack(push, 1) uint8_t RemoteXY_CONF = ( 255,1,0,24,0,74,0,8,13,2, 2,0,38,44,22,11,7, 81,22,11, 2,26,31,31,79,78,0,79,70,70, 0,66,132,10,13,31,24,7,10,27, 21,2,24, 66.132.56.13.31.24.4, 41.31.24.2.24.67.4.16.5.20 4, 63,6,20,5,39,52,20,5,2,26, 11); // structura definește toate variabilele structurii interfeței de control ( // variabila de intrare uint8_t switch_1; // =1 dacă comutatorul este activat și =0 dacă este dezactivat // variabila de ieșire int8_t level_1; // =0..100 poziție de nivel int8_t level_2; / / =0..100 level position char text_1; // = șir UTF8 terminat cu null char text_2; // = șir UTF8 terminat cu null // altă variabilă uint8_t connect_flag; // =1 dacă cablul este conectat, altfel = 0) RemoteXY; #pragma pack(pop) ///////////////////////////////////////////////////////////////// / // END RemoteXY include // ///////////////////////////////////////////////////////////////////////// / /// #define PIN_SWITCH_1 13 void setup() ( RemoteXY_Init (); pinMode (PIN_SWITCH_1, OUTPUT); // TODO void setup code ) void loop() ( RemoteXY_Handler (); digitalWrite(PIN_SWITCH_1, = Remote_1Y) 0)?LOW:HIGH); noGas = digitalRead(digitalSignal); //citește valoarea prezenței gazului gaz = analogRead(analogSignal); // și cantitatea sa chk = DHT.read(DHT11_PIN); hum = DHT. umiditate; temp = DHT.temperature; RemoteXY.level_1 = zumzet; RemoteXY.level_2 = temp; dtostrf(hum, 6, 2, RemoteXY.text_1); dtostrf(temp, 6, 2, RemoteXY.text_2); // TODO cod de buclă // folosiți o structură RemoteXY pentru a transmite date)

Folosim un sandviș din scânduri.

Dintr-o dată a funcționat imediat:

A trecut o oră de la descoperirea serviciului cloud RemoteXY până la fotografia de mai sus.

Caracteristici de lucru cu RemoteXY.

1. Totul este foarte simplu. E bun în felul lui. Cu Blynk și Cayenne, de exemplu, este puțin probabil să-ți dai seama de la zero într-o oră. Pentru a utiliza, de exemplu, „KaScada Cloud” trebuie să cumpărați un rătăcit special.

2. Nu există procesare și stocare a datelor pe partea serverului: nu există nicio conexiune cu placa - „Fără conexiune” se blochează în aplicație.

3. Doar 5 elemente de design sunt gratuite, dar aplicația PRO nu costă mai mult de jumătate de zi din timpul petrecut.

4. Este posibil să comunicați cu placa dintr-o singură aplicație atât prin intermediul unui server cloud, cât și direct. Nu în același timp, desigur. Și este imposibil să comutați rapid - trebuie să schimbați schița de pe tablă. De asemenea, este posibil să comunicați cu placa smartphone prin Bluetooth și USB.