Arduino

Gegevens loggen naar ThingSpeak met ESP8266 (ESP-01) en AT commando's

Laatst bijgewerkt: 25/07/2020

Wanneer makers en hobbyisten denken aan Internet of Things (IoT), komen twee dingen bij hen op: de ene is ESP8266 (ESP-01) en de andere is ThingSpeak. De ene is het hardwaredeel van het IoT systeem terwijl de andere de noodzakelijke API of de gebruikersinterface voor het systeem biedt. In dit project laat ik je zien hoe je de ESP8266 (ESP-01) verbindt met ThingSpeak en hoe de samenwerking met ThingSpeak werkt.

Overzicht

Wat ThingSpeak anders en speciaal maakt, is dat het eenvoudige HTTP protocol gebruikt om informatie van verschillende sensoren over te brengen, op te slaan en op te halen.

Met de ThingSpeak applicatie kunnen we ook de sensorgegevens, tracklocaties en zelfs dingen van sociale netwerken registreren.

Een ander belangrijk ding (of eerder een unieke functie) over ThingSpeak is de ondersteuning door MATLAB. De nauwe relatie tussen ThingSpeak en MATLAB heeft geleid tot de integratie van verschillende belangrijke functies van MATLAB in de ThingSpeak toepassing.

Een dergelijke functie is het analyseren en visualiseren van de gebruikersgegevens, d.w.z. de sensorgegevens op een grafische manier zonder de MATLAB licentie.

De ThingSpeak applicatie is een geweldig hulpmiddel voor onze IoT gerelateerde projecten en daarom richt dit project zich op de basisbeginselen, namelijk hoe ESP8266 te verbinden met ThingSpeak Application en hoe de ESP8266 ThingSpeak Interface kan worden gebruikt in onze toekomstige projecten.

ThingSpeak account maken

Het eerste dat u moet doen, is om een account te maken met ThingSpeak. Sinds de samenwerking met MATLAB kunt u uw MathWorks inloggegevens gebruiken om in te loggen bij ThingSpeak via de koppeling Aanmelden vanaf deze pagina: ThingSpeak.com

Als u er geen hebt, moet u een account maken bij MathWorks en inloggen bij ThingSpeak.

Opmerking: de MathWorks account kan zowel voor MATLAB als voor ThingSpeak aanmeldingen worden gebruikt.

Nadat u zich hebt aangemeld, moet u een nieuw kanaal maken voor de gegevens die moeten worden opgeslagen. Ga hiervoor naar Channels–>My Channels en klik op New Channel.

Voer de naam van het kanaal en de naam van veld 1 in de overeenkomstige secties in. Velden in een kanaal worden gebruikt om de gegevens vast te houden en elk kanaal kan maximaal 8 velden bevatten. Na het invoeren van de details sla je het kanaal op.

In mijn geval heb ik een kanaal gemaakt met de naam “Random Number” en het veld 1 als “ willekeurig nummer”. Je zult zien waarom in de latere secties.

Er zijn een paar andere dingen die u moet doen in de ThingSpeak toepassing, maar ik zal erover vertellen wanneer u het nodig hebt.

De volgende stap is het voorbereiden van de hardware voor het project, dat bestaat uit ESP8266 (ESP-01) WiFi module, Arduino UNO bord en een paar verbindingsdraden.

Vereisten voor het project

Ik zal u twee manieren tonen om de ESP8266 (ESP-01) met ThingSpeak te verbinden. Voor beide manieren moet u ervoor zorgen dat uw ESP8266 (ESP-01) module is geflast met AT Commands Firmware.

Voor meer informatie hierover, stel ik voor dat je de procedure in het project hoe updaten van de flash firmware van de ESP8266 (ESP-01) doorloopt.

Opmerking:

Na het flashen van uw ESP met AT Commands Firmware, kunt u nu doorgaan met het verbinden van ESP8266 (ESP-01) met ThingSpeak. Zoals ik al eerder zei, kun je dit op twee manieren doen: de ene is via AT opdrachten en de andere kant op via Arduino (zelfs deze manier gebruikt AT opdrachten maar Arduino beheert ze).

Ik zal u beide manieren tonen om ESP8266 (ESP-01) met ThingSpeak te verbinden.

Schakelschema voor ESP8266 (ESP-01) ThingSpeak Interface via AT opdrachten

Het schakelschema om ESP8266 (ESP-01) met ThingSpeak te verbinden is heel eenvoudig. Misschien heb je deze verbinding al eerder gezien. Het Arduino UNO bord wordt alleen gebruikt om de gegevens tussen de computer en de ESP8266 (ESP-01) te verzenden, d.w.z. het fungeert als een USB naar UART omzetter.

Componenten vereist

Verbind ESP8266 (ESP-01) met ThingSpeak met behulp van AT opdrachten

Verbind het Arduino bord met de computer en open de seriële monitor van Arduino en controleer op connectiviteit met behulp van het volgende commando.

AT

Merk op dat ik de baudrate heb ingesteld op 115200 en ook heb gekozen voor “ Beide NL & CR ” optie in de seriële monitor.

Nadat u een antwoord als

OK

hebt ontvangen, kunt u doorgaan met het verbinden van uw ESP module met uw WiFi netwerk met behulp van de volgende opdracht.

AT+CWJAP=”SSID”,”PASSWORD”

Vervang SSID door de naam van uw WiFi netwerk en voer het wachtwoord in de plaats van PASSWORD in.

