Molnserver för att styra Arduino. Blynk: Easy Raspberry and Arduino Control


Förra året Microsoft företag tillkännagav en molnbackend för hantering av smarta apparater och integrerad elektronik. Azure IoT Hub låter dig ställa in kommunikation mellan enheter med ett minimum av programmering och integrera den i dina Azure-baserade projekt. För att se hur det fungerar ska vi titta på enkel uppgift- skicka sensoravläsningar anslutna till Arduino-kontrollern till molnet.

Så här har vi en enkel enhet. Den består av en kontroller, en liten bakbord, fotoresistor (ljussensor) och stabiliserande resistor. Styrenheten är en Genuino MKR1000 med inbyggt Wi-Fi – vill du ha samma kostar det 35 dollar. Kortet drivs av mikro-USB.


I princip skulle vilken sensor som helst kunna installeras – detta skulle inte påverka våra framtidsplaner på något sätt. Bilden nedan visar diagrammet genom vilket vår enhet kommer att kommunicera med molnet.



Enheten skickar data till IoT-hubben, där den, efter att ha passerat Stream Analytics-tjänsten, kommer in i databasen och bearbetas med Power BI. Vi kommer att ta itu med alla dessa saker lite senare, men låt oss nu börja med grunderna.

INFO

I slutet av artikeln finns källor till det resulterande projektet. Glöm inte att kolla in dem om du planerar att göra något liknande.

IoT Hub är officiellt översatt till ryska som "Internet of Things Center". Den kan både ta emot data från enheter och skicka meddelanden eller kommandon till dem.

Förutom IoT Hub kan en annan tjänst som heter Event Hub interagera med enheter. Det skiljer sig mer genomströmning, men skickar meddelanden bara i en riktning - från enheten till molnet. IoT Hub stöder protokoll som MQTT, MQTT över WebSocket, AMQP, AMQP över WebSocket och HTTP. Event Hub stöder AMQP, AMQP över WebSocket och HTTP. Du kan läsa mer om skillnaden mellan nav och hur man använder dem tillsammans på Microsofts webbplats. Vi kommer att studera IoT-hubben (det är mer intressant).

Tidigare uppfann jag hjulet för att skapa en Arduino-enhet för övervakning.

Det var intressant.

/* -- Nytt projekt -- Denna källkod för det grafiska användargränssnittet har genererats automatiskt av RemoteXY-redigeraren. För att kompilera den här koden med hjälp av RemoteXY library 2.3.5 eller senare version ladda ner via länken http://remotexy.com/en/library/ För att ansluta med RemoteXY mobilapp via länk http://remotexy.com/en/download/ - för Android 4.3.1 eller senare version; - för iOS 1.3.5 eller senare version; Denna källkod är fri programvara; du kan distribuera det och/eller modifiera det enligt villkoren i GNU Lesser General Public License som publicerats av Free Software Foundation; antingen version 2.1 av licensen eller (efter eget val) någon senare version. */ ////////////////////////////////////////////// RemoteXY inkludera bibliotek // /////////////////////////////////////////////////// definierar anslutningsläget och inkluderar RemoteXY-biblioteket #define REMOTEXY_MODE__ESP8266_HARDSERIAL_CLOUD #include // anslutningsinställningar #define REMOTEXY_SERIAL Seriell #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 "*************************" #inkludera // Lägg till DHT11-biblioteket dht11 DHT; // Meddelande klassvariabel dht11 #define DHT11_PIN 7 // DHT11-sensorn är ansluten till digitalt stift nummer 4 const int analogSignal = A3; //ansluta en analog signal pin const int digitalSignal = 8; //anslut digital signal pin boolean noGas; //variabel för att lagra värdet på närvaron av gas int gas = 0; //variabel för att lagra mängden gasflottbrum = 0; //variabel för lagring av fuktighet flyttemp = 0; //variabel för lagring av temperatur int chk; //variabel för att lagra felet DHT char msgBuffer; // gränssnittskonfiguration #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); // strukturen definierar alla variabler för din kontrollgränssnittsstruktur ( // indatavariabel uint8_t switch_1; // =1 om switchen är på och =0 om den är inaktiverad // output variabel int8_t level_1; // =0..100 nivå position int8_t level_2; / / =0..100 nivå position char text_1; // = UTF8 sträng som slutar med noll char text_2; annat =0 ) RemoteXY; #pragmapack(pop) ///////////////////////////////////////////////// / END RemoteXY inkluderar // /////////////////////////////////////////////////// #define PIN_SWITCH_1 13 void setup() ( RemoteXY_Init (); pinMode (PIN_SWITCH_1, OUTPUT); // TODO du konfigurerar kod ) void loop() ( RemoteXY_Handler (); digitalWrite(PIN_SWITCH_1, (RemoteXY=0=0) :HÖG); noGas = digitalRead(digitalSignal); .level_2 = temp / använd RemoteXY-strukturen för att överföra data)

