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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6111|回复: 8

[分享] 基于Blinker 自动浇花系统

[复制链接]
发表于 2019-2-22 21:56 | 显示全部楼层 |阅读模式
                                                               自动化浇花 (耳熟能详的项目) 文饼创新
    很多人都玩过这个项目 这次我用Blinker 做一个。
材料
DTH11
esp8266nodemcu //模拟io口有且只有一个 本来想弄多点的 有不想加个Arduino 麻烦
土壤模块
几个继电器
水泵
话不多说 上代码
[mw_shl_code=arduino,true]
//温度 湿度 风机
//土壤 水泵
//空气的温度和湿度 控制 风机
//土壤的湿度控制水泵
#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);
  
//通风模块 马达
float  HUMLIDITY=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");
  }
}[/mw_shl_code]
以上 是代码
功能
手动浇花 随心所欲
自动浇花
自动调节空气温度 湿度(应该是这样的 看花的品种吧)
接下来的步骤解释配置BLinker app里面的按键了 这个简单
还有就是 向各位大神们 问问 设备不是怎么好连接 比较难连 是怎么一回事
qq1341180280
发表于 2019-2-22 23:06 | 显示全部楼层
本帖最后由 ecstart 于 2019-2-22 23:11 编辑

      不怎么好连什么意思?主要是水泵最好不要直接连接模块 最好控制继电器来控制水泵!板子直接带大功率水泵会让板子供电不足容易离线!
发表于 2019-2-23 09:38 | 显示全部楼层
学习了,谢谢。
发表于 2019-2-23 12:15 来自手机 | 显示全部楼层
学习了谢谢
发表于 2019-3-7 21:13 | 显示全部楼层
可以帮忙看一下我发的帖子么,有点问题解决不了,也是关于blinker的,万分感谢
 楼主| 发表于 2019-3-8 23:39 | 显示全部楼层
MrBattery 发表于 2019-3-7 21:13
可以帮忙看一下我发的帖子么,有点问题解决不了,也是关于blinker的,万分感谢 ...

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

发表于 2019-4-10 15:13 | 显示全部楼层
写的不错。能上个APP截图或者视频么,这块不是很清楚。像按钮状态怎么设置
发表于 2021-5-9 06:06 | 显示全部楼层
问一下为啥显示为开发板 NodeMCU 0.9 (ESP-12 Module) 编译时出错。库文件都有
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 13:51 , Processed in 0.073122 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表