====== 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 [[hardware:esp32:start|ESP32]], which supports both Wi-Fi and BLE. However, I also plan to test other microcontrollers, such as those from the [[hardware:stm32:start|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 ===== In order to fully utilize the capabilities of the [[https://en.wikipedia.org/wiki/Bluetooth_Low_Energy|Bluetooth Low Energy]] standard, I have moved away from my original approach, which involved a custom configuration format transmitted via [[https://en.wikipedia.org/wiki/JSON|JSON]]. I will now adhere to the official BLE protocol, structuring the data using its defined services, characteristics, and descriptors and using minimal custom data. The main MCU is a [[hardware:esp32:s3:start|]], in particular a [[https://www.wemos.cc/en/latest/s3/s3_mini.html|Lolin S3 Mini]]. It is capable of WiFi and BLE and has a small footprint. I'm planning to create a new revision with a [[hardware:esp32:c6:start|]] in the future, so I could use Zigbee, if needed. At first I thought, I need the full power of the ESP32-S3, but now I'm not sure, that I even need a dual core. The complete definition of the BLE protocol adapted to my system can be found in the [[.:ble:start|]] section. ===== Clients ===== The current list of the clients, which can be connected to the system: * [[..:warnemuende:lighthouse:start|]] * [[..:warnemuende:miniature_town:start|]] ===== Repository ===== You can find the source code and other in the [[https://git.mars3142.dev/model-railway/system-control|git repository]]. ==== Software ==== TBD ==== Hardware ==== The hardware part was created within [[software:kicad:start|]] and it will be also in the git repository. The schematics is very simple. {{ :project:maerklin:system_control:system_control_schematic.png?600 |}} These are the latest PCBs, which I created. The manufacturing is done by [[sponsor:pcbway:start|]], but it's an empty PCB, so I need to add the components to it later. {{:project:maerklin:system_control:pcb_front.png?330 |}} {{ :project:maerklin:system_control:pcb_back.png?330|}} ==== Mechanical ==== {{:project:maerklin:system_control:3d_drawing.png?400 |}} After creating the PCB, I needing a housing. So I started [[software:onshape:start|]] and imported the STEP file from [[software:kicad:start|]]. Some hours later and I got something useful. But this was not the final result. I did some iterations and ended up with a really good housing. You can see the transparent render from [[software:onshape:start|]], which are excellent. I will not release the project files (because it's for my personal project), but maybe I recreate it someday in the future within [[software:freecad:start|]] and then I release it in the repository. {{:project:maerklin:system_control:housing_front_transparent.png?320|}} {{:project:maerklin:system_control:housing_back_transparent.png?320|}}