Vi använder en brädmacka.

Oväntat fungerade allt direkt:

En timme gick från upptäckten av molntjänsten RemoteXY till bilden ovan.

Funktioner för att arbeta med RemoteXY.

1. Allt är väldigt enkelt. På sitt sätt är det bra. Med Blynk och Cayenne, till exempel, är det osannolikt att du kan räkna ut det från början på en timme. För att använda till exempel "KaScada Cloud" behöver du köpa en speciell enhet.

2. Det finns ingen bearbetning och lagring av data på serversidan: det finns ingen anslutning till kortet - applikationen visar "Ingen anslutning".

3. Endast 5 designelement är gratis, men PRO-applikation kostar inte mer än en halv dags bortkastad tid.

4. Det är möjligt att kommunicera med styrelsen från en ansökan antingen genom molnserver och direkt. Sant, inte samtidigt, förstås. Och det är omöjligt att byta snabbt - du måste ändra skissen på tavlan. Det är också möjligt att kommunicera mellan smartphonen och kortet via Bluetooth och USB.

Jag har funderat mycket på att hitta en billig lösning för att ansluta och Arduino kontrollöver Internet utan att använda någon Ethernet-sköld eller ens någon WI-FI-modul. Efter forskning hittade jag det det enda sättet Gränssnittet med Arduino-mikrokontrollern är dess seriella port, så jag skapade en enkel C#-fönsterapplikation som en HUB för att arbeta med serieporten för att skicka och ta emot data till kortet.

Denna HUB-applikation är redan ansluten till Internet via din Personlig dator och hjälper till att skicka och ta emot data mellan mikrokontrollern och molndatabasen, förutom att lagra själva data i online MySQL-databasen.

Först och främst var jag tvungen att börja med ett litet exempel som låter mig testa tillämpningen av idén. I det här exemplet har jag inte anslutit någon sensor, jag har bara använt den inbyggda lysdioden på Arduino så att jag kan slå på och av LED-indikator på stift 13, skicka bokstäverna "I" och "O" till serieporten.

Int input; //Kommer att lagra det inkommande tecknet från serieporten. int led = 13; // Pin 13 // Inställningsfunktionen körs en gång när du trycker på återställningsknappen eller slår på strömintaget; void setup() ( // initiera digital pin LED_BUILTIN som utgång. Serial.begin(9600); pinMode(led, OUTPUT); // Ställ in pin 13 som digital utgång Serial.flush(); ) // loop-funktionen körs igen och igen alltid void loop() ( // String input = ""; // while (Serial.available() > 0) // ( // input += (char) Serial.read(); // delay(5 ) ; // ) state = digitalRead(led if (Serial.available()) ( input = Serial.read(); if (input == "I") ( //digitalWrite(led, !digitalRead(led) ) ; digitalWrite(led, HIGH) Serial.println(1000) else if (analogRead(led); ; ) )

Steg 2: Skapa en onlinedatabas

