二、实践目标
本实践项目运用micro:bit作为智能终端,通过土壤湿度传感器和防水温度传感器来采集土壤的湿度和温度,并借助水泵和继电器实现自动浇水和温度警报的功能。
三、知识目标
- 认识土壤湿度传感器、防水温度传感器、水泵、继电器等硬件设备;
- 理解上述不同元器件的使用和接线方法,能根据连线图进行实物连接;
- 掌握以micro:bit为智能终端,通过BXY软件编写代码采集土壤温湿度数据的方法;
- 掌握以micro:bit为智能终端,通过BXY软件编写代码使水泵与继电器运转的方法;
四、实践准备
硬件清单:
软件使用:BXY编程软件
其他:
1、一盆植物、
2、一烧杯水
知识链接
简介:这是一个简易的水分传感器,可用于检测土壤的水分。当土壤缺水时,传感器输出值将减小,反之将增大。传感器表面做了镀金处理,可以延长它的使用寿命。
简介:这是温度传感器的一种,相较于LM35温度传感器,防水18B20温度传感器最大的特点在于其防水性。正因此,它可以用于一些特定场景,比如土壤温度检测、热水箱温度控制等。
简介:水泵是输送液体或使液体增压的机械。这是新款潜水泵,可放置水中直接使用,4.5~12V宽电压供电范围,兼容性好。可用来做一些抽水类的小项目,像人造喷泉或者瀑布类的。也可用来为植物浇水,甚至为鱼缸换水。采用静音设计,工作时的音量小于40分贝。内有一个过滤器,并装有吸盘,因此能够紧紧地粘在光滑的表面上。
简介:继电器是一种用小电流去控制大电流运作的具有隔离功能的自动开关元件。关于继电器的详细介绍可见附录1。
Tips:由于micro:bit的供电电压5V大于水泵的最小工作电压4.5V。但是实际驱动起来运行会很不稳定。因此可通过继电器来使水泵工作。
简介:蜂鸣器是一种能够发出类似蜂鸣声音的器件。这里的蜂鸣器已被内置在I/O扩展版上。
五、实践过程
在本项目中,我们将利用土壤湿度传感器和防水温度传感器,分三步创造一位植物管家,来实时检测植物生长时土壤的温湿度,并利用水泵和继电器实现自动浇水和温度警报。
1、实时检测土壤湿度
2、添加自动浇水功能
3、添加温度警报功能
任务1:土壤湿度实时检测
1、硬件搭建
STEP1:将micro:bit开发板插入I/O扩展板,注意正反,LED点阵屏朝扩展板的“micro:bit”图标方向

STEP2:通过传感器连接线将土壤湿度传感器连在扩展板的P1端口。其中,红线和黑线分别对应电源正极和负极,蓝线对应信号线,用来传输信号。

STEP3:通过USB连接线将micro:bit接到计算机。

连接完成后如下图,

2、软件编写
STEP1:软件设置
1、创建与保存项目文件
(1)启动BXY编程软件,选择主控类型“micro:bit”。
(2)新建项目,保存并命名为“m2.1”。

STEP2:程序编写
from microbit import *
while True:
#土壤湿度
value1 = pin1.read_analog() #读取数值并记录在变量value1中
display.scroll(str(value1), wait=True, loop=False)#点阵屏显示数值
print(value1)#串口打印
print("------------------")
sleep(300)#延时300毫秒
3、运行调试
STEP1:将土壤湿度传感器镀金部分插入花盆土壤中约2厘米
注:未镀金部分不可触水。

STEP2:点击“烧录”上传程序并观察点阵屏
观察micro:bit,我们可以发现测得的土壤湿度对应的模拟值在点阵屏上滚动显示

观察软件终端界面,我们同样可以看到测得的土壤湿度对应的模拟值。

注:使用micro:bit V1 版时,需要在菜单栏中,点击串口,才会打开终端的串口显示。

若读取不出,可尝试重启软件或联系df技术支持。
任务2:自动浇水
在上个任务中,我们已经完成了对于土壤湿度的实时检测,接下来,我们将在此基础上,添加自动浇水功能。当检测到的土壤湿度的模拟值低于临界值时,打开继电器开关,利用水泵进行浇水。
1、硬件搭建
STEP1:利用螺丝刀将水泵正负线与转接头连接起来,步骤与成型图如下,
(1)松掉转接头螺丝
(2)将线插入,注意正负(棕/红—正;蓝/黑—负)
(3)拧紧螺丝

STEP2:利用继电器将12V电源开关与水泵的转接头连接起来

STEP3:通过连接线将继电器连在扩展板的P2端口。

