智能创客,中国最大的极客空间,智能平台,免费教学,视频教程,手把手教你创造儿时梦想!

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 22514|回复: 43
打印 上一主题 下一主题

WIFI作品DIY教程09-《人体红外检测》安防入侵报警功能

  [复制链接]

110

主题

396

帖子

2329

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2329
QQ
跳转到指定楼层
楼主
发表于 2015-1-15 11:58:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
上篇WIFI作品DIY教程07-《wifi家居网关》家居控制中心zigbee/nrf24l01等完成了家居网关。

当我们上班、外出时,有人入侵我们的房子,想要偷东西或做坏事时:
人体红外检测功能就会发送警报字符到网关(或直接接响家中报警器),网关再处理到上传互联网,然后我们手机就会收到警报信息。
然后再通过Wifi摄像头,查看一下家中环境,确保是人还是猫猫狗狗,再做相应的处理。




我们需要的配件:人体红外板HC-SR501传感器nrf24l01(或zigbee等)




第一部分:人体红外HC-SR501介绍

红外探测器就是靠探测人体发射的10μm左右的红外线而进行工作的。
人体发射的10μm左右的红外线通过菲涅尔滤光片增强后聚集到红外感应源上。
红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。

HC-SR501原理图。



第二部分:下载编译源代码
1、安装CH340驱动

在drivers目录里找到CH340驱动,然后按说明安装(之前安装了就不用再安装了)。


2、源代码
[C] 纯文本查看 复制代码
/*
 *NRF24l01针脚连接线
 * MISO -> 12
 * MOSI -> 11
 * SCK -> 13
 * Configurable:
 * CE -> 8
 * CSN -> 7
*/
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

int sid=1;//模块类型
int nid=4;//模块编号

//声名变量
const unsigned long interval = 1000;
unsigned long last_sent;

int rentival=0;
int renti_PIN=A5;

//NRF24l01
unsigned long nrf24l01nowlast;
char nrf24l01buff[33]={0};
char nrf24l01Data;
int nrf24l01i=0;


void setup()
{
    Serial.begin(115200);

    char client[10]={0};//client
    sprintf(client,"clie%d",sid); 
    //初始化Mirf,用于NRF24l01收发
    Mirf_Init(0,client,sid);

   pinMode(renti_PIN, INPUT);

    Serial.println("zwifi_renti_sensor");
}

void loop()
{

  unsigned long now = millis();
  if ( now - last_sent >= interval  )
  {
    last_sent = now;

    rentival=0;    
    run_renti();

    if(rentival==HIGH){   
      char data[10]={0};  
      sprintf(data,"%d",rentival);   
      send_data(data);
    }

  }


}

//初始化Mirf 0初始化1为接收2为发送
void Mirf_Init(int txrx,char *server,int channel){
    //初始化Mirf,用于NRF24l01收发        
    if(txrx==0)  {     
      Mirf.spi = &MirfHardwareSpi;
      Mirf.init();
      Mirf.setRADDR((byte *)server);//设置接收地址
    }

    if(txrx==1)  {     
      Mirf.setRADDR((byte *)server);//设置接收地址
    }
    if(txrx==2)  {
      Mirf.setTADDR((byte *)server);//设置发送地址
    }

    Mirf.payload = sizeof(char);//收发字节
    Mirf.channel = channel;
    Mirf.config();
}

//NRF24l01发送函数
void Mirf_Send(int channel,char *server,char *str){
  Mirf_Init(2,server,channel);
  int bufi=0;
  for(bufi=0;bufi<strlen(str);bufi++){//循环发送
    char words=str[bufi];//发送的字符
    Mirf.send((byte *)&words);//发送命令
    while(Mirf.isSending()){//等待发送完闭
    }
    delay(50);//延时,否则可能出现发送丢失现象
    //Serial.print(words);
  }
  //Serial.println(""); 
}





void run_renti()
{    
    rentival=digitalRead(renti_PIN);
    Serial.println(rentival,DEC);
    delay(100);
}


//
void send_data(char *data){

    char server[10]={0};//server
    sprintf(server,"serv%d",1);
    //Serial.println(server);

    char updateData[33]={0};
    char front[10]={0};
    //memcpy(front,body,9);
    sprintf(front," {ck%03d%03d",sid,nid);
    sprintf(updateData,"%s%s}",front,data);   
    Serial.println(updateData);
    Serial.println();

    Mirf_Send(1,server,updateData);

    char client[10]={0};//client
    sprintf(client,"clie%d",sid);
    Mirf_Init(1,client,sid);  

}




刷写arduino程序选哪个板?
请选择板是Arduino Uno,并记得选对对应的串口。

刷写ardruino源代码时,提示库不存在?
请联系qq610854837下载zwifi资料,软件下载目录里的arduino-1.0.5,里面包含了教程使用的所有库。



将代码进行编译下载到开发板上。

3、源代码说明
代码的功能:当有高电平时,就调用nrf24l01和zigbee发送给网关!
void run_renti()
{   
    rentival=digitalRead(renti_PIN);//获取是高电平还是低电平。
    Serial.println(rentival,DEC);
    delay(100);
}


//如果是高电平,向网关发送{ck00x00xdata}格式的字符。
if(rentival==HIGH){   
      char data[10]={0};  
      sprintf(data,"%d",rentival);   
      send_data(data);
    }


//网关接收到就会写入数据库,这一步网关原来的代码已经自动实现!


第三部分:测试人体检测感应和通信

打开:http://192.168.1.1/znck007/mysqltest.php?mode=select


点击查看数据库记录,会看人体传感器发来的高电平数据。
因为我们设置sid是1和4,所以在数据库对应是001,004,1就是高电平数据。

