====== System Control ====== {{youtube>KcwmSME05C0? }} The System Control device, the main component, utilizes an [[https://www.wemos.cc/en/latest/s3/s3_mini.html|ESP32 S3 Mini]] and a LCD display (128x64). The main purpose was to control the LEDs for the day/night cycle. ===== Introduction ===== The main microcontroller is an ESP32 S3 Mini. Its form factor is ideal for a small enclosure, and its processing power is sufficient for all tasks the control center requires. To enable user input, I created a custom PCB that holds the ESP32. This board features six tactile buttons, which are configured as a D-Pad (four directions), a select button, and a back button. The LCD displays a custom user interface via a dedicated library built on top of [[https://github.com/olikraus/u8g2|u8g2]]. ===== Extensibility ===== This system is built to be highly extensible. For this purpose, I designed a wireless system for indoor use based on Bluetooth LE. This decision was primarily driven by two factors: firstly, my desire to gain experience with BLE in a new project, and secondly (and more importantly), the aim to ensure independence from any specific MCU. Currently, I'm using an ESP32, which supports both Wi-Fi and BLE. However, I also plan to test other microcontrollers, such as those from the STM32 family (for instance, the [[https://www.st.com/en/microcontrollers-microprocessors/stm32wb-series.html|STM32WB-Series]], which offers strong BLE capabilities), to maintain this flexibility. ===== Technical Details ===== Each client advertises a specific service. The System Control scans all nearby BLE devices and filters for this service UUID. This service includes a 'capabilities' characteristic, which transmits the client's capabilities once the System Control enables notifications for this characteristic. This allows the System Control to build its UI dynamically, according to the received data. More in-depth information will be provided once the MVP is complete. ===== Clients ===== The current list of the clients, which can be connected to the system: * [[..:warnemuende:lighthouse:start|]] * [[..:warnemuende:miniature_town:start|]] ===== Source Code ===== [[https://github.com/mars3142/system_control|Github]] Action: {{https://github.com/mars3142/system_control/actions/workflows/esp32_build.yml/badge.svg?nocache&.png}}