1硬件
Wemos WIFI、红外火焰传感器、杜邦线、面包板
火焰传感器,由各种燃烧生成物、中间物、高温气体、碳氢物质以及无机物质为主体的高温固体微粒构成的。根据这个,可以把火焰传感器分为远红外火焰传感器和紫外火焰传感器。本设计使用红外火焰传感器,利用红外线对火焰非常敏感的特点,使用特制的红外线接收管来检测火焰,然后把火焰的亮度转化为高低变化的电平信号,输入到中央处理器,中央处理器根据信号的变化做出相应的程序处理。实物如下图。
2接线
wemos 火焰传感器 面包板 蜂鸣器
A0 A0
GND -极
+5V +极
A12 S
还有火焰传感器和蜂鸣器的正负极都要
分别接到面包板正负极。
3代码
#include <ESP8266WiFi.h> //安装esp8266板子
static WiFiClient espClient;
#include <ArduinoJson.h>
#include <AliyunIoTSDK.h>//引入阿里云库 iot sdk
AliyunIoTSDK iot;//定义阿里云
/*替换成阿里云的设备三信息*/
#define PRODUCT_KEY "a1ZubG3Nqoa"
#define DEVICE_NAME "led1"
#define DEVICE_SECRET "371b8c6fd5391a85297b741e7b75e348"
#define REGION_ID "cn-shanghai"
//连接wifi,密码和账号
#define WIFI_SSID "llmmhh"
#define WIFI_PASSWD "66666666"
const int Flame=A0; //定义火焰传感器数字接口为模拟A0接口
const int Buzzer=12; //定义蜂鸣器接口为数字12接口
int val; //定义数字变量val
int Sensor_threshold = 900; //火焰传感器阀值为30,可自行调节
void wifiInit(const char *ssid, const char *passphrase)
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, passphrase);
WiFi.setAutoConnect (true);
WiFi.setAutoReconnect (true);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("WiFi not Connect");//连接到wifi
}
Serial.println("Connected to AP");
}
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
pinMode(Buzzer,OUTPUT); //定义蜂鸣器为输出接口
Serial.begin(115200); //设定波特率为115200
wifiInit(WIFI_SSID, WIFI_PASSWD);
//初始化 iot,需传入 wifi 的 client,和设备产品信息
AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
// 绑定属性回调
AliyunIoTSDK::bindData("LightSwitch", powerCallback);
}
//火焰传感器核心代码,输出数值
unsigned long lastMsMain = 0;
void loop()
{
val=analogRead(A0) ;//读取火焰传感器的模拟值
AliyunIoTSDK::loop();//回路,一直读
if (millis() - lastMsMain >= 5000)
{
lastMsMain = millis();
}
Serial.println(val); //输出模拟值,并将其打印出来
if(val<=Sensor_threshold) //当模拟值大于阀值时蜂鸣器鸣响
{
digitalWrite(Buzzer,HIGH); //蜂鸣器高电平触发
} else
{
digitalWrite(Buzzer,LOW);
}
delay(2000);//串口端输出火焰传感器数值间隔频率
}
//控制灯核心代码部分,开关灯实现
void powerCallback(JsonVariant p)
{
int PowerSwitch = p["LightSwitch"];
if (PowerSwitch == 1)
{
Serial.println("Switch=1 from huasheng");
digitalWrite(LED_BUILTIN, LOW); //开灯 Turn the LED on (Note that LOW is the voltage level
}
else
{
Serial.println("Switch=0 from huasheng");
digitalWrite(LED_BUILTIN, HIGH); // 关灯 Turn the LED off by making the voltage HIGH
}
}
4实现流程
实现流程就不详细讲了,上一篇有说。
下面自己搞的程序流程图
5效果图
接好线将wemose板子通过USB线与电脑相连,在Arduino中选择上传,打开串口,可以看到串口显示火焰传感器的模拟值,当用火靠近传感器时,数值变小,蜂鸣器发出哔哔声。
火焰报警
阿里云网页端已经建好了开关按钮,当点击开时等灯亮,关时板子的灯熄灭
6、总结
本次设计令我最烦恼的事情还是我电脑本来装好的阿里云库又没了,呜呜后来大佬又帮我装好了一次,但是重启了一次又没了,绝望到不想搞了,最后是借来了同学的电脑才做好的。