This repository contains drivers for various components available on the M5StickC Plus platform. All drivers are written in pure Micropython and are intended to be used with the generic Micropython build for ESP32-based boards.
import random import machine import axp192 import colors import pcf8563 import st7789 # Set up AXP192 PMU i2c = machine.I2C(0, sda=machine.Pin(21), scl=machine.Pin(22), freq=400000) pmu = axp192.AXP192(i2c, board=axp192.M5StickCPlus) print("Battery Status: {:.2f} V".format(pmu.batt_voltage())) # Set up BM8563 RTC (clone of the NXP PCF8563) rtc = pcf8563.PCF8563(i2c) print("Current Date and Time: {}".format(rtc.datetime())) # Set up ST7789 TFT spi = machine.SPI(1, baudrate=20_000_000, polarity=1, sck=machine.Pin(13, machine.Pin.OUT), miso=machine.Pin(4, machine.Pin.IN), # NC mosi=machine.Pin(15, machine.Pin.OUT)) tft = st7789.ST7789(spi, 135, 240, reset=machine.Pin(18, machine.Pin.OUT), dc=machine.Pin(23, machine.Pin.OUT), cs=machine.Pin(5, machine.Pin.OUT), buf=bytearray(2048)) c = colors.rgb565( random.getrandbits(8), random.getrandbits(8), random.getrandbits(8), ) tft.fill(c) tft.text("Hello World", 10, 30, colors.WHITE, c)
Using the M5StickC ENV Hat:
import dht12 # Hat I2C hat_i2c = machine.I2C(1, sda=machine.Pin(0), scl=machine.Pin(26), freq=400000) # DHT12 temperature and humidity sensor rht = dht12.DHT12(hat_i2c) temp, humidity = rht.measure() print("Temp/Humidity: {}°C/{}%".format(temp, humidity)) # BMP280 temperature and pressure sensor prt = bmp280.BMP280(hat_i2c, mode=bmp280.MODE_FORCED) temp, pressure = prt.measure() print("Temp/Pressure: {}°C/{}Pa".format(temp, pressure)) # Groove I2C gr_i2c = machine.I2C(sda=machine.Pin(32), scl=machine.Pin(33), freq=400000) # SGP30 indoor air quality sensor voc = sgp30.SGP30(gr_i2c) voc.set_absolute_humidity(sgp30.absolute_humidity(temp, humidity)) eco2, tvoc = voc.measure() print("eCO2/TVOC: {}ppm/{}ppb".format(eco2, tvoc))
Some of the modules in this repository make use of micropython.const
to optimize memory usage when deployed in pre-compiled bytecode form.
The following modules are derived from third-party sources:
st7789
: Directly based on devbis/st7789py_mpy by Ivan Belokobylskiy (License: MIT)pcf8563
: Micropython port of tuupola/pcf8563 by Mika Tuupola (License: MIT)
Contributions are welcome! Please read and follow the Code of Conduct and make sure to acknowledge the Developer Certificate of Origin when contributing.