登录系统

用户名或密码错误

导航菜单

首页
硬件组成
传感器配置
模式介绍
按键功能
模块介绍
LED模块
DHT11模块
蜂鸣器模块
OLED模块
按键模块
ADC模块
RTC模块
人体红外模块
超声波模块
BMP280模块
机智云交互
main函数

欢迎使用代码讲解系统

本系统提供了完整的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()

读取传感器数据,包括温湿度、土壤湿度、超声波距离、气压和人体感应数据。