Cloud usluge za upravljanje Arduinom. Razvoj IoT uređaja na Arduinu korištenjem usluge myDevices Cayenne

ESP-ovci - pridružite se redovima žmigavaca!
Danas ćemo postaviti kontrolu nad ESP8266 s vašeg pametnog telefona (iOS ili Android) u 5 minuta pomoću nove usluge u oblaku Blink. Video i detalji ispod reza.


Instalirajte aplikaciju Blynk na svoj pametni telefon

Registrirajte se u aplikaciji i kreirajte novi projekt.

Unesite npr. naziv projekta ESP8266. U polju Model hardvera Izaberi ESP8266. (nadam se da ćete primijetiti impresivan popis podržanog hardvera) Automatski generirano Auth Token poslati u svoj poštanski sandučić.

Nakon pritiska tipke Stvoriti Imat ćete pristup praznom polju za dizajniranje korisničkog sučelja vaše upravljačke ploče ESP8266.

Kliknite na znak plus u gornjem desnom kutu - pojavit će se alatna traka Kutija s widgetima za dodavanje widgeta na nadzornu ploču. Vrijedno je napomenuti da će popis widgeta nastaviti rasti.

Za testiranje odaberite vrstu widgeta Dugme— ovaj widget će odmah biti dodan na vašu ploču. Uredite ga jednim dodirom. Ne morate popuniti ime, samo desno možete odabrati boju indikatora, u polju IZLAZNI PIN odaberite s desne strane Digitalni, a lijevo je bilo koja slobodna pribadača GPIO. U nastavku promijenite vrstu gumba na Sklopka.

Zatim instalirajte biblioteku Blynk u Arduino IDE. U tome će vam pomoći službene upute. Također možete preuzeti najnoviju verziju biblioteke izravno iz repozitorija i instalirati je ručno. Zatim odaberite primjer ESP8266_Samostalan i pisati u njemu Auth Token koje smo dobili poštom, SSID i lozinka svoju WiFi mrežu. Sastavite i prenesite skicu na ESP8266.

Prisjećajući se starih dana, kada je Wire biblioteka još bila sirova, platforma Arduino bila je samo mikrokontroler s nešto hardvera. Sada imamo računala s jednom pločom i jeftine mikrokontrolere s ugrađenim Wi-Fi-jem poput ESP32. Međutim, uvijek postoji potreba da se programiranje i razvoj ugrađenog sustava učini pristupačnijim i šire podržanim među stotinama uređaja koji su danas dostupni.



Tako je nedavno na konferenciji Embedded Linux, osnivač Arduina Massimo Banzi najavio lansiranje onoga što će biti Arduinov odgovor na koncept oblaka – mrežno razvojno okruženje i ogroman ekosustav povezanih uređaja. Sve se to zove Arduino Create i mrežni je IDE koji omogućuje bilo kojem programeru stvaranje projekata ugrađenih sustava i upravljanje njima na daljinu.


Kao što je pokazano u Massimovoj prezentaciji, temeljna ideja Arduino Create je dovesti povezane uređaje na Internet i omogućiti daljinsko programiranje i over-the-air firmware. Budući da se radi o Arduino ekosustavu, korišten je veliki broj biblioteka koje su bile dostupne za stotine različitih platformi. Trenutno je podržan velik broj ploča, uključujući Raspberry Pi, BeagleBone i nekoliko Intel IoT ploča.


Glavni fokus ovog razvoja je neovisnost o platformi i gotovo u potpunosti usmjeren na jednostavnost korištenja i interoperabilnost. Ovo je značajna promjena u odnosu na Arduino ekosustav od prije pet godina, na primjer, kada su se Arduino ploče uglavnom temeljile na ATmega328p mikrokontrolerima. Nekoliko godina kasnije već je bilo moguće programirati i pisati Arduino skice u ATtiny85 mikrokontrolere. Od tada se puno toga promijenilo. Sada imamo Raspberry Pi, Intel je stekao ime na tržištu interneta stvari, a nakon svega, imamo milijun procesorskih ploča i sustava na čipu (SoC) za pametne telefone.


Dok su druge tvrtke i organizacije već doprinijele online okruženju za Raspberry Pi i druga računala s jednom pločom, ono što je predstavio Massimo Banzi konačno je dobrodošla i značajna promjena u odnosu na Arduino organizaciju.


Za one koji žele pogledati nastup Massima Banzija osiguran je video.

Povezivanje putem RemoteXY cloud poslužitelja omogućuje upravljanje uređajem s bilo kojeg mjesta na svijetu gdje postoji pristup internetu.

Modul ESP8266 bit će konfiguriran kao klijent za povezivanje s WiFi pristupnom točkom. Pristupna točka mora imati pristup internetu. Biblioteka RemoteXY osigurat će da je uređaj registriran na poslužitelju u oblaku.

