查看: 551|回复: 5

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

[复制链接]
  • TA的每日心情
    开心
    2019-2-13 16:03
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2019-2-22 21:56 | 显示全部楼层 |阅读模式
                                                                   自动化浇花 (耳熟能详的项目) 文饼创新
        很多人都玩过这个项目 这次我用Blinker 做一个。
    材料
    DTH11
    esp8266nodemcu //模拟io口有且只有一个 本来想弄多点的 有不想加个Arduino 麻烦
    土壤模块
    几个继电器
    水泵
    话不多说 上代码

    kittenblock中小学创客名师推荐的图形化编程软件

    
    //温度 湿度 风机
    //土壤 水泵
    //空气的温度和湿度 控制 风机
    //土壤的湿度控制水泵
    #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");
      }
     }

    以上 是代码
    功能
    手动浇花 随心所欲
    自动浇花
    自动调节空气温度 湿度(应该是这样的 看花的品种吧)
    接下来的步骤解释配置BLinker app里面的按键了 这个简单
    还有就是 向各位大神们 问问 设备不是怎么好连接 比较难连 是怎么一回事
    qq1341180280
  • TA的每日心情
    慵懒
    2019-3-21 09:20
  • 签到天数: 41 天

    [LV.5]常住居民I

    发表于 2019-2-22 23:06 | 显示全部楼层
    本帖最后由 ecstart 于 2019-2-22 23:11 编辑

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

    该用户从未签到

    发表于 2019-2-23 09:38 | 显示全部楼层
    学习了,谢谢。

    该用户从未签到

    发表于 2019-2-23 12:15 来自手机 | 显示全部楼层
    学习了谢谢
  • TA的每日心情
    奋斗
    2019-3-16 15:11
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2019-3-7 21:13 | 显示全部楼层
    可以帮忙看一下我发的帖子么,有点问题解决不了,也是关于blinker的,万分感谢
  • TA的每日心情
    开心
    2019-2-13 16:03
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2019-3-8 23:39 | 显示全部楼层
    MrBattery 发表于 2019-3-7 21:13
    可以帮忙看一下我发的帖子么,有点问题解决不了,也是关于blinker的,万分感谢 ...

    稍等一下
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    BlinkerAT固件不能用
    BlinkerAT固件不能用
    如图,在配网的时候就卡住了,再发指令就没用了,固件和库都是今天刚下载的,以前的也不好
    为什么这个库已经装好了可是在调用的时候却没有显示
    为什么这个库已经装好了可
    为什么这个库已经装好了可是在调用的时候却没有显示求解决
    UART 传输(字符)不稳定,如何解决数据错位和乱码的情况
    UART 传输(字符)不稳定
    求助大家,我正在写一个 UART 传输多组数据的项目,想要将一端 Arduino 的多组数据通
    请问这是什么板子?
    请问这是什么板子?
    如图,两年前比赛学校发的,但网上找不到资料,现在翻出来,想问问有人知道它怎么用吗
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表