基于Blinker 自动浇花系统-Arduino中文社区 - Powered by Discuz! Archiver

邓文饼 发表于 2019-2-22 21:56

基于Blinker 自动浇花系统

                                                             自动化浇花 (耳熟能详的项目) 文饼创新
    很多人都玩过这个项目 这次我用Blinker 做一个。
材料
DTH11
esp8266nodemcu //模拟io口有且只有一个 本来想弄多点的 有不想加个Arduino 麻烦
土壤模块
几个继电器
水泵
话不多说 上代码

//温度 湿度 风机
//土壤 水泵
//空气的温度和湿度 控制 风机
//土壤的湿度控制水泵
#define BLINKER_WIFI
#include <dht11.h>//库文件
#include <LiquidCrystal_I2C.h>//库文件
#define DHT11PIN D1 //定义引脚
#include <Blinker.h>
LiquidCrystal_I2C lcd(0x27,16,2);//lcd27or36/// 要不要在用一个lcd屏呢
dht11 DHT11;      //温湿度传感类
int sensorPin = A0;    // 设置模拟口A0为信号输入端,土壤传感器 esp8266只有一个 哎
int zlhPin0 =D2;//继电器 现在是arduino 控制
int zlhPin1=D3;
int zlhPin2=D4;// 设置继电器控制引脚为8,水泵
int zlhPin3=D5;//定义这个脚为7
int sensorValue = 0;// 存放土壤模拟信号量的变量
float h=0;//初始化
float t=0;
BlinkerNumber soil("soil");//土壤湿度的值
BlinkerNumber T("t");//温度
BlinkerNumber H("h");//湿度
BlinkerButton MO("mo");//手动英文缩写
BlinkerText text1("text1");//文本提示1
BlinkerText text2("text2");//文本提示2
BlinkerText text3("text3");
BlinkerText text4("text4");
char auth[] = "27fe62df681";
char ssid[] = "1234";
char pswd[] = "12345678";

void heartbeat()//心跳包
{
soil.print(sensorValue);
T.print(t);
H.print(h);
}
void MOp(const String & state)//手动浇花 随心所欲
{
   BLINKER_LOG("get button state: ", state);
   if(state=="on")
   {
   digitalWrite(zlhPin0,HIGH);
      text1.print("浇花中");
      MO.print("on");
   }
   if(state=="off")
   {
   digitalWrite(zlhPin0,LOW);
   text1.print("浇花结束");
   }
}

void setup()
{
Serial.begin(9600);//开启串口,这是电脑的串口
Blinker.begin(auth, ssid, pswd);
Blinker.attachHeartbeat(heartbeat);
MO.attach(MOp);
lcd.init();                      // initialize the lcd //lcd 还有对比度,调后面的电阻
lcd.init();                      //两行
lcd.backlight();               //lcd的背光
pinMode(zlhPin0, OUTPUT);//灌溉水泵
pinMode(zlhPin1,OUTPUT);//风机
pinMode(zlhPin2,OUTPUT);//升温                        

}

void loop()
{
Blinker.run();
int AAA = DHT11.read(DHT11PIN);//读取数据,
//电脑串口显示
Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);//湿度
Serial.print("Temperature (oC): ");
Serial.println((float)DHT11.temperature, 2);//温度
   h=((float)DHT11.humidity);
   t=((float)DHT11.temperature);
   Blinker.delay(20);
//lcd显示
lcd.setCursor(0,0);//lcd显示
lcd.print("Hum(%): ");//湿度
lcd.setCursor(10,0);//
lcd.print((float)DHT11.humidity, 2);
lcd.setCursor(0,1);
lcd.print("Temp(oC): ");//温度
lcd.setCursor(10,1);
lcd.print((float)DHT11.temperature, 2);
Blinker.delay(200);


//土壤模块   或者是用舵机 喷洒灌溉 区域性灌溉
sensorValue = analogRead(sensorPin);//读取数据                                                                                                                                                
if(sensorValue>200)//当读取的值,启动,这个数据还有待观察
{
   digitalWrite(zlhPin0, HIGH);
   text2.print("autoflower");
}else
{
   digitalWrite(zlhPin0, LOW);
text2.print("pause flowering");
}
Serial.println(sensorValue);
Blinker.delay(200);

//通风模块 马达
floatHUMLIDITY=DHT11.temperature;
if(HUMLIDITY<50){
digitalWrite(zlhPin1,HIGH);//也是继电器
text3.print("wing");

}else
{
digitalWrite(zlhPin1,LOW);
text3.print("no wing");
}


//升温模块。加热或者冷却 在大棚里面 用步进电机
float TEMPERATURE=DHT11.temperature;
if(TEMPERATURE<27)
{
digitalWrite(zlhPin2,HIGH);//是一个继电器 继电器控制加温措施
text4.print("hot");

}else
{
   digitalWrite(zlhPin2,LOW);
   text4.print("no hot");
}
}
以上 是代码
功能
手动浇花 随心所欲
自动浇花
自动调节空气温度 湿度(应该是这样的 看花的品种吧)
接下来的步骤解释配置BLinker app里面的按键了 这个简单
还有就是 向各位大神们 问问 设备不是怎么好连接 比较难连 是怎么一回事
qq1341180280

ecstart 发表于 2019-2-22 23:06

本帖最后由 ecstart 于 2019-2-22 23:11 编辑

      不怎么好连什么意思?主要是水泵最好不要直接连接模块 最好控制继电器来控制水泵!板子直接带大功率水泵会让板子供电不足容易离线!

xnf2007 发表于 2019-2-23 09:38

学习了,谢谢。

极客杰 发表于 2019-2-23 12:15

学习了谢谢

MrBattery 发表于 2019-3-7 21:13

可以帮忙看一下我发的帖子么,有点问题解决不了,也是关于blinker的,万分感谢

邓文饼 发表于 2019-3-8 23:39

MrBattery 发表于 2019-3-7 21:13
可以帮忙看一下我发的帖子么,有点问题解决不了,也是关于blinker的,万分感谢 ...

稍等一下

MrBattery 发表于 2019-4-9 10:36

这个数据反馈的number模块是只需要心跳包就能反馈数据么。。。照着大佬你的程序和blinker的文档自己学着返回数据但是手机上一直不显示,也不懂为啥。。。大佬能帮看看么(万分感谢)
https://www.arduino.cn/forum.php?mod=viewthread&tid=85510&fromuid=174941

nyx 发表于 2019-4-10 15:13

写的不错。能上个APP截图或者视频么,这块不是很清楚。像按钮状态怎么设置

rlfmqc 发表于 2021-5-9 06:06

问一下为啥显示为开发板 NodeMCU 0.9 (ESP-12 Module) 编译时出错。库文件都有
页: [1]
查看完整版本: 基于Blinker 自动浇花系统