Mobilna aplikacija povezat će se s poslužiteljem u oblaku, a ne izravno s uređajem. Tako će uređaj biti dostupan s bilo kojeg mjesta na internetu.

Bilješka: Trenutno je veza putem cloud servera u fazi testiranja. To može uzrokovati prekide u radu poslužitelja.

Korak 1: Stvorite GUI projekt

Korak 5: Postavite ESP8266

Modul ESP8266 treba konfigurirati. Možda vaš modul već ima potrebne postavke prema zadanim postavkama, ali bolje je to provjeriti.

Što treba provjeriti:

  • Modul ima firmware koji podržava verziju AT naredbi ne nižu od v0.40;
  • Modul je konfiguriran za radnu brzinu 115200.

Korak 6: Spojite ESP8266 na Arduino Uno

Spojite ESP8266 na Arduino Uno prema donjem dijagramu. Imajte na umu da su pinovi RX-TX spojeni nišanom.

Budući da su razine signala modula ESP8266 3,3 V, a Arduina 5 V, potrebno je koristiti otpornički razdjelnik napona za pretvorbu razine signala.


Korak 7: Učitajte skicu na Arduino.

Skica se učitava u Arduino na uobičajeni način. Međutim, budući da je modul ESP8266 spojen na pinove 0 i 1, programiranje postaje nemoguće. Kompajler će prikazati grešku.

Prije programiranja odspojite žice koje idu do ESP8266 s pinova 0 i 1. Izvršite programiranje. Zatim vratite kontakte na mjesto. Pritisnite Arduino tipku za resetiranje.

Bilješka: Prvi znak da je programiranje bilo uspješno je plava LED lampica na ESP8266 modulu koja treperi odmah nakon resetiranja. Plava LED lampica koja treperi znači da se podaci razmjenjuju između Arduina i ESP8266. Tijekom tih pola sekunde Arduino konfigurira ESP8266 za povezivanje s pristupnom točkom. Nakon nekog vremena, LED će ponovno zatreperiti, što znači pokušaj registracije na RemoteXY cloud server.

Korak 8: Povežite se iz mobilne aplikacije.

Provjerite ESP8266 napajanje

Također je moguće da vaš ESP8266 nema dovoljno energije iz napajanja. Neke Arduino ploče imaju slab regulator napona od 3,3 V, koji nije u stanju isporučiti 200-300 mA u vršnim modovima. U ovom slučaju, u Serial Monitoru također ćete vidjeti prekid u nizu naredbi.

Prošle godine Microsoft je najavio pozadinu u oblaku za upravljanje pametnim uređajima i integriranom elektronikom. Azure IoT Hub omogućuje vam postavljanje komunikacije između uređaja uz minimalno programiranje i integraciju u vaše projekte temeljene na Azureu. Da bismo vidjeli kako to funkcionira, pogledat ćemo jednostavan zadatak - slanje očitanja sa senzora spojenog na Arduino kontroler u oblak.

Dakle, ovdje imamo jednostavan uređaj. Sastoji se od kontrolera, male matične ploče, fotootpornika (svjetlosnog senzora) i stabilizirajućeg otpornika. Kontroler je Genuino MKR1000 s ugrađenim Wi-Fi-jem – ako želite isti, koštat će 35 USD. Ploča se napaja preko micro-USB-a.


U principu, mogao bi se ugraditi bilo koji senzor - to ni na koji način ne bi utjecalo na naše buduće planove. Na slici ispod prikazan je dijagram kojim će naš uređaj komunicirati s oblakom.



Uređaj šalje podatke u IoT Hub, gdje nakon prolaska kroz Stream Analytics servis ulazi u bazu podataka i obrađuje se putem Power BI-ja. Pozabavit ćemo se svim tim stvarima malo kasnije, ali za sada počnimo s osnovama.

INFO

Na kraju članka nalaze se izvori nastalog projekta. Ne zaboravite ih pogledati ako planirate učiniti nešto slično.

IoT Hub je službeno preveden na ruski kao "Centar interneta stvari". Može primati podatke s uređaja i slati im poruke ili naredbe.

Uz IoT Hub, druga usluga pod nazivom Event Hub može komunicirati s uređajima. Ima veću propusnost, ali poruke šalje samo u jednom smjeru – od uređaja do oblaka. IoT Hub podržava protokole kao što su MQTT, MQTT preko WebSocketa, AMQP, AMQP preko WebSocketa i HTTP. Event Hub podržava AMQP, AMQP preko WebSocketa i HTTP. Možete pročitati više o razlici između čvorišta i kako ih koristiti zajedno na web-mjestu tvrtke Microsoft. Proučavat ćemo IoT Hub (zanimljivije je).

