This demo uses ULP core to control temperature sensor and e-ink display using I2C.
- I2C: Communication with temperature && humidity and e-ink display
- ULP: Code that controls screen and sensor works on ULP core
- ESP32C6 DevkitC
- BMP280 + AHT20 temperature, humidity and pressue sensor module
- Waveshare 1.9inch Segment E-Paper Module
- M5Stack VAMeter
- BS170 N channel mosfet
| ESP32-C6 | Screen | Sensor | VAMeter | BS170 |
|---|---|---|---|---|
| 3v3 | VDD | VCC | OUT+ | NONE |
| 5 | SDA | SDA | NONE | NONE |
| GND | NONE | GND | OUT- | S GATE |
| 6 | SCL | SCL | NONE | NONE |
| 4 | RST | NONE | NONE | NONE |
| 5 | BUSY | NONE | NONE | NONE |
| 3 | NONE | NONE | NONE | G GATE |
| NONE | GND | NONE | NONE | D GATE |
make -j distclean
./tools/configure.sh esp32c6-devkitc:nsh
kconfig-merge -m .config PATH_TO_EXAMPLE/c6_ulp_eink/configs/espressif &&
make olddefconfig -s -j
make -j bootloader && make ESPTOOL_BINDIR=./ -s -j
make download ESPTOOL_PORT=/dev/ttyUSB0 ESPTOOL_BAUD=921600 ESPTOOL_BINDIR=./
When device boots up, it configures screen and sensor. After that sets the ULP code and then sleep. ULP core might wake up a bit late and throught that time screen shows all 0's. After ULP wakes up screen gets refreshed and then shows temperature and humidty value. After that LP-Core also sleeps and then wakes up to update values.
- Jumper on ESP32C6 removed, after that 3v3 and ground lines connected to the VAMeter (also Joulescope).
- Booting up: 19-23 mA
- Deep Sleep + ULP awake: 1 mA
- Screen Refresh: 2.3 - 2.5 mA
- Deep Sleep + ULP sleep: 48-60 uA