前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于ESP8266的物联网养花系统

基于ESP8266的物联网养花系统

作者头像
逍遥子大表哥
发布2023-06-10 15:35:59
4680
发布2023-06-10 15:35:59
举报
文章被收录于专栏:kali blogkali blog

为了丰富我们的养老生活。本文我们来介绍利用Esp8266来做一个智能养花系统。

实现功能

  • 通过手机端查看当前的温度 湿度 以及土壤湿度
  • 当土壤湿度低于50%时,自动启动继电器,利用水泵浇水。湿度超过50%断开继电器。 所需设备
  • esp8266
  • 继电器
  • DHT11
  • 土壤湿度传感器 线路连接

设备

VCC (+)

GND(-)

信号线

继电器

3V

GND

D4

DHT11

3V

GND

D2

土壤传感器

3V

GND

D0

代码

代码语言:javascript
复制
#define BLINKER_WIFI          
#define BLINKER_MIOT_SENSOR   //引入小爱同学
 #define soilPin A0    //土壤传感器脚针 DO
#define CS  2          //定义继电器脚针为D4
#include <Blinker.h>    
#include <DHT.h>         //DHT11传感器的头文件
 
#define DHTPIN 4      //定义DHT11模块连接管脚io4(D2脚)
#define DHTTYPE DHT11   // 使用DHT11温度湿度模块,当然也可以换其他DHT

//存储土壤的值
int soilValue;
//定义土壤湿度
int soilMoisture;

char auth[] = "1c2ce3eef946"; //点灯app的密钥key
char ssid[] = "PDCN";   //所需连接的WiFi名
char pswd[] = "1234567890";   //WiFi的密码

BlinkerNumber HUMI("humi");    //定义湿度数据键名
BlinkerNumber TEMP("temp");    //定义温度数据键名
BlinkerNumber TEMP2("temp2");    //定义土壤湿度数据键名

DHT dht(DHTPIN, DHTTYPE);    //定义dht
 
float humi_read = 0, temp_read = 0;  //初始化读取的数据
//仪表盘组件 
void heartbeat()
{
    HUMI.print(humi_read);        //给blinkerapp回传湿度数据
    TEMP.print(temp_read);        //给blinkerapp回传温度数据
    TEMP2.print(soilMoisture); 
    if(soilMoisture <=50)   //土壤湿度低于50
    {
      
        digitalWrite(CS, !digitalRead(CS)); //运行继电器
      
      }
    else 
    {
       digitalWrite(CS, HIGH);

    }

}
//实时曲线图组件
void dataStorage()
{
    Blinker.dataStorage("temp", temp_read);
    Blinker.dataStorage("humi", humi_read);
    Blinker.dataStorage("humi2", soilMoisture);
}
//数据返回至小爱同学
void miotQuery(int32_t queryCode)      
{
    BLINKER_LOG("MIOT Query codes: ", queryCode);

            int humi_read_int=humi_read;     //将float转成int类型,整数
            BlinkerMIOT.humi(humi_read_int);     //小爱接收湿度
            BlinkerMIOT.temp(temp_read);      //小爱接收温度
            
            BlinkerMIOT.print(); 
}


void setup()
{
    //初始化串口Serial,开启调试输出   
    Serial.begin(9600);//波特率
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();
 
    Blinker.begin(auth, ssid, pswd);//WIFI初始化设置   
    Blinker.attachHeartbeat(heartbeat);//注册仪表盘
    dht.begin();
    BlinkerMIOT.attachQuery(miotQuery);//注册小爱
    Blinker.attachDataStorage(dataStorage);//注册实时曲线
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, 1);
    pinMode(CS, OUTPUT);// 初始化继电器脚针
    digitalWrite(CS, HIGH); //初始化继电器脚针
   
   
}
 
void loop()
{
    Blinker.run();//负责处理blinker收到的数据,每次运行都会将设备收到的数据进行一次解析。(这个很重要)
 
    float h = dht.readHumidity();//读取DHT11采集的湿度数据
    float t = dht.readTemperature();//读取DHT11采集的温度数据
 
    if (isnan(h) || isnan(t))//判断温湿度值是否为空
    {
        BLINKER_LOG("读取传感器数据失败");
    }
    else
    {
        BLINKER_LOG("Humidity: ", h, " %");//打印输出调试信息
        BLINKER_LOG("Temperature: ", t, " *C");
        humi_read = h;
        temp_read = t;
    }
 soilValue = analogRead(soilPin); //获取土壤的值0-1024
 soilMoisture = map(soilValue,0,1023,100,0);//将0-1024转为100%-0 空气中土壤湿度为1024
 
    Blinker.delay(200);
    //延时函数, 在延时过程中仍保持设备间连接及数据接收处理
}

效果

当湿度低于50%时,继电器自动工作。

当土壤湿度高于50%时,继电器停止工作

当然上面的代码,仅仅是完成了相应的功能。可能存在一定的不足之处。可根据你的实际情况自行修改。

版权属于:逍遥子大表哥

本文链接:https://cloud.tencent.com/developer/article/2295610

按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现功能
  • 代码
  • 效果
相关产品与服务
物联网
腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档