Inhoudsopgave:
- Stap 1: Dingen die je nodig hebt
- Stap 2: Enige informatie over ESP8266
- Stap 3: Pinout van ESP8266
- Stap 4: Wat moet worden gebruikt om te communiceren met ESP8266?
- Stap 5: Montage van de ESP8266 op Breadboard
- Stap 6: Voeding
- Stap 7: Logische niveauconversie
- Stap 8: Aansluitingen
- Stap 9: Aan de slag
- Stap 10: AT-opdrachten
- Stap 11: Algemene syntaxis van AT-opdrachten
- Stap 12: verbinding maken met wifi
- Stap 13: Thingspeak
- Stap 14: Nog wat AT-commando's
- Stap 15: De TCP-verbinding instellen
- Stap 16: De Tweet verzenden
- Stap 17: Wat te doen hierna?
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Ik leerde over Arduino 2 jaar geleden. Dus begon ik te spelen met eenvoudige dingen zoals LED's, knoppen, motoren enz. Toen dacht ik dat het niet cool zou zijn om verbinding te maken om dingen te doen zoals het weergeven van het weer van de dag, aandelenkoersen, treintijden op een LCD-scherm. Ik ontdekte dat dit kon worden gedaan door gegevens via internet te verzenden en te ontvangen. Dus de oplossing was verbinding maken met internet. Daar begon mijn zoektocht naar het verbinden van de Arduino met internet en het verzenden en ontvangen van gegevens. Ik leerde over wifi-modules op internet en vond ze erg duur. Toen hoorde ik van de ESP8266.
Ik heb ongeveer een jaar geleden veel op internet gelezen over de ESP8266-module en heb er een gekocht, maar ben er vorige maand mee gaan werken. Destijds was er geen uitgebreide informatie beschikbaar. Nu is er echter veel documentatie, video's beschikbaar op internet over firmware, AT-commando's, projecten etc. Dus besloot ik aan de slag te gaan.
Ik heb deze instructable geschreven als een beginnershandleiding, omdat ik veel problemen had bij het aansluiten en aan de slag gaan met de ESP8266. Dus besloot ik deze Instructable te schrijven, zodat andere mensen die problemen hebben met hun modules ze sneller kunnen oplossen
In dit Instructable zal ik proberen te laten zien
- Hoe een ESP8266 aan te sluiten en ermee te communiceren via Arduino Uno.
- Ik zal ook proberen te laten zien hoe een tweet er doorheen kan worden gestuurd met behulp van Thingspeak.
Wat kan de ESP8266 doen? Het wordt beperkt door je verbeeldingskracht. Ik heb projecten en tutorials op internet gezien die laten zien hoe je de temperatuur van een stad, aandelenkoersen, het verzenden en ontvangen van e-mails, telefoneren en nog veel meer laat zien. dit Instructable hoe een tweet te verzenden.
Stap 1: Dingen die je nodig hebt
Hier zijn de dingen die je nodig hebt. De meeste hiervan kunnen worden gekocht bij elke elektrische winkel of online (ik heb de links ter referentie verstrekt).
- 1xESP8266 (ESP-01) -ebay
- 1xBreadboard-adapter (leer hier hoe je er een kunt maken of gebruik een paar jumperdraden)
- 1xLM2596 -ebay
- 1xLogic niveau-omzetter -ebay
- 1xArduino Uno
- USB-kabel voor Arduino Uno
- 1xBroodplankje -ebay
- Draden -ebay
- Arduino IDE
- Een account bij Thingspeak
De totale kosten zullen ongeveer Rs 600 (ongeveer $ 9) zijn. Ik heb de kosten van Arduino Uno uitgesloten, omdat het ervan afhangt of je een origineel of een kloon wilt. De goedkoopste klonen zijn verkrijgbaar bij ongeveer Rs 500 (ongeveer $ 4).
Stap 2: Enige informatie over ESP8266
ESP8266 werd slechts een jaar geleden in 2014 gelanceerd, dus het is vrij nieuw. De chips zijn vervaardigd door Espressif.
Voordeel
Het grootste voordeel van ESP8266 zijn misschien de kosten. Het is vrij goedkoop en je kunt er een paar in één keer kopen. Voordat ik het wist, kon ik er niet eens aan denken om een wifi-module te kopen. Ze waren te duur. Nieuwe versies van ESP8266 worden vrij vaak uitgebracht en de nieuwste is ESP 12. In deze Instructable zal ik me echter alleen concentreren op ESP 01, wat behoorlijk populair is. Bovendien, wanneer je de ESP8266 koopt, wordt deze vooraf geladen met de standaard AT-firmware. Dus je bent goed om aan de slag te gaan zodra je er een koopt. Ook zoals je zult zien aan deze instructable, is het vrij eenvoudig om ze te koppelen.
Nadeel
Elk apparaat heeft zijn eigen voor- en nadelen en ESP is niet anders. Het ESP kan soms erg lastig en frustrerend zijn om mee te werken. Omdat het vrij nieuw is, zul je het moeilijk vinden om er informatie over te krijgen. Gelukkig een community op esp8266.com bestaat, wat een hoop hulp is. Bovendien begint het soms ook onverwachte dingen te doen, zoals een hoop afval overgeven via de seriële verbinding enz.
Merk op dat er veel documentatie beschikbaar is op internet en dat een deel ervan tegenstrijdig is. Dit Instructable is niet anders. Tijdens het spelen met mijn ESP8266 ontdekte ik dat het veel afweek van wat op internet werd vermeld (de jouwe kan ook) maar het werkte prima.
Stap 3: Pinout van ESP8266
De ESP8266 heeft 8 pinnen zoals afgebeeld.
Gnd en Vcc moeten zoals gebruikelijk worden aangesloten op respectievelijk aarde en voeding. De ESP8266 werkt op 3,3 V.
RESET-pin wordt gebruikt om de ESP handmatig te resetten. Normaal gesproken moet deze op 3,3 V zijn aangesloten. Als u de ESP wilt resetten, sluit deze pin dan even aan op aarde en vervolgens terug op 3,3 V.
CH_PD is de stroomonderbreking van de chip die normaal gesproken op 3.3V moet worden aangesloten.
GPIO0 en GPIO2 zijn input-outputpennen voor algemene doeleinden. Deze moeten normaal worden aangesloten op 3,3 V. Wanneer u echter de firmware knippert, verbindt u GPIO0 met gnd.
Rx- en Tx-pinnen zijn de zend- en ontvangstpinnen van ESP8266. Ze werken op 3.3V logica, d.w.z. 3.3V is logisch HOOG voor ESP8266.
Gedetailleerde verbindingen worden in latere stappen gegeven.
Stap 4: Wat moet worden gebruikt om te communiceren met ESP8266?
Er zijn veel apparaten die kunnen worden gebruikt om te communiceren met ESP8266, zoals FTDI-programmeurs, USB naar TTL seriële converter, Arduino enz. Ik heb echter een Arduino Uno gebruikt, simpelweg omdat het het gemakkelijkst is en bijna iedereen het heeft. Ook als je heb je een Arduino, dan heb je ook de Arduino IDE en de seriële monitor kan worden gebruikt voor communicatie met de ESP8266. Dus geen geld uitgeven aan FTDI-programmeurs etc.
Als je er echter een wilt of als je er al een hebt, kun je een FTDI-programmeur of een USB naar TTL seriële converter gebruiken (meer over hoe je ze later kunt aansluiten). Er is ook veel software zoals RealTerm of putty. deze op dezelfde manier als de seriële monitor van de Arduino IDE.
Stap 5: Montage van de ESP8266 op Breadboard
Merk op dat de pinnen van ESP8266 niet breadboard-vriendelijk zijn. Dit kan op 2 manieren worden verholpen.
Gebruik vrouwelijke naar mannelijke jumperdraden die dingen rommelig kunnen maken of
Doe zoals getoond in deze Instructable of
Gebruik een adapterbord, maak er zelf een (er zijn er veel op Instructables), wat netjes is.
Stap 6: Voeding
De ESP8266 werkt op 3,3V-voeding. Sluit hem niet aan op de 5V-pin op Arduino. Hij zal waarschijnlijk branden.
Sommige tutorials stelden voor om een spanningsdelercircuit te maken met 1k, 2k-weerstanden met 5V als invoer en 3,3V over de 2k-weerstand te verkrijgen en deze aan de Arduino te leveren. Ik ontdekte echter dat de ESP niet eens opstartte toen ik dit deed.
Ik kon het opstarten met behulp van de 3.3V op Arduino, maar ontdekte dat de ESP na enige tijd heet werd.
Je kunt een 3.3V spanningsregelaar gebruiken.
Of je kunt de LM2596 dc-dc step-down converter gebruiken. Deze zijn vrij goedkoop. en ik heb deze gebruikt. Geef 5V van Arduino aan de ingang. Pas de potentiometer op de module aan, totdat de uitgang 3.3VI wordt en de ESP kan worden gevoed van een van deze urenlang. Maak de aansluitingen zoals weergegeven in de afbeelding.
Stap 7: Logische niveauconversie
Er wordt vermeld dat de ESP 3.3V-logica heeft, terwijl de Arduino 5V-logica heeft.
Dit betekent dat in de ESP 3.3V logisch HOOG is, terwijl in Arduino 5V logisch HOOG is. Dit kan problemen veroorzaken bij het verbinden.
Ik ontdekte op internet dat conversie op logisch niveau moet worden toegepast terwijl ESP Rx en Tx met Arduino worden gekoppeld.
Sommige tutorials vermeldden dat conversie op logisch niveau nodig is bij het koppelen van ESP Rx-pins.
Ik ontdekte echter dat het gewoon normaal aansluiten van de ESP Rx- en Tx-pinnen op de Arduino geen problemen opleverde
Ik heb Rx en Tx aangesloten via een logische niveau-omzetter en alleen Rx, maar kreeg geen antwoord.
Ik ontdekte echter dat het aansluiten van de ESP Tx-pin via een logische niveau-omzetter tijdens het rechtstreeks aansluiten van de Tx ook geen problemen opleverde
Dus logische niveau-omzetter kan al dan niet worden gebruikt.
Gebruik de methode die voor u werkt door middel van vallen en opstaan.
Stap 8: Aansluitingen
De aansluitingen van ESP8266 zijn:
ESP8266
Gnd ------------------- Gnd
GPIO2 --------------- 3.3V
GPIO0 --------------- 3.3V
Rx -------------------- Rx van Arduino
Tx --------------------- Tx van Arduino (direct of via logic level converter)
CH_PD -------------- 3.3V
RESET -------------- 3.3V
Vcc -------------------- 3.3V
(Merk op dat in sommige versies ESP Rx moet worden aangesloten op Arduino Tx en ESP Tx moet worden aangesloten op Arduino Rx).
Als u een FTDI-programmeur of USB naar TTL seriële converter gebruikt, sluit dan hun Tx en Rx aan op respectievelijk Rx en Tx van ESP8266.
Stap 9: Aan de slag
Na het maken van de verbindingen, upload
ongeldige setup()
{}
lege lus()
{}
d.w.z. een blanco schets naar de Arduino..
Open de seriële monitor en zet deze op "Both NL & CR".
Experimenteer met de baudrate. Het zou normaal gesproken 9600 moeten zijn, hoewel het soms 115200 kan zijn.
Stap 10: AT-opdrachten
Gewoon zeggen dat AT-commando's commando's zijn die naar de ESP8266 kunnen worden gestuurd om deze in staat te stellen bepaalde functies uit te voeren, zoals herstarten, verbinding maken met wifi enz. De ESP zal als reactie een bevestiging sturen in de vorm van tekst. Hieronder heb ik een aantal uitgelegd AT-commando's en hoe de ESP erop reageert. Merk op dat ik met verzenden bedoel het intypen van de opdracht en op enter (return) drukken.
Stuur AT via de seriële monitor
Dit commando wordt gebruikt als testcommando.
Hoe de ESP reageert: OK moet worden geretourneerd.
Stuur AT+RST via de seriële monitor
Dit commando wordt gebruikt om de module opnieuw te starten.
Hoe de ESP reageert: ESP geeft een hoop rommel terug. Zoek echter naar Ready of ready.
Stuur AT+GMR via de seriële monitor
Dit commando wordt gebruikt om de firmwareversie van de module te bepalen.
Hoe de ESP reageert: Firmwareversie moet worden geretourneerd.
Firmware is een stukje software dat op een apparaat is geïnstalleerd, meestal op zijn ROM (alleen-lezen geheugen), dwz het is niet bedoeld om vaak of helemaal niet te worden gewijzigd. Het biedt de controle en gegevensmanipulatie van het apparaat. ESP8266 heeft een nummer van verschillende firmwares die allemaal vrij eenvoudig te flashen (installeren) zijn.
Stap 11: Algemene syntaxis van AT-opdrachten
De algemene syntaxis van AT-commando's voor het uitvoeren van verschillende functies wordt gegeven:
AT+parameter=?
Wanneer een opdracht van dit type door de seriële monitor wordt verzonden, retourneert de ESP alle waarden die de parameter kan aannemen.
AT+parameter=waarde
Wanneer een opdracht van dit type door de seriële monitor wordt verzonden, stelt de ESP de waarde van de parameter in op val.
AT+parameter?
Wanneer een opdracht van dit type via de seriële monitor wordt verzonden, retourneert de ESP de huidige waarde van de parameter.
Sommige AT-commando's kunnen slechts één van de bovenstaande typen gebruiken, terwijl sommige alle 3.
Een voorbeeld van een commando dat in alle bovenstaande 3 typen mogelijk is, is CWMODE, waarmee de wifi-modus wordt ingesteld.
Stuur AT+CWMODE=? via de seriële monitor
Hoe de ESP reageert: Alle waarden die de ESP CWMODE kan aannemen (1-3) worden specifiek +CWMODE (1-3) geretourneerd.
1=Statisch
2=AP
3=Zowel statisch als AP
Stuur AT+CWMODE=1 via de seriële monitor
Hoe de ESP reageert: OK moet worden geretourneerd als er een wijziging is in de CWMODE van de vorige waarde en deze is ingesteld op statisch, anders mag er geen wijziging worden geretourneerd als er geen wijziging is in de CWMODE-waarde.
BELANGRIJK: Tenzij CWMODE is ingesteld op 1, werken de opdrachten in de latere stappen niet.
AT+CWMODE verzenden? via de seriële monitor
Hoe de ESP reageert: De huidige waarde van CWMODE moet worden geretourneerd, vooral als u de bovenstaande stap hebt gevolgd, moet +CWMODE:1 worden geretourneerd.
Stap 12: verbinding maken met wifi
Stuur AT+CWLAP via de seriële monitor
Deze opdracht wordt gebruikt om alle netwerken in het gebied weer te geven.
Hoe de ESP reageert: Er moet een lijst met alle beschikbare toegangspunten of wifi-netwerken worden geretourneerd.
Stuur AT+CWJAP="SSID", "wachtwoord"
(inclusief de dubbele aanhalingstekens).
Deze opdracht wordt gebruikt om verbinding te maken met een wifi-netwerk.
Hoe de ESP reageert: OK moet worden geretourneerd als de module is aangesloten op het netwerk.
AT+CWJAP verzenden? via de seriële monitor
Dit commando wordt gebruikt om te bepalen op welk netwerk de ESP momenteel is aangesloten.
Hoe de ESP reageert: Het netwerk waarop de ESP is aangesloten, wordt geretourneerd. Specifiek +CWJAP:"SSID"
Stuur AT+CWQAP via de seriële monitor
Deze opdracht wordt gebruikt om de verbinding met het netwerk te verbreken waarmee de ESP momenteel is verbonden.
Hoe de ESP reageert: De ESP verlaat het netwerk waarmee het is verbonden en OK wordt geretourneerd.
Stuur AT+CIFSR via de seriële monitor
Dit commando wordt gebruikt om het IP-adres van de ESP te bepalen.
Hoe de ESP reageert: Het IP-adres van de ESP wordt geretourneerd.
Stap 13: Thingspeak
Als je nog geen account hebt gemaakt op Thingspeak, maak er dan nu een.
Ga na het aanmaken van een account op Thingspeak naar Apps>ThingTweet.
Koppel er je Twitter-account aan.
Let op de API-sleutel die wordt gegenereerd.
Nadat de ThingTweet-app is gebruikt om een Twitter-account aan uw ThingSpeak-account te koppelen, kunt u een tweet verzenden met behulp van de TweetContol API.
Een API (Application Program Interface) is code waarmee twee softwareprogramma's met elkaar kunnen communiceren.
Enkele andere API's die beschikbaar zijn voor ontwikkelaars zijn Google maps API, Open Weather API enz.
Pas nadat de ESP is ingesteld, gecontroleerd en verbonden met wifi (in principe alle stappen die in de vorige 2 stappen zijn gegeven), doorloop je de onderstaande stappen
Stap 14: Nog wat AT-commando's
Stuur AT+CIPMODE=0, via de seriële monitor
Hoe de ESP reageert: OK wordt geretourneerd.
De opdracht CIPMODE wordt gebruikt om de overdrachtsmodus in te stellen.
0=normale modus
1=UART-WiFi passthrough-modus
Stuur AT+CIPMUX=1 via de seriële monitor
Hoe de ESP reageert: OK wordt geretourneerd.
Het CIPMUX-commando wordt gebruikt om enkele of meerdere verbindingen in te stellen.
0=enkele verbinding
1=meerdere verbindingen
Stap 15: De TCP-verbinding instellen
Houd er rekening mee dat vanaf het eerste commando, zodra u het eerste verzendt, de verbinding slechts voor een beperkte tijd tot stand wordt gebracht. Verzend de commando's dus zo snel mogelijk.
Stuur AT+CIPSTART=0, "TCP", "api.thingspeak.com", 80 via de seriële monitor
Hoe de ESP reageert:Linked wordt geretourneerd als de verbinding tot stand is gebracht.
Deze opdracht wordt gebruikt om een TCP-verbinding tot stand te brengen.
De syntaxis is AT+CIPSTART=link ID, type, remote IP, remote port
waar
link ID=ID van netwerkverbinding (0~4), gebruikt voor multi-verbinding.
type=string, "TCP" of "UDP".
remote IP=string, remote IP-adres (adres van de website).
externe poort = tekenreeks, nummer van externe poort (meestal geselecteerd als 80).
Stuur AT+CIPSEND=0, 110 via de seriële monitor
Hoe de ESP reageert:> (groter dan) wordt geretourneerd als de opdracht succesvol is.
Deze opdracht wordt gebruikt om gegevens te verzenden.
De syntaxis is AT+CIPSEND=link-ID, lengte
waar
link ID=ID van de verbinding (0~4), voor multi-connect. Aangezien CIPMUX is ingesteld op 1, is 1.
lengte=gegevenslengte, MAX 2048 bytes. Kies in het algemeen een groot getal voor de lengte.
Stap 16: De Tweet verzenden
Nu voor het verzenden van de tweet
Stuur GET /apps/thingtweet/1/statuses/update?api_key=yourAPI&status=yourtweet via de seriële monitor.
Vervang uwAPI door de API-sleutel en uwtweet door elke gewenste tweet.
Zodra u de bovenstaande opdracht verzendt, drukt u met tussenpozen van ongeveer 1 seconde op enter (return). Na enige tijd worden SEND OK, +IPD, 0, 1:1 en OK geretourneerd, wat betekent dat de tweet is gepost.
Open je twitter en controleer of de tweet is geplaatst of niet.
Houd er ook rekening mee dat dezelfde tweet niet herhaaldelijk kan worden verzonden.
De bovenstaande string die is verzonden (GET….), is een HTTP GET-verzoek.
Het GET-verzoek wordt gebruikt om gegevens op te halen van de opgegeven server (api.thingspeak.com).
Stap 17: Wat te doen hierna?
(Bekijk de video in minimaal 360p)
Ga naar deze repository om de code en schema's te downloaden. Klik op de knop "Clone or Download" (groen van kleur aan de rechterkant) en selecteer "Download ZIP" om het zipbestand te downloaden. Pak nu de inhoud op uw computer uit om de code en schema's (in de map schema's). Ik heb ook een cheatsheet geüpload, die alle AT-commando's samenvat, naar deze repository.
Er zijn veel geweldige bronnen beschikbaar op internet die te maken hebben met ESP8266. Ik heb er hier enkele genoemd:
- Kevin Darrah-video's.
- ALLE overEE video's.
- esp8266.com
Je kunt ook meer experimenteren met AT-commando's. Er zijn veel API's beschikbaar op internet die allerlei dingen kunnen doen, zoals het weer, aandelenkoersen enz.
Volledige AT-opdrachtdocumentatie
Ook werk ik momenteel aan een programma dat automatisch de analoge waarden van een sensor tweet en ik zal het posten zodra het goed werkt.
Als je mijn instructable stem ervoor vond in de Arduino all the things-wedstrijd.