Prethodno sam ponovno izumio kotač stvaranja Arduino uređaja za nadzor.

Bilo je zanimljivo.

/* -- Novi projekt -- Ovaj izvorni kod grafičkog korisničkog sučelja automatski je generirao uređivač RemoteXY. Za kompajliranje ovog koda pomoću RemoteXY knjižnice 2.3.5 ili novije verzije preuzmite putem veze http://remotexy.com/en/library/ Za povezivanje pomoću mobilne aplikacije RemoteXY putem veze http://remotexy.com/en/download/ - za ANDROID 4.3.1 ili novija verzija; - za iOS 1.3.5 ili noviju verziju; Ovaj izvorni kod je besplatan softver; možete ga redistribuirati i/ili modificirati pod uvjetima GNU Lesser General Public License objavljene od strane Free Software Foundation; bilo verziju 2.1 Licence, ili (po vašem izboru) bilo koju kasniju verziju. */ /////////////////////////////////////////// // RemoteXY uključi knjižnicu /////////////////////////////////////////// // definiranje načina povezivanja i uključivanje biblioteke RemoteXY #define REMOTEXY_MODE__ESP8266_HARDSERIAL_CLOUD #include // postavke veze #define REMOTEXY_SERIAL Serial #define REMOTEXY_SERIAL_SPEED 9600 #define REMOTEXY_WIFI_SSID "***********" #define REMOTEXY_WIFI_PASSWORD "**********" #define REMOTEXY_CLOUD_SERVER "cloud.remotexy .com" #define REMOTEXY_CLOUD_PORT 6376 #define REMOTEXY_CLOUD_TOKEN "****************************" #include // Dodavanje DHT11 knjižnice dht11 DHT; // Deklaracija varijable klase dht11 #define DHT11_PIN 7 // DHT11 senzor spojen je na digitalni pin broj 4 const int analogSignal = A3; //spajanje pina analognog signala const int digitalSignal = 8; //spojite digitalni signalni pin boolean noGas; //varijabla za pohranjivanje vrijednosti prisutnosti plina int gas = 0; //varijabla za pohranjivanje količine plina float hum = 0; //varijabla za pohranjivanje vlažnosti float temp = 0; //varijabla za pohranu temperature int chk; //varijabla za pohranu greške DHT char msgBuffer; // konfiguracija sučelja #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, 5,38,23,20,5,2,26,11,67, 4, 63,6,20,5,39,52,20,5,2,26, 11); // struktura definira sve varijable vašeg upravljačkog sučelja struct ( // ulazna varijabla uint8_t switch_1; // =1 ako je prekidač uključen i =0 ako je onemogućen // izlazna varijabla int8_t level_1; // =0..100 razina pozicija int8_t level_2; // = UTF8 string koji završava s nulom // druga varijabla uint8_t connect_flag; // =1 ako je žica povezana, else =0 ) RemoteXY; #pragma pack(pop) ////////////////////////////////////////// / / END RemoteXY uključuje //////////////////////////////////////// /// #define PIN_SWITCH_1 13 void setup() ( RemoteXY_Init (); pinMode (PIN_SWITCH_1, OUTPUT); // TODO vaš kod za postavljanje ) void loop() ( RemoteXY_Handler (); digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0 )?LOW :HIGH); noGas = digitalRead(digitalSignal); //očitaj plin prisutnosti(analogSignal); // i njegovu količinu = DHT.temperature; RemoteXY.level_1; .level_2 = temp; / koristiti strukturu RemoteXY za prijenos podataka)

Koristimo sendvič od daske.

Neočekivano, sve je odmah proradilo:

Od otkrića usluge RemoteXY u oblaku do gornje fotografije prošlo je sat vremena.

Značajke rada s RemoteXY.

1. Sve je vrlo jednostavno. Na svoj način ovo je dobro. S Blynkom i Cayenneom, na primjer, malo je vjerojatno da to možete shvatiti ispočetka u sat vremena. Da biste koristili, primjerice, "KaScada Cloud" morate kupiti poseban uređaj.

2. Nema obrade i pohrane podataka na strani poslužitelja: nema veze s pločom - aplikacija prikazuje "Nema veze".

3. Samo 5 elemenata dizajna je besplatno, ali PRO aplikacija ne košta više od pola dana utrošenog vremena.

4. Moguće je komunicirati s pločom iz jedne aplikacije i putem poslužitelja u oblaku i izravno. Istina, ne u isto vrijeme, naravno. I nemoguće je brzo se prebaciti - morate promijeniti skicu na ploči. Također je moguće komunicirati između pametnog telefona i ploče putem Bluetootha i USB-a.