学年设计 之家庭传感网的构建 再之 火焰传感器节点部分

关于学年设计整个系统架构的我在第一篇博客已经发了,这里就不再说一遍了。

这次直接进入正题。

硬件:Arduino、433MHz无线射频模块、火焰传感器。

                         

我在网上买的火焰传感器模块是直接数字输出的。如果仅仅只要读取和报警,直接读取然后判断就行了。但是这些机制都在死循环里面,也就是说不管有火没火,节点将一直死循环式的向网关发送报警。这是肯定不行的,网关又不是为你一个节点而存在的。所以我的思路是:如果环境从无火到有火,将报警标志置为1,如果环境从有火到无火,将报警标志置为0。然后去判断报警标志是什么,如果标志为1并且还没有将报警信息发送到到网关,则发送;否则也就是当前虽然标志为1但已经发送过了,这时候就不必再次发送了。解除报警的机制和报警的机制一样的思路。

后面还会有博客介绍其他节点以及整个系统。

下面是火焰传感器节点的代码:

#include<SoftwareSerial.h>
#define FirePin 8//定义火焰传感器引脚
SoftwareSerial HC_12(2,3);//软串口定义
char FireFlag;//报警标志
char MesFlag='0';//无线发送成功标志
void setup() {
  Serial.begin(115200);
  HC_12.begin(115200);
  pinMode(FirePin, INPUT);
}

void loop() {
  if (digitalRead(FirePin) == 1) {
    delay(500);
    if (digitalRead(FirePin) == 0) {//判断从没有火焰到有火焰
      FireFlag = '1';
    }
    else{
      FireFlag = '0';
    }
  }
  while (FireFlag == '1' && MesFlag == '0') {//有火焰,且没有无线发送出去报警信息
    Serial.println("FireDanger");
    HC_12.print("{\"FireFlag\":\"1\"}");
    MesFlag = '1';
  }
  while(FireFlag == '0' && MesFlag == '1'){//报警解除,且已经发送出去过报警信息
    Serial.println("NoFireDanger");
    HC_12.print(String("{\"FireFlag\":\"0\"}"));
    MesFlag = '0';
  }
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值