0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用Arduino Create和ROHM传感器评估套件制作智能花园系统

王利祥 来源:罗姆 作者:罗姆 2023-02-23 17:58 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。

今天,我们将利用ROHM传感器评估套件打造一套智能花园系统。在此项目中,我们整合接近/环境光传感器(ALS)和其他传感器,实现植物培育设备的自动化操作!

有关ROHM传感器的更多信息,请参阅我们的文章ROHM传感器评估套件概览!

此外,我们将使用Arduino Create对系统进行编程

Arduino Create是一个多合一的在线平台,可以编写代码、配置电路板、共享项目。该平台于2016年8月18日正式发布。

poYBAGPzFeKAcfE-AAGk0iyD-NA141.jpg

Arduino Create 提供以下服务:

Arduino Web Editor

Arduino Web Editor 是一款在线编辑器,用户可以编写代码并将程序从网页浏览器上传至任何Arduino开发板上。

将代码写入或导入 Arduino

上传/分享程序

使用Arduino库

通过云连接服务

Arduino Project Hub

Arduino Project Hub 是一个hackstar.io提供的教程平台。该Hub拥有大量不同难度和人气的项目。

Arduino Cloud

凭借Arduino Cloud,用户可以通过互联网在云中管理项目。Arduino Cloud执行亚马逊云计算服务,能够为用户提供安全的开发环境。

将Arduino直接连接到互联网

通过MQTT在Arduino之间进行互通

采用AWS IoT和AWS Lambda

今天的电子食谱

预计完成时间:120分钟

所需部件:

Arduino 主体 (Arduino UNO R3)

Rohm 传感器评估套件https://www.rohm.com/web/global/sensor-shield-support

电阻 (220 欧姆) × 2

红色 / 蓝色 LED

土壤传感器https://www.dfrobot.com/wiki/index.php/Moisture_Sensor_(SKU:SEN0114)

伺服电机 (SG90)

※ 您可以从以下站点购买罗姆传感器评估套件!

Chip One Stop

Mouser Electronics

考虑植物培育设备的电气规格

打造智能花园系统的第一步就是要确定需要集成的内容。我们如何使用这些传感器打造一套有利于植物培育的设备呢?首先,我们看一下各种传感器的功能和用法以及它们在该项目中的潜在用途。

传感器评估套件提供8种不同的传感器。我们应将哪些传感器集成到植物培育系统中呢?我们来复习一下每个传感器的功能,看看系统可以采用哪些传感器。

pYYBAGPzFeSAcMmuAACw8CrGR4w557.jpg

图1 传感器评估套件包含的传感器

加速度计: 检测倾斜、运动、振动等。→我们可能不会用此器件来测量加速度。

气压传感器:检测大气压力→压力与天气之间的关系似乎与室内植物没有关系

地磁传感器:检测方向→可以根据太阳的方向改变植物的朝向吗(?)

接近传感器:检测正在接近的物体;检测亮度→如果我们的系统只是在白天(或明亮时)而不是在黑暗中工作,那么这个器件很有用。

颜色传感器:检测颜色→叶子是否枯萎,等等……我们以后再研究这个功能吧……

霍尔传感器:通过磁铁检测物体→我觉得这个项目可能不会使用接近开关或定位功能…

温度传感器检测温度→我们可以用温度数据来控制植物的浇水情况(比如温度较高时应该多浇水,等等)。

紫外线传感器:检测紫外线→日光太强/太弱时可通知用户相关情况。

根据各个传感器的功能简述,为了完成此项目,我们可能需要在系统中整合多个传感器。那么我们应该集成哪些传感器呢?

poYBAGPzFeaAB41AAAIFhOtBwGw020.jpg

图2 一般植物生长注意事项

如图2所示,种植健康的植物必须满足一定条件。一般来讲,植物在通风良好、阳光充足和温度适中的地方生长最好。当然,它们需要水。

根据这些信息,我们可以缩小传感器的选择范围:

日光条件→利用紫外线传感器和温度传感器检查温度是否过高/紫外线强度是否过大,并采取必要的措施以减少日光照射。

浇水原则→利用土壤传感器,我们可以确定土壤中的水分含量,并根据盆的大小为植物浇水。

