返回项目列表

基于STM32与i.MX6ULL的多设备采集系统

2026-07-22C/C++QtLinuxSTM32FreeRTOS

一个使用Linux开发板与STM32的上位机下位机项目。

项目简介

本项目是一个上位机+下位机系统。上位机基于Qt与野火i.MX6ULL mini开发板进行开发。下位机基于STM32与FreeRTOS环境开发。

  • 上位机用Qt完成UI界面开发。可实现实时采集数据展示、回溯历史数据、下位机控制等功能。
  • 下位机可实现采集温湿度传感器的数据,并将数据上传给上位机系统。与上位机的通信采用TCP协议完成。

硬件系统

下位机硬件系统

  • 主控芯片:STM32F103C8T6
  • 温湿度传感器:SHT30模块
  • 无线通信模块:ESP-01S(AT指令系统)
  • 按钮模块
  • OLED显示屏:在下位机上显示当前数据、设备id、上报频率等信息

上位机硬件系统

  • 野火i.MX6ULL mini开发板
  • 4.3寸电容触摸屏
  • ESP-01S模块

下位机-上位机通信

下位机与上位机通过ESP-01S实现通信。

  • 上位机的ESP-01S模块使用AP模式,上电后自动创建一个热点
  • 下位机的ESP-01S模块使用SAT模式,上电后自动连接上位机创建的热点

下位机上报数据

下位机上报温湿度传感器的数据协议为:ID:<下位机ID>,TEM:<温度值>,HUM:<湿度值>。其中:

  • 下位机ID是下位机的设备ID,该ID可以通过下位机的按键1、2进行修改。可选值为0~8,其中0被认为是不可用ID。上位机收到ID为0的设备的消息时,不进行处理。
  • 温度值湿度值均为浮点数,整数部分有3位(不足3位时补充前导0),小数部分有1位,例如005.8。温度值有+-前缀。

下位机心跳:ID:<下位机ID>。下位机保证每15秒至少上报一次数据。如果15秒内都没有温湿度数据上报,则上报一次心跳,用于保持下位机在线。如果上位机超过30秒(给予1倍容忍时间)未收到下位机的任何消息,则可认为下位机掉线。

上位机指令

目前支持2种上位机指令:

  • F:<秒数>:该指令用于让下位机修改上报数据的频率,单位为秒,必须是整数。
  • R::该指令用于让下位机立刻进行一次数据上报。

项目地址

目前下位机系统已经基本开发完毕,上位机系统正在开发中,项目地址为:https://gitee.com/LeeHojou/master-slaver-system/tree/master/stm32-slaver