U krijgt nu als volgt een bevestigingsantwoord met betrekking tot WiFi verbinding.

WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP

OK

Nu moet u een enkele verbinding instellen met behulp van de volgende opdracht.

AT+CIPMUX=0

Volgende stap is om verbinding te maken met de ThingSpeak API met behulp van TCP protocol. Hiervoor moet je de volgende opdracht gebruiken.

AT+CIPSTART=”TCP”,”api.thingspeak.com”,80

Als alternatief kunt u het IP adres van de host api.thingspeak.com gebruiken, d.w.z. 184.106.153.149.

AT+CIPSTART=”TCP”,”184.106.153.149”,80

Opmerking

U hebt nu een “TCP” verbinding tussen de ESP8266 (ESP-01) en ThingSpeak. Vervolgens kunt u gegevens verzenden via deze TCP verbinding.

Gebruik hiervoor de volgende commando's achter elkaar.

AT+CIPSEND=51
GET  /update?api_key=XXXXXXXXXXXXXXXX&field1=255
AT+CIPCLOSE

Zodra de TCP verbinding tot stand is gebracht, kunt u gegevens verzenden met behulp van bepaalde opdrachten. Dit deel kan een beetje lastig zijn, maar als je het een paar keer probeert, begrijp je het proces.

Voor het verzenden van de gegevens moet u drie verschillende gegevens verzenden: de ene is de feitelijke verzendopdracht, de volgende is de gegevens samen met de ThingSpeak veldsleutel en als laatste de opdracht om de verbinding te sluiten. Ik zal proberen deze stappen op een gedetailleerde manier uit te leggen.

Voordat u de gegevens verzendt, moet u de API sleutel verkrijgen. Ga hiervoor naar je kanaal (het kanaal dat je zojuist hebt gemaakt) en klik op “API Keys” Tab. Daaronder vindt u Write API Key, een alfanumerieke reeks van 16 tekens. Noteer deze sleutel.

Gebruik nu de volgende opdracht om de gegevensoverdracht te initialiseren.

AT+CIPSEND=51

De waarde 51 is de lengte van de gegevens die moeten worden verzonden. Dit omvat de volledige gegevens, waaronder de API sleutel en de “\ r” en “\ n” waarden. Voor deze opdracht krijgt u het volgende antwoord.

OK
> 

Typ nu de volgende informatie en druk op verzenden. Hier is “ XXXXXXXXXXXXXXXX ” niets anders dan de Write API Key van 16 tekens die u zojuist hebt gekopieerd. En het aantal “ 143 ” zijn de feitelijke gegevens die u naar veld1 verzendt.

GET /update?api_key=XXXXXXXXXXXXXXXX&field1=143

Nadat je deze tekst hebt getypt en op verzenden hebt gedrukt, krijg je geen reactie. Het wacht eigenlijk op het close commando. Zodra je op send hebt gedrukt voor de bovenstaande tekst, typ dan onmiddellijk de volgende opdracht en druk op verzenden.

AT+CIPCLOSE 

Op het moment dat u op Verzenden drukt, krijgt u de volgende reactie (niet de exacte, maar iets vergelijkbaars).

Recv 51 bytes
SEND OK
+IPD,1:5CLOSED

Het getal 5 betekent, het is mijn 5de bericht naar die sleutel. Open nu de ThingSpeak API en open je kanaal. In het “Privéweergave” tabblad, kunt u de waarde ‘143’ in de field 1 chart vinden.

Dat is het. Als u al deze stappen hebt begrepen en gevolgd, hebt u mogelijk uw ESP8266 met de ThingSpeak API verbonden. Als u meer gegevens wilt verzenden, herhaalt u de stappen vanaf het maken van de TCP verbinding.

Schakelschema voor ESP8266 (ESP-01) ThingSpeak Interface met Arduino

Aangezien ik de Arduino zal programmeren en de ESP8266 (ESP-01) via Arduino zal besturen, zal het schakelschema enigszins anders zijn. Maar de componenten zullen hetzelfde zijn.

Verbind ESP8266 (ESP-01) met ThingSpeak met behulp van Arduino

Ik wil niet dezelfde oude vraag stellen, dus ben je het beu om alle AT opdrachten handmatig te typen? Het antwoord is duidelijk ja. Hier komt Arduino te hulp. Maak alle verbindingen volgens het bovenstaande schema en we zullen doorgaan met de code.

Gebruik de volgende code om naar Arduino te uploaden. Merk op dat u enkele wijzigingen in de code hebt aangebracht. De wijzigingen zullen betrekking hebben op WiFi SSID, WiFi wachtwoord en API sleutel (16 tekens). Ik denk dat de rest van de waarden kan blijven zoals ze zijn.

ESP8266_Connect_To_ThingSpeak.ino

Nadat u de code hebt geüpload, kunt u de AT opdrachten die naar de ESP8266 (ESP-01) module worden verzonden zien als u de seriële monitor opent (baudrate ingesteld op 9600).

In eerste instantie zullen de AT opdrachten de WiFi verbinding instellen op de ESP module. Na het inschakelen van de verbinding, zal de Arduino een TCP verbinding tot stand brengen met de ThingSpeak API en het willekeurige nummer elke 5 seconden verzenden.

Deze gegevens kunnen worden gecontroleerd in de ThingSpeak API website, d.w.z. in het kanaal dat u hebt gemaakt (op het tabblad Private View).

Conclusie & toepassingen