介绍
智能家居是在物联网的影响之下的物联网化的体现,它的概念最早出现于美国,利用先进的计算机、嵌入式、网络通信、综合布线技术等技术,将与家居生活有关的各种子系统有机的结合在一起。随着大数据,云计算,可穿戴设备,人机交互,物联网等技术的不断兴起和发展,智能家居开始由概念逐步的进入到现实生活中。智能家居在美国日本新、加坡德国已经得到了广泛的运用,并且获得了很快的发展。由于诸多原因,中国的智能家居的发展相对缓慢,但是随着国家的政策的扶持与规范引导、消费观念的形成、智能城市建设的逐步深入和完善、物联网技术的发展与兴盛,我国的智能家居前景非常广阔。根据《中国智能家居设备[4]行业发展环境与市场需求预测分析报告前瞻》预计,国内的智能家居行列将以年均19.8%的速率增长。所以这就对人才的需求更加紧迫。 本次设计实现了一个基于树莓派的智能家居系统,可以对家庭环境进行实时监测和控制,提高居家安全性和舒适度。该系统采用了多种传感器和模块,包括温湿度传感器、烟雾传感器、光敏传感器和LED灯光控制模块,实现了对家庭环境的多项监测和控制功能。同时,通过服务器实现了数据的存储和可视化,方便管理员对环境数据进行分析和管理。该系统采用了MQTT协议进行通信(可以连接阿里云物联网平台)可以满足不同场景下的需求。
系统方案
通过对智能家居系统的整体需求分析,利用温湿度传感器、光敏传感器,MQ2烟雾传感器等采集环境中的数据构成家庭环境监控系统,通过传感器采集环境数据并实时上传至手机客户端或者电脑端可以实时查看家庭环境监测数据。
(1)树莓派为硬件中心用于控制整个系统的运行。
(2)温湿度模块:通过温湿度传感器采样卧室温度。
(3)蜂鸣器模块:用于当烟雾浓度出现异常数据时,报警使用。
(4)光敏电阻模块:实现光照强度的采集。
(5)MQ2烟雾传感器模块:实现烟雾浓度的采集,一旦烟雾浓度超过一定阈值,就进行蜂鸣器的报警。
(6)LED三色灯模块:小程序端可以控制灯的亮灭。
(7)服务端:实现数据可视化,显示各个模块的信息。
(8)服务器采用阿里云物联网服务器
最终实现的功能:整个项目分为3个部分:1.树莓派硬件端(智能家居硬件端) 2. 阿里云物联网服务器(web网页端) 3. 手机小程序(手机端) 运行流程:
(1)树莓派硬件端通过WIFI连接到阿里云物联网平台上传采集的传感器数据,在web网页上可以看到设备上传的数据。
(2)手机小程序通过阿里云物联网平台的接口获取设备上传的数据在页面上实时显示出来。
(3)手机小程序点击页面上的控制按钮,可以向阿里云服务器发送指令,服务器再将指令转发给树莓派设备,树莓派设备收到数据之后完成对硬件设备的控制。
系统框图
硬件连接及实物图
代码概览
/*********************************************************************************
* Copyright: (C) 2024 YunQi
* All rights reserved.
*
* Filename: mqtt.c
* Description: This file
*
* Version: 1.0.0(25/04/24)
* Author: dengleen
* ChangeLog: 1, Release initial version on "25/04/24 06:17:58"
*
********************************************************************************/
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <mosquitto.h>
#include <libgen.h>
#include <getopt.h>
#include <stdlib.h>
#include <time.h>
#include <signal.h>
#include "ds18b20.h"
#include "logger.h"
#include "sht20.h"
#include "adc_mq2.h"
#include "adc_light.h"
#include "mqtt.h"
#include "conf.h"
#include "pwm.h"
#include "led.h"
int g_stop = 0;
mqtt_ctx_t mqtt_ctx;
int retain = 0;
int mid, mid1;
void mqtt_clean(struct mosquitto *mosq);
static void my_message_callback(st