Hardware-ESP8266
ESP8266 Link to heading
Info Link to heading
Datasheet: esp8266ex_datasheet_en.pdf
Max ratings Link to heading
Voeding: +3V t/m +3,6V GPIO pin: -0.3V t/m Vcc+0,3V
GPIO Pin max. stroom Link to heading
Elke GPIO pin kan de volgende maximale stromen hebben:
- 12mA naar 3,3V
- 20mA naar GND
Stroomverbruik Link to heading
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 Link to heading
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 Link to heading
Created donderdag 07 februari 2019
Programmeren Link to heading
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 Link to heading
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 Link to heading
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 Link to heading
Flash size Link to heading
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 Link to heading
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 Link to heading
Created dinsdag 06 februari 2018
Info Link to heading
Goed document om te lezen is de PDF van Ai-thinker: esp8266-esp-01-specs.pdf
Instellingen Arduino IDE Link to heading
ESP-01S Temp sensor met DS18B20 Link to heading
Created donderdag 08 februari 2018
Libs Link to heading
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 Link to heading
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 Link to heading
Created donderdag 07 februari 2019
Info Link to heading
Achtergrond info: esp8266-esp12s-specs.pdf
De ESP-12S Link to heading
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 Link to heading
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 Link to heading
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 Link to heading
Instellingen Arduino IDE Link to heading
NodeMCU Link to heading
Created zaterdag 26 januari 2019
De NodeMCU V3 (Lolin) Link to heading
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 Link to heading
Bron: https://www.teachmemicro.com/nodemcu-pinout/
Blauwe onboard led Link to heading
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 Link to heading
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 Link to heading
De NodeMCU kan gevoed worden via uUSB of via de Vin pin.
Programmeertalen Link to heading
Op de NodeMCU zijn naast [Arduino IDE met C](#Index:HuisAutomatisering:ESP8266:NodeMCU:NodeMCU met Arduino IDE) ook interpreters beschikbaar met:
- [Lua](#Index:HuisAutomatisering:ESP8266:NodeMCU:NodeMCU met LUA) en
- [Microython](#Index:HuisAutomatisering:ESP8266:NodeMCU:NodeMCU met MicroPython)
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 Link to heading
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](#Index:HuisAutomatisering:ESP8266:NodeMCU:NodeMCU met Arduino IDE) om de NodeMCU te programmeren. De IDE´s bij Python en LUA
NodeMCU met Arduino IDE Link to heading
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 Link to heading
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 Link to heading
- 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 Link to heading
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 Link to heading
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 Link to heading
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 Link to heading
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 Link to heading
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 Link to heading
ESPlorer Link to heading
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 Link to heading
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 Link to heading
Created zondag 27 januari 2019
Bron:
Stap 1: Download het image Link to heading
Download hier de laatste stable firmware bin file: http://micropython.org/download#esp8266
Stap 2: Flash het image Link to heading
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 Link to heading
Er zijn verschillende IDE´s voor MicroPython, een aantal mogelijkheden zijn hieronder beschreven.
Atom plugin Pymakr Link to heading
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 Link to heading
EsPy Link to heading
https://github.com/jungervin/EsPy
Easy MicroPython (EMP) Link to heading
uPyCraft IDE Link to heading
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.