这篇文章来源于DevicePlus.com英语网站的翻译稿。
今天,我们将利用ROHM传感器评估套件打造一套智能花园系统。在此项目中,我们整合接近/环境光传感器(ALS)和其他传感器,实现植物培育设备的自动化操作!
有关ROHM传感器的更多信息,请参阅我们的文章ROHM传感器评估套件概览!
此外,我们将使用Arduino Create对系统进行编程。
Arduino Create是一个多合一的在线平台,可以编写代码、配置电路板、共享项目。该平台于2016年8月18日正式发布。
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种不同的传感器。我们应将哪些传感器集成到植物培育系统中呢?我们来复习一下每个传感器的功能,看看系统可以采用哪些传感器。
图1 传感器评估套件包含的传感器
加速度计: 检测倾斜、运动、振动等。→我们可能不会用此器件来测量加速度。
气压传感器:检测大气压力→压力与天气之间的关系似乎与室内植物没有关系
地磁传感器:检测方向→可以根据太阳的方向改变植物的朝向吗(?)
接近传感器:检测正在接近的物体;检测亮度→如果我们的系统只是在白天(或明亮时)而不是在黑暗中工作,那么这个器件很有用。
颜色传感器:检测颜色→叶子是否枯萎,等等……我们以后再研究这个功能吧……
霍尔传感器:通过磁铁检测物体→我觉得这个项目可能不会使用接近开关或定位功能…
温度传感器:检测温度→我们可以用温度数据来控制植物的浇水情况(比如温度较高时应该多浇水,等等)。
紫外线传感器:检测紫外线→日光太强/太弱时可通知用户相关情况。
根据各个传感器的功能简述,为了完成此项目,我们可能需要在系统中整合多个传感器。那么我们应该集成哪些传感器呢?
图2 一般植物生长注意事项
如图2所示,种植健康的植物必须满足一定条件。一般来讲,植物在通风良好、阳光充足和温度适中的地方生长最好。当然,它们需要水。
根据这些信息,我们可以缩小传感器的选择范围:
日光条件→利用紫外线传感器和温度传感器检查温度是否过高/紫外线强度是否过大,并采取必要的措施以减少日光照射。
浇水原则→利用土壤传感器,我们可以确定土壤中的水分含量,并根据盆的大小为植物浇水。
关于温度→如果温度过高或过低,我们可以检查植物含量并触发警报。
通风→我们可以测量室内空气流速,如果室内风量不够,我们可以用风扇来产生风。
现在,我们开始构造这个系统吧!
类似的设备……
说到植物培育设备……已经有人制作过大型植物培育系统。比如FarmBot。从外观上看,FarmBot就像是一台巨大的激光切割机或3D打印机。正如下面的视频所示,该机器还可以帮忙播种,似乎我们通过电脑或移动应用程序就能控制播种过程。长时间在室外管理和控制这些设备会比较困难,尤其是在天气比较恶劣的情况下。不管怎样,这些非常酷的设备在改善可持续发展农业领域具有巨大的潜力。
FARMBOT GENESIS – https://farmbot.io/
Arduino Create × Rohm 传感器评估套件!
接下来我们看一下如何用Arduino Create编写程序。
图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.
图 4. Arduino Create Web Editor
您会看到编辑器在浏览器中打开。值得一提的是,与Arduino Software IDE相比,这些菜单更易于查看和定位。有时,在电脑上使用IDE并打开太多带有很多程序的窗口时,它们会变得杂乱无章;但是这个编辑器的窗口整洁有序,您可以轻松地找到所需文件。
菜单栏位于编辑器的左侧。
图5 Arduino Create Web Editor – 基本功能
我们来查看一些常用功能。我们从“Blink.ino”开始(路径:Examples →BUILT IN→01.BASICS→Blink)。使用屏幕上方中央的下拉菜单,选择要连接的Arduino开发板和端口。然后,点击“Verify”→“Upload”(通常在Arduino软件中执行此操作)。
添加传感器评估套件库
接下来,我们将添加传感器评估套件库。要添加库,您可以点击左侧菜单的“Libraries”,并单击“ADD ZIP LIBRARY”。然后,选择要添加的库的zip文件完成添加。您可以从此处为每个传感器下载传感器评估套件库(zip文件)。
图6 Arduino Create Web Editor – 添加库
传感器评估套件已成功连接。现在,我们进行连线和编程!
整个系统的设计理念如下:
日光条件→利用紫外线传感器和温度传感器检查温度是否过高/紫外线强度是否过大,并采取必要的措施以减少日光照射。
→ 用伺服电机遮阳!
浇水原则→利用土壤传感器,我们可以确定土壤中的水分含量,并根据盆的大小为植物浇水。
→ 使用土壤传感器和喷壶!
关于温度→如果温度过高或过低,我们可以检测植物的环境温度并触发警报。
→ 用LED触发警报!(也许将来我们可以通过网络通知程序来实现这个功能!)
通风→我们可以测量室内空气流速,如果室内风量不够,我们可以用扇子来产生风。
→ 用伺服电机操作扇子扇风。
图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); }
组装植物培育系统!
现在,接线和编程已经完成,我们来把系统组合在一起。
图8 迷你盆栽植物
首先,您需要一棵植物(当然)!
图9 组装遮阳部件
当紫外线太强时,安装在伺服电机上的遮光板将旋转90度,从而挡住窗户上的阳光。
图10 装有伺服电机的喷壶
我们可以根据湿度水平利用伺服电机拉动喷壶进行喷水。
我们的吹风设备是一把东方折扇!
图11 组装完成的植物培育系统
整个系统仍有很大的改进空间。如果您想要科技感更高一些,您可以使用小型水泵、PC风扇等设备。此外,如果房间中没有窗户,那么可以同时利用LED与照度传感器,在房间变暗时关闭植物的LED。
总结
在本项目中,我们组合使用传感器评估套件中的多个传感器来打造智能花园系统。市面上已经出现了一些很酷的植物培育设备(教程中做了简要介绍),我相信本教程能够为开发更先进的植物培育设备奠定坚实的基础。
在下一个教程中,我们将更详细地介绍Arduino Create,并尝试使用传感器评估套件中的加速度计。
DevicePlus 编辑团队
设备升级版适用于所有热爱电子和机电一体化的人。
审核编辑黄宇
-
传感器
+关注
关注
2561文章
52360浏览量
762641 -
Arduino
+关注
关注
188文章
6485浏览量
189898
发布评论请先 登录
Arduino兼容传感器扩展板SensorShield-EVK-001
【罗姆传感器评估板试用体验连载】一、产品开箱
【罗姆传感器评估板试用体验连载】1.开箱+资料准备+环境搭建+拓展板
【罗姆传感器评估板试用体验连载】-03-传感器篇- 气压传感器评估板BM1390GLV-EVK-001 颜色传感器评估板BH1749NUC-EVK-001
利用ROHM传感器评估套件实现UCLA AirMouse–第2部分

