You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
5 months ago | |
|---|---|---|
| .vscode | 5 months ago | |
| RT-Thread-PRJ | 5 months ago | |
| LICENSE | 5 months ago | |
| README.md | 5 months ago | |
README.md
小熊派RT-Thread IoT项目 - STM32L431 + ESP8266 + 华为云
📋 项目简介
这是一个基于STM32L431微控制器和RT-Thread实时操作系统的IoT项目,通过ESP8266 WiFi模块连接华为云IoT平台,实现传感器数据采集、LCD显示、按键控制和云端数据上报功能。
专注于RT-Thread实时操作系统的开发与应用,提供高效的嵌入式解决方案,适用于物联网、智能硬件等多领域。
🚀 主要特性
- 实时操作系统: 基于RT-Thread RTOS,支持多线程并发处理
- WiFi连接: 通过ESP8266模块实现WiFi网络连接
- 云平台集成: 支持华为云IoT平台MQTT协议数据上报
- 传感器支持: 集成BH1750光照传感器数据采集
- 人机交互: LCD显示屏 + 按键控制界面
- 模块化设计: 清晰的代码结构,易于扩展和维护
🛠️ 硬件平台
主控制器
- MCU: STM32L431RCT6 (ARM Cortex-M4, 256KB Flash, 64KB RAM)
- 时钟: 80MHz主频
- 低功耗: 支持多种低功耗模式
外设模块
- WiFi模块: ESP8266 (AT指令控制)
- 显示屏: LCD显示模块 (SPI接口)
- 传感器: BH1750光照传感器 (I2C接口)
- 按键: 支持按键事件处理
- LED: 状态指示灯控制
通信接口
- UART: 调试串口 + ESP8266通信
- I2C: 传感器数据读取
- SPI: LCD显示控制
- GPIO: LED控制和按键检测
📁 项目结构
RT-Thread-PRJ/
├── Core/ # STM32 HAL库核心文件
│ ├── Inc/ # 头文件
│ └── Src/ # 源文件
├── STM32CubeIDE/ # 项目主要代码
│ ├── CODE/ # 业务逻辑代码
│ │ ├── AT_code.c/h # ESP8266 AT指令和华为云连接
│ │ ├── code.c/h # 主要业务逻辑和线程管理
│ │ ├── E53_SC1.c/h # BH1750传感器驱动
│ │ └── key.c/h # 按键处理
│ ├── LCD/ # LCD显示驱动
│ ├── ebtn/ # 按键库
│ └── Debug/ # 编译输出
├── RT-Thread/ # RT-Thread配置
├── Drivers/ # STM32驱动库
└── Middlewares/ # RT-Thread中间件
⚙️ 功能模块
1. 多线程架构
- LED线程: LED状态控制和闪烁
- UART线程: 串口数据处理和调试输出
- ESP线程: WiFi连接和云端数据上报
- E53线程: 传感器数据采集
- LCD线程: 显示界面更新
2. 华为云IoT集成
- MQTT协议连接华为云IoT平台
- 支持设备属性数据上报
- 自动重连和错误处理
- 灵活的JSON数据格式
3. 传感器数据采集
- BH1750光照传感器数据读取
- 实时数据采集和处理
- 数据格式化和云端上报
4. 人机交互
- LCD实时显示系统状态
- 按键控制LED开关
- 串口调试信息输出
🔧 快速开始
环境要求
- IDE: STM32CubeIDE 1.19.0+
- 编译器: ARM GCC
- 调试器: ST-Link V2/V3
- 操作系统: Windows/Linux/macOS
硬件连接
STM32L431 连接说明:
├── ESP8266 (UART)
│ ├── TX -> PA2 (LPUART1_TX)
│ └── RX -> PA3 (LPUART1_RX)
├── BH1750 (I2C)
│ ├── SDA -> PB7 (I2C1_SDA)
│ └── SCL -> PB6 (I2C1_SCL)
├── LCD (SPI)
│ ├── MOSI -> PA7 (SPI1_MOSI)
│ ├── SCK -> PA5 (SPI1_SCK)
│ └── CS -> PA4 (SPI1_NSS)
└── LED -> PC13
安装教程
-
克隆项目 点击仓库首页下载ZIP或克隆仓库
-
配置华为云参数 编辑
STM32CubeIDE/CODE/AT_code.c文件中的配置:
// ========================================
// 华为云IoT平台配置参数 - 用户自定义区域
// ========================================
// WiFi配置
#define WIFI_SSID "Your_WiFi_Name"
#define WIFI_PASSWORD "Your_WiFi_Password"
// 华为云配置
#define HUAWEI_CLOUD_MQTT_HOST "your_mqtt_host"
#define HUAWEI_CLOUD_USERNAME "your_device_id"
#define HUAWEI_CLOUD_PASSWORD "your_device_secret"
#define HUAWEI_CLOUD_SERVICE_ID "your_service_id"
- 编译和下载
- 使用STM32CubeIDE打开项目
- 编译项目 (Ctrl+B)
- 下载到开发板 (F11)
📊 使用说明
1. 系统启动
- 连接串口调试工具 (115200, 8N1)
- 上电启动,观察系统初始化日志
- 等待WiFi连接和华为云MQTT连接成功
2. 数据上报
系统自动采集光照传感器数据并上报到华为云:
// 上报光照数据
int light_value = (int)ReadData.Lux;
HuaweiCloud_ReportAny_RAW("light", "d", &light_value);
// 上报LED状态
int led_status = HAL_GPIO_ReadPin(E53_SC1_LED_GPIO_Port, E53_SC1_LED_Pin);
HuaweiCloud_ReportAny_RAW("LED", "d", &led_status);
3. 按键控制
- 按下按键可以控制LED开关状态
- LED状态变化会自动上报到华为云平台
📈 数据格式
上报数据格式 (JSON)
{
"services": [
{
"service_id": "RTT_LED",
"properties": {
"light": 1234,
"LED": 1,
"temperature": 25.6
}
}
]
}
支持的数据类型
- 整数:
HuaweiCloud_ReportAny_RAW("LED", "d", &led_value) - 浮点数:
HuaweiCloud_ReportAny_RAW("temp", "f", &temperature) - 字符串:
HuaweiCloud_ReportAny_RAW("status", "s", status_string)
🔍 调试信息
系统提供详细的串口调试信息:
已启动 WiFi 线程!!!
BH1750 初始化成功
光照强度: 1234 lux
MQTT连接成功
数据上报完成
📈 性能指标
- 系统响应时间: < 100ms
- 数据上报频率: 1秒/次 (可配置)
- 内存使用: ~32KB RAM
- 功耗: 待机 < 10mA, 工作 < 50mA
🛠️ 软件架构
线程架构
RT-Thread 调度器
├── LED线程 (优先级: 0)
├── UART线程 (优先级: 1)
├── ESP线程 (优先级: 2)
├── E53传感器线程 (优先级: 3)
└── LCD显示线程 (优先级: 4)
通信架构
STM32L431
├── LPUART1 -> ESP8266 (AT指令)
├── I2C1 -> BH1750传感器
├── SPI1 -> LCD显示屏
└── USART2 -> 调试串口
🤝 参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支 (
git checkout -b feature/AmazingFeature) - 提交代码 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 新建 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
📞 反馈
- 问题反馈: 请在Issues中提交问题和建议
🙏 致谢
- RT-Thread - 实时操作系统
- STMicroelectronics - STM32 HAL库
- 华为云IoT - 云平台服务
- 小熊派开发板 - 硬件平台支持
🌟 特色功能
- 模块化设计: 各功能模块独立,易于维护和扩展
- 线程安全: 使用互斥锁保护共享资源,避免数据竞争
- 错误处理: 完善的错误处理机制,提高系统稳定性
- 配置简化: 用户只需修改几个核心参数即可适配不同项目
- 调试友好: 丰富的调试信息输出,便于问题定位
- 低功耗设计: 支持STM32L4系列的低功耗特性
⭐ 如果这个项目对您有帮助,请给个Star支持一下!
💡 欢迎提交Issues和Pull Requests来完善这个项目!