Cloudserver voor het besturen van Arduino. Ontwikkeling van IoT-apparaten op Arduino met behulp van de myDevices Cayenne-service. Mogelijkheid om draadloze IoT-apparaten te ontwikkelen

Eerder heb ik het wiel van het maken van een Arduino-apparaat voor monitoring opnieuw uitgevonden.

Het was interessant.

/* -- Nieuw project -- Deze broncode van de grafische gebruikersinterface is automatisch gegenereerd door de RemoteXY-editor. Om deze code te compileren met behulp van de RemoteXY-bibliotheek 2.3.5 of latere versie, download via de link http://remotexy.com/en/library/ Om verbinding te maken met behulp van de RemoteXY mobiele app via de link http://remotexy.com/en/download/ - voor ANDROID 4.3.1 of latere versie; // Voeg de DHT11-bibliotheek dht11 DHT toe; // Een klassevariabele dht11 declareren #define DHT11_PIN 7 // De DHT11-sensor is aangesloten op digitaal pinnummer 4 const int analogSignal = A3; // aansluiten van een analoog signaal pin const int digitalSignal = 8; //verbind digitale signaalpin booleaanse noGas; //variabele voor het opslaan van de waarde van de aanwezigheid van gas int gas = 0; //variabele voor het opslaan van de hoeveelheid gasvlotterbrom = 0; //variabel voor het opslaan van vochtigheid vlottertemperatuur = 0; //variabele voor het opslaan van temperatuur int chk; //variabele voor het opslaan van DHT-foutchar msgBuffer; // interfaceconfiguratie #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); // de structuur definieert alle variabelen van uw besturingsinterfacestructuur ( // invoervariabele uint8_t switch_1; // =1 als de schakelaar is ingeschakeld en =0 indien uitgeschakeld // uitvoervariabele int8_t level_1; // =0..100 niveau position int8_t level_2; / / =0..100 niveaupositie char text_1; // = UTF8-string beëindigd met nul char text_2; // = UTF8-string beëindigd met nul // andere variabele uint8_t connect_flag; anders =0 ) Op afstandXY; #pragma pack(pop) //////////////////////////////////////// / / EINDE RemoteXY omvat ////////////////////////////////////// /// #define PIN_SWITCH_1 13 void setup() ( RemoteXY_Init (); pinMode (PIN_SWITCH_1, OUTPUT); // TODO je instelcode ) void loop() ( RemoteXY_Handler (); digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0 )?LOW :HIGH); noGas = digitalRead(digitalSignal); //lees de gasaanwezigheid = analogRead(analogSignal); // en de hoeveelheid ervan chk = DHT.read(DHT11_PIN = DHT.level_1 = brom; .level_2 = temp; / gebruik de RemoteXY-structuur om gegevens over te dragen)

Wij gebruiken een plankensandwich.

Onverwachts werkte alles meteen:

Er ging een uur voorbij tussen de ontdekking van de RemoteXY-cloudservice en de bovenstaande foto.

Kenmerken van het werken met RemoteXY.

1. Alles is heel eenvoudig. Op zijn eigen manier is dit goed. Met Blynk en Cayenne is het bijvoorbeeld onwaarschijnlijk dat je het binnen een uur helemaal opnieuw kunt bedenken. Om bijvoorbeeld "KaScada Cloud" te gebruiken, moet u een speciaal apparaat kopen.

2. Er is geen verwerking en opslag van gegevens aan de serverzijde: er is geen verbinding met het bord - de applicatie geeft "Geen verbinding" weer.

3. Slechts 5 ontwerpelementen zijn gratis, maar de PRO-applicatie kost niet meer dan een halve dag tijd.

4. Het is mogelijk om vanuit één applicatie met het bord te communiceren, zowel via een cloudserver als rechtstreeks. Toegegeven, niet tegelijkertijd natuurlijk. En het is onmogelijk om snel te schakelen - je moet de schets op het bord veranderen. Ook is het mogelijk om via Bluetooth en USB te communiceren tussen de smartphone en het bord.

ESPers - sluit je aan bij de oogkleppen!
Vandaag stellen we in 5 minuten de besturing van de ESP8266 in vanaf je smartphone (iOS of Android) met behulp van de nieuwe cloudservice Blink. Video en details onder de snit.


Installeer de Blynk-app op uw smartphone

Registreer u in de applicatie en maak een nieuw project aan.

Voer bijvoorbeeld een projectnaam in ESP8266. In het veld Hardwaremodel selecteren ESP8266. (Ik hoop dat je de indrukwekkende lijst met ondersteunde hardware zult opmerken) Automatisch gegenereerd Authenticatietoken naar uw mailbox sturen.

Na het indrukken van de knop Creëren U heeft toegang tot een leeg veld voor het ontwerpen van de gebruikersinterface van uw ESP8266-configuratiescherm.

Klik rechtsboven op het plusteken - er verschijnt een werkbalk Widgetbox om widgets aan uw dashboard toe te voegen. Het is vermeldenswaard dat de lijst met widgets zal blijven groeien.

Selecteer het widgettype om te testen Knop— deze widget wordt onmiddellijk aan uw paneel toegevoegd. Bewerk het met één aanraking. U hoeft de naam niet in te vullen, u kunt alleen rechts de kleur van de indicator in het veld selecteren UITVOERPIN selecteer aan de rechterkant Digitaal, en aan de linkerkant is een vrije pin GPIO. Wijzig hieronder het knoptype naar Schakelaar.

Installeer vervolgens de Blynk-bibliotheek in de Arduino IDE. De officiële instructies helpen u hierbij. U kunt de nieuwste versie van de bibliotheek ook rechtstreeks uit de repository halen en deze handmatig installeren. Kies vervolgens een voorbeeld ESP8266_Standalone en schrijf erin Authenticatietoken die wij per post hebben ontvangen, SSID en wachtwoord uw WiFi-netwerk. Compileer en upload de schets naar de ESP8266.

Ik heb veel nagedacht over het vinden van een goedkope oplossing om Arduino via internet aan te sluiten en te besturen zonder gebruik te maken van een Ethernet-schild of zelfs maar een WI-FI-module. Na onderzoek kwam ik erachter dat de enige manier om met de Arduino-microcontroller te communiceren via de seriële poort is, dus heb ik een eenvoudige C#-venstertoepassing als HUB gemaakt om met de seriële poort te werken om gegevens naar het bord te verzenden en te ontvangen.

Deze HUB-applicatie is al via uw pc met internet verbonden en helpt bij het verzenden en ontvangen van gegevens tussen de microcontroller en de clouddatabase, naast het opslaan van de gegevens zelf in de online MySQL-database.

Allereerst moest ik beginnen met een klein voorbeeld waarmee ik de toepassing van het idee kon testen. In dit voorbeeld heb ik geen sensor aangesloten, ik heb alleen de ingebouwde LED op de Arduino gebruikt, zodat ik de LED op pin 13 aan en uit kan zetten door de letters "I" en "O" naar de seriële poort te sturen .

Int-invoer; //Slaat het binnenkomende teken van de seriële poort op. int-led = 13; // Pin 13 // de setup-functie wordt één keer uitgevoerd wanneer u op de resetknop drukt of de stroom int-status inschakelt; void setup() ( // initialiseer digitale pin LED_BUILTIN als uitvoer. Serial.begin(9600); pinMode(led, OUTPUT); // Stel pin 13 in als digitale uitvoer Serial.flush(); ) // lusfunctie wordt opnieuw uitgevoerd en opnieuw altijd void loop() ( // String input = ""; // while (Serial.available() > 0) // ( // input += (char) Serial.read(); // delay(5 ) ; // ) status = digitalRead(led); (Serial.available()) (invoer = Serial.read(); if (invoer == "I") ( //digitalWrite(led, !digitalRead(led) ) ; digitalWrite(led, HOOG); Serial.println(1); vertraging(1000 ); anders als (invoer == "T") (analoog lezen(led); Serial.println(0); vertraging(1000) ;)))

Stap 2: Creëer een online database

Om de gegevens op te slaan, moeten we een "online intermediair" gebruiken die als brug zal dienen tussen het Arduino-bord en onze HUB-applicatie. Daarom hebben we gekozen voor gratis Database-hosting, die zal werken aan het opslaan van de gegevens die worden ontvangen van het Arduino-bord en de opdrachten die ernaar worden verzonden.

De eenvoudigste keuze in ons geval zijn MySQL-databases, omdat... het is gratis en wordt meestal veel gebruikt. In het onderstaande archief ziet u dat het slechts twee tabellen bevat. eerst moet je de commando's opslaan en ze vervolgens naar het bord sturen, en de tweede tabel is om de uitgangen van het Arduino-bord op te halen en ze te herstellen voor later gebruik.

U kunt freemysqlhosting.net kiezen als uw hostingsite. Online PHP MyAdmin is te vinden via de link - phpmyadmin.co. Meer informatie is ook te vinden op phpmyadmin.net.

Stap 3. Maak een C#-hub

In deze stap zullen we een hub creëren, die kan worden gezien als een invoerfilter op de pc, om eerst de gegevens door te geven die er doorheen gaan en deze vervolgens via de seriële poort naar het Arduino-bord te sturen en vice versa.

De interface van deze hub is heel eenvoudig, hij bevat slechts twee tekstvelden die de status weergeven van elke "transactie" die de hubgegevens verzendt (verzenden en ontvangen).

Opmerking. De hub moet altijd actief zijn als u via internet met uw Arduino-bord wilt werken.

Stap 4. Maak een webinterface

We zijn eindelijk bij het coolste deel van de les aangekomen.

Ik heb een webapplicatie gemaakt op basis van Asp.net C#-technologie met een responsieve interface die op elk apparaat kan draaien. Deze webapplicatie houdt zich alleen bezig met de online database en weet niet dat er een bord aan de andere kant is.

Met deze interface kunt u uw elektronische componenten die op Arduino zijn aangesloten, classificeren. Door ze aan te klikken, aan en uit te zetten, bewaar je de gegevens eenvoudig online.

Voorbeeld

Door op de groene knop (AAN) te drukken in het gedeelte “Huiskamer” (Hal - boven op de foto), verzendt u via internet een instructie om de verlichting in de woonkamer van uw huis aan te doen. Zo ontvangt de hub, die zich mogelijk aan de andere kant van de wereld bevindt, de instructie en verwerkt deze met behulp van een op Arduino gebaseerd elektronisch circuit bij u thuis.

Beschermde leegte BtnHallOn_Click (objectafzender, EventArgs e) (AddTempOrders ("I"); // brief "I" naar Arduino verzenden om Hall-licht te openen)

Stap 5. Download het project

Het is tijd om het zelf te proberen en je eigen project te maken.

Ik hoop dat je dit allemaal nuttig vindt. Ik wens je mooie projecten!

Vorig jaar kondigde Microsoft een cloud-backend aan voor het beheer van slimme apparaten en geïntegreerde elektronica. Met Azure IoT Hub kunt u met een minimum aan programmering communicatie tussen apparaten opzetten en deze integreren in uw op Azure gebaseerde projecten. Om te zien hoe dit werkt, zullen we kijken naar een eenvoudige taak: het verzenden van meetwaarden van een sensor die is aangesloten op een Arduino-controller naar de cloud.

Dus hier hebben we een eenvoudig apparaat. Het bestaat uit een controller, een klein breadboard, een fotoresistor (lichtsensor) en een stabiliserende weerstand. De controller is een Genuino MKR1000 met ingebouwde Wi-Fi - als je dezelfde wilt, kost deze $ 35. Het bord wordt gevoed door micro-USB.


In principe kan elke sensor worden geïnstalleerd - dit zou onze toekomstplannen op geen enkele manier beïnvloeden. De onderstaande afbeelding toont het diagram waarmee ons apparaat met de cloud zal communiceren.



Het apparaat verzendt gegevens naar de IoT Hub, waar het, na het passeren van de Stream Analytics-service, de database binnengaat en wordt verwerkt met behulp van Power BI. We zullen al deze dingen later behandelen, maar laten we voor nu beginnen met de basis.

INFO

Aan het einde van het artikel vindt u bronnen van het resulterende project. Vergeet ze niet te bekijken als u van plan bent iets soortgelijks te doen.

IoT Hub wordt officieel in het Russisch vertaald als “Internet of Things Center”. Het kan zowel gegevens van apparaten ontvangen als berichten of opdrachten verzenden.

Naast IoT Hub kan een andere service genaamd Event Hub communiceren met apparaten. Het heeft een grotere bandbreedte, maar verzendt berichten slechts in één richting: van het apparaat naar de cloud. IoT Hub ondersteunt protocollen zoals MQTT, MQTT via WebSocket, AMQP, AMQP via WebSocket en HTTP. Event Hub ondersteunt AMQP, AMQP via WebSocket en HTTP. Op de Microsoft-website kunt u meer lezen over het verschil tussen hubs en hoe u ze samen kunt gebruiken. We zullen de IoT Hub bestuderen (het is interessanter).

Het programmeren van diverse microcontrollers en microcomputers, zoals Arduino, Raspberry Pi en dergelijke, is een van de meest interessante en relevante activiteiten. Het ontwerpen van apparaten op deze platforms is verder gegaan dan de hobby van nerds en professionele programmeurs: deze borden worden gebruikt om robots, werktuigmachines, quadcopters, IoT-apparaten (smart home), servers en zelfs hifi-audio-interfaces te maken.

Helaas is de markt voor microcontrollers sterk gesegmenteerd. Hun programmering wordt uitgevoerd via verschillende omgevingen en interfaces. Er wordt een project genaamd Blynk opgeroepen om de situatie te redden.

Blynk is een cloudgebaseerde dienst voor het maken van grafische bedieningspanelen en is geschikt voor een breed scala aan microcomputers en microcontrollers. Waar je voorheen een volwaardige I/O-interface moest schrijven of extra modules moest aanschaffen om informatie van sensoren te verzamelen, kun je nu in Blynk rondkomen met slechts vijf minuten werk.

Om uw eigen project aangestuurd via Blynk aan te maken, heeft u heel weinig nodig: installeer de applicatie (versies voor iOS en Android zijn beschikbaar) of gebruik het webformulier. Hier moet u zich in één stap registreren: voer uw e-mailadres en wachtwoord in. Registratie is noodzakelijk omdat Blynk een cloudoplossing is en zonder deze oplossing kan elke gebruiker controle over de hardware krijgen.

Geïnteresseerden kunnen de server lokaal installeren. In dit geval is internettoegang niet nodig.

De applicatie vereist bepaalde vaardigheden om te kunnen werken. Eerst moet u uw computer of smartphone koppelen met het programmeerbare bord. Het programma ondersteunt verbinding met kaarten via verschillende interfaces:

  • USB (serieel),
  • Adafruit CC3000WiFi,
  • Officieel Arduino WiFi-schild,
  • Officieel Ethernet-schild (W5100),
  • ENC28J60,
  • ESP8266 (WiFi-modem),
  • SeeedStudio Ethernet Shield V2.0 (W5200),
  • RN-XV WiFly,
  • ESP8266.

Naast het opzetten van de verbinding hoeft u alleen de modules van het toekomstige apparaat correct aan te sluiten. Hierna moet u in de werkvorm van de applicatie de beschikbare modules (widgets) toevoegen, de benodigde pinadressen configureren en de gewenste parameters opgeven (indien nodig kunt u uw eigen code schrijven). Drag’n’drop wordt trouwens gebruikt om een ​​widget of programma te maken. Er zijn veel simulators van besturingsapparaten beschikbaar voor bediening: schakelaars, schuifregelaars, displays, voor elk waarvan je je eigen logica kunt schrijven. Er zijn aparte formulieren voor het weergeven en ordenen van informatie van de benodigde sensoren in de vorm van grafieken.

Daarmee is het platform geschikt voor zowel beginners als meer gevorderde gebruikers die geen tijd willen verspillen aan het schrijven van applicaties voor projectmanagement: van het uitlezen van data van een weerstation en het besturen van een smart home tot het aansturen van robots.

Alle informatie die nodig is om aan de slag te gaan, staat op de officiële website. Blynk is zodat iedereen kan bijdragen aan het creëren van nieuwe functies. Op dit moment is het gebruik van de dienst volledig gratis, in de toekomst zal de situatie enigszins veranderen - voornamelijk als gevolg van het genereren van inkomsten met nieuwe functies. Het is dus al bekend dat toegang tot GPIO-interfaces zal worden gekocht als een in-app-aankoop.

Momenteel werkt Blynk met de volgende borden:

  • Arduino: Uno, Nano, Mini, Pro Mini, Pro Micro, Mega, YÚN (brug), Due;
  • Framboos Pi;
  • Deeltje (ex Spark Core);
  • ESP8266;
  • TinyDuino (CC3000);
  • Slecht wildvuur (CC3000).