智能家居3 - 实现烟雾报警模块

基于51单片机的智能家居防火防盗报警系统设计 在面对各种各样的险情,我们可以通过不同的检测器-传感器检测到,并通过51单片机对传感器检测到的情况进行分析,并得出结论是否真的遇险,再将不同的险情对应上不同应对。措施改进问题,在水泵以水灭火基础原理上进行更加精细的区分,这其实就要求我们在对火情检测上做到更精细把控,而且耳听为虚、眼见为实,我觉得在GSM短信发送险情的基础上,还要让人们能够反过来看到自己家里当时的。警察的帮助,而且这种寻求警方帮助的方式还可以连接到更加远的警局,即使周围没有路过的警察,也可以通过这种方式获得更远的警察的帮助。 阅读详情

  这一模块的思路和前面的语言控制模块很相似,差别只是调用TCP 去控制

废话少说,放码过来

增添/修改代码

smoke_interface.c


#include <pthread.h>
#include <wiringPi.h>
#include <stdio.h>

#include "smoke_interface.h"
#include "control.h"
#include "mq_queue.h"
#include "global.h"
#include <netinet/tcp.h> // 设置 tcp 心跳 的参数

#define SMOKE_PIN   6 // 烟雾报警模块接的引脚
#define SMOKE_MODE INPUT

static int s_fd = -1;

static int  smoke_init(void)
{
    printf("%s|%s|%d\n",__FILE__,__func__,__LINE__);
    pinMode(SMOKE_PIN, SMOKE_MODE); // 引脚 和 模式配置
    return 0;
}

static void smoke_final(void) 
{
  // do nothing
}

static void* smoke_get(void *arg)
{
  // AA 55 45 00  55 AA -->  45 00 -->触发警报
  int status = HIGH; //低电平有效 -- 默认设置为高电平
  int switch_status = 0;  // 报警开关 -- 默认设置为不开 -- 0
  ssize_t byte_send = -1;
  unsigned char buffer[6] = {0xAA,0x55,0x00,0x00,0x55,0xAA};
  mqd_t mqd = -1;
  ctrl_info_t * ctrl_info = NULL; 

   if(NULL != arg)
        ctrl_info = (ctrl_info_t*)arg;
   if(NULL != ctrl_info)
         mqd = ctrl_info->mqd;      
    
    
    if((mqd_t)-1 == mqd)
    {
       pthread_exit(0);  
    }

  pthread_detach(pthread_self());  // 父子线程分离
  printf("%s thread start.\n",__func__);
  
  while(1)
  {
    status = digitalRead(SMOKE_PIN); // 读取当前引脚状态
    if(LOW == status) //  探测到烟雾 -- 发生报警
    {
     switch_status = 1; // 打开报警器开关
     buffer[2] = 0x45;
     buffer[3] = 0x00;// 低电平触发警报 --
     //蜂鸣器是低电平触发 --> 我们这里把buffer 修改得与beep匹配,方便与他产生联系
     printf("%s|%s|%d,  0x%x,0x%x,0x%x,0x%x,0x%x,0x%x\n",__FILE__,__func__,__LINE__,buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5]);
       
     byte_send = mq_send(mqd, buffer, 6,0); // 向消息队列里面发送数据 -- 接收到后语言模块会识别播报 - 火灾警报
      if (-1 == byte_send)
      {
        continue;
      }
    }
    else if(HIGH == status && 1 == switch_status) // 未探测到烟雾,并且报警器开关还没关闭 -- 关闭报警器开关
    {
      switch_status = 0; //  关闭报警器开关
      buffer[2] = 0x45;
      buffer[3] = 0x01;//警报结束
      printf("%s|%s|%d,  0x%x,0x%x,0x%x,0x%x,0x%x,0x%x\n",__FILE__,__func__,__LINE__,buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5]);
       
      byte_send = mq_send(mqd, buffer, 6,0);
      if (-1 == byte_send)
      {
        continue;
      }
    }
    sleep(5);

  }


      
  pthread_exit(0); // 退出线程
}


struct  control smoke_control ={
    .control_name = "smoke",
    .init = smoke_init,
    .final = smoke_final,
    .get = smoke_get,
    .set = NULL, //不需要实现 设置
    .next = NULL
};


struct control *add_smoke_to_ctrl_list(struct control *phead)
{
 return add_interface_to_ctrl_list(phead,&smoke_control);

}



smoke_interface.h

#ifndef ___SMOKE_INTERFACE_H___
#define ___SMOKE_INTERFACE_H___

