ESP8266

From RevSpace
Revision as of 10:18, 25 January 2018 by Luteijn (talk | contribs) (Link to AT command-reference + examples)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
ESP12E

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

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

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

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

WemosD1mini

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