一、FreeRTOS:构建物联网智能家居的基石
在深入探讨物联网智能家居的具体应用之前,我们需要了解一个重要的基础概念:实时操作系统(RTOS)。RTOS 是一种专门为嵌入式系统设计的操作系统,它能够提供实时调度、任务管理、内存管理等功能,保证系统在预定的时间内完成关键任务,这对于需要快速响应和高可靠性的物联网设备至关重要。
二、项目介绍
项目使用光线传感器、温度传感器、红外传感器、WIFI模块等电子元件,同时结合qt应用搭建了一个多种场景下的家居安全与环境智能控制系统
三、功能介绍
3.1硬件功能
- led照明
- oled显示
- 人员活动检测
- TCP连接上位机
- 实时时钟显示
- 蜂鸣器高温报警
- 接收上位机数据并进行相应处理
- 不断发送环境数据给上位机
3.2软件功能
可远程设置温度报警阈值
可远程设置人员活动时长(人员活动时长即当红外传感器在这个时长内没有检测到人员活动时会触发如自动关灯设置)
- 实时显示单片机发送的环境数据
- 远程操控LED灯
四、器材清单
正点原子stm32f103ZET6战舰开发板,红外对管、蜂鸣器、GY39、eps826601s、stlink、qt开发环境
五、代码详解
首先单片机初始化,在初始化过程中使用串口2通过esp826601s连接上位机,连接上位机时esp8266wifi要和上位机电脑端连接同一WIFI,初始化初始化完毕后会有一个创建开始任务并启动任务调度器的代码,这些代码要移植好freeRTOS后才可以使用,在开始任务start_task中创建了其他的任务,由于代码过长这里只展示部分代码
初始化代码展示
int main(void)
{
delay_init(); //延时函数初始化
uart_init(115200); //初始化调试串口
LED_Init(); //LED引脚初始化
I2C_GPIO_Config(); //gy39IIC配置
KEY_Init(); //按键初始化
EXTIX_Init(); //按键外部中断初始化
EXTI1_Init(); //红外对管外部中断初始化
LCD_Init(); //LCD显示屏初始化
POINT_COLOR=RED; //LCD选用红色字体
RTC_Init(); //rtc实时时钟初始化
Beep_Init(); //蜂鸣器引脚初始化
Serial_Init(); //wifi模块串口初始化
esp8266_connect_TCP();//使用esp8266连接上位机
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//在freeRTOS中默认选择中断分组四
//创建开始任务
xTaskCreate(