För att lagra data måste vi använda en "online-förmedlare" som kommer att fungera som en brygga mellan Arduino-kortet och vår HUB-applikation. Därför valde vi gratis hosting Databas, som kommer att arbeta för att spara data som tas emot från Arduino-kortet och kommandon som skickas till den.

Det enklaste valet i vårt fall är baser MySQL-data, därför att det är gratis och används ofta. I det bifogade arkivet nedan hittar du att det bara innehåller två tabeller. först måste du spara kommandona, sedan skicka dem till kortet, och den andra tabellen är att hämta utdata från Arduino-kortet och återställa dem för senare användning.

Du kan välja freemysqlhosting.net som din värdsida. Online PHP MyAdmin kan hittas på länken - phpmyadmin.co. Mer information kan också hittas på phpmyadmin.net.

Steg 3. Skapa en C#-hub

I det här steget kommer vi att skapa en hubb, som kan ses som ett ingångsfilter på datorn, för att först skicka data som passerar genom den, sedan skicka den till Arduino-kortet genom serieporten och vice versa.

Gränssnittet för detta nav är mycket enkelt, det innehåller bara två textfält som visar statusen för varje "transaktion" som överför hubbdata (sändning och mottagning).

Notera. Hubben måste alltid vara igång när du vill arbeta med ditt Arduino-kort över Internet.

Steg 4. Skapa ett webbgränssnitt

Vi har äntligen nått den coolaste delen av lektionen.

Jag har skapat en webbapplikation baserad på Asp.net C#-teknik med ett responsivt gränssnitt som kan köras på vilken enhet som helst, den här webbapplikationen sysslar bara med onlinedatabasen och vet inte att det finns någon bräda på andra sidan.

Med detta gränssnitt kan du kategorisera dina elektroniska komponenter ansluten till Arduino. Genom att klicka, slå på och av dem lagrar du helt enkelt data online.

Exempel

Klickar grön knapp(PÅ) i avsnittet "Vardagsrum" (Hall - ovan på bilden) skickar du en instruktion via Internet om att tända belysningen i vardagsrummet i ditt hem. Således tar hubben, som kan finnas på andra sidan jorden, instruktionen och bearbetar den med hjälp av en Arduino-baserad elektronisk krets i ditt hem.

