植物智能管理基于blinker-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1213|回复: 9

[已解决] 植物智能管理基于blinker

[复制链接]
发表于 2021-11-23 18:10 | 显示全部楼层 |阅读模式
本帖最后由 wgzh_026 于 2021-11-23 18:13 编辑

大棚作物智能管理,研究了很久直接上代码
微信图片_202111231812251.jpg
微信图片_20211123181225.jpg
微信图片_202111231812252.jpg
 楼主| 发表于 2021-11-23 18:11 | 显示全部楼层
本帖最后由 wgzh_026 于 2021-12-20 09:40 编辑

#define BLINKER_WIFI
#define DHT11PIN D5 //定义引脚温湿度
#include <dht11.h>//库文件
#include <Blinker.h>//库文件
#include <LiquidCrystal_I2C.h>//库文件
LiquidCrystal_I2C lcd(0x3F,16,2);
dht11 DHT11;      //温湿度传感类
Ticker flipper;       //创建定时器对象
int zlhPin0 =D3;//水泵继电器
int zlhPin1=D4;   //喷雾继电器
int zlhPin2=D6;  // 加热继电器
int zlhPin3=D7;  //通风继电器
int zlhPin4=D8;  //卷帘继电器
int zlhPin5=D9;  //放帘继电器
int val; //用来存储湿度值
float h=0;  //初始化
float t=0;
// 新建组件对象
BlinkerButton Button1("btn-1");//手动浇水开关
BlinkerButton Button2("btn-2");//手动开帘开关
BlinkerButton Button3("btn-3");//手动放帘开关
BlinkerNumber Number1("rssi");//路由信号强度
BlinkerNumber Number2("soil");//土壤湿度
BlinkerNumber   T("t");//温度
BlinkerNumber   H("h");//湿度
BlinkerText text1("text1");//文本提示1
BlinkerText text2("text2");//文本提示2
BlinkerText text3("text3");//文本提示3
BlinkerText text4("text4");//文本提示4
BlinkerText text5("text5");//文本提示5
BlinkerText text6("text6");//文本提示5
BlinkerText text7("text7");//文本提示5
char auth[] = "xxxxxxxx";//密钥
char ssid[] = "xxxxxxxxx"; //wifi名称
char pswd[] = "          ?";//wifi密码


void heartbeat() //心跳包使得我们每次打开APP都可以看到实时的最新湿度数据
{
    Number1.print(WiFi.RSSI()); //信号强度发送给手机APP端
    Number2.print(val);         //同步土壤湿度数据
     T.print(t);                        //同步温度数据
     H.print(h);                      //同步湿度数据
}