连接完成后如下图,

STEP4:将继电器开关拨至NO端

注:继电器上有一个开关,NO 为断开,表示默认继电器状态为断开,需要程序写入一个高电平,控制其闭合;NC 为闭合,表示默认继电器状态为闭合,需要程序写入一个高电平,控制其断开。这里,我们设定默认状态为断开。
2、软件编写
STEP1:软件设置
1、创建与保存项目文件
(1)启动BXY编程软件,选择主控类型“micro:bit”。
(2)新建项目,保存并命名为“m2.2”。
STEP2:程序编写
from microbit import *
while True:
#土壤湿度
value1 = pin1.read_analog()#读取数值并记录在变量value1中
display.scroll(str(value1), wait=True, loop=False)#点阵屏显示数值
if (value1 <= 210):
pin2.write_digital(1) #开继电器
else:
pin2.write_digital(0) #关继电器
3、运行调试
STEP1:将水泵浸没于水桶之中
注:水泵不能空转,必须将黑色水泵头沉入水中,否则可能会烧毁硬件。
STEP2:将水管插入花盆的土壤中

STEP3:将12V电源开关插上220V电源插座
STEP4:点击“烧录”上传程序,并观察效果
观察花盆,由于目前花盆中土壤的湿度低于我们设定的临界值,因此,继电器导通,烧杯中的水随管子注入花盆之中。
注:程序中的“210”是我们依据实验情况设定的缺水时的临界值,不同的植物对水的需求量不同。
任务3:温度警报
在上个任务中,我们已经完成了植物在缺水时的自动浇水功能,而由于温度对于植物的生长同样重要,过高或过低的温度皆会对植物生长产生影响。因此接下来,我们将在上述实验基础上,添加温度警报功能。当检测到的温度超出生长范围时,使我们的装置发出警报声。
1、硬件搭建
STEP1:将18B20 数字温度防水传感器与可插拔传感器转接器连接起来,步骤与成型图如下,
(1)向下按压住转接器上方的三个塑料按键
(2)将线插入,注意对应接口(红线(VCC)接C,黑线(GND)接B,黄线(DATA)或绿线(DATA)接A)
(3)松掉对塑料按键的按压,使线固定住

STEP2:通过数字传感器连接线将防水温度传感器连在扩展板的P13端口。其中,红线和黑线分别对应电源正极和负极,绿线对应信号线,用来传输信号。
连接完成后如下图,

注:土壤湿度传感器是模拟量传感器,而防水温度传感器是数字量传感器,需要查询micro:bit引脚图,查看对应引脚是否支持接口,如果接到不支持的接口则无法正常读取数据。micro:bit引脚说明见附录2。
2、软件编写
STEP1:软件设置
1、创建与保存项目文件
(1)启动BXY编程软件,选择主控类型“micro:bit”。
(2)新建项目,保存并命名为“m2.3”。
STEP2:程序编写
from microbit import *
import ds18b20
import music
ds18b20.init(pin13)
while True:
#土壤湿度
value1 = pin1.read_analog()#读取数值并记录在变量value1中
display.scroll(str(value1), wait=True, loop=False)#点阵屏显示数值
if (value1 <= 210):
pin2.write_digital(1)#开继电器
else:
pin2.write_digital(0)#关继电器
#温度
value2 = ds18b20.read()#读取温度数值并记录在变量value2中
print(value2)
print("------------------")
sleep(300)
if (value2 >= 31):
music.play(music.DADADADUM, pin=pin0, wait=True)#警报发声
if (value2 <= -3):
music.play(music.DADADADUM, pin=pin0, wait=True)#警报发声
3、运行调试
STEP1:将防水温度传感器金属端插入土壤中约1.5厘米。
STEP2:打开蜂鸣器开关

STEP3:点击“烧录”上传程序,并观察软件
观察BXY界面,我们可以看到所测得的土壤中的温度在终端中实时显示着。

并且我们发现,当测得的土壤中的温度≥31或≤-3℃时,蜂鸣器就会发出警报声。
注:程序中的“31”和“-3”是我们依据实验情况设定的温度临界值,不同的植物适合不同的生长温度。
六、延伸拓展
思考:
1、关于植物的生长,除了温度和土壤湿度之外还有什么因素会对其有影响呢?我们手头是否有工具可以对其进行测量?
2、我们都知道植物生长是通过光合作用的,但是到了黑夜因为没有了阳光而导致植物无法进行光合作用,如果我们想要加快植物生长就可以在光线不足的时候对其进行补光。但是如果一直亮着植物的补光灯会很费电,我们是否可以为我们的管家添加自动补光的功能弥补这一不足呢?