Esp8266 y micropython

Articulo en desarrollo.

https://randomnerdtutorials.com/esp32-esp8266-micropython-web-server/
https://docs.micropython.org/en/latest/esp32/quickref.html
http://micropython.org/webrepl/

  • Sistema de archivos.

    • boot.py cuando arranca
    • may.py programa principal
  • Mostrar un archivo

    open('boot.py','r').read()
    
    f=open('boot.py','a')
    f.write('print(); \n')
    f.write('print("boot.py"); \n')
    f.close()
    
    
    La salida seria:
    # This file is executed on every boot (including wake-boot from deepsleep)\n
    #import esp\n
    #esp.osdebug(None)\n
    import uos, machine\n
    #uos.dupterm(None, 1) # disable REPL on UART(0)\n
    import gc\n
    #import webrepl\n
    #webrepl.start()\n
    gc.collect()\n
    
  • Restaurar boot original:

    f=open('boot.py','w')
    f.write('# This file is executed on every boot(wake-boot from deepsleep)\n#import esp\n#esp.osdebug(None)\nimport uos, machine\n#uos.dupterm(None, 1) # disable REPL on UART(0)\nimport gc\n#import webrepl\n#webrepl.start()\ngc.collect()\nprint(); \nprint("boot.py");')
    f.close()
    
  • ver archivo boot.py = cat boot.py

    open('boot.py','r').read()
    
  • Crear main.py

    f=open('main.py','w')
    f.write('print();\n\rprint("main.py");\n import machine,network,esp;\n')
    f.close()
    f=open('main.py','w');f.write('print();\nprint("main.py");\nimport machine,network,esp,time;\n');f.close();import main
    
  • ver archivo main.py

    open('main.py','r').read()
    
  • testear main.py

    import main.py
    
  • Comprobar

    print(esp.check_fw()); 
    

Codigo ap.py (arranca en modo punto de acceso y arranca la consola REPL via web ).

print("ap.py"); 
import machine,network,esp,time; 

ap_if=network.WLAN(network.AP_IF); 
ap_if.config(essid='esp8266',authmode=network.AUTH_OPEN); 
ap_if.active(True); 
print(ap_if.ifconfig()); 
 
import webrepl; 
webrepl.start();

crear el archivo ap.py desde la consola

f=open('ap.py','w')
f.write('print("ap.py"); ')
f.write('import machine,network,esp,time; ')

f.write('ap_if=network.WLAN(network.AP_IF); ')
f.write('ap_if.config(essid='esp8266',authmode=network.AUTH_OPEN); ')
f.write('ap_if.active(True);  ')
f.write('print(ap_if.ifconfig()); ')

f.write('import webrepl; ')
f.write('webrepl.start(); ')
f.close()

  • Para mostrar el archivo desde la consola:

    open('ap.py','r').read()
    
  • Para probar el archivo import ap


Codigo sta.py (arranca en modo cliente(station) y arranca la consola REPL via web )

print("sta.py"); 
import network; 
sta_if=network.WLAN(network.STA_IF); 
sta_if.active(True); 
sta_if.scan(); 
sta_if.connect("Honor 6X","polkawifi"); 
import webrepl; 
webrepl.start();

crear el archivo sta.py desde la consola

f=open('sta.py','w')
f.write('print("ap.py"); ')
f.write('import network; ')
f.write('sta_if=network.WLAN(network.STA_IF); ')
f.write('sta_if.active(True); ')
f.write('sta_if.scan(); ')
f.write('sta_if.connect("Honor 6X","polkawifi"); ')
f.write('import webrepl; ')
f.write('webrepl.start(); ')
f.close()
machine.reset()
import sta

https://www.instructables.com/id/MicroPython-on-an-ESP32-Board-With-Integrated-SSD1/
https://github.com/adafruit/micropython-adafruit-ssd1306

wget https://raw.githubusercontent.com/adafruit/micropython-adafruit-ssd1306/master/ssd1306.py

compruebo bus i2c

#import machine
i2c = machine.I2C(scl=machine.Pin(4), sda=machine.Pin(5))
i2c.scan()

deveria ver: (en el terminal)

MicroPython v1.10 on 2019-01-25; ESP32 module with ESP32
Type “help()” for more information.
>>> i2c = machine.I2C(scl=machine.Pin(4), sda=machine.Pin(5))
>>> i2c.scan()
[60]
>>>
Lo que quire decir que hay un dispositivo i2c en la direccion 60

compruebo pantalla oled

i2c = machine.I2C(scl=machine.Pin(4), sda=machine.Pin(5))
i2c.scan()
import ssd1306
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
oled.fill(0) 
oled.text('MicroPython Em50L', 0, 0)
oled.show()