关于温度→如果温度过高或过低,我们可以检查植物含量并触发警报。

通风→我们可以测量室内空气流速,如果室内风量不够,我们可以用风扇来产生风。

现在,我们开始构造这个系统吧!

类似的设备……

说到植物培育设备……已经有人制作过大型植物培育系统。比如FarmBot。从外观上看,FarmBot就像是一台巨大的激光切割机或3D打印机。正如下面的视频所示,该机器还可以帮忙播种,似乎我们通过电脑或移动应用程序就能控制播种过程。长时间在室外管理和控制这些设备会比较困难,尤其是在天气比较恶劣的情况下。不管怎样,这些非常酷的设备在改善可持续发展农业领域具有巨大的潜力。

FARMBOT GENESIS – https://farmbot.io/

Arduino Create × Rohm 传感器评估套件!

接下来我们看一下如何用Arduino Create编写程序。

pYYBAGPzFeiAU2YRAAJgfW5Wzn8255.jpg

图3 Arduino Create

Arduino Create 网站

Arduino Create 入门

我们循序渐进地看一下Arduino Create如何使用。Arduino Create的迷人之处就在于您可以直接在浏览器中在线编写代码并进行共享(比如在社交媒体上)。通常,如果您要使用Arduino,您得在电脑上下载并安装Arduino IDE,但是Arduino Create无需这个步骤。

打开浏览器,然后转到Arduino Create 网站。

如果您是首次使用Arduino,那么必须创建一个用户帐户。请进入用户注册页面以创建您的帐户(如果您有Arduino帐户,那么可以直接用现有帐户登录)。

(仅适用于初次使用的用户)完成注册后,您会收到一封包含一个URL的电子邮件,点击该链接完成注册。

(仅适用于初次使用的用户)安装“Arduino Web Editor Plugin”(或“ArduinoCreateAgent”),以便浏览器可以连接到Arduino主机。

打开Arduino Web Editor。

PC版和网络版之间的主要区别是什么呢?

只要可以上网,您几乎能在任何地方查看/编辑您的程序。

网络版还支持多个库,因此即使更换电脑,您也不必重新安装原来使用的库。

Arduino Create非常有用。唯一的缺点是:要使用Web Editor,您必须连接互联网,否则是无法使用的。我觉得介绍的差不多了。此时,您可以简单地在电脑上使用现有的Arduino软件。

运行Arduino Create主屏幕和传感器评估套件库

首先打开Arduino Web Editor.

pYYBAGPzFeqAPNidAAJg6z_cFd0464.jpg

图 4. Arduino Create Web Editor

您会看到编辑器在浏览器中打开。值得一提的是,与Arduino Software IDE相比,这些菜单更易于查看和定位。有时,在电脑上使用IDE并打开太多带有很多程序的窗口时,它们会变得杂乱无章;但是这个编辑器的窗口整洁有序,您可以轻松地找到所需文件。

菜单栏位于编辑器的左侧。

pYYBAGPzFeuAUsUKAAE_RhAfqNE794.jpg

图5 Arduino Create Web Editor – 基本功能

我们来查看一些常用功能。我们从“Blink.ino”开始(路径:Examples →BUILT IN→01.BASICS→Blink)。使用屏幕上方中央的下拉菜单,选择要连接的Arduino开发板和端口。然后,点击“Verify”→“Upload”(通常在Arduino软件中执行此操作)。

添加传感器评估套件库

接下来,我们将添加传感器评估套件库。要添加库,您可以点击左侧菜单的“Libraries”,并单击“ADD ZIP LIBRARY”。然后,选择要添加的库的zip文件完成添加。您可以从此处为每个传感器下载传感器评估套件库(zip文件)。

pYYBAGPzFZuAaXMuAAFTMlElC3A985.jpg

图6 Arduino Create Web Editor – 添加库

传感器评估套件已成功连接。现在,我们进行连线和编程!

整个系统的设计理念如下:

日光条件→利用紫外线传感器和温度传感器检查温度是否过高/紫外线强度是否过大,并采取必要的措施以减少日光照射。

→ 用伺服电机遮阳!

浇水原则→利用土壤传感器,我们可以确定土壤中的水分含量,并根据盆的大小为植物浇水。