#include "control.h"
struct control *add_smoke_to_ctrl_list(struct control *phead);



#endif

修改的main.c

#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <wiringPi.h>

#include "control.h"
#include "mq_queue.h"
#include "voice_interface.h"
#include "socket_interface.h"
#include "smoke_interface.h"
#include "receive_interface.h"
#include "global.h"

// msg_queue_create



int main() {
    pthread_t thread_id;
    struct control *control_phead = NULL;
    struct control *pointer = NULL;
    ctrl_info_t *ctrl_info = NULL;
    ctrl_info = (ctrl_info_t *)malloc(sizeof(ctrl_info_t));
    ctrl_info->ctrl_phead = NULL;
    ctrl_info->mqd = -1;

    int node_num = 0; // 统计节点数
    if(-1 == wiringPiSetup())// 初始化 wiringPi 库
    {
        perror("wiringPi Init");
        return -1;
    }

    // 创建消息队列
    ctrl_info->mqd = msg_queue_create();
    if(-1 == ctrl_info->mqd)// 创建消息队列失败
    {
        printf("%s|%s|%d, mqd= %d\n",__FILE__,__func__,__LINE__,ctrl_info->mqd);
        return -1;
    }
    
    //  头插法插入 , so 头一直在变化
    ctrl_info->ctrl_phead = add_voice_to_ctrl_list(ctrl_info->ctrl_phead);
    ctrl_info->ctrl_phead = add_tcpsocket_to_ctrl_list(ctrl_info->ctrl_phead);
    ctrl_info->ctrl_phead = add_smoke_to_ctrl_list(ctrl_info->ctrl_phead);
    ctrl_info->ctrl_phead = add_receive_to_ctrl_list(ctrl_info->ctrl_phead);
  
  

    pointer = ctrl_info->ctrl_phead;

    while(NULL!=pointer) // 对所有控制结构体初始化,并且统计节点数
    {
        if(NULL != pointer->init)
        {
             printf("%s|%s|%d   control_name = %s\n",__FILE__,__func__,__LINE__,pointer->control_name);
             pointer->init();
        }
        pointer = pointer->next;
        node_num++; // 统计节点数
    }

    // 根据节点的总数 --> 创建对应数目的线程
    pthread_t *tid = (pthread_t *)malloc(sizeof(int) *node_num);
    pointer = ctrl_info->ctrl_phead;

    for(int i=0;i<node_num;++i)//遍历所有节点
    {
       if(NULL != pointer->get){
          printf("%s|%s|%d   control_name = %s\n",__FILE__,__func__,__LINE__,pointer->control_name);
          pthread_create(&tid[i],NULL,(void *)pointer->get,(void *)ctrl_info); // 传入这个结构体参数,方便同时调用多组线程里面的API
       }
        pointer = pointer->next;
    }
    
     for(int i=0;i<node_num;++i)
     {
     pthread_join(tid[i],NULL);
     }

     for(int i=0;i<node_num;++i)
     {
      if(NULL != pointer->final)
          pointer->final(); // 接打开的使用接口关闭
      pointer = pointer->next;
     }
     
     msq_queue_final(ctrl_info->mqd);

     if(NULL != ctrl_info)
          free(ctrl_info); // 这个是malloc 堆区申请的内存 -->  需要手动的释放

     if(NULL != tid)
          free(tid);


     return 0;
}

编译执行:

编译:

make

发送到arm-64平台

scp ./obj/smarthome  orangepi@192.168.1.11:/home/orangepi

// 需要用到阿里云人脸识别接口,需要调用 py文件,一起传过去
 scp src/face.py  orangepi@192.168.1.11:/home/orangepi

执行:

sudo -E ./smarthome

基于ESP32的智能家居控制系统-微信小程序 一、 课题研究意义、现状及应用分析 1.1课题研究意义及现状 目前,科学技术发展十分迅速,其渗透到各行各业以及生活的方方面面,室内设计和高科技结合便出现了“智能家居”。所谓智能家居就是以居住场所为平台,利用物联网、传感器、智能控制技术将各种家用电器联系起来,实现居住环境的智能化、自动化、人性化。通过语音控制、远程控制、预约控制、个性化设计、一键控制等功能进一步提高生活的舒适性、便利性、安全性。 1.2应用分析 具体而言,利用多种传感器监测室内温度、湿度、光线强度、烟雾浓度、室内是否有人等信息自动调整空调、加 阅读详情

相关推荐

基于AT89C52单片机的GSM上报智能家居报警温度烟雾防盗系统

