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:

  1. Druk de RESET in
  2. Druk de PROG in
  3. Laat de RESET los
  4. Laat de PROG los
  5. Nu kun je met de Arduino IDE nieuwe code uploaden

Programma starten

Om de geflashte code te runnen doe het volgende:

  1. 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.

  1. Ga naar menu: File->Examples->ESP8266->CheckFlashConfig
  2. Zet de Flash size in menu: Tools->Flash Size->512K (64K SPIFFS)
  3. 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:

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:

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

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:

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

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

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

https://thonny.org/

EsPy

https://github.com/jungervin/EsPy

Easy MicroPython (EMP)

http://www.1zlab.com/ide/#/

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.