→ 使用土壤传感器和喷壶!

关于温度→如果温度过高或过低,我们可以检测植物的环境温度并触发警报。

→ 用LED触发警报!(也许将来我们可以通过网络通知程序来实现这个功能!)

通风→我们可以测量室内空气流速,如果室内风量不够,我们可以用扇子来产生风。

→ 用伺服电机操作扇子扇风。

poYBAGPzFfCAOE6kAAQFypWLRuc283.jpg

图7 电路框图(假设传感器评估套件已连接到Arduino)

至于程序,在循环的前半部分获取每个传感器的值后,我们将根据每个传感器的值启动伺服电机和LED灯。由于每个传感器的激活阈值因设备大小而异,因此您可以自己的喜好调整具体数值。

程序–植物培育设备

#include 
#include 
#include 
#include 
#include 
#include 
 
//***********************************************
//Set threshold
//***********************************************
int moi_threshold   = 500;  //set the moisture threshold (moist←0~1023→dry)
int upper_temp_threshold  = 30;   //high temperature-red LED 
int under_temp_threshold  = 10;   //low temperature-blue LED
int uv_threshold  = 4;   //set the intensity of ultraviolet light, shade if exceeded
int send_wind_sec  = 30; //wind blowing interval (in seconds)
//***********************************************
 
Servo uvServo;          	
Servo windServo;          	
Servo waterServo;          	
 
int redLedPin   = 13;   	
int blueLedPin   = 12;
int moisture_pin = A0;
int tempout_pin = A2;
int uvout_pin = A0;
 
int counter = 0;
bool uvFlg = false;
 
BD1020 bd1020;
RPR0521RS rpr0521rs;
ML8511A ml8511a;
BM1383GLV bm1383;
 
//***********************************************************
void setup() {
  Serial.begin(9600);
  while (!Serial);
  Wire.begin();
 
  byte rc; 
  rc = rpr0521rs.init();
  rc = bm1383.init();
 
  pinMode(redLedPin,OUTPUT);
  pinMode(blueLedPin,OUTPUT);
  uvServo.attach(9);
  windServo.attach(10);
  waterServo.attach(11);
  bd1020.init(tempout_pin);
  ml8511a.init(uvout_pin);
}
 
//***********************************************************
void loop() {
    //*********************************
    //Soil Sensor
    int moi = analogRead(moisture_pin);
    Serial.write("MOISTURE = ");
    Serial.println(moi);
    Serial.println();
    
    //*********************************
    //Temperature sensor
    float temp;
    bd1020.get_val(&temp);
    Serial.print("BD1020HFV Temp=");
    Serial.print(temp);
    Serial.print("  [degrees Celsius], ADC=");
    Serial.println(bd1020.temp_adc);
 
    //*********************************
    //UV sensor
    float uv;
    ml8511a.get_val(&uv);	
    Serial.write("ML8511A UV = ");
    Serial.print(uv);
    Serial.println(" [mW/cm2]");
    Serial.println();	
 
    //*********************************
    //Barometric pressure sensor
    byte cp;
    float press;
     
    cp = bm1383.get_val(&press);
    if (cp == 0) {
      Serial.write("BM1383GLV (PRESS) = ");
      Serial.print(press);
      Serial.println(" [hPa]");
      Serial.println();
    }
     
    //*********************************
    //ALS/proximity sensor
    byte rc;
    unsigned short ps_val;
    float als_val;
    byte near_far;
     
    rc = rpr0521rs.get_psalsval(&ps_val, &als_val);
    if (rc == 0) {
      Serial.print(F("RPR-0521RS (Proximity) 	= "));
      Serial.print(ps_val);
      Serial.print(F(" [count]"));
      near_far = rpr0521rs.check_near_far(ps_val);
      if (near_far == RPR0521RS_NEAR_VAL) {
        Serial.println(F(" Near"));
      } else {
        Serial.println(F(" Far"));
      }
       
      if (als_val != RPR0521RS_ERROR) {
        Serial.print(F("RPR-0521RS (Ambient Light) = "));
        Serial.print(als_val);
        Serial.println(F(" [lx]"));
        Serial.println();
      }
    }
 
    //***********************************
    //depending on the sensor value each time
 
    //the water level will rise when the soil dries
    if(moi > moi_threshold){
      Serial.println("Water Servo start.");
      for(int m=0;m < 10;m++){ waterServo.write(0); //move servomotor to 0 degree
            delay(1500); //wait 1.5 seconds
            waterServo.write(90); //move the servomotor to 90 degrees
      }
    } //Temperature   activate
    if(upper_temp_threshold > temp){
      digitalWrite(redLedPin, HIGH);  //turn on LED
      delay(moi);                 	//set the moisture to LED flashing time 
      digitalWrite(redLedPin, LOW);   //turn off LED
    }
    if(under_temp_threshold < temp){
      digitalWrite(blueLedPin, HIGH);  //turn on LED
      delay(moi);                 	//set the moisture to LED flashing time 
      digitalWrite(blueLedPin, LOW);   //turn off LED
    }
 
    //shades when the sunlight is too strong
    if(uv < uv_threshold && !uvFlg){
        waterServo.write(90);
        uvFlg = true;
    }
    else if(uv >= uv_threshold && uvFlg){
        waterServo.write(0);	
        uvFlg = false;
    }
 
    //create wind  at a specific time
    if(counter > send_wind_sec){
      Serial.println("Wind Servo start.");
      for(int n=0;n < 10;n++){
        waterServo.write(0);
        delay(1000);    	
        waterServo.write(90);
      }
      counter = 0;
    }
 
    counter++;
    delay(1000);
}

