1146|2

3

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【DigiKey创意大赛】植物护理助手-Grove Arduino和Gravity WIFI module的结合 [复制链接]

 
  1. 方案名称:设计一个智能植物护理助手
    去年在某个群里看到有人分享了Grove接口的Arduino初学者套件,其中的模块化设计让人印象非常深刻,稍微了解后发现,这种模块化设计对Arduino嵌入式初学者很友好,这次趁得捷电子的比赛,结合平时初步的学习和生活中养花种草的经验,给出了一个想法,就是题目中提到的对植物的生长环境进行监测,并且能远程查看的方法。
  2. 方案照片:
    下图中是一个完整的实现方案,主要是Grove Arduino套件,因为套件中没有无线模块,额外配一块Gravity接口的模块,在图片中的右上角,用塑料螺丝锁在Grove Arduino套件上。通过杜邦线和套件相连接。
  3. 方案简介:
    名为智能植物护理助手,利用Grove Arduino入门套件的传感器模块,为植物提供全方位的护理和监测。
    通过模拟实时监测土壤湿度、温度、光照,并提供在线数据,以用于提醒用户浇水、调整光照等操作。
    同时,能在线记录环境数据,以供用户种植做参考。
  4. 系统框图
    下面是整个系统的功能框图,主要是套件中的ATmega CPU结合周边的传感器,以及显示屏和无线模块,另外通过板载的USB转UART进行程序下载和串口数据读取调试等功能,系统供电也是通过Micro-USB进行。
  5. 各部分功能的实现说明和解析
    (功能一) 监测内容包括土壤湿度、温度、光照:
    Grove Arduino入门套件中包含温湿度传感器模块(DHT20/BMP280-temp),光强度传感器模块(ADC端口的光传感器),使用这些传感器可以模拟采集温湿度和光照信息。
    (功能二) LED显示检测内容
    Grove Arduino入门套件中包含一块0.96寸的OLED,可以使用OLED显示监测的光照,温湿度数据。
    (功能三) 需要联网远程看到传感器采集的信息,网页上查看监测的光照,温湿度数据。
    这部分功能结合无线模块来使用,使用SIOT平台来收集无线模块的信息,并且SIOT平台提供自动刷新数据,并且保存数据的功能。
  6. 方案使用的源码及说明
这个方案中可以使用两种IDE来实现,其中Arduino IDE适配于数据采集和显示,Mind+ IDE适配于无线数据的传输。

