ESP8266
Info
Datasheet: esp8266ex_datasheet_en.pdf
Max ratings
Voeding: +3V t/m +3,6V GPIO pin: -0.3V t/m Vcc+0,3V
GPIO Pin max. stroom
Elke GPIO pin kan de volgende maximale stromen hebben:
- 12mA naar 3,3V
- 20mA naar GND
Stroomverbruik
De ESP8266 staat bekend om z´n stroomverbruik. Het is niet een voor de hand liggende chip om langdurig met een batterij te voeden, maar het kan wel: https://tzapu.com/minimalist-battery-powered-esp8266-wifi-temperature-logger/ Om te flashen is een voeding met een minimum van 300mA nodig.
- Wifi-Tx: 120mA-170mA
- Wifi-Rx: 50mA-56mA
- **Wifi-modem-sleep, CPU actief: 15mA
- Light-sleep mode: 0,9mA
- Deep-sleep mode: 20uA
DeepSleep
Voor de deep sleep is een externe reset nodig, die gestuurd wordt door de WAKE (D0/GPIO16) pin. Tussen deze twee pinnen moet een draadje gelegd worden. Dit is bij de NodeMCU en de ESP-12S goed te doen. http://www.esp8266.com/wiki/doku.php?id=esp8266_power_usage#deep_sleep_mode
Voor de ESP-01 is een print wijziging nodig, zie hier: https://tzapu.com/minimalist-battery-powered-esp8266-wifi-temperature-logger/
Programmeren van de ESP8266
Created donderdag 07 februari 2019
Programmeren
Dit zijn de nivo´s waaraan voldaan moet worden om in de flash modus te komen.
GPIO15 | GPIO0 | GPIO2 | Mode |
---|---|---|---|
Low | Low | High | Serial programming |
Low | High | High | Boot from flash |
High | * | * | Boot from SD card |
- GPIO15 zit default aan ground bij ESP-01S
Het schema wat ik gebruik om te programmeren is deze. In het voorbeeld is het voor de ESP-01 of de ESP-01S, maar werkt ook voor de ESP-12
Extra
- Ook een 10k pullup weerstand aan de FLASH button
- Een 470 ohm weerstand in serie met Tx en ook de Rx
Om te flashen doe het volgende:
- Druk de RESET in
- Druk de PROG in
- Laat de RESET los
- Laat de PROG los
- Nu kun je met de Arduino IDE nieuwe code uploaden
Programma starten
Om de geflashte code te runnen doe het volgende:
- Druk kort de RESET in
De blauwe LED op de ESP-01S gaat branden als GPIO2=0
Automatische Flash en Reset signalen
Met wat elektronica hoeft je de Flash en de Reset knop niet meer in te drukken. Zie hier voor meer details hierover: https://tttapa.github.io/ESP8266/Chap06 - Uploading.html
Flash grootte bepalen
Flash size
Soms is het niet duidelijk hoeveel MB flash er nu in de ESP8266 zit. Met een eenvoudig programma in de Examples is dit goed te bepalen.
Start Arduino IDe en maak alles klaar om de ESP8266 te flashen.
- Ga naar menu: File->Examples->ESP8266->CheckFlashConfig
- Zet de Flash size in menu: Tools->Flash Size->512K (64K SPIFFS)
- Druk op Ctrl-U om te compileren/uploaden
Voorbeeld
Bij mijn ESP-12S was de flash grootte was bij aankoop niet gespecificeerd, maar blijkt 4MB.
Serial terminal output:
Flash real id: 001640E0
Flash real size: 4194304
Flash ide size: 524288
Flash ide speed: 40000000
Flash ide mode: DIO
Flash Chip configuration wrong!
Daarna Flash size goed gezet in menu: Tools->Flash Size->4MB (1MB SPIFFS)
Serial terminal output:
Flash real id: 001640E0
Flash real size: 4194304
Flash ide size: 4194304
Flash ide speed: 40000000
Flash ide mode: DIO
Flash Chip configuration ok.
ESP-01S
Created dinsdag 06 februari 2018
Info
Goed document om te lezen is de PDF van Ai-thinker: esp8266-esp-01-specs.pdf
Instellingen Arduino IDE
ESP-01S Temp sensor met DS18B20
Created donderdag 08 februari 2018
Libs
Deze sensor leest de DS18B20 temp sensor uit met:
# include <DallasTemperature.h>
https://github.com/milesburton/Arduino-Temperature-Control-Library
En verzendt de gegevens via MQTT met
# include <PubSubClient.h>
https://github.com/knolleary/pubsubclient
BEIDE libraries zijn gewoon via de ArduinoIDE lib manager te downloaden en te updaten.
Voorbeelden/bronnen
De voorbeelden in ArduinoIDE van pubsubclient zijn zeer goed en ook gebruikt als template. http://www.instructables.com/id/Remote-Temperature-Monitoring-Using-MQTT-and-ESP82/
Als voorbeeld van deepsleep, batterij status en JSON kan dit genomen worden: https://tzapu.com/minimalist-battery-powered-esp8266-wifi-temperature-logger/ https://github.com/tzapu/DeepSleepDHT22/blob/master/DeepSleepDHT22.ino
ESP-12S
Created donderdag 07 februari 2019
Info
Achtergrond info: esp8266-esp12s-specs.pdf
De ESP-12S
Heb ik hier gekocht: https://www.aliexpress.com/item/1PCS-ESP-12S-ESP-12F-upgrade-ESP8266-remote-serial-Port-WIFI-wireless-module-2016-New-version/32798087835.html
Deze ESP is een SMD versie, om deze op een experimenteer board te kunnen solderen heb je deze nodig: https://www.aliexpress.com/item/ESP8266-serial-WIFI-module-adapter-plate-Applies-to-ESP-07-ESP-08-ESP-12/32350499870.html
Pinlayout van de ESP-12S
Opmerkingen bij pinnen:
- Voor deep-sleep mode wordt GPIO16 met de Reset verbonden
- Bij opstarten moet GPIO15 laag zijn (met 10k) en GPIO2 moet hoog zijn (met 10k)
Adapter board
Gekocht voor $0,17: https://www.aliexpress.com/item/ESP8266-serial-WIFI-module-adapter-plate-Applies-to-ESP-07-ESP-08-ESP-12/32845959767.html Om de ESP-12S SMD behuizing op te solderen, hier zitten al weerstanden op van 10k op de CH_PD (naar VCC) en de op de GPIO15 pin naar GND. Volgens een verkoper op Aliexpress zou de middelste weerstand weggehaald moeten worden als de 5V regelaar niet gebruikt wordt op de achterkant. Bron: https://www.esp8266.com/viewtopic.php?f=13&t=6505
Voorbeeld schema voor de ESP-12S
Instellingen Arduino IDE
NodeMCU
Created zaterdag 26 januari 2019
De NodeMCU V3 (Lolin)
Heb ik hier gekocht: https://www.aliexpress.com/item/V2-4M-4FLASH-NodeMcu-Lua-WIFI-Networking-development-board-Based-ESP8266/32647690484.html Gebruikt de CH340G USB-TTL chip
Opmerking: Deze supergoedkope NodeMCU´s (rond 2 euro incl verzendkosten) worden blijkbaar niet heel grondig getest. Het duurde even voordat ik het doorhad, de print functioneerde namelijk redelijk normaal, alleen bij uploaden van firmware kreeg ik een timeout. Na controle bleken er 2 soldeerfouten in te zitten. Namelijk 2 pins maakten contact met elkaar en een andere pin zat met een grote kloder soldeer vast aan een nabijgelegen SMD weerstand. SMD is goed gesoldeerd, de headers zijn handmatig gesoldeerd. Na reparatie werkte de print goed.
Pinlayout van de NodeMCU V3
Bron: https://www.teachmemicro.com/nodemcu-pinout/
Blauwe onboard led
Op GPIO2 (D4) zit een blauwe led. Als deze pin ´0´ gemaakt wordt, gaat de led aan. Aan deze pin zit overigens ook de TXD1 (zie pinout hierboven)
Flash en Reset knop
Op de NodeMCU zit een Flash (FLASH) en een Reset (RST) knop. Tijdens het flashen van de firmware hoeft je niets te doen. Via USB worden de RS232 signalen DTR en RTS geschakeld:
- DTR schakelt de Flash knop (D3-GPIO0)
- RTS schakelt de Reset knop (RST)
Voeding
De NodeMCU kan gevoed worden via uUSB of via de Vin pin.
Programmeertalen
Op de NodeMCU zijn naast Arduino IDE met C ook interpreters beschikbaar met:
- Lua en
- Microython
Erg handig bij de interpreters is dat je direct op de hardware pins en andere zaken aan kan sturen. Handig bij prototypen van hardware. Misschien dat ik bij het prototypen iets van Lua of MicroPython gebruik om direct pinnen aan te sturen en uiteindelijk het programma te schrijven in C.
Verschillende IDE´s
Van de Python en LUA IDE´s is misschien de LuaLoader wel het meest volwassen, het lijkt nog een beetje in de kinderschoenen te staan. Persoonlijk maakt mij LUA of MicroPython niet zoveel uit.
Omdat ik ongeveer alles (JeeNodes, ESP01S) gebruik met de Arduino, en daar ook veel software al bij heb, blijf ik toch bij de Arduino IDE om de NodeMCU te programmeren. De IDE´s bij Python en LUA
NodeMCU met Arduino IDE
Bron:
- https://www.instructables.com/id/Quick-Start-to-Nodemcu-ESP8266-on-Arduino-IDE/
- https://randomnerdtutorials.com/flashing-nodemcu-firmware-on-the-esp8266-using-windows/
Arduino IDE
De NodeMCU is voor meerdere programmeertalen te flashen, zie hier https://nodemcu.readthedocs.io/en/master/en/getting-started/ In deze howto ga ik voor de methode om te programmeren met de Arduino IDE in C.
Net als bij de ESP-01S moet het ESP8266 board toegevoegd worden. Omdat ik de ESP-01S al gebruik was dit al ingesteld. Als dit al ingesteld is, ga naar stap 3.
Stap 1: Additional Boards setup
- Ga in Arduino-IDE naar menu File->Preferences:
- Vul in bij Additional Boards Manager URLs: http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Druk op OK
Stap 2: Toevoegen van het ESP8266 board
Open in Arduino IDE de ¨Boards manager¨:
- Tools->Boards->Boards manager…
- Zoek naar: esp8266
- En installeer de ¨esp8266 by ESP8266 Community¨
Stap 3: Voorbeeld programma uploaden
Dit is een voorbeeld programma om het blauwe ledje te laten knippperen.
Kopieër en plak dit stukje code in Arduino IDE en druk op Ctrl-U om te compileren en te uploaden naar de NodeMCU
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(2, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
NodeMCU met LUA
Created zaterdag 26 januari 2019
Bronnen:
- https://randomnerdtutorials.com/flashing-nodemcu-firmware-on-the-esp8266-using-windows/
- http://benlo.com/esp8266/esp8266QuickStart.html
Stap 1: Maak het image
GitHub: https://github.com/nodemcu/nodemcu-firmware
Maak de image. Er is een build server: https://nodemcu-build.com/
- Vul je email adres 2x in
- Laat de branch op master staan
- Laat de default modules, alleen extra MQTT aanvinken
- Klik op ¨Start your build¨
Je krijgt een email als de build start en als deze klaar is.
Stap 2: Flash het image
Bronnen:
Download de NodeMCU Firmware Programmer flasher: https://github.com/nodemcu/nodemcu-flasher/raw/master/Win64/Release/ESP8266Flasher.exe
Download de image file vanaf de email als de build klaar is.
Start de ESP8266Flasher.exe (is portable en hoeft niet geïnstalleerd te worden)
- COM Port instellen waar de NodeMCU aangesloten is
- Tabblad Config
- Vul pad en filenaam naar de firmware file in: C:\Users\Arjan\Downloads\nodemcu-master-integer.bin
- Start adres erachter, selecteer: 0x00000
- Voor de rest zijn de default instellingen goed:
- baudrate: 230400, Flash size: 4MByte, Flash speed: 40MHz, SPI Mode: DIO
Testen Evt is het resultaat te testen om RealTerm de starten op Baudrate: 115200 en je krijgt een LUA prompt.
Alternatieven voor flashen Windows/Linux/Mac
- Grafisch: PyFlasher
- Commandline: esptool.py
pip install esptool esptool.py –port COM4 write_flash -fm qio 0x00000 nodemcu-1.5.4.1-final-7-modules-2019-01-26-16-11-15-float.bin
- Grafisch, gebruikt esptool.py en wxPython: NodeMCU PyFlasher
Stap 3: IDE voor op de NodeMCU
ESPlorer
Bron: https://github.com/4refr0nt/ESPlorer
Download ESPlorer: https://esp8266.ru/esplorer/#download
Pak de ZIP file uit en start ESPlorer.bat om op te starten
Selecteer de goede COM port en klik op Open, het groene lampje ¨open¨ gaat branden
Op mijn NodeMCU V3 zit op GPIO2 (D4) een blauw led, die als test geschakeld kan worden:
gpio.mode(4, gpio.OUTPUT)
print(gpio.read(4),"\n")
gpio.write(4, gpio.LOW)
print(gpio.read(4),"\n")
tmr.delay(1000000)
gpio.write(4, gpio.HIGH)
print(gpio.read(4),"\n")
Hier staat een leidraad om met ESPlorer te werken: https://bigdanzblog.wordpress.com/2015/04/21/esp8266-nodemculua-saving-executing-and-compiling-script-files/
ESP8266 Lua Loader
Bron: http://benlo.com/esp8266/index.html#LuaLoader
Download de zip file hier: http://benlo.com/esp8266/index.html#
Pak deze uit, ga naar folder version 0.XX en start LuaLoader.exe
Hier staat een QuickStart guide: http://benlo.com/esp8266/esp8266QuickStart.html
NodeMCU met MicroPython
Created zondag 27 januari 2019
Bron:
Stap 1: Download het image
Download hier de laatste stable firmware bin file: http://micropython.org/download#esp8266
Stap 2: Flash het image
Bron: https://docs.micropython.org/en/latest/esp8266/tutorial/intro.html
Open een Cmd-Terminal in Windows met admin rechten en:
pip install esptool
esptool.py --port COM4 erase_flash
esptool.py --port COM4 --baud 460800 write_flash --flash_size=detect 0 esp8266-20190125-v1.10.bin
Test via Serial terminal
Start een serial terminal en type het volgende en het werkt als een normale Python interpreter:
>>> import machine
>>> pin = machine.Pin(2, machine.Pin.OUT)
>>> pin.on()
>>> pin.off()
Stap 3: Python op de NodeMCU
Er zijn verschillende IDE´s voor MicroPython, een aantal mogelijkheden zijn hieronder beschreven.
Atom plugin Pymakr
Installeer de package Pymakr in Atom en vul bij de instellingen het volgende in:
- Device address, je COM-poort, bijv: COM4
- Autoconnect on USB: uitvinken
Thonny
EsPy
https://github.com/jungervin/EsPy
Easy MicroPython (EMP)
uPyCraft IDE
Bron: https://randomnerdtutorials.com/install-upycraft-ide-windows-pc-instructions/
Download hier de laatste versie van uPyCraft: https://github.com/DFRobot/uPyCraft En start deze executable.