- Wat is ESP8266?
- Basisprincipes van WiFi-theorie:
- Soorten programmering met ESP8266:
- Hardware om ESP8266-module te programmeren:
- Vereiste materialen:
- Circuit uitleg:
- Bouwplaat om ESP8266 te programmeren:
Internet of Things en Home Automation is de afgelopen dagen echt een gehyped onderwerp geweest. Zelf iets bouwen dat kan communiceren met het World Wide Web en overal ter wereld toegankelijk is, klinkt echt cool, nietwaar?
Maar wacht!!! Het klinkt ook ingewikkeld ???….
Dus deed het voor mij, ik dacht dat het enorm veel tijd en vaardigheid zou kosten om dingen te bouwen die kunnen communiceren met internet. NEE, ik had het helemaal mis, dankzij deze fantastische module genaamd de ESP8266 van Espressif Systems. Nu kunt u met behulp van deze module eenvoudig uw deuren openen voor IoT-projecten. Deze goedkope, kleine module kan wonderen doen en is heel eenvoudig en gemakkelijk te gebruiken, op voorwaarde dat we de juiste stappen volgen.
Deze tutorials zijn bedoeld om u kennis te laten maken met deze ESP8266-01-module en u ermee aan de slag te helpen. Misschien heeft u uw module al meegenomen en bent u vastgelopen tijdens het gebruik ervan. Dan bent u niet de enige, geen zorgen, veel mensen vinden het erg moeilijk om met de module aan de slag te gaan omdat er geen goede begeleiding of documentatie is voor deze module. Dit is de reden om deze tutorial te maken. Volg de instructies hier en je zou in staat moeten zijn om je ESP8266-01-module binnen de kortste keren aan de praat te krijgen, hier zullen we FTDI USB naar TTL seriële adaptermodule gebruiken om de ESP8266 te programmeren. Bekijk de gedetailleerde video aan het einde van de zelfstudie.
Voordat we op het onderwerp ingaan, laten we eerst wat basisprincipes van de ESP8266-01-module bespreken.
Wat is ESP8266?
De meeste mensen noemen ESP8266 als een WIFI-module, maar het is eigenlijk een microcontroller. ESP8266 is de naam van de microcontroller die is ontwikkeld door Espressif Systems, een bedrijf gevestigd in Shanghai. Deze microcontroller kan WIFI-gerelateerde activiteiten uitvoeren en wordt daarom veel gebruikt als een WIFI-module.
Er zijn veel soorten ESP8266-modules beschikbaar, variërend van ESP8266-01 tot ESP8266-12. Degene die we in de zelfstudie gebruiken, is de ESP8266-01 omdat deze de goedkoopste is en gemakkelijk verkrijgbaar. Alle ESP-modules hebben echter maar één type ESP-processor, wat alleen verschilt is het type breakout-bard dat wordt gebruikt. Het breakout-bord van ESP8266-01 heeft slechts 2 GPIO-pinnen, terwijl het in andere boards hoger zal zijn.
De volledige specificatie van de module wordt gegeven in de onderstaande tabel
Spanning |
3.3V |
Huidige consumptie |
10uA-170mA |
Maximaal stroomverbruik tijdens knipperen |
800mA |
Flash-geheugen |
16 MB (512 K normaal) |
Processor |
Tensilica L106 32 bit |
Processor snelheid |
80-160 MHz |
RAM |
32K + 80K |
GPIO |
17 (maar de meeste zijn multiplex) |
Analoog-digitaalomzetter |
1 (10-bits) |
Maximale TCP-verbindingen |
5 |
Een paar dingen die je hadden kunnen verbazen over de specificatie is dat, JA, de ESP8266-module wordt geleverd met een ADC-converter en deze verbruikt een zeer hoge stroom van 0,8 A tijdens het flitsen van je apparaat.
Bekijk ook onze verschillende op ESP8266 gebaseerde interessante IoT-projecten.
Basisprincipes van WiFi-theorie:
Transfer Control Protocol (TCP), Internet Protocol (IP), User Datagram Protocol (UDP), Access Point (AP), Station (Sta), Service Set Identifier (SSID), Application Programming Interface (API), Webserver….
Zijn alle bovenstaande termen logisch voor u?
Zo ja. Dan, BINGO, kun je dit deel springen en naar het volgende deel gaan.
Als Nee. Dan moet je een van de vele elektrotechnische studenten zijn die net door de meeste van deze termen hebben geknipperd, net zoals ik deed toen ik voor het eerst kennismaakte met al deze dingen. Dus laten we al deze termen snel doornemen, want alleen dan konden we onze intrede doen in de wereld van IOT.
Transfer Control Protocol (TCP):
De meesten van ons zouden weten wat dit betekent. Ja, dit zijn de regels waarop internet werkt. Omdat ESP8266 de mogelijkheid heeft om WIFI-verbindingen op te zetten. Op hoog niveau is Wi-Fi de mogelijkheid om via een draadloze verbinding deel te nemen aan de TCP / IP-verbindingen. U kunt uw ESP laten werken op het TCP / IP-protocol of het UDP-protocol.
User Datagram Protocol (UDP):
UDP is ook een ander type internetprotocol. Dit type communicatie is sneller dan TCP, maar is minder nauwkeurig. De reden is dat TCP een bevestiging gebruikt tijdens zijn communicatie, maar UDP niet. TCP wordt meestal gebruikt in netwerken waar een hoge betrouwbaarheid vereist is. UDP wordt gebruikt op plaatsen waar snelheid een hoge prioriteit heeft boven betrouwbaarheid. UDP wordt bijvoorbeeld gebruikt bij videoconferenties, want zelfs als sommige pixels niet worden verzonden, heeft dit niet zoveel invloed op de videokwaliteit, maar de snelheid is erg belangrijk.
De meeste ESP8266-projecten en -codes werken rond TCP / IP, UDP zal het minst worden gestoord.
Toegangspunt (AP) en Station (STA):
Zodra u met de ESP-module begint te werken, komt u deze twee termen vaak tegen. Laten we zeggen dat u en uw vriend graag op internet willen surfen op uw smartphones, maar aangezien hij geen actieve internetverbinding heeft, besluit u uw hotspot in te schakelen en maakt uw vriend er verbinding mee. Hier is uw telefoon die de internetverbinding verzorgt het toegangspunt (AP) en de telefoon van uw vriend die internet gebruikt, wordt het Station (STA) genoemd.
De ESP8266-module kan worden gebruikt in drie modi: AP-modus, STA-modus of in zowel STA- als AP-modus (gecombineerd).
Service Set Identifier (SSID):
Dit is een vrij eenvoudige term. We hebben bijna allemaal wifi gebruikt. De naam van het Wi-Fi-netwerk wordt de SSID genoemd. Als we meerdere toegangspunten hebben waarmee een station verbinding kan maken, moet het station weten met welk toegangspunt het verbinding moet maken, daarom krijgt elk toegangspunt (AP) een identiteit die de SSID wordt genoemd.
Application Programming Interface (API):
Simpel gezegd is een API een messenger die uw verzoeken opneemt, verwerkt en uw systeem het gewenste resultaat retourneert. De meeste activiteiten die we op internet doen, maken gebruik van API's, zoals wanneer u een vlucht boekt, een online aankoop doet etc. Elke website koppelt u aan een API waar een deel van het werk, zoals aanmelden, betalen etc., voor u wordt gedaan Daar.
ESP8266 gebruikt API om met de wereld van internet te praten. Bijvoorbeeld als het de tijd, het klimaat of wat dan ook wil weten in de vorm van een API aan de bijbehorende website. Die website zal het verzoek ontvangen en het gewenste resultaat teruggeven aan onze ESP-module.
Web Server:
Een webserver is iets dat verantwoordelijk is voor het weergeven van de inhoud van een website. Alle inhoud van die specifieke website wordt op de webserver geladen. Er zijn speciale computers waarvan het de taak is om alleen als webserver te fungeren. We kunnen onze ESP8266 ook programmeren om als een webserver te werken en er vanaf elke plek ter wereld verbinding mee maken.
Oké, dit is genoeg om aan de slag te gaan. Nu, laten we onze handen op de hardware.
Soorten programmering met ESP8266:
Er zijn twee manieren om met uw ESP8266-module te werken. Deze tutorial helpt je om met beide aan de slag te gaan. Een manier is door de AT-opdrachten te gebruiken. De andere manier is door de Arduino IDE te gebruiken. Laten we begrijpen wat het betekent.
Alle ESP8266-modules die vanuit de fabriek worden verzonden, hebben een standaardfirmware (SDK + API) erin geladen. Deze firmware helpt u bij het programmeren van de ESP8266-module via AT-opdrachten.
De andere manier is door de ESP8266-module rechtstreeks te programmeren met behulp van de Arduino IDE (bord niet nodig) en zijn bibliotheken. Alle projecten kunnen in beide methoden worden uitgevoerd. Maar als u de Arduino IDE gaat gebruiken voor het programmeren van uw ESP8266, kunt u mogelijk geen AT-opdrachten gebruiken omdat de standaard SDK mogelijk is beschadigd. In dat geval moet u uw ESP flashen met de standaardinstellingen. We zullen dat in een andere tutorial behandelen.
Hardware om ESP8266-module te programmeren:
ESP8266 is een module met 8 aansluitingen. De pin uit hetzelfde wordt hieronder weergegeven.
Helaas is deze module niet breadboard-vriendelijk en kunnen we deze daarom niet rechtstreeks op ons breadboard monteren. Ook heeft het in tegenstelling tot Arduino geen ingebouwde USB naar Serieel stuurprogramma; daarom moeten we "FTDI USB naar TTL Seriële Adapter Module" gebruiken om ermee te communiceren. Zorg ervoor dat het FTDI-bord ook op 3.3V kan werken; degene die we in deze tutorial gebruiken, wordt hieronder weergegeven.
Nu, zoals we weten, moeten we de ESP8266 opstarten met 3,3V. Maar het stroomverbruik is 0,8 A, dus het werkt mogelijk niet zoals verwacht als het wordt gevoed door ons FTDI-breakout-bord. Daarom moeten we ons eigen voedingscircuit bouwen. Hier hebben we LM317 gebruikt voor het voeden; de details voor het maken van de complete hardware worden in latere secties gegeven.
Vereiste materialen:
- Perf bord
- ESP8266-01
- FTDI-uitbreekbord
- LM317
- 0.1uf condensator
- 10uf condensator
- Barrel Jack
- Bergstik mannetje en vrouwtje
- Druk op de knop
- Draden aansluiten
- 12V adapter om het bord van stroom te voorzien.
Circuit uitleg:
De schema's van het bord worden hieronder weergegeven
Sommigen hebben misschien geprobeerd je ESP rechtstreeks vanaf je FTDI van stroom te voorzien en het aan de praat te krijgen, maar de volgende zijn de redenen om je eigen bord te bouwen met een paar extra componenten:
- Slechts enkele FTDI-kaarten kunnen voldoende stroom leveren voor de ESP-module. Er zijn maar weinig ESP-modules die tijdens het knipperen veel stroom verbruiken dan de andere. Daarom is het altijd veilig om uw eigen stroombron te hebben, en zal het gemakkelijker zijn om het voedingscircuit op Dot Board te integreren in plaats van op breadboard.
- We moeten altijd de ESP-module resetten voordat we de code uploaden, het bouwen van ons eigen bord zal ons helpen om de module gemakkelijk te resetten. We hebben Push Button gebruikt om ESP8266 te resetten.
- De GPIO0-pin moet worden geaard bij het programmeren met Arduino en moet vrij worden gelaten bij het gebruik van AT-commando's, dit kan gemakkelijk worden omgeschakeld als we ons eigen bord bouwen. We hebben een jumper gebruikt om te schakelen tussen AT-commandomodus en Arduino IDE-programmeermodus.
- Alle programmering wordt gedaan met behulp van seriële communicatie , als je een breadboard gebruikt, kunnen sommige losse terminals halverwege een fout veroorzaken en ons dwingen om de module te flashen om weer mee te werken.
Dat gezegd hebbende, kunt u kiezen tussen het gebruik van een breadboard en het maken van uw eigen board voor het programmeren van de module. Als je nog steeds het breadboard wilt gebruiken, kan hetzelfde circuit als hierboven worden gebouwd met je breadboard. Alleen het uiterlijk zal anders zijn, alle andere instructies in deze tutorial zijn hetzelfde.
Bouwplaat om ESP8266 te programmeren:
Dus hier bouwen we het bord om de ESP8266-module te programmeren die zijn eigen voedingscircuit heeft om de ESP8266 van stroom te voorzien.
Zoals gezegd heeft onze module ongeveer 800mA nodig tijdens het programmeren. Daarom hebben we onze eigen voedingsmodule gebouwd met behulp van een LM317 variabele spanningsregelaar, aangezien de bronstroom van LM317 bijna 1,2 A is. De ingangsspanning van de LM317 is 12 V en wordt geleverd met een 12 V 2 A wandmontageadapter. De output van de LM317 wordt constant op 3.3V geregeld door gebruik te maken van de weerstanden van 220ohm en 360ohm. Bekijk ook ons batterijladercircuit met LM317 voor meer informatie over LM317.
De formules om de uitgangsspanning van LM317 te berekenen worden hieronder gegeven:
Vout = 1,25 * (1+ (R2 / R1))
Waar, R1 is 220ohm en R2 is 360ohm.
De ESP8266-module wordt aangesloten volgens de pinnen in de onderstaande tabel.
Pin nr. |
ESP-pinnaam |
Verbonden met |
1 |
Grond |
Aarde van de FTDI-module |
2 |
GPIO2 |
Vrijgelaten of verbonden met bergstick voor toekomstig gebruik |
3 |
GPIO0 |
Overschakelen om tussen programmeermodi te wisselen |
4 |
Rx |
Tx van FTDI-module |
5 |
Tx |
Rx van FTDI-module |
6 |
CH_PH |
3.3V van LM317 |
7 |
Reset |
Drukknop om module te resetten |
8 |
Vcc |
3.3V van LM317 |
Om gemakkelijk te schakelen tussen de AT-opdrachtmodus en de Arduino-programmeermodus heb ik een schakelaar (jumper) geplaatst die de GPIO 0 naar de grond trekt bij gebruik van Arduino IDE en laat zweven bij gebruik van de AT-opdrachten.
Er is een drukknop die, wanneer ingedrukt, de ESP-module zal resetten. Dit doe je door simpelweg de RST-pin van de ESP-module via de drukknop op de grondrail te bevestigen. Elke keer dat we onze ESP-module programmeren, moeten we deze opnieuw instellen.
Nadat u het circuit hebt gemonteerd, ziet het er hieronder ongeveer zo uit.
Ik heb een Perf-bord gebruikt, maar je kunt ook een breadboard gebruiken als je geïnteresseerd bent (zoals hierboven besproken). De volledige build en uitleg wordt getoond in de onderstaande video.
Eenmaal klaar met de verbindingen. Schakel het bord in zonder de ESP- en FTDI-kaarten en controleer of we 3.3V correct krijgen op de Vcc- en aardingsklemmen van de positie van de ESP-modules. Zorg er nu voor dat uw FTDI-bord zich in de 3.3V-modus bevindt en sluit uw FTDI- en ESP-modules aan op uw bord.
Schakel uw adapter in en sluit deze aan op uw bord, de ESP-module moet rood oplichten.
Verbind vervolgens uw FTDI-kaart met uw computer met behulp van een mini-USB-naar-USB-kabel en navigeer naar Apparaatbeheer op uw computer en u zou uw FTDI-kaart moeten vinden die is aangesloten op uw COM-poort, zoals hieronder weergegeven:
Nu tijd om onze ESP8266-module te programmeren. U kunt beginnen met het gebruik van de AT-commando's en vervolgens overgaan op het gebruik van de Arduino IDE. Vergeet niet om onze andere op ESP8266 gebaseerde projecten te bekijken.