ESP8266: Difference between revisions
No edit summary |
(Link to AT command-reference + examples) |
||
(One intermediate revision by one other user not shown) | |||
Line 31: | Line 31: | ||
Er zijn een paar belangrijke zaken om in acht te nemen bij het ontwerp van hardware met de ESP boards (met name de 'losse' ESP boards, de NodeMCU heeft al een hoop aan boord. | Er zijn een paar belangrijke zaken om in acht te nemen bij het ontwerp van hardware met de ESP boards (met name de 'losse' ESP boards, de NodeMCU heeft al een hoop aan boord. | ||
* 3.3volt, voor enkel de ESP minimaal 500mA begroten. Stabiliteit van de voeding | * 3.3volt, voor enkel de ESP minimaal 500mA begroten. Stabiliteit van de voeding beïnvloedt de stabiliteit van de ESP | ||
* Condensatoren. Op VCC/GND moet minimaal een 10uF en een 100nF geplaatst worden, zo dicht mogelijk op de VCC | * Condensatoren. Op VCC/GND moet minimaal een 10uF en een 100nF geplaatst worden, zo dicht mogelijk op de VCC | ||
* Pullups en Pulldowns. Bij Boot kijkt de ESP naar de volgende pinnen: | * Pullups en Pulldowns. Bij Boot kijkt de ESP naar de volgende pinnen: | ||
Line 60: | Line 60: | ||
* De Neopixel klok | * De Neopixel klok | ||
* De 15segmentsdisplay-klok | * De 15segmentsdisplay-klok | ||
== Basis functionaliteit via AT commando's == | |||
Hier [http://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf] vind je een PDF met de AT commando's die de stock firmware ondersteund. Zo kun je de ESP gebruiken om een bestaand project via een seriele poort over WLAN te laten praten. Let op, de ESP verwacht een \r\n als regeleinde, dus terminal programma goed instellen of eerst op enter (ctrl-M) en dan op ctrl-J drukken, anders 'ERROR'. Alleen ctrl-M of ctrl-J werkt niet. | |||
Simpele tests met een ESP aan een terminal: | |||
<pre> | |||
# Firmware versie opvragen | |||
AT+GMR | |||
# echo aan zetten | |||
ATE1 | |||
# station mode (ipv software access point) | |||
AT+CWMODE_CUR=1 | |||
# WPS aan zetten | |||
AT+WPS=1 | |||
#en weer uit | |||
AT+WPS=0 | |||
# disconnect van AP | |||
AT+CWQAP | |||
# lijst van APs die gezien worden opvragen | |||
AT+CWLAP | |||
#connect aan AP | |||
AT+CWJAP_CUR="HetSSIDHier","g3h31mp4sw00rd!" | |||
#IP info opvragen | |||
AT+CIFSR | |||
#ping een host | |||
AT+PING="192.168.1.123" | |||
#1 connection tegelijk mode | |||
AT+CIPMUX=0 | |||
#connect naar iets over TCP op port 8888 (bijvoorbeeld een luisterende netcat) | |||
AT+CIPSTART="TCP","192.168.1.123",8888 | |||
#transparant mode | |||
AT+CIPMODE=1 | |||
#start 1 op 1 doorzetten van seriele data. | |||
AT+CIPSEND | |||
# stop transparant mode (evt wat meer +jes, 3 snel achter elkaar is het minimum) | |||
+++AT+CIPMODE=0 | |||
</pre> |
Latest revision as of 08:18, 25 January 2018
Inleiding
De ESP8266 is een kleine, krachtige 32bits microcontroller. Het heeft een paar zeer uitnodigende features zoals een hoge kloksnelheid, WiFi, een flinke sloot geheugen, PWM op elke pin én een hele lage prijs!
Tegenwoordig is het heel eenvoudig om deze chip van software te voorzien via de Arduino programmeeromgeving.
Hardware
ESP12E
De 12E is de meest standaard ESP module die er te krijgen is. Voor ongeveer 2 euro uit China te krijgen met een flink flashgeheugen, bijna alle pins naar buiten gebracht, dus genoeg aansluitmogelijkheden en een lekker compact model.
Nadeel is de relatief kleine pitch tussen de pads, je zult vaak naar een adapterboardje moeten grijpen of een eigen printje layouten. Adapterboardjes zijn al vanaf 20 cent te krijgen.
ESP12F
De 12F is een doorontwikkeling van de 12E. De grote verbetering zit in het WiFi bereik, de antenne is namelijk iets aangepast. Mensen rapporteren significant beter signaal. De modules zijn op het moment van schrijven wel duurder dan de 12E.
NodeMCU v3
Een ESP12E op een adapterboardje met een aantal luxe features. 3.3volt regulator, USB-Serial dmv een CH340G, alle knopjes voor flashen zitten er al op. Is voor ongeveer 3,50 te krijgen vanuit China. Heeft als nadeel dat het bordje niet echt compact is en dat je mogelijk GPIO's niet/lastig kunt gebruiken omdat daar al knopjes/weerstanden aan hangen.
Wemos D1 mini
Vergelijkbaar met de NodeMCU, iets compacter.
Mogelijk nadeel t.o.v. NodeMCU: de spanningsregulator op dit bordje (RT9013) levert een lagere maximale stroom (500 mA) dan die op de NodeMCU (SPX3819, 800 mA), dit zou problemen kunnen geven als je hieruit nog andere hardware wilt voeden. Mogelijk voordeel t.o.v. NodeMCU: als je extern 3.3V aanbiedt (bijv. via LiFePO4 batterij), dan trekt de Wemos D1 in 'deep sleep' mode minder stroom (ca 0.16 mA, NodeMCU trekt ca 3 mA), dus het is mogelijk om hiermee een batterijgevoed apparaatje te maken dat langer werkt op een batterij.
Aansluiten
Er zijn een paar belangrijke zaken om in acht te nemen bij het ontwerp van hardware met de ESP boards (met name de 'losse' ESP boards, de NodeMCU heeft al een hoop aan boord.
- 3.3volt, voor enkel de ESP minimaal 500mA begroten. Stabiliteit van de voeding beïnvloedt de stabiliteit van de ESP
- Condensatoren. Op VCC/GND moet minimaal een 10uF en een 100nF geplaatst worden, zo dicht mogelijk op de VCC
- Pullups en Pulldowns. Bij Boot kijkt de ESP naar de volgende pinnen:
- GPIO 0 laag = boot from UART (Programmeren), hoog = boot from SPI flash (plaats 10k pullup naar 3.3v en switch naar gnd
- GPIO 2 moet hoog zijn, dus pullup naar 3.3v
- GPIO 15 laag = boot from UART/SPI, hoog = boot from SDIO (plaats 10k pulldown naar GND)
- CH_PD laag = ESP uit, hoog = ESP aan. Pullup 10k naar 3.3v
- RST laag = ESP reset, hoog = ESP aan. Pullup 10k naar 3.3v (plus resetknop naar GND)
Als je wilt programmeren moet je GPIO0 laag maken, en de ESP van stroom voorzien of resetten. Zodra de bootloader actief is kun je GPIO loslaten.
Software
Arduino
De Arduino boardmanager op Github is een goed startpunt voor software. Je volgt de handleiding hoe je de boards installeert en je kunt aan de slag.
Veel libraries van bv Adafruit zijn al aangepast op de ESP8266.
Aan de slag met de omgeving: https://www.youtube.com/watch?v=G6CqvhXpBKM
URL voor de "Additional Board Manager URLs" optie in de Arduino IDE / Preferences dialoog: http://arduino.esp8266.com/stable/package_esp8266com_index.json
Voorbeelden
Er zijn binnen de space al diverse projecten met de ESP8266:
- Wifiskip
- De Neopixel klok
- De 15segmentsdisplay-klok
Basis functionaliteit via AT commando's
Hier [1] vind je een PDF met de AT commando's die de stock firmware ondersteund. Zo kun je de ESP gebruiken om een bestaand project via een seriele poort over WLAN te laten praten. Let op, de ESP verwacht een \r\n als regeleinde, dus terminal programma goed instellen of eerst op enter (ctrl-M) en dan op ctrl-J drukken, anders 'ERROR'. Alleen ctrl-M of ctrl-J werkt niet.
Simpele tests met een ESP aan een terminal:
# Firmware versie opvragen AT+GMR # echo aan zetten ATE1 # station mode (ipv software access point) AT+CWMODE_CUR=1 # WPS aan zetten AT+WPS=1 #en weer uit AT+WPS=0 # disconnect van AP AT+CWQAP # lijst van APs die gezien worden opvragen AT+CWLAP #connect aan AP AT+CWJAP_CUR="HetSSIDHier","g3h31mp4sw00rd!" #IP info opvragen AT+CIFSR #ping een host AT+PING="192.168.1.123" #1 connection tegelijk mode AT+CIPMUX=0 #connect naar iets over TCP op port 8888 (bijvoorbeeld een luisterende netcat) AT+CIPSTART="TCP","192.168.1.123",8888 #transparant mode AT+CIPMODE=1 #start 1 op 1 doorzetten van seriele data. AT+CIPSEND # stop transparant mode (evt wat meer +jes, 3 snel achter elkaar is het minimum) +++AT+CIPMODE=0