相反离开时触头就会马上断开.干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃管,管中装有两个铁质的弹性簧片电板,还灌有一种叫金属铑的惰性气体。其次,从工程意义上讲,本文所介绍的基于52控制器的和NRF24L01网络通信控制的家居环境监测及家居电器开关控制系统是在一定程度可用于实践的,以此来满足人们生活的多样化需要,提升人们的生活质量。智能家居是一个多功能的系统,包括家庭内部的安全防范、家居布线系统、家电控制、远程的视频监控系统等。

qq_3191153580的博客 1164

[单片机][STM32][HAL][MQ2] 烟雾报警

使用MQ2气体传感器模块,为您的下一个项目带来一个人工鼻子。这是一个强大的气体传感器适用于感测LPG,烟雾,酒精,丙烷,氢气,甲烷和碳一氧化碳在空气中的浓度。如果您打算创建一个室内空气质量监测系统;呼吸检查器或早期火灾探测系统,MQ2气体传感器模块是一个不错的选择。

嵌入式单片机实验室 8993

烟雾报警代码

通过STM89C51单片机控制烟雾传感器,通过AD0832数模转换和LCD1602来显示烟雾的浓度。

Arduino MQ烟雾浓度报警器

Arduino MQ烟雾浓度报警器硬件准备接线部分烟雾检测接线烟雾报警器接线代码部分烟雾检测烟雾报警器可能出现的问题效果展示 硬件准备 Arduino UNO MQ Sensor(MQ-型号随意) 有源无源蜂鸣器 LED灯(选配 ) 接线部分 烟雾检测接线 Arduino MQ Sensor 5V VCC GND GND A0 A0 D0 3 烟雾报警器接线 传感器 Arduino MQ Sensor 5V VCC GND GND A0 A0 D

BIgbossyii的博客 1万+

【Android】条形码/二维码扫描——ZXing源码分析

正在更新中 针对3.2.1版本源码 与其他版本代码可能会有出入,但核心思想基本不变。 首先从com.google.zxing.client.android包中的目录结构分析:Book:这个文件夹中有5个类: BrowseBookListener 实现了adapter的点击事项响应,通过获取ISBN,然后跳转到Google books中查询响应的详细信息。 SearchBookContents

年轻的学徒 2453

从ACTF2020看文件上传漏洞:你以为改后缀就完事了?这些坑我都帮你踩过了

本文通过ACTF2020的Upload题目深入剖析文件上传漏洞的复杂性和防御策略。文章揭示了常见误区,如仅修改文件后缀的局限性,并详细解析了绕过技巧和高级防御机制。从开发角度提供了构建安全上传功能的实用建议,帮助读者全面理解文件上传漏洞的本质与防护方法。

weixin_29278805的博客 246

五、51单片机 使用Proteus仿真烟雾报警器(仿真及代码)

本次设计以STC89C52单片机为控制核心,通过使用MQ-2烟雾传感器模块、LCD1602液晶显示模块、按键控制模块、蜂鸣器报警模板,实现对烟雾的检测。本次设计主要针对的是检测厨房空气中液化气、氢气等其他可燃气体的浓度并进行预警。本次设计的烟雾报警系统的设计成功的实现报警、烟雾浓度预警值和温度预警值的设定,烟雾浓度级别和温度的显示等功能,本方案设计的烟雾报警系统具有性能优越、成本低廉、反应速度快等优点,同时简单快捷的操作方式给使用者带来极大的方便。另外小伙伴们有什么想学的小项目,欢迎评论或私信留言。

m0_47235364的博客 1万+

AI漫剧实战:MiniMaxH3本地部署+ComfyUI工作流,6G显存出长视频

随着AI视频生成技术的普及,创作者开始追求在有限硬件条件下的本地化部署。本地部署不仅降低使用成本,更能获得对生成流程的完全可控性,这为高频次的内容生产提供了基础。以开源工作流引擎ComfyUI为依托,通过量化模型与显存优化,即便是6G显存的中端显卡也能流畅运行MiniMaxH3视频生成模型,输出60秒级别的AI漫剧片段。本文从视频生成原理出发,讲解模型选择、节点搭建、参数调优与提示词结构化设计,并延伸到剧本拆分、角色一致性控制、后期合成及平台变现路径,为AI漫剧创作者提供一套低成本、可复制的工程化方案。无论

weixin_29051149的博客 161

智能家居(2) —— 工厂模式实现烟雾报警