【H桥电机驱动电路原理】-学习笔记
工作原理电路分析这是一个由晶体管构成的H桥电机驱动电路,以下是对其各部分的介绍:核心器件晶体管:电路中使用了PNP型的SS8550(Q5、Q6)和NPN型的SS8050(Q9、Q10、Q13、Q14)。通过不同晶体管的导通与截止组合,实现电机两端电压极性的切换,进而控制电机正反转。比如,当Q5和Q10导通,Q6和Q9截止时,电流从MotorL+流入电机,从M

ATA-2041高压放大器在CFRP板分层缺陷的空耦超声原位测量中的应用
前言空气耦合超声波技术,作为一种高效且无损的检测方法,近年来在工业领域受到了广泛关注。其独特之处在于利用空气作为耦合介质,无需与被测物体直接接触,即可实现高精度的检测与成像。它能够检测在用CFRP板中的缺陷确保其应用安全,但传统的空气耦合超声方法通常依赖于线性缺陷指数在表征小尺寸缺陷方面无效。此外扫描步长完全限制了它们的成像空间分辨率,导致成像空间分辨率与检

TwinCAT3 EtherCAT抓包 | 技术集结
在使用TwinCAT测试EtherCATEOE功能时,我们会发现正常是无法使用Wireshark去进行网络抓包抓取EtherCAT报文的,今天这篇文章就带大家来上手EtherCAT抓包方式。准备环境硬件环境:EtherKit开发板网线一根Type-CUSB线一根软件环境TwinCAT3RT-ThreadstudiowiresharkEtherCATEOE工程

EtherCAT科普系列(8):EtherCAT技术在机器视觉领域的应用
机器视觉是基于软件与硬件的组合,通过光学装置和非接触式的传感器自动地接受一个真实物体的图像,并利用软件算法处理图像以获得所需信息或用于控制机器人运动的装置。机器视觉可以赋予机器人及自动化设备获取外界信息并认知处理的能力。机器视觉系统内包含光学成像系统,可以作为自动化设备的视觉器官实现信息的输入,并借助视觉控制器代替人脑实现信息的处理与输出。从而实现赋予自动化

新品 | 26+6TOPS强悍算力!飞凌嵌入式FCU3501嵌入式控制单元发布
飞凌嵌入式FCU3501嵌入式控制单元基于瑞芯微RK3588处理器开发设计,4xCortex-A76+4xCortex-A55架构,A76主频高达2.4GHz,A55核主频高达1.8GHz,支持8K编解码,NPU算力6TOPS,支持算力卡拓展,可以插装Hailo-8 26TOPS M.2算力卡。

