目录
一 项目说明
① 设计框架
② 功能说明
③ 硬件说明
④ 软件说明
二 项目代码
<1> mainPro.c 主函数
<2> InputCommand.h 控制设备头文件
<3> contrlDevices.h 外接设备头文件
<4> bathroomLight.c 泳池灯
<5> livingroomLight.c 卧室灯
<6> restaurantLight.c 餐厅灯
<7> upstairLight.c 二楼灯
<8> fire.c 火焰传感器
<9> beep.c 蜂鸣器
<10> voiceContrl.c 语音模块
<11> socketContrl.c 服务器
三 项目演示
四 项目问题总结
问题一
问题二
问题三
问题四
五 项目相关知识点整理
一 项目说明
① 设计框架
● 项目架构采用简单工厂模式来设计,将语音识别,TCP服务器设计成链表的每个节点,形成控制工厂。
● 将餐厅灯,卧室灯,二楼灯,泳池灯,蜂鸣器,火焰检测模块,也设计成链表的每个节点,形成设备端工厂。
● 基于这种架构保证项目的稳定性和功能拓展性,在添加新功能的时候,只需要添加一个链表节点文件文件就可以。
● 不管是设备端还是控制端,在实际调试过程中又涉及到临界资源的竞争,所以采用多线程来解决这个问题。
● 语音处理用的是SU-03T模块的二次开发,对串口数据进行修改并整合到树莓派的串口通信中去。
② 功能说明
● 语音模块识别语音来控制各个灯的开关,基于串口通信来配置语音命令的内容。
● 搭建TCP服务器,用socket网络通信的方式控制各个灯的开关,手机客户端发送指令到电脑服务器端来实现控制功能。
● 火灾报警,火焰检测模块结合蜂鸣器开发。接收火焰状态,检测有火源靠近时,蜂鸣器输出低电平发出警报声响,并在终端显示火灾危险提示,检测没有火源时,蜂鸣器输出高电平,停止报警声。
● 实时监控,将摄像头模块安装于树莓并配置树莓派摄像头的接口参数,打开摄像头,写入树莓ip地址及端口即可。
③ 硬件说明
树莓派开发板(3B),继电器组,房屋模型,蜂鸣器,语音模块,火焰检测模块,电池盒,摄像头,杜邦线,灯具,USB-TTL模块(串口调试)
④ 软件说明
SecureCRT8.0(树莓派终端),sourceinsight(代码编辑),filezilla(文件传输),AiThinker Serial Tool(串口调试),NetAssist(网络调试)。文章来源:https://www.toymoban.com/news/detail-436653.html
二 项目代码
文章来源地址https://www.toymoban.com/news/detail-436653.html
<1> mainPro.c 主函数
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "contrlDevices.h"//外接设备
#include "InputCommand.h"//控制
struct InputCommander *pCommandHead = NULL;
struct Devices *pdeviceHead = NULL;
struct InputCommander *socketHandler = NULL;
int c_fd;
//外设的设备查询
struct Devices *findDeviceByName(char *name,struct Devices *phead)
{
struct Devices *tmp = phead;
if(phead == NULL){
return NULL;
}else{
while(tmp != NULL){
if(strcmp(tmp->deviceName,name) == 0){
return tmp;
}
tmp = tmp->next;
}
return NULL;
}
};
//控制设备查询
struct InputCommander *findCommandByName(char *name,struct InputCommander *phead)
{
struct InputCommander *tmp = phead;
if(phead == NULL){
return NULL;
}else{
while(tmp != NULL){
if(strcmp(tmp->commandName,name) == 0){
return tmp;
}
tmp = tmp->next;
}
return NULL;
}
};
//控制灯函数,用于语音线程
void Command(struct InputCommander *CmdHandler)
{
struct Devices *
到了这里,关于基于ARM树莓派实现智能家居:语音识别控制,Socket网络控制,火灾报警检测,实时监控的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!