同时也可以用数据库软件Navicat for MySQL查看数据记录!





第四部分:关于报警和手机提醒的说明

具体的教程已经交大家如何diy了,但如何用到我们的现实中来呢?打如有人就响起警报,或直接发送信息到手机等。


1、响警报(由于属于二次开发,所以目前只提供思路)
我们需要购买一个报警器,连接到人体红外板的某一脚针,人体红外板就是Arduino的r3板,使用arduino控制报警器就可以实现该功能了!

2、手机提醒
手机提醒原来我们在WIFI作品DIY教程04-《WIFI烟雾煤气报警器》过一些介绍,是通过发邮件,发信息的方式来提醒。
主要需要修改我们的后台运行程序WIFI作品DIY教程06-《openwrt后台程序》控制mysql、串口通信等


在/mnt/sda1/www/cgi-bin里的znckgbrun就是python脚本,我们要在里面增加一个实现POST发送邮件的功能。



在解码函数下面,可以判断如果是sid=001,nid=004(人体红外的编号),发来的数据,就可以调用BasePost(url,data),然后就可以像烟雾煤气报警器一样发送邮件,手机信息啦。

3、手机app提醒(以后会开发开源app)。
原理:当云端api收到人体报警,然后直接通知手机提醒。app实现起来就更人性化了,我们也在加油,编写好开源给大家!





《WIFI作品DIY教程系列》
WIFI作品DIY教程01-《wifi开发板》介绍和联网等配置教程
WIFI作品DIY教程02-《openwrt摄像头》3D外壳和diy介绍
WIFI作品DIY教程03-《WIFI音响/MP3播放器/电台》
WIFI作品DIY教程04-《WIFI烟雾煤气报警器》
WIFI作品DIY教程05-《家居服务器》web server(php+mysql+uhttpd)
WIFI作品DIY教程06-《openwrt后台程序》控制mysql、串口通信等
WIFI作品DIY教程07-《wifi家居网关》家居控制中心zigbee/nrf24l01等
WIFI作品DIY教程08-《智能开关》电灯开关、插座(nrf24l01/zigbee)
WIFI作品DIY教程09-《人体红外检测》安防入侵报警功能

《Arduino开源智能家居DIY教程系列》
Arduino开源智能家居《花絮1》zigbee小底板DIY成功
Arduino开源智能家居《认识Zigbee》zigbee功能和自组网介绍
Arduino开源智能家居《zigbee开发板》手机/按键点亮LED
Arduino开源智能家居01《网关》升级版网关正式教程(zigbee)
Arduino开源智能家居02《温湿传感器》什么样温湿度才适居
Arduino开源智能家居03《开发板套件》学习zigbee家居-性价比高
Arduino开源智能家居04《插座开关》手机控制:网扇、空调...
Arduino开源智能家居05《红外线》手机红外线控制电器

《百元智能家居DIY教程系列》
《智能家居网关》DIY制作图文教程01-百元智能家居系列
《智能温湿度》DIY制作图文教程02-百元智能家居系列
《智能插座》DIY制作图文教程03-百元智能家居系列
《智能电灯开关》DIY制作图文教程04-百元智能家居系列
《手机红外线》DIY制作图文教程05-百元智能家居系列
关注@智能创客  微信:znck007(打造DIY创客平台)







分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持1 反对反对
回复

使用道具 举报

0

主题

13

帖子

72

积分

注册会员

Rank: 2

积分
72
沙发
发表于 2015-1-16 08:40:46 | 只看该作者
看来是我太快了,楼主还没有写完吧
回复 支持 反对

使用道具 举报

0

主题

8

帖子

114

积分

注册会员

Rank: 2

积分
114
板凳
发表于 2015-1-16 09:56:03 | 只看该作者
好像是还没写完
回复 支持 反对

使用道具 举报

110

主题

396

帖子

2329

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2329
QQ
地板
 楼主| 发表于 2015-1-16 13:25:39 | 只看该作者
老催 发表于 2015-1-16 09:56
好像是还没写完

这篇教程快写完了。其实最重要是代码都写完了,可以用了的。
回复 支持 反对

使用道具 举报

0

主题

8

帖子

114

积分

注册会员

Rank: 2

积分
114
5#
发表于 2015-1-16 16:40:50 | 只看该作者
#include
#include
#include
#include
这几个库文件没有?
回复 支持 反对

使用道具 举报

110

主题

396

帖子

2329

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2329
QQ
6#
 楼主| 发表于 2015-1-16 17:35:18 | 只看该作者
老催 发表于 2015-1-16 16:40
#include
#include
#include

已更新
回复 支持 反对

使用道具 举报

0

主题

18

帖子

352

积分

中级会员

Rank: 3Rank: 3

积分
352
7#
发表于 2015-1-27 09:29:26 | 只看该作者
我是来学习的。留个名~
回复 支持 反对

使用道具 举报

0

主题

29

帖子

92

积分

注册会员

Rank: 2

积分
92
8#
发表于 2015-5-23 20:06:22 | 只看该作者
本帖最后由 创客帝国 于 2015-7-23 20:13 编辑

好贴子哦,大家不顶说不过去









回复 支持 反对

使用道具 举报

0

主题

9

帖子

50

积分

禁止发言

积分
50
9#
发表于 2015-6-12 16:38:53 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

18

帖子

64

积分

禁止发言

积分
64
10#
发表于 2015-9-4 06:12:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|手机版|智能创客 ( 桂ICP备14000828号

GMT+8, 2024-11-27 04:33 , Processed in 0.103363 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表