基于Blinker的智能花盆
本帖最后由 chen70854022 于 2020-3-28 21:22 编辑在开始之前建议大家先看一遍blinker的开发文档,这样可以对函数和一些基本的组件有个大概的认识,更方便我们接下来搞事情,文档地址:https://www.diandeng.tech/doc/sdk-download
一、准备工作:Node mcu一个、土壤湿度传感器一个,如果想实现浇水功能还需要一个小水泵,然后按VCC-VCC ,GND-GND,A0-A0接好线
二、准备好硬件后我们需要搭建开发环境,如果已经搭建成功的就跳过吧,环境搭建可以去我的B站看视频教程,地址:https://www.bilibili.com/video/BV1zE411i7xo/
然后在手机APP上获取一个KEY在程序里替换,WiFi账号和密码也要替换成你自己的
下面是源码程序,注释很清楚
/* *****************************************************************
作者:峥小晨智能花盆
实现功能:
1、监测花盆湿度信息并通过APP远程查看
2、自动浇水,当传感器监测到湿度过低的时候,自动给花盆浇水
3、手动浇水,当需要的时候可以使用APP远程手动给花盆浇水
4、数据自动上传云端,方便查看历史数据
* *****************************************************************/
#define BLINKER_WIFI
#include <Blinker.h>
#define LED_BUILTIN 2 //水泵连接的引脚
Ticker flipper; //创建定时器对象
int val; //用来存储湿度值
char auth[] = "a9f8958137"; //替换为你获取到的key
char ssid[] = "cn"; //替换为你的wifi账号
char pswd[] = "ch151";//替换为你的WIFI密码
// 新建组件对象
BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-1");
BlinkerNumber Number2("num-2");
void heartbeat() //心跳包使得我们每次打开APP都可以看到实时的最新湿度数据
{
Number1.print(WiFi.RSSI()); //把信号强度发送给APP端
Number2.print(val); //同步湿度数据
}
// 按下按键即会执行该函数
void button1_callback(const String &state)
{
BLINKER_LOG("get button state: ", state);
digitalWrite(LED_BUILTIN, LOW);
Blinker.delay(3000); //每次手动浇水3秒
digitalWrite(LED_BUILTIN, HIGH);
}
void flip()
{
val = analogRead(A0); //获取湿度
BLINKER_LOG(val);
}
void dataStorage() //图表回调
{
Blinker.dataStorage("temp", val);
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
Blinker.attachHeartbeat(heartbeat);
flipper.attach(2, flip); //定时器每5秒调用一次flip函数
Blinker.attachDataStorage(dataStorage); //图表
}
void loop()
{
Blinker.run();
if (val > 700) //如果检测到湿度过低,执行浇水3秒这个温湿度计是湿度越大数值越小
{
digitalWrite(LED_BUILTIN, LOW);
Blinker.delay(3000);
digitalWrite(LED_BUILTIN, HIGH);
}
}
烧录后我们就可以看到串口在打印湿度值了
至于APP端也可以参考我的布局,也可以自己摆放自己喜欢的布局
左侧数据是我们的开发板的信号强度,右边是湿度(由于我这里没有插入土壤中,所以是满格)下面是历史数据可以看每天或者每周的历史数据,再往下是一个手动浇水按钮,按下即可浇水3秒(时长可以在程序里设置)。有什么疑问可以回帖,有空我会解答一下的,祝你成功!!
为什么app组件显示空白 greenshop 发表于 2020-4-1 11:47
为什么app组件显示空白
那不是显示52了么
chen70854022 发表于 2020-4-1 16:17
那不是显示52了么
换成中间的图形就变空白 chen70854022 发表于 2020-4-1 16:17
那不是显示52了么
没有指标和文字
怎么接线的 怎么放水里反而小了有微信嘛 我觉得这个难点在于如何换水,哈哈哈,因为抽水机不可能接在水龙头旁边 默啊默 发表于 2020-4-2 23:32
怎么接线的 怎么放水里反而小了有微信嘛
传感器是越湿越小,如果要更直观,用 1024-val 大佬,图表的数据键名应该填什么啊?
15273258152 发表于 2020-4-9 00:09
大佬,图表的数据键名应该填什么啊?
temp;P这个可以自己修改吧
页:
[1]
2