Micropython ir ESP8266

Greitam rezultatui gauti naudoju MicroPython. Python - profesionali, lengvai išmokstama programavimo kalba. Sintaksė panaši į žmonių kalbą ir palyginus su kitomis (Arduino, C++, Java) yra labai paprasta.

Čia trumpai surašau kaip paruošti modulį ESP8266 ESP-12-F darbui su Micropython. Naudojama OS - Fedora Linux. Windows vartotojams komandos kažkiek skiriasi, bet principas tas pats.

Reikalingi programiniai įrankiai

  • esptool.py - firmware atnaujinimui
  • ampy - failų perkėlimui iš kompiuterio į ESP8266

Įdiegiama komandomis:

sudo pip install esptool
sudo pip install adafruit-ampy 

Naujausio firmware įkėlimas

ESP8266 plokštei skirtą firmware (liet. programinė aparatinė įranga :) galima rasti adresu http://micropython.org/download/#esp8266

Šiuo momentu naujausia versija - esp8266-20190316-v1.10-227-g696549d2e.bin
Atsisiunčiam:

cd /tmp
wget http://micropython.org/resources/firmware/esp8266-20190316-v1.10-227-g696549d2e.bin

Išvalom ESP atmintį ir įkeliam atsisiųstą firmware:

# išvalom
esptool.py --port /dev/ttyUSB0 erase_flash
# įkeliam
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20190316-v1.10-227-g696549d2e.bin

REPL

REPL (Read Evaluate Print Loop) - tai interaktyvi sąsaja, kuri ypač patogi realiu laiku komunikuoti su ESP8266. Galima rašyti po vieną komandą ir iš karto matyti rezultatą arba stebėti įkeltos aplikacijos vykdymo log'ą.

Prisijungus paprastai spaudžiamas enter ir turi pasimatyti simboliai >>>. Dar galima tiesiog parašyti help() ir spausti enter - ekrane pasirodys bendra naudojimo informacija.

Jeigu simbolių >>> nėra, reikia spausti Ctrl-c keletą kartų, kad nutraukti bet kokią plokštėje vykdomą programą.

Prisijungimui prie REPL naudoju screen.

screen /dev/ttyUSB0 115200

from machine import Pin
led = Pin(2, Pin.OUT)
help(led)
led.on()


Rezultatas:

Norint išeiti iš screen reikia spausti Ctrl-a, tada k, tada y. Arba Ctrl-a tada rašyti :quit ir spausti enter.

Daugiau info apie REPL http://docs.micropython.org/en/latest/esp8266/tutorial/repl.html.

Failų sistema

Paprastas būdas pamatyti įkeltų failų sąrašą:

screen /dev/ttyUSB0 115200
import os
print(os.listdir())

Rezultatas turi būti toks: ['boot.py']. boot.py ir main.py yra du spec. failai, kurie paleidžiami automatiškai įjungus plokštę. boot.py skirtas plokštės konfigūracijai o pagrindinė programa rašoma į main.py.

Komandos failų perkėlimui iš kompiuterio į ESP:

ampy --port /dev/ttyUSB0 put boot.py
ampy --port /dev/ttyUSB0 put main.py

Demonstracinė programa

Programa main.py

from machine import Pin
import time

led = Pin(2, Pin.OUT)
while True:
    led.on()
    time.sleep(0.5)
    led.off()
    time.sleep(0.5)

Perkėlimas:

ampy --port /dev/ttyUSB0 put main.py

Kiek atminties?

Skirtingi ESP8266 moduliai turi skirtingus atminties dydžius. Paprastas būdas patikrinti:

screen /dev/ttyUSB1 115200
>>> import esp
>>> esp.flash_size()
4194304

Nuorodos