查看: 1758|回复: 7

[分享] 基于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-9-4 11:17
  • 签到天数: 52 天

    [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-5-22 11:39
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 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的,万分感谢 ...

    稍等一下
  • TA的每日心情
    奋斗
    2019-5-22 11:39
  • 签到天数: 27 天

    [LV.4]偶尔看看III

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

  • TA的每日心情
    擦汗
    2019-4-11 23:26
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-4-10 15:13 | 显示全部楼层
    写的不错。能上个APP截图或者视频么,这块不是很清楚。像按钮状态怎么设置
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Blynk与m5stack basic以及uiflow的交互玩法
    Blynk与m5stack basic以及
    Blynk与m5stack basic以及uiflow的交互玩法 [准备工作我们假设玩家已经熟悉下面的准备
    Arduino板接入后端口无法识别
    Arduino板接入后端口无法
    现在的IDE是1.8.10装好IDE后用数据线连接Arduino nano板, 板上红灯亮,但是电脑上并
    旋转编码器的使用
    旋转编码器的使用
    旋转编码器是一个精确旋转测定和点击合二为一的器件,用它来控制舵机比用电位器要精确
    【Arduino】108种传感器模块系列实验(90)--- ULN2003步进电机
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表