接口核心板必选 | 视美泰AIoT-3568SC 、 AIoT-3576SC:小身材大能量,轻松应对多场景设备扩展需求!
在智能硬件领域,「适配」是绕不开的关键词。无论是小屏设备的”寸土寸金”,还是模具开发的巨额成本,亦或是多产品线兼容的复杂需求,开发者总在寻找一款能「以不变应万变」的核心解决方案。视美泰旗下的AIoT-3568SC与AIoT-3576SC接口核心板系列,可以说是专为高灵活适配场景而生!无需为设备尺寸、模具限制或产品线差异妥协,一块核心板,即可释放无限可能。为什

3核A7+单核M0多核异构,米尔全新低功耗RK3506核心板发布
近日,米尔电子发布MYC-YR3506核心板和开发板,基于国产新一代入门级工业处理器瑞芯微RK3506,这款芯片采用三核Cortex-A7+单核Cortex-M0多核异构设计,不仅拥有丰富的工业接口、低功耗设计,还具备低延时和高实时性的特点。核心板提供RK3506B/RK3506J、商业级/工业级、512MB/256MBLPDDR3L、8GBeMMC/256

搭建树莓派网络监控系统:顶级工具与技术终极指南!
树莓派网络监控系统是一种经济高效且功能多样的解决方案,可用于监控网络性能、流量及整体运行状况。借助树莓派,我们可以搭建一个网络监控系统,实时洞察网络活动,从而帮助识别问题、优化性能并确保网络安全。安装树莓派网络监控系统有诸多益处。树莓派具备以太网接口,还内置了Wi-Fi功能,拥有足够的计算能力和内存,能够在Linux或Windows系统上运行。因此,那些为L

STM32驱动SD NAND(贴片式SD卡)全测试:GSR手环生物数据存储的擦写寿命与速度实测
在智能皮电手环及数据存储技术不断迭代的当下,主控 MCU STM32H750 与存储 SD NAND MKDV4GIL-AST 的强强联合,正引领行业进入全新发展阶段。二者凭借低功耗、高速读写与卓越稳定性的深度融合,以及高容量低成本的突出优势,成为大规模生产场景下极具竞争力的数据存储解决方案。

芯对话 | CBM16AD125Q这款ADC如何让我的性能翻倍?
综述在当今数字化时代,模数转换器(ADC)作为连接模拟世界与数字系统的关键桥梁,其技术发展对众多行业有着深远影响。从通信领域追求更高的数据传输速率与质量,到医疗影像领域渴望更精准的疾病诊断,再到工业控制领域需要适应复杂恶劣环境的稳定信号处理,ADC的性能提升成为推动这些行业进步的重要因素。行业现状分析在通信行业,5G乃至未来6G的发展,对基站信号处理提出了极

史上最全面解析:开关电源各功能电路
01开关电源的电路组成开关电源的主要电路是由输入电磁干扰滤波器(EMI)、整流滤波电路、功率变换电路、PWM控制器电路、输出整流滤波电路组成。辅助电路有输入过欠压保护电路、输出过欠压保护电路、输出过流保护电路、输出短路保护电路等。开关电源的电路组成方框图如下:02输入电路的原理及常见电路1AC输入整流滤波电路原理①防雷电路:当有雷击,产生高压经电网导入电源时

有几种电平转换电路,适用于不同的场景
一.起因一般在消费电路的元器件之间,不同的器件IO的电压是不同的,常规的有5V,3.3V,1.8V等。当器件的IO电压一样的时候,比如都是5V,都是3.3V,那么其之间可以直接通讯,比如拉中断,I2Cdata/clk脚双方直接通讯等。当器件的IO电压不一样的时候,就需要进行电平转换,不然无法实现高低电平的变化。二.电平转换电路常见的有几种电平转换电路,适用于

瑞萨RA8系列教程 | 基于 RASC 生成 Keil 工程
对于不习惯用 e2 studio 进行开发的同学,可以借助 RASC 生成 Keil 工程,然后在 Keil 环境下愉快的完成开发任务。

共赴之约 | 第二十七届中国北京国际科技产业博览会圆满落幕
作为第二十七届北京科博会的参展方,芯佰微有幸与800余家全球科技同仁共赴「科技引领创享未来」之约!文章来源:北京贸促5月11日下午,第二十七届中国北京国际科技产业博览会圆满落幕。本届北京科博会主题为“科技引领创享未来”,由北京市人民政府主办,北京市贸促会,北京市科委、中关村管委会,北京市经济和信息化局,北京市知识产权局和北辰集团共同承办。5万平方米的展览云集

道生物联与巍泰技术联合发布 RTK 无线定位系统:TurMass™ 技术与厘米级高精度定位的深度融合
道生物联与巍泰技术联合推出全新一代 RTK 无线定位系统——WTS-100(V3.0 RTK)。该系统以巍泰技术自主研发的 RTK(实时动态载波相位差分)高精度定位技术为核心,深度融合道生物联国产新兴窄带高并发 TurMass™ 无线通信技术,为室外大规模定位场景提供厘米级高精度、广覆盖、高并发、低功耗、低成本的一站式解决方案,助力行业智能化升级。
评论