Hvordan programmere en ESP8266 (ESP-12F)
ESP8266. Øverst ser dere en ESP-12F og under en adapterplate som er laget for å gjøre montering enklere.

Hvordan programmere en ESP8266 (ESP-12F)

Den største forskjellen på en NodeMCU og en barebone ESP8266 er at den første kommer ferdig lastet med firmware og den andre kommer helt tom, og selvsagt det at en NodeMCU er ferdig montert.

Denne er ferdig montert og lastet med firmware, så her er det bare å plugge i en micro USB-kabel.

NodeMCU Denne er ferdig montert og lastet med firmware, så her er det bare å plugge i en micro USB-kabel.

Men som tidligere nevnt så er NodeMCU lite egnet til batteridrift pga sitt høye strømforbruk. Den bruker ca 100 ganger så mye strøm i dvalemodus sammenlignet med ESP-12F. Derfor anbefaler jeg ESP-12F til batteriprosjekter som skal kjøre i månedsvis på ett sett batterier.

Programmer du trenger

For å komme i gang med lasting av firmware og koden din så trenger du å installere noen programmer.

I dette eksemplet så bruker jeg esptool og PlatformIO:

Bygge ny firmware

Det finnes et par måter å gjøre dette på, men jeg anbefaler å bruker skytjenesten som du finner her: https://nodemcu-build.com/

Her velger du bare default bygg av master branchen. Alt du trenger av andre moduler laster du senere via PlatformIO.

Når bygget ditt er klart sitter du igjen med en fil som heter noe ala:
nodemcu-master-7-modules-2019-08-27-09-39-28-float.bin

Opplasting av firmware

Først må du koble opp alt du trenger og det gjøres på denne måten:

Slik kobler jeg opp ESP-12F for å laste opp firmware og programvare.

Koblingsskjema for opplasting. Slik kobler jeg opp ESP-12F for å laste opp firmware og programvare.

Merk! RXD på CP2102 kobles mot TXD på ESP-12F og TXD mot RXD. Det er egentlig logisk, men veldig lett å glemme.

Opplasting av firmware som du har bygget i steget over.

$ esptool.py --baud 115200 --port /dev/cu.SLAB_USBtoUART write_flash -fm dio 0x00000 nodemcu-master-7-modules-2019-08-27-09-39-28-float.bin

Når du kjører kommandoen bør du se noe ala dette:

esptool.py v2.7
Serial port /dev/cu.SLAB_USBtoUART
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 84:f3:eb:fb:a3:d0
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0240
Compressed 434176 bytes to 280929...
Wrote 434176 bytes (280929 compressed) at 0x00000000 in 24.8 seconds (effective 140.2 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Når det er klar må du koble av VCC, for så å koble den på igjen.

Du er nå klar for å laste opp programvaren din.

Jeg har skrevet mer om dette i en egen artikkel: Kom igang med NodeMCU - 101

Kjøre koden

Slik tester jeg at koden fungerer. Du må selvsagt bytte ut CP2101 med en annen strømkilde når du skal sette dingsen i produksjon.

Koblingsskjema for kjøring av kode. Slik tester jeg at koden fungerer. Du må selvsagt bytte ut CP2101 med en annen strømkilde når du skal sette dingsen i produksjon.

Dersom du ønsker å se output når du kjører koden kan du ha RX og TX tilkoblet.

Her har jeg latt RX og TX være tilkoblet for å kunne se output i terminalen.

Koblingsskjema for kjøring av kode med output. Her har jeg latt RX og TX være tilkoblet for å kunne se output i terminalen.

Når du kobler til strømmen må du være rask og kjøre kommandoen:

$ pio serialports monitor -b 115200

Du vil da se outputen fra koden din. Her er et eksempel fra hundehusovervåkningen min:

--- Miniterm on /dev/cu.SLAB_USBtoUART  115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
..........................WiFi connected, IP: 127.0.0.10

WiFi connected with IP: 127.0.0.10
Attempting MQTT connection: [ESP8266Client-e054] : Connected to MQTT!
Publish message: { "chipId": 16491472, "freeHeap": 47072, "ip": "127.0.0.10", "ssid": "KozeBodil" }
Publish message: { "chipId": 16491472, "sw": "nodemcu_mqtt_home_sensors" }
Publish message: { "chipId": 16491472, "wifiOfflinePeriode": 9586, "resetReason": "External System" }
Publish message: { "chipId": 16491472, "voltage": 3.41 }
Publish message: { "chipId": 16491472, "temperature": nan, "pressure": nan, "humidity": nan }
Publish message: { "chipId": 16491472, "waterTemp": -127.0 }
Publish message: { "chipId": 16491472, "espTotalRunTime":  9792 }
Publish message: { "chipId": 16491472, "wifiConnectTime":  7493 }
Publish message: { "chipId": 16491472, "wifiOnlineTime":   294 }
Publish message: { "chipId": 16491472, "mqttConnectTime":   175 }
Publish message: { "chipId": 16491472, "FW_VERSION": 1015 }
Checking for firmware updates.
ChipId: 16491472
Firmware version URL: xxxxxxxxxxxxxxxxxxxxx
Current firmware version: 1015
Available firmware version: 1015
Already on latest version

WiFi is now offline.WiFi disconnected...
Entering deep sleep mode for 300 seconds...

Jeg blir veldig glad dersom jeg hører fra deg. Delta i Facebook-gruppen vår.