// 按手动浇水
void button1_callback(const String &state)
{
    BLINKER_LOG("get button1 state: ", state);
    if(state=="on")
    {
        digitalWrite(zlhPin0, LOW);
        // 反馈开关状态
        Button1.text("打开水泵");
        text1.print("打开水泵");
        Button1.color("#fddb00");
        Button1.print("on");
        
    } else if(state=="off")
    {
        digitalWrite(zlhPin0, HIGH);
       // 反馈开关状态
       Button1.text("关闭水泵");
       text1.print("关闭水泵");
       Button1.color("#0ddb00");
       Button1.print("off");
        
    }
}
// 按手动开帘
void button2_callback(const String &state)
{
    BLINKER_LOG("get button2 state: ", state);
    if(state=="on")
    {
        digitalWrite(zlhPin4, HIGH);
        // 反馈开关状态
        Button2.text("打开帘子");
        text6.print("打开帘子");
        Button2.color("#fddb00");
        Button2.print("on");
        
    } else if(state=="off")
    {
        digitalWrite(zlhPin4, LOW);
       // 反馈开关状态
       Button2.text("关闭帘子");
       text6.print("关闭帘子");
       Button2.color("#0ddb00");
       Button2.print("off");
        
    }
}
// 按手动放帘
void button3_callback(const String &state)
{
    BLINKER_LOG("get button3 state: ", state);
     if(state=="on")
    {
        digitalWrite(zlhPin5, HIGH);
        // 反馈开关状态
        Button3.text("打开遮阳");
        text7.print("打开遮阳");
        Button3.color("#fddb00");
        Button3.print("on");
        
    } else if(state=="off")
    {
        digitalWrite(zlhPin5, LOW);
       // 反馈开关状态
       Button3.text("关闭遮阳");
       text7.print("关闭遮阳");
       Button3.color("#0ddb00");
       Button3.print("off");
        
    }
}
void flip()
{
    val = 100 - (analogRead(A0)/10.24); //获取土 湿
    BLINKER_LOG(val);
}
void dataStorage() //图表
{
    Blinker.dataStorage("soil", val);
    Blinker.dataStorage("t",(float)DHT11.temperature);//存储温度
    Blinker.dataStorage("h", (float)DHT11.humidity);//存储湿度
}
void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    Blinker.attachHeartbeat(heartbeat);
    flipper.attach(2, flip);                //定时器每5秒调用一次flip函数
    Blinker.attachDataStorage(dataStorage); //图表
     lcd.init();                      //lcd 还有对比度,调后面电阻
     lcd.init();                      //两行
     lcd.backlight();                 //lcd的背光
   // 初始化有LED的IO
    pinMode(zlhPin0, OUTPUT);
    pinMode(zlhPin1, OUTPUT);
    pinMode(zlhPin2, OUTPUT);
    pinMode(zlhPin3, OUTPUT);
    pinMode(zlhPin4, OUTPUT);
    pinMode(zlhPin5, OUTPUT);
    digitalWrite(zlhPin0, HIGH);
    digitalWrite(zlhPin1, HIGH);
    digitalWrite(zlhPin2, HIGH);
    digitalWrite(zlhPin3, HIGH);
    digitalWrite(zlhPin4, HIGH);
    digitalWrite(zlhPin5, HIGH);
}

void loop()
{
    Blinker.run();
     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("Humi(%): ");//湿度
  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);

   val = 100 - (analogRead(A0)/10.24); //获取湿度
    if (val < 50) //如果检测到湿度低执行
    {
       digitalWrite(zlhPin0, HIGH);
       text2.print("自动浇水");
    }else
  {
   digitalWrite(zlhPin0, LOW);
  text2.print("停止浇水");
  }
  Serial.println(val);
  Blinker.delay(200);
//增加湿度模块
  float  HUMIDITY=DHT11.humidity;
if(HUMIDITY<30){
  digitalWrite(zlhPin1,HIGH);//继电器
  text3.print("打开喷雾");
  
}else
{
  digitalWrite(zlhPin1,LOW);
  text3.print("停止喷雾");
}
Blinker.delay(200);

//升温模块
  
  float TEMPERATURE=DHT11.temperature;
if(TEMPERATURE<5)
{
  digitalWrite(zlhPin2,HIGH);// 继电器
  text4.print("打开加热");
  
  }else
  {
   digitalWrite(zlhPin2,LOW);
   text4.print("停止加热");
  }
  Blinker.delay(200);
  if(TEMPERATURE>28)
{
  digitalWrite(zlhPin3,HIGH);//继电器
  text5.print("打开通风");
  
  }else
  {
   digitalWrite(zlhPin3,LOW);
   text5.print("停止通风");
  }
  Blinker.delay(2000);
}
发表于 2021-11-24 17:05 | 显示全部楼层

66666,666呀
发表于 2021-11-25 10:04 | 显示全部楼层
做的不错,你这盒子用啥做的
发表于 2021-11-25 21:53 | 显示全部楼层

我也在做类似的一个设计,自己设计的板子,功能上和你这个很类似呀
发表于 2021-11-25 21:56 | 显示全部楼层
这个功能和你这个很类似,程序也是
22N)[K8JTXENPX{AT{U}CQB.png
发表于 2021-11-25 21:58 | 显示全部楼层
开源地址:
发表于 2021-11-25 21:59 | 显示全部楼层

https://oshwhub.com/htit0/xiaohua01
 楼主| 发表于 2021-12-17 11:28 | 显示全部楼层
myself1820 发表于 2021-11-25 10:04
做的不错,你这盒子用啥做的

旧电源盒改的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 18:51 , Processed in 0.081355 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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