智能家居(2) —— 工厂模式实现烟雾报警 Linux工厂模式实现烟雾报警系统 mainPro.c(主函数) controlDevice.h(设备类) smokeAlarm.c(烟雾报警器) buzzer.c(蜂鸣器) 运行结果 智能家居目录

Zy_1213的博客 1640

fNIRS 公开数据集整理

关注“心仪脑”查看更多脑科学知识的分享。 关键词:数据整理、fNIRS 之前我们向大家推送了 Public Neuroscience Dataset 系列主题的第一期:《EEG公开数据集》,我们同时意识到大家对于神经科学公开数据集的需求。本期是该系列主题的第二期,我们在延续第一期初衷的基础上,整理了功能性近红外光谱(fNIRS)技术的公开数据集。 fNIRS 是一种非侵入性、便携且价格低廉的光学神经成像技术,它具有可观的空间和时间分辨率。因fNIRS技术问世较EEG晚了许多,所以应用此技术开展研究发.

psybrain的博客 4272

从零到一:FAST_LIO与FAST_LIO2算法环境搭建与实战评测

本文详细介绍了FAST_LIO与FAST_LIO2算法的环境搭建与实战评测,包括算法原理、环境配置避坑指南、源码编译技巧及性能对比。FAST_LIO2凭借ikd-tree数据结构在动态环境中表现优异,处理速度提升至15ms,内存占用降低40%。文章还提供了常见问题排查和进阶优化技巧,助力开发者高效实现SLAM应用。

weixin_29271053的博客 470

【本科毕业设计】基于单片机的智能家居防火防盗报警系统

随着社会的不断进步和科学技术、经济的发展,人们的生活水平得到很大的提高,人们愈加注重人身安全,因而也对防火防盗措施提出了新的要求。 本设计所做的智能家居控制系统包括室内信息智能监控功能、输入与实时显示功能、声光报警功能等。本文利用单片机结合传感器技术而开发设计了这一防火防盗报警系统。

cl°的博客 3万+

WPF基础系列六:MVVM框架

MVVM框架 文章目录MVVM框架前言一、MVVM框架简介1. 什么是MVVM?2. MVVM的优势3.MVVM的应用场景二、MVVM使用及示例 前言 在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界面时,逻辑代码修改很少,甚至不用修改。 与WinForm开发相比,我们一般在后置代码中会使用控件的名字来操作控件的属性来更新UI,而在WPF中通常是通过

iceberg7012的博客 2万+

基于51单片机的智能家居控制环境监测智能火灾烟雾报警灭火系统

由STC89C52单片机+LCD1602液晶显示屏+ADC0832模块+蜂鸣器+DHT11温湿度传感器 +烟雾传感器+LED+按键构成 具体功能: 1、LCD1602液晶第一行显示当前的烟雾值,第二行显示当前的温度和湿度值; 2、可以设置烟雾、温湿度上下限报警值。共4个按键:复位按键、减键、加键、设置键;设定的参数具有掉电保存,保存在STC单片机的内部,上电无需重新设置; 3、当烟雾值高于设定的报警值或温度湿度超出上下限范围,蜂鸣器和指示灯会发出声光报警; 4、当温湿度值低于或高于设定的范围时,相应的指示灯

叶绿体不忘呼吸 2780

T型三电平逆变器中点电位平衡详解

T型三电平逆变器(T-type Three-Level Inverter)是一种高效的多电平拓扑,相比传统NPC(Neutral Point Clamped)三电平逆变器,具有更低的开关损耗、更高效率和更简单的结构,尤其适用于中功率应用(如光伏逆变器、风电变换器和工业驱动)。(T-type Three-Level Inverter)中的应用已成为当前中高压功率变换领域(如光伏逆变器、储能PCS、电动汽车充电桩、风电并网和工业驱动)的热门方案。针对 T型逆变器,类似 NPC 的零序注入法适用。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 545

材料带隙预测(图神经网络)(⭐⭐)—— 用晶体图网络预测钙钛矿材料的能带隙,加速光伏材料筛选。技术栈:CGCNN、MEGNet、Materials Project数据集

钙钛矿太阳能电池以其高效率、低成本的优势迅速崛起,但传统“试错法”材料筛选效率极低,严重制约了光伏技术的迭代速度。近年来,基于图神经网络的材料带隙预测方法,特别是晶体图神经网络(CGCNN)和材料图网络(MEGNet),为这一问题提供了革命性的解决方案。本文系统梳理了材料带隙预测从传统计算到深度学习的演进历程,深入剖析了CGCNN与MEGNet的架构设计、数学原理及创新机制,详细阐述了Materials Project数据集的构建、特征工程与处理策略。

