一. 目标实现功能
使用Arduino,收集光照、温度、空气湿度、CO2浓度等数据,并通过蓝牙传输至PC。同时,收集土壤湿度,并设定阈值使得硬件在土壤湿度过低时自动浇水。
最终成品演示视频参见:https://www.bilibili.com/video/BV1T44y167WE
二. 相关硬件模块以及连接方式
1. 主板(搭载MCU):Arduino UNO R3
2. 扩展板:Studio IOShield V3 (YwRobot)
3. 光照传感器:BH1750FVI
BH1750FVI共有5个接口,分别为VCC、SCL、DAT、GND、ADDR,其中ADDR不接,剩余接口分别与扩展板上的5V、SCL、SDA、GND相接。
可得,BH1750FVI使用I2C接口传输光照数据。
4. 温湿度传感器:DHT11
DHT11共有3个接口,分别为VCC、DAT、GND,其分别与扩展板上的5V、数字接口8、GND相接。
可得,DHT11使用Arduino数字接口(即扩展板上SVG区)传输温度和湿度数据。
5. CO2传感器:SPG30
SPG30共有4个接口,分别为VCC、GND、SCL、SDA,其分别与扩展板上的3.3V、GND、SCL、SDA相接。
可得,SPG30需要在3.3V电压下工作,且使用I2C接口传输TVOC、CO2、Raw H2、Raw Ethanol的浓度数据。
6. 土壤湿度传感器:Moisture Sensor (YwRobot)
该版本Moisture Sensor共有3个接口,分别为OUT、VCC、GND,其分别与扩展板上的模拟接口A0、5V、GND相接。
可得,Moisture Sensor使用Arduino模拟接口(即扩展板上GVS区)传输土壤湿度数据。当然,该数据无需显示,只需用来判断水泵是否需要启动。
7. 水泵驱动模块:Motor Driver Module T0 (YwRobot)
该版本Motor Driver Module共有3个接口,分别为IN、VCC、GND,其分别与扩展板上的数字接口6、5V、GND相接。
可得,可以通过在数字接口6写入的方式使得水泵驱动模块工作亦或暂停工作,从而控制水泵开关。需要注意的是,由于使用该控制方式,此驱动模块的模式选择应选择VCC而非VIN。
8. 直流水泵(YwRobot)
该版本直流水泵直接与水泵驱动模块V+及V-连接即可,同时出口端接入水管。将直流水泵置于水中,其在水泵驱动打开后会抽取其周边的水,并通过水管流出。
9. 状态显示灯:Traffic Light (YwRobot)
该版本Traffic Light共有4个接口,分别为GND、R、Y、G,其分别与扩展板上的GND、数字接口11、数字接口12、数字接口13相接。
其用于显示Arduino工作状态,红灯亮表示Arduino正在工作,黄灯亮表示缺水并正在浇水,绿灯亮表示不缺水。
10. 蓝牙模块:HC05
HC05共有6个接口,分别为KEY、VCC、GND、TXD、RXD、STATE,其中KEY、STATE不接,剩余接口分别与扩展板上的3.3V、GND、RX、TX相接。
可得,HC05需要在3.3V电压下工作,且应当其接口与TX、RX应反接(即RX接TX,TX接RX)。
若没有蓝牙模块,Arduino已经可以通过有线传输(USB接口)实现数据的串口传输(以本PC为例,此时端口为COM7)。当然如果接入蓝牙模块,Arduino可以实现无线数据传输,只需在PC端蓝牙设备选项找到相关设备(HC05设备名称的显示可以通过配套蓝牙修改助手),其连接的初始密码为1234(也可修改),连接后即可使用(以本PC为例,此时端口为COM10,有时也可能是COM9)。同时,它在完成连接前指示灯是处在快闪的状态,在完成连接后指示灯将慢闪。
11. 锂电池供电模块 14500 (YwRobot)
由于要使用蓝牙远程无线通信,Arduino的供电应由独立电源完成,该锂电池供电模块即可实现此目的。