Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ESP8266
【24嵌入式设计大赛】基于RT_Thread的智能家居安防检测系统
发布于 2024-09-17 23:51:10 浏览:202
订阅该版
[tocm] 本智能家居安防检测系统主控使用STM32F103C8T6这款经典的微控制器,通过串口控制ESP8266,使用MQTT协议连接FastBee开源物联网平台,将数据传输到远程平台,可以实时获取家庭中的安放数据,提高家具安全性,使用技术让生活更加美好。下文将对系统进行你更详细的说明。 ## 一、系统组成 系统主控: STM32F103C8T6 通信模块: ESP8266 温度检测模块:DHT11 甲烷检测模块:MQ4 门磁开关 报警灯: RGB三色灯 显示屏: 0.96 OLED显示屏 物联网平台:FastBee开源物联网平台。 设备通过WIFI MQTT协议传输到物联网平台,上传温度、湿度、门状态、甲烷浓度等数据到平台,当数据有人闯入或者甲烷浓度过高时候,设备三色灯调整为红色进行本地报警,同时可通过远程服务器查看异常数据信息,即使处理安防问题。 ![xitong.png](https://oss-club.rt-thread.org/uploads/20240917/d864b435289f8e3ca59fbebac277b9bd.png) ## 二、核心代码 部分代码展示 ```c void mqtt_task_entry(void *parameter) { uint32_t count = 0; uint8_t door_status = 0, fire_status = 0; uint16_t adc_value; char temp[8] = { 0x00 }; DHT11_Data_TypeDef dht11_Data; /* USER CODE BEGIN 2 */ printf("start application\r\n"); // 使能空闲中断 __HAL_UART_ENABLE_IT(&huart3, UART_IT_IDLE); HAL_UART_Receive_DMA(&huart3, (uint8_t *)Uart_Frame_Record.Data_RX_BUF, RX_BUF_MAX_LEN); // 启动DMA接收 // 连接路由器 ESP8266_STAInit(); rt_thread_mdelay(1000); if (wifi_connect_status != WIFI_GOT_IP) { while(ESP8266_STAConnect((char *)Wssid, (char *)Wpassword)); } // 连接MQTT 服务器 printf("ready to connect to mqtt server\r\n"); mqtt_task_init(); mqtt_task_subcribe(); while(1) { if (count++ > 300) { count = 0; adc_value = ch4_get_average_value(5); door_status = HAL_GPIO_ReadPin(DOOR_GPIO_Port, DOOR_Pin); fire_status = HAL_GPIO_ReadPin(FIRE_GPIO_Port, FIRE_Pin); dht11_get_tempHumi(&dht11_Data); printf("get adc value %d, door:%d, temp:%.2f, humi%.1f\r\n", adc_value, door_status, dht11_Data.temperature, dht11_Data.humidity); sprintf(temp, "%.1f ", dht11_Data.temperature); oled_show_string(60, 3, (unsigned char *)temp, 1); sprintf(temp, "%.1f ", dht11_Data.humidity); oled_show_string(60, 5, (unsigned char *)temp, 1); sprintf(temp, "%d ", adc_value); oled_show_string(60, 7, (unsigned char *)temp, 1); // logic if (0 == door_status || adc_value > 1500) { HAL_GPIO_WritePin(GPIOB, LED_R_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB, LED_G_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, LED_B_Pin, GPIO_PIN_RESET); }else { HAL_GPIO_WritePin(GPIOB, LED_R_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, LED_G_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB, LED_B_Pin, GPIO_PIN_RESET); } if (adc_value > 1000) { adc_value = 1000; } mqtt_task_report(adc_value, door_status, dht11_Data.temperature, dht11_Data.humidity); } rt_thread_mdelay(10); } } ``` 获取甲烷浓度 ```c uint16_t ch4_get_value(void) { // 启动ADC转换 HAL_ADC_Start(&hadc1); // 等待转换完成,第二个参数表示超时时间,单位ms HAL_ADC_PollForConversion(&hadc1, 10); return HAL_ADC_GetValue(&hadc1); } uint16_t ch4_get_average_value(uint8_t times) { uint32_t temp_val=0; uint8_t t; float Voltage; uint16_t ppm; for(t=0;t
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
小驿物联
这家伙很懒,什么也没写!
文章
4
回答
5
被采纳
0
关注TA
发私信
相关文章
1
关于ESP8266的配网
2
at device跑esp8266, 总是提示缓冲区不够,应该怎么解决?
3
at device跑esp8266提示连接超时
4
ESP8266 连接问题
5
AT组件配网问题 ESP8266微信配网
6
请问一下esp8266能在at指令组件下支持ap模式吗
7
esp8266用paho-mqtt出现溢出
8
ONENET+esp8266连接报错
9
ESP8266通过smartconfig配网?
10
esp8266 WiFi名设成中文后 打不开RT_Thread Settings
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部