2201_76125393的博客 48

基于 STM32 单片机的智能家居烟雾 CO 检测系统

本文设计了一种基于STM32的智能家居烟雾CO检测系统,通过MQ-2和MQ-7传感器实时监测烟雾和CO浓度。系统采用模块化设计,包含数据采集、阈值判断、报警控制等子程序,当浓度超标时触发本地声光报警,并通过ESP8266无线模块推送预警信息至手机APP,同时联动开窗器和排气扇进行处置。测试结果表明,系统测量精度偏差小于4%,响应延迟低于1.5秒,能稳定运行72小时以上。相比传统设备,该系统实现了"监测-预警-联动"的全链条防护,但仍有温湿度补偿、多通信方式等改进空间。该设计为智能家居安全

2301_81142448的博客 1014

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

基于单片机的智能家居环境监控系统的设计

本设计完成一个可以监测温湿度、有害气体以及非法入侵的智能家居监控系统,包括主控模块、传感器模块、显示模块、报警驱动模块等。

咸鱼弟的博客 4万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

智能家居(1)—— 语音操控各类电器及烟雾报警模块引入

初步排查:烟雾线程占用CPU100%,怀疑是死循环。设计固件并烧录进去,文中所需命令在main.c中。嵌入式智能家居(学习两个月成果)单独建立一个文件夹用于舵机开关。SU-03T语音模块可前往。解决办法:加入延时函数。

m0_67664970的博客 414

基于ESP32的智能家居控制系统-微信小程序界面

一、 课题研究意义、现状及应用分析 1.1课题研究意义及现状 目前,科学技术发展十分迅速,其渗透到各行各业以及生活的方方面面,室内设计和高科技结合便出现了“智能家居”。所谓智能家居就是以居住场所为平台,利用物联网、传感器、智能控制技术将各种家用电器联系起来,实现居住环境的智能化、自动化、人性化。通过语音控制、远程控制、预约控制、个性化设计、一键控制等功能进一步提高生活的舒适性、便利性、安全性。 1.2应用分析 具体而言,利用多种传感器监测室内温度、湿度、光线强度、烟雾浓度、室内是否有人等信息自动调整空调、加

Huangxianlong的博客 1万+

基于单片机 STM32 的智能家居安防系统设计(程序+原理图+APP)

密码锁:确保家居安全,只有输入正确密码才能进入。温湿度采集:实时监测室内温湿度,提供舒适的居住环境。煤气烟雾检测:一旦检测到煤气或烟雾,立即触发报警。火灾报警:发现火灾隐患,及时通知用户并启动报警系统。人体红外或门磁防盗报警:通过人体红外或门磁传感器,预防非法入侵。远程照明控制:通过手机 APP 远程控制灯光,方便实用。实时时钟显示:精确显示当前时间,方便用户查看。OLED 显示:清晰展示系统状态和相关信息。WiFi 通信手机 APP 远程监控。

3254968421的博客 3823

51单片机烟雾温湿度检测系统

该系统采用51单片机作为主控芯片,结合烟雾传感器、温湿度传感器及报警模块,实现对环境参数的实时监测与报警功能。Proteus仿真验证了硬件设计的可行性,适用于工业安全、智能家居等场景。

jEk_8l2c的博客 426

orangePi zero2智能家居

利用先进的监听和响应机制,全面监控家居环境并实现智能控制。系统通过多线程技术,结合语音、网络、安全和消息处理模块,确保家居运营的安全性、便捷性和舒适性。此外,系统采用消息队列技术,优化指令和事件的处理流程,提高响应效率。

qq_59510647的博客 912

基于智能家居c语言程序代码,基于单片机的智能家居系统设计(附程序代码)

基于单片机的智能家居系统设计(附程序代码)(任务书,开题报告,外文翻译,论文10000字)摘要基于近年来通信电子技术的高速发展,使得一些原来可望不可及的事关民生的技术变为可能,条件允许的情况下,人们会积极努力的追求生活档次的提高。而这其中,安全、可靠、便捷、智能化的居室环境是提高人们生活水平的必要条件,因而也对防火防盗设备提出了新的要求。就目前市场上的防火防盗设备已经满足不了人们的需求了,因此新型...

weixin_29668665的博客 3487
上一篇: 从零开始实现自己的串口调试助手(2) - 实现串口配置和收发数据
下一篇: 智能家居5 - 实现处理线程
mx_jun
博客等级 码龄5年 1605粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值