- A floor heating controler device that is designed to operate 4 separate zones with TWAs (Thermal Wax Actuators) and 4 PT1000 temperature sensors per zone. The device is able to to get up to a specified temperature and will hold it there by use of a PI controller.
- The device is designed to be connected to a main controller, which can monitor it, communicate with it and set its set point temperature all through the MODBUS communication protocol.
- NOT YET TESTED Ability to connect to wireless thermostats using Zigbee and set temperature and retrieve temp reading.
- A STM32WB55 Nucleo board was used to vevelop the softwrae. Running freeRTOS with multiple threads - MODBUS thread, PI thread, temperature ADC thread.
- IO_MODULE_proj //main STMCubeIDE project folder
| - Core
| - Inc
| - main.h
| - IO_Config.h //configuration file, sets the number of rooms
| - app_freertos.h // io_module_t structure decleration and enums used for registers and coils
| - ModbusConfig.h //configuration file for Modbus
| - Src
| - main.c
| - app_freertos.c //code for PID, temperature threads and other used functions
| - PID0.c //functions used to calculate PID values
| - Middlewares/Third_Party
| - FreeRTOS/Source //freeRTOS files
| - MODBUS-LIB //Modbus library folder
| - OLED_SSD1306 //OLED library folder (configured but not initialized)
- IO_MODULE_proj_Zigbee_FreeRTOS //project folder with Zigbee
- Temperature set point values are stored in "Holding_Registers_Database", see app_freertos.h to see addresses.
- The MODBUS library used is a fork of Modbus-STM32-HAL-FreeRTOS, the fork is available here
- Both ADC and UART have DMA enabled.
- MODBUS - thread "StartTaskModbusSlave", timer "TimerT35", semaphore. Found in Modbus.c
- ADC - thread "CalculateTemp_Thread". Found in app_freertos.c
- PI control - thread "ControlTask", timer "ControlExecTim and "TwaControlTim"
- Captured packets from Zigbee
Contributor(s) | Contribution |
---|---|
r0tary | Modbus implementation, freeRTOS implementation |
Dimi2509 | ADC implemenattion, PI control implementation, freeRTOS implementation |
rausitis | Zigbee implementation, freeRTOS implementation |
Virtualiden-bot | Zigbee implementation |
Azerio102 | PI control implementation |