1) 使用Arduino IDE来编译
当使用Arduino IDE时,适用于Grove套件中的传感器和OLED,比如先载入相关的库
#include "DHT20.h"
#include <Arduino.h>
#include <U8x8lib.h>
#include "Wire.h"
接下来初始化一些模拟端口
int sensorpin = A6; // Analog input pin that the sensor is attached to
int ledPin = 4;    // LED port
int lightValue = 0;        // value read from the port
DHT20 DHT;
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
然后进行一些必要的设置,并且打开串口进行需要的信息输出
void setup()
{
  pinMode(ledPin,OUTPUT); //Light
  pinMode(sensorpin, INPUT);
  DHT.begin();
  Wire.setClock(400000);
  Serial.begin(9600);
  Serial.println(__FILE__);
  Serial.print("DHT20 LIBRARY VERSION: ");
  Serial.println(DHT20_LIB_VERSION);
  Serial.println();
  delay(2000);
  Serial.println("Type,\tStatus,\tHumidity (%),\tTemperature (C)");
  u8x8.begin();
  u8x8.setPowerSave(0);  
  u8x8.setFlipMode(1);
}
逻辑设置,包括抓取数据,显示,以及设置灯光的触发条件等
void loop()
{
  float temp, humi;
  temp = DHT.getTemperature();
  humi = DHT.getHumidity();
  // read the Light sensor analog in value:
  lightValue = analogRead(sensorpin);
  Serial.println(lightValue);
  if (lightValue > 1) {
    digitalWrite(ledPin, LOW);
  }
  else {
    digitalWrite(ledPin, HIGH);
  }
  delay(200);
  if (millis() - DHT.lastRead() >= 1000)
  {
    // READ DATA
    uint32_t start = micros();
    int status = DHT.read();
    uint32_t stop = micros();
    switch (status)
    {
    case DHT20_OK:
      Serial.print("OK,\t");
      break;
    case DHT20_ERROR_CHECKSUM:
      Serial.print("Checksum error,\t");
      break;
    case DHT20_ERROR_CONNECT:
      Serial.print("Connect error,\t");
      break;
    case DHT20_MISSING_BYTES:
      Serial.print("Missing bytes,\t");
      break;
    default:
      Serial.print("Unknown error,\t");
      break;
    }
    // DISPLAY DATA, sensor has only one decimal.
    Serial.print("DHT20, \t");
    Serial.print(DHT.getHumidity(), 1);
    Serial.print(",\t");
    Serial.print(DHT.getTemperature(), 1);
    Serial.print(",\t");
    Serial.print(stop - start);
    Serial.print("\n");
    u8x8.setFont(u8x8_font_chroma48medium8_r);
    u8x8.setCursor(0, 33);
    u8x8.print("Temp: ");
    u8x8.print(temp);
    u8x8.print(" C");
    u8x8.setCursor(0,50);
    u8x8.print("Humi: ");
    u8x8.print(humi);
    u8x8.print(" %");
    u8x8.setCursor(0,51);
    u8x8.print("Light: ");
    u8x8.print(lightValue);
    u8x8.print(" lux");    
    u8x8.refreshDisplay();
    delay(200);2
  }
}
显示效果大致如下:
包含温湿度和亮度数据,以及当亮度过低时,自动打开灯。

2) 使用Mind+ IDE来编译

这个IDE主要用于无线模块的配套,需要下载Mind+ IDE,链接和对应的介绍是这个:https://mindplus.dfrobot.com.cn/
源程序后面加附件里面,下面截图简单说明:
首先初始化网络设置,接下来初始化传感器,读取传感器数据并且通过无线模块上传到MQTT服务器中。
这里的重难点在服务器的配置上,第一次会有些麻烦,试过两次后就熟悉了。
在SIOT网页中,可以查看各个传感器数据,并且可以图形化显示,可根据自己的需要和开发板之间接收发送数据,同时SIOT中会根据需求存储采集的数据。下面是一些采集数据的截图
首先是设备列表,这个可以在程序中设置
下面是BMP280采集的温度数据和图表,我会用手放传感器上演示温度波动
下面是DHT20采集的湿度和温度数据和图表,我会用手放传感器上演示温湿度波动,前两张是湿度,后两张是温度,温度变化慢一些,湿度变化明显一些。
下面是光亮度,这里通过遮盖来体现变化,所以遮盖后光亮度就是0

7. 证明作品能完成既定工作或功能的演示视频
    演示的视频如下:前半部分是通过OLED显示温湿度和光照信息,后半部分是看SIOT网页远程的数据采集和数据存储情况。


 

    
8. 其他相关资料和说明:
资料中包含了套件的线路图,使用器件的SPEC,两种IDE的源代码,如果有问题,可以站内回帖,私信,或者B站留言私信都可以,初学的练手,让大家见笑了。
 
 

上传附件打包.zip

53.85 MB, 下载次数: 0

线路图,SPEC,源代码以及SIOT安装包等

智能植物护理助手 Grove Arduino和Gravity WIFI module结合.doc

2.81 MB, 下载次数: 1

word文档

最新回复

效果还行吧 [attach]759767[/attach]     详情 回复 发表于 2023-12-5 07:50
点赞 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

效果还行吧

 

点评

谢谢,本职工作是硬件,时间很紧张,本人是初学程序,只来得及做一个简单的演示。 这个套件可玩性很高,后面得空了要好好研究的  详情 回复 发表于 2023-12-5 10:47
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

谢谢,本职工作是硬件,时间很紧张,本人是初学程序,只来得及做一个简单的演示。

这个套件可玩性很高,后面得空了要好好研究的

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表