本文利用ESPArduino+Blinker实现简单信息交互以光敏和温湿度为例
该文引用blinker官方指导文件,详情可以查看blinker官网
环境的准备参考官方文档地址Arduino开发准备
----------------话不多写,肝代码
本实例转自官方文档,在温湿度基础上自己加了一个光敏电阻,做了一个简易的门窗检测的模型,使用的是光敏的DO想要达到好的效果可以使用AO自己定义值来实现。
#define BLINKER_WIFI
#include <Blinker.h>
#include <DHT.h>
Ticker timer;
char auth[] = "79a8dffe8f6c";
char ssid[] = "OPPO626";
char pswd[] = "123456789";
BlinkerNumber HUMI("humi");
BlinkerNumber TEMP("temp");
BlinkerText stated("state");
#define DHTPIN 4
#define pho 5
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
float humi_read = 0, temp_read = 0;
String s;
void heartbeat()
{
HUMI.print(humi_read);
TEMP.print(temp_read);
stated.print(s);
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
Blinker.begin(auth, ssid, pswd);
Blinker.attachHeartbeat(heartbeat);
dht.begin();
}
void loop()
{
Blinker.run();
float h = dht.readHumidity();
float t = dht.readTemperature();
int val=digitalRead(pho);
if(val==0)s="已打开";
else s="已关闭";
if (isnan(h) || isnan(t))
{
BLINKER_LOG("Failed to read from DHT sensor!");
}
else
{
BLINKER_LOG("Humidity: ", h, " %");
BLINKER_LOG("Temperature: ", t, " *C");
humi_read = h;
temp_read = t;
}
Blinker.delay(2000);
}
其中char auth[] = "79a8dffe8f6c"; char ssid[] = "OPPO626"; char pswd[] = "123456789";
第一个数组对应你的blinkerAPP上的PrivateKey,也就是建立设备后的密钥
第二 三个数组对应你的WiFi名称和密码
下面这几行是自行添加的,也就是在官方的示例基础上你自己想要添加的东西。该示例是通过心跳包来传送数据的,你需要在APP界面手动加一个组件并给它命名
例:
加一个text文本框,并命名状态。这个需要和手机上的text的名称一致
BlinkerText stated("state");
使用print函数将数据发送到手机APP组件属性名为state的text文本框上
stated.print(s);
定义常量判断光敏DO的状态并根据状态赋值字符串s
if(val==0)s="已打开";
else s="已关闭";
来几张图吧:
中间三个是控制舵机的,大家有兴趣可以试试。
这个是你编辑的时候可以看到他的属性名
然后实物做的比较糙了点
基本全是官方的示例,不过当时自己不了解觉得让传感器数据上传到自己手机上或者用手机来控制传感器太难了,花了2个晚上觉得这个blinker可以速成,推荐给大家。也可以去看看官方的其他示例,都挺容易上手的。希望对大家有所帮助吧。