本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

DIY防烫报警系统

发布时间:2021-06-09
分享到:

DIY防烫报警系统

发布时间:2021-06-09
分享到:

该项目是通过使用PIR运动传感器和IR非接触式温度传感器来解决防止烫伤的问题。当红外温度传感器检测到温度高于40摄氏度并且PIR运动传感器同时检测到运动时,LED就会点亮,用来提醒用户,防止用户接触发热设备烫伤自己。

硬件部件:

  • PIR运动传感器
  • MLX90614
  • LED
  • 跳线
  • 粒子氩
  • 面包板
  • 电阻 220Ω

流程图:

示意图:

PIR运动传感器和LED:

MLX90614红外温度传感器:


实物连接:

在第一个试验板上,有PIR运动传感器和外部LED的连接以及试验板上的220Ω电阻器和D7 LED。

PIR运动传感器具有三个连接,

  • 第一个连接到3.3 V的电压
  • 第二个连接到D2引脚的“数据”
  • 第三个连接到GND引脚

外部LED与220Ω电阻串联,该电阻连接到D4和GND。

(PIR运动传感器和LED)

(PIR运动传感器和LED的侧视图)

在第二个试验板上,它与MLX90614温度传感器相连。

温度传感器具有四个连接。

  • 第一连接为SDA引脚
  • 第二连接为SCL引脚
  • 第三连接为GND
  • 第四连接为3.3 V电压

(红外非接触温度传感器)

(红外非接触温度传感器的侧视图)

测试:

该报警系统只要温度超过其阈值,同时检测到运动,LED就会点亮。收集的数据是同时触发运动传感器和温度传感器的实例数量。其中在仅检测到温度传感器的情况下,没有来自运动传感器的数据。这是因为没有检测到运动,因此要触发运动传感器,因此两个LED均未触发。在图表的后半部分,显示了两个传感器均被触发,导致两个LED均点亮。

实时数据:数据1数据2

(运动与日期数据)

(温度与日期数据)

(IFTTT运动传感器通知系统)

附件:

运动传感器:

(生成该代码以检测运动。一旦检测到运动,便会通知代码点亮外部LED和D7 LED引脚)

int inputPin = D2;              // 选择输入引脚(用于PIR传感器)
int ledPin = D4;                //  LED引脚
int pirState = LOW;             //我们开始,假设未检测到运动
int val = 0;                    // 读取引脚状态的变量
int calibrateTime = 5000;  
int Count = 0;
// 等待事物校准

void setup() {
    pinMode(D2, INPUT);
    pinMode(D7,OUTPUT);
    pinMode(D4, OUTPUT);
    
   
    Particle.subscribe("Hot", test1);

        // 声明传感器为输入
}

void loop() {
   
val = digitalRead(D2);
          }
          
void test1(const char *event, const char *data){
 
    
    if (val == HIGH) {
        //当前状态为静止
        //即已更改
        //通过发布事件来宣布此更改
          //我们刚刚打开 
          // digitalWrite(D7,HIGH);
                  // delay(20000);
                  // digitalWrite(D7,LOW);  


                  Count++; //count = count +1
          Particle.publish("PhotonMotion", "Motion Detected",PRIVATE);
        
          delay(1000);
          //for(i=0;i<80;i++)  {
digitalWrite(D4,HIGH);
digitalWrite(D7,HIGH);

delay(500);//等待1ms


digitalWrite(D4,LOW);
digitalWrite(D7,LOW);
//digitalWrite(D5,HIGH);

//delay(500);//等待1ms

}}

温度感应器:

(每当检测到的温度超过40摄氏度时,就会生成此代码来发布“高温”事件)

// 此#include语句是由粒子IDE自动添加的
// LEDwithTemp


#include <Adafruit_MLX90614.h>
float object_tempc;
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {

  mlx.begin();
}

void loop() {

object_tempc = mlx.readObjectTempC();
  if (object_tempc>40.0){
      String temperature = String(object_tempc);
   Particle.publish("Hot","temperature",PRIVATE);
digitalWrite(D2,HIGH);   
  // 发布到云端
  
 } 
  //Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF());
  //Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");
  delay(1500);
}
  

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论