- MicroPython and ESP32
- MicroPython
- MicroPython libraries
- MicroPython PiP Package Index
- ESP8266 Documentation (ESP32 not documeneted yet)
- ESP32 Firmware
- Adafruit MicroPython Resources
- MicroPython BME280 Sensor Driver
- NTP Library
- Hackster MicroPython Mqtt Project
- Espressif esptool
- Mosquitto Broker
- PuTTY
- Serial Support on the Windows Subsystem for Linux
See Adafruit MicroPython Flasing How-to Tutorial
- Install esptool
- Erase Flash
- Deploy MicroPython Firmware
On Windows
pip install esptool
On Mac and Linux
sudo pip install esptool
esptool.py --port /dev/ttyUSB0 erase_flash
Download ESP32 Firmware and deploy to ESP32.
esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash 0x0000 firmware.bin
Install the following uPip packages. You need to estabish a network connection on the ESP32 board then upip.install the umqtt packages.
import network
import upip
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("Wifi SSID", "Wifi password")
upip.install('micropython-umqtt.simple')
upip.install('micropython-umqtt.robust')
Deploy the boot.py and main.py files using the Adafruit ampy package.
See Adafruit MicroPython Tool (ampy) for information on copying files to the ESP32.
pip install adafruit-ampy
ampy --port /dev/ttyUSB0 put boot.py
ampy --port /dev/ttyUSB0 put main.py
# boot.py
import network
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("Wifi SSID", "Wifi password")
# main.py
from umqtt.robust import MQTTClient
import machine
import utime as time
import gc
import bme280
# Wifi connect established in the boot.py file. Uncomment if needed
# import network
# sta_if = network.WLAN(network.STA_IF)
# sta_if.active(True)
# sta_if.connect("NCW", "malolos5459")
client = MQTTClient("esp32-01", "192.168.1.122")
pin5 = machine.Pin(5, machine.Pin.OUT)
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21))
bme = bme280.BME280(i2c=i2c)
def checkwifi():
while not sta_if.isconnected():
time.sleep_ms(500)
print(".")
sta_if.connect()
def publish():
count = 1
while True:
pin5.value(0)
checkwifi()
v = bme.values
msg = b'{"MsgId":%u,"Mem":%u,"Celsius":%s,"Pressure":%s,"Humidity":%s}' % (count, gc.mem_free(), v[0][:-1], v[1][:-3], v[2][:-1])
client.publish(b"home/weather", msg)
pin5.value(1)
count = count + 1
time.sleep(20)
client.reconnect()
publish()
Install Putty for your platform. Connect at 115200 baud rate