This repository contains the firmware for a Human-Machine Interface (HMI) for a weather station. The project is designed to run on a microcontroller, specifically an ESP32, and provides a multi-page graphical user interface (GUI) on an OLED display.
-- main.py: The main application file. This firmware implements a non-blocking, multi-tasking system using uasyncio to handle keypad input, display updates on the OLED screen, and UART communication. It includes logic for a multi-page GUI and a simple demo sender for sensor data.
-- ssd1306.py: The MicroPython driver for the SSD1306 I2C OLED display. This library is used by main.py to control the display and render the GUI elements.
-- boot.py: The standard MicroPython boot-up file. It is currently empty but can be used for any initial hardware configuration or network setup.
-- pymakr.conf: A configuration file for the PyMakr VS Code extension, which defines project settings for development and deployment to the microcontroller.
-- Cooperative Multitasking: Uses uasyncio to run all tasks asynchronously, ensuring a smooth and responsive user experience. -- Multi-Page GUI: Displays different sets of information on an OLED screen, easily navigated by a keypad. -- Keypad Input: Scans a 4x4 membrane keypad to allow user interaction and data entry. -- UART Communication: Adheres to a predefined team protocol for sending and receiving messages with other subsystems.
- An ESP32 microcontroller board.
- An SSD1306 I2C OLEC Display
- A 4x4 membrane keypad
- The micropython firmware flashed onto the ESP32
- The PyMakr VS Code Extension
License This project is licensed under the MIT License - see the LICENSE file for details.