欢迎使用代码讲解系统
本系统提供了完整的STM32智能家居代码讲解,包括硬件设计、传感器配置、工作模式、按键功能、模块介绍等内容。
系统特点
- 完整的硬件设计框图和引脚配置
- 详细的传感器通信协议说明
- 多种工作模式介绍(远程、手动、自动、定时等)
- 按键功能详细说明
- 各硬件模块的软件设计流程图
- 机智云平台交互说明
- main函数功能详解
使用说明
点击左侧导航菜单可以查看各个模块的详细介绍。模块介绍下包含各个硬件模块的详细说明。
硬件组成
硬件设计框图中间是STM32F103单片机,两边连接各种硬件设备。
硬件清单
| 序号 | 硬件名称 | 引脚 | 功能说明 |
|---|---|---|---|
| 1 | STM32F103单片机 | - | 主控芯片,控制所有外设 |
| 2 | DHT11温湿度传感器 | PA11 | 检测环境温度和湿度 |
| 3 | 土壤湿度传感器 | PA0 (ADC) | 检测土壤湿度 |
| 4 | 超声波测距模块 | PB12(Trig) PB13(Echo) | 测量距离 |
| 5 | BMP280气压传感器 | PA4(SCL) PA5(SDA) | 检测气压和温度 |
| 6 | 人体红外传感器 | PA1 | 检测人体活动 |
| 7 | OLED显示屏 | PB8(SCL) PB9(SDA) | 显示系统信息 |
| 8 | 蜂鸣器 | PA12 | 报警提示 |
| 9 | 风扇 | PA11 | 通风散热 |
| 10 | LED5W | PA5 | 高功率照明 |
| 11 | LED | PA5 | 普通照明 |
| 12 | 加热泵 | PA6 | 加热功能 |
| 13 | 补水泵 | PA7 | 补水功能 |
| 14 | 排水泵 | PA8 | 排水功能 |
| 15 | 增氧泵 | PA9 | 增氧功能 |
| 16 | 按键1 | PB3 | 功能键 |
| 17 | 按键2 | PB4 | 功能键 |
| 18 | 按键3 | PB5 | 功能键 |
| 19 | 按键4 | PB6 | 功能键 |
| 20 | 串口1(机智云) | PA9(TX) PA10(RX) | 与机智云平台通信 |
| 21 | 串口2(语音) | PA2(TX) PA3(RX) | 与语音模块通信 |
传感器引脚配置和通信协议
DHT11温湿度传感器
引脚:PA11,通信协议:单总线协议
土壤湿度传感器
引脚:PA0 (ADC),通信协议:模拟量采集
超声波测距模块
引脚:PB12(Trig) PB13(Echo),通信协议:超声波测距
BMP280气压传感器
引脚:PA4(SCL) PA5(SDA),通信协议:I2C
人体红外传感器
引脚:PA1,通信协议:数字电平信号
模式介绍
远程模式
通过机智云平台远程控制设备
手动模式
通过按键直接控制设备
自动模式
根据传感器数据自动控制设备
阈值设置
设置各种传感器数据的报警阈值
时间设置
设置系统的实时时钟
语音模式
通过语音命令控制设备
定时模式
设置定时任务,在指定时间自动执行
用户模式
支持手动、远程、语音三种控制方式
按键功能介绍
按键1
主要用于菜单导航和模式切换,在各模式下用于确认或返回
按键2
主要用于切换选项和参数,在各模式下用于切换不同的项目
按键3
主要用于增加数值或开启设备,在各模式下用于执行正向操作
按键4
主要用于减少数值或关闭设备,在各模式下用于执行负向操作
LED模块介绍
LED模块用于控制各种LED照明设备,包括普通LED和高功率LED5W。
主要功能
- LED_Init() - 初始化LED模块
- Led5WOn/Led5WOff() - 控制LED5W
- LedOn/LedOff() - 控制LED
- GpioDeviceOn/GpioDeviceOff() - 通用设备控制
DHT11模块介绍
DHT11模块用于检测环境的温度和湿度,采用单总线通信协议。
主要功能
- DHT11_Init() - 初始化DHT11传感器
- DHT11_Read_Data() - 读取温度和湿度数据
- DHT11_Read_Byte() - 读取一个字节数据
- DHT11_Check() - 检测传感器是否存在
蜂鸣器模块介绍
蜂鸣器模块用于报警提示,通过GPIO引脚控制蜂鸣器的开关。
主要功能
- Buzzer_Init() - 初始化蜂鸣器
- BuzzerOn() - 开启蜂鸣器
- BuzzerOff() - 关闭蜂鸣器
OLED模块介绍
OLED模块用于显示系统信息,采用I2C通信协议。
主要功能
- OLED_Init() - 初始化OLED显示屏
- OLED_Clear() - 清屏
- OLED_ShowString() - 显示字符串
- OLED_ShowChinese() - 显示中文
按键模块介绍
按键模块用于用户输入,采用外部中断方式检测按键。
主要功能
- Key_Init() - 初始化按键
- Key_GetNum() - 获取按键值
- Key_Scan() - 按键扫描
ADC模块介绍
ADC模块用于模拟量采集,将模拟信号转换为数字信号。
主要功能
- AD_Init() - 初始化ADC
- AD_GetValue() - 获取ADC原始值
- TS_GetData() - 获取土壤湿度数据
RTC模块介绍
RTC模块用于实时时钟,提供准确的时间信息。
主要功能
- MyRTC_Init() - 初始化RTC
- MyRTC_SetTime() - 设置时间
- MyRTC_ReadTime() - 读取时间
人体红外模块介绍
人体红外模块用于检测人体活动,输出数字电平信号。
主要功能
- BODY_HW_Init() - 初始化人体红外传感器
- BODY_HW_GetData() - 获取人体感应数据
超声波模块介绍
超声波模块用于测距,基于超声波飞行时间测量距离。
主要功能
- HCSR04_Init() - 初始化超声波模块
- HCSR04_GetValue() - 获取距离值
BMP280模块介绍
BMP280模块用于检测气压和温度,采用I2C通信协议。
主要功能
- BMP280Init() - 初始化BMP280传感器
- BMP280GetData() - 获取气压和温度数据
机智云交互介绍
userHandle函数
负责将设备数据上传到机智云平台,实时更新设备状态到云端。
gizwitsEventProcess函数
负责处理来自机智云平台的事件和指令,解析指令并执行相应的设备控制操作。
数据交互流程
- 设备启动并初始化WiFi模块
- 连接机智云服务器
- userHandle()上传数据
- gizwitsHandle()处理云端数据
- gizwitsEventProcess()处理事件
- 执行设备控制并更新状态
main函数功能
System_Init()
系统初始化函数,负责初始化所有硬件外设和系统模块。
main()
主函数,程序的入口点,负责系统主循环和整体控制。
ProcessCurrentMode()
处理当前模式,根据S_Mode的值调用对应模式的处理函数和显示函数。
ReadSensorData()
读取传感器数据,包括温湿度、土壤湿度、超声波距离、气压和人体感应数据。