Skyddat void BtnHallOn_Click(objektavsändare, EventArgs e) ( AddTempOrders("I"); // skickar bokstaven "I" till Arduino för att öppna Hall light )

Steg 5. Ladda ner projektet

Det är dags att prova själv och göra ditt eget projekt.

Jag hoppas att du finner allt detta användbart. Jag önskar dig fina projekt!

ESPers - gå med i raden av blinkers!
Idag kommer vi att ställa in kontrollen av ESP8266 från din smartphone (iOS eller Android) på 5 minuter med den nya molntjänsten Blink. Video och detaljer under klippet.


Installera Blynk-appen på din smartphone

Registrera dig i ansökan och skapa ett nytt projekt.

Ange till exempel ett projektnamn ESP8266. I fält Hårdvarumodell Välj ESP8266. (hoppas du kommer att lägga märke till den imponerande listan över hårdvara som stöds) Genereras automatiskt Auth Token skicka till din brevlåda.

Efter att ha tryckt på knappen Skapa Du kommer att ha tillgång till ett tomt fält för att designa användargränssnittet för din ESP8266 kontrollpanel.

Klicka på plustecknet uppe till höger - ett verktygsfält kommer upp Widget Box för att lägga till widgets till din instrumentpanel. Det är värt att notera att listan över widgets kommer att fortsätta att växa.

För testning, välj widgettyp Knapp— den här widgeten kommer omedelbart att läggas till din panel. Redigera den med en knapptryckning. Du behöver inte fylla i namnet, bara till höger kan du välja färg på indikatorn, i fältet OUTPUT PIN välj till höger Digital, och till vänster finns vilken ledig pin som helst GPIO. Nedan byter du knapptyp till Växla.

Installera sedan Blynk-biblioteket i Arduino IDE. De officiella instruktionerna hjälper dig med detta. Du kan också ta biblioteket senaste versionen direkt från förvaret och installera manuellt. Välj sedan ett exempel ESP8266_Fristående och skriv i den Auth Token som vi fick per post, SSID och lösenord din WiFi-nätverk. Kompilera och ladda upp skissen till ESP8266.

Att programmera olika mikrokontroller och mikrodatorer, som Arduino, Raspberry Pi och liknande, är en av de mest intressanta och relevanta aktiviteterna. Att designa enheter på dessa plattformar har gått utöver hobbyn för nördar och professionella programmerare: dessa kort används för att skapa robotar, verktygsmaskiner, quadcoptrar, IoT-enheter (smarta hem), servrar och till och med Hi-Fi-ljudgränssnitt.

Tyvärr är marknaden för mikrokontroller mycket segmenterad. Deras programmering utförs genom olika miljöer och gränssnitt. Ett projekt kallat Blynk kallas för att rädda situationen.

Blynk representerar molntjänst för att skapa grafiska kontrollpaneler och är lämplig för ett brett utbud av mikrodatorer och mikrokontroller. Där det tidigare för att samla in information från sensorer var nödvändigt att skriva ett fullfjädrat I/O-gränssnitt eller köpa ytterligare moduler, kan du nu klara dig med fem minuters arbete i Blynk.

För att skapa eget projekt Med kontroll via Blynk behöver du väldigt lite: installera applikationen (versioner för iOS och Android finns tillgängliga) eller använd webbformuläret. Här måste du registrera dig i ett steg - ange din e-postadress och ditt lösenord. Anmälan krävs på grund av att Blynk - molnlösning och utan det kan alla användare få kontroll över hårdvaran.

Den som är intresserad kan installera servern lokalt. I det här fallet behövs ingen internetåtkomst.

Applikationen kommer att kräva vissa färdigheter för att fungera. Först måste du para ihop din dator eller smartphone med det programmerbara kortet. Programmet stöder anslutning med kort genom en mängd olika gränssnitt:

  • USB (seriell),
  • Adafruit CC3000 WiFi,
  • Officiell Arduino WiFi Shield,
  • Officiell Ethernet Shield (W5100),
  • ENC28J60,
  • ESP8266 (WiFi-modem),
  • SeeedStudio Ethernet Shield V2.0 (W5200),
  • RN-XV WiFly,
  • ESP8266.

Förutom att ställa in anslutningen behöver du bara ansluta modulerna på den framtida enheten korrekt. Efter detta måste du i applikationens arbetsform lägga till tillgängliga moduler (widgets), konfigurera de nödvändiga pinadresserna och ange önskade parametrar (vid behov kan du skriva din egen kod). Förresten, drag’n’drop används för att skapa en widget eller ett program. Det finns många simulatorer av kontrollenheter tillgängliga för kontroll - omkopplare, skjutreglage, displayer, för var och en kan du skriva din egen logik. Det finns separata formulär för att visa och organisera information från de nödvändiga sensorerna i form av grafer.

Således passar plattformen både för nybörjare och mer avancerade användare som inte vill lägga tid på att skriva ansökningar för projektledning: från att läsa data från en väderstation och hantera Smart hem innan du kontrollerar robotar.

All information som behövs för att komma igång publiceras på den officiella webbplatsen. Blynk är en , så alla kan bidra till att skapa nya funktioner. På det här ögonblicket Att använda tjänsten är helt gratis, i framtiden kommer situationen att förändras något - främst på grund av intäktsgenerering av nya funktioner. Det är alltså redan känt att åtkomst till GPIO-gränssnitt kommer att köpas som ett köp i appen.

För närvarande arbetar Blynk med följande styrelser:

  • Arduino: Uno, Nano, Mini, Pro Mini, Pro Micro, Mega, YÚN (Bridge), Due;
  • Raspberry Pi;
  • Partikel (ex Spark Core);
  • ESP8266;
  • TinyDuino (CC3000);
  • Wicked WildFire (CC3000).







2024 gtavrl.ru.