组装植物培育系统!

现在,接线和编程已经完成,我们来把系统组合在一起。

pYYBAGPzFfKAL2VIAAJME15cm4o324.jpg

图8 迷你盆栽植物

首先,您需要一棵植物(当然)!

poYBAGPzFfSACqEMAAIYTeC0kzk717.jpg

图9 组装遮阳部件

当紫外线太强时,安装在伺服电机上的遮光板将旋转90度,从而挡住窗户上的阳光。

pYYBAGPzFfaASlL_AALHAMkC62g605.jpg

图10 装有伺服电机的喷壶

我们可以根据湿度水平利用伺服电机拉动喷壶进行喷水。

我们的吹风设备是一把东方折扇!

pYYBAGPzFeGAAJrhAANju_Ui5uI570.jpg

图11 组装完成的植物培育系统

整个系统仍有很大的改进空间。如果您想要科技感更高一些,您可以使用小型水泵、PC风扇等设备。此外,如果房间中没有窗户,那么可以同时利用LED与照度传感器,在房间变暗时关闭植物的LED。

总结

在本项目中,我们组合使用传感器评估套件中的多个传感器来打造智能花园系统。市面上已经出现了一些很酷的植物培育设备(教程中做了简要介绍),我相信本教程能够为开发更先进的植物培育设备奠定坚实的基础。

在下一个教程中,我们将更详细地介绍Arduino Create,并尝试使用传感器评估套件中的加速度计。

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2551

    文章

    51200

    浏览量

    754515
  • Arduino
    +关注

    关注

    188

    文章

    6471

    浏览量

    187303
收藏 人收藏

    评论

    相关推荐

    Arduino兼容传感器扩展板SensorShield-EVK-001

    ;SensorShield-EVK-001"是将ROHM集团量产中的8种传感器分别在PCB板上实装并与开放平台连接板组成的套件。通过与在全球电子工具领域应用广泛的Arduino Uno
    发表于 04-11 06:20

    【罗姆传感器评估板试用体验连载】一、产品开箱

    感谢eefans和厂家提供的试用活动。本次收到的是来自罗姆放的传感器评估板。板卡采用日系简洁风的包装:板卡全家福:套件包含3个传感器板卡和一个扩展板以及一个
    发表于 02-11 19:08

    【罗姆传感器评估板试用体验连载】1.开箱+资料准备+环境搭建+拓展板

    系统的文件进行下载安装。 四、罗姆Arduino拓展板 1.概述 罗姆Arduino拓展板用于连接Arduino UNO开发板以及传感器
    发表于 02-25 11:35

    【罗姆传感器评估板试用体验连载】-03-传感器篇- 气压传感器评估板BM1390GLV-EVK-001 颜色传感器评估板BH1749NUC-EVK-001

    本帖最后由 jf_18702540 于 2022-3-9 11:37 编辑 【罗姆传感器评估板试用体验连载】-03-传感器篇-气压传感器评估
    发表于 03-08 16:06

    【罗姆传感器评估板试用体验连载】开箱展示

    首先感谢电子发烧友平台的眷顾,有幸申请到了Rohm传感器开发板套件。这次申请的套件包含了Rohm三个类型
    发表于 03-11 14:01

    ROHM 地磁传感器介绍与应用

    本视频将指导您地磁传感器评估方法 。支持Arduino Uno、mbed等开放平台的罗姆传感器评估套件
    的头像 发表于 06-26 17:43 6017次阅读

    基于Arduino传感器制作智能垃圾桶

    电子发烧友网站提供《基于Arduino传感器制作智能垃圾桶.zip》资料免费下载
    发表于 11-18 09:24 10次下载
    基于<b class='flag-5'>Arduino</b>和<b class='flag-5'>传感器</b><b class='flag-5'>制作</b><b class='flag-5'>智能</b>垃圾桶

    使用Arduino和火焰传感器制作火灾探测系统

    电子发烧友网站提供《使用Arduino和火焰传感器制作火灾探测系统.zip》资料免费下载
    发表于 11-23 10:00 1次下载
    使用<b class='flag-5'>Arduino</b>和火焰<b class='flag-5'>传感器</b><b class='flag-5'>制作</b>火灾探测<b class='flag-5'>系统</b>

    Arduino传感器ROHM传感器评估套件概览

    ROHM Sensor Shield(ROHM传感器开发板)是一种兼容Arduino的扩展板,旨在帮助用户快速将各种传感器添加到自己的开发项
    的头像 发表于 02-23 17:37 888次阅读
    <b class='flag-5'>Arduino</b><b class='flag-5'>传感器</b>–<b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b><b class='flag-5'>评估</b><b class='flag-5'>套件</b>概览

    ROHM Arduino传感器套件打造DIY万圣节僵尸面具

    今天,我们会利用ROHM传感器评估套件制作一款超级简单的万圣节僵尸面具!我们将使用
    的头像 发表于 02-23 17:45 947次阅读
    用<b class='flag-5'>ROHM</b> <b class='flag-5'>Arduino</b><b class='flag-5'>传感器</b><b class='flag-5'>套件</b>打造DIY万圣节僵尸面具

    Arduino预处理指令教程

    在适用于ROHM传感器评估套件的轻量级Arduino库中,我介绍了RohmMultiSensor——帮您轻松连接
    的头像 发表于 02-24 09:51 1778次阅读
    <b class='flag-5'>Arduino</b>预处理<b class='flag-5'>器</b>指令教程

    采用ROHM传感器套件的DIY Arduino家庭安防系统 第1部分 机制

    在该项目中,我们将使用Arduino Mega和ROHM传感器评估套件制作一套DIY
    的头像 发表于 02-24 15:08 1060次阅读
    采用<b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b><b class='flag-5'>套件</b>的DIY <b class='flag-5'>Arduino</b>家庭安防<b class='flag-5'>系统</b> 第1部分 机制

    ROHM传感器评估套件的3D外壳以及RohmMultiSensor库更新

    不久前,我创建了RohmMultiSensor - Arduino库,利用该库可以轻松控制ROHM传感器评估
    的头像 发表于 02-24 09:51 897次阅读
    <b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b><b class='flag-5'>评估</b><b class='flag-5'>套件</b>的3D外壳以及RohmMultiSensor库更新

    适用于罗姆传感器评估套件的轻量级 Arduino

    罗姆传感器评估套件是一种兼容 Arduino 的扩展板 (Shield),配有以下8钟传感器:加速度计、压力
    的头像 发表于 02-24 10:21 904次阅读
    适用于罗姆<b class='flag-5'>传感器</b><b class='flag-5'>评估</b><b class='flag-5'>套件</b>的轻量级 <b class='flag-5'>Arduino</b>库

    利用ROHM传感器评估套件实现UCLA AirMouse–第2部分

    利用ROHM传感器评估套件实现UCLA AirMouse – 第1部分中,我们完成了项目的硬件。对于发射
    的头像 发表于 02-27 10:27 565次阅读