在过去,我国农业自动化程度较低,与发达国家存在着较显著的差距。现如今,随着现代科技的不断进步,农业自动化水平日渐提高,越来越多的传感器、显示屏等电子设备被应用在农业中,随时随地监测农作物的生长,以便在环境不佳时进行改善。
在这节课上,让我们结合Python学习利器行空板,一起来设计一个智慧农业可视化系统,模拟一下现代农业中对于庄稼生长环境的监测与改善吧!
任务目标
将通过土壤湿度传感器检测到的土壤湿度值显示在屏幕上,同时,设置自动和手动两个模式,在自动模式下,当检测到的土壤湿度值过低时,通过外接继电器和水泵自动浇水,同时行空板屏幕上出现浇水的图示;在手动模式下,可通过点击屏幕上按钮的方式进行浇水和关水。点击“切换模式”按钮可实现手动与自动两个模式的变换。
知识点
1、认识土壤湿度传感器、继电器、水泵
2、学习使用unihiker库显示按钮的方法
3、学习使用Pinpong库使土壤湿度传感器检测数据的方法
4、学习使用Pinpong库控制继电器的方法
5、学习使用继电器控制水泵浇水的方法
材料清单
硬件清单:
行空板x1
Type-C&Micro二合一USB线x1
土壤湿度传感器x1
12V/1000mA 电源适配器x1
简易继电器模块 x1
带水管潜水泵 x1
两头PH2.0-3P白色硅胶绞线x2
软件使用:Mind+编程软件x1
其他:
1、带植物的花盆 x1
2、盛有水的烧杯 x1
3、十字/一字两用螺丝刀 x1
知识储备
1、土壤湿度传感器
这是一个简易的水分传感器,可用于检测土壤的水分。当土壤缺水时,传感器输出值将减小,反之将增大。传感器表面做了镀金处理,可以延长它的使用寿命。
土壤湿度传感器在使用时需要将两金属条充分插入土壤中,并等待数秒直至数据稳定后,通过显示屏模块或软件可以读取土壤湿度对应的数值。
Tip1:不同土壤介质的测量值会存在差异。土壤中的水分存在分布不均的情况,数据仅能代表局部湿度。Tip2:传感器顶部的塑料部分不防水,请勿将传感器整个埋入土中。
2、继电器
继电器是一种用小电流去控制大电流运作的具有隔离功能的自动开关元件。
虽然行空板的供电电压5V大于水泵的最小工作电压4.5V,但是实际驱动起来运行会很不稳定。这里,我们借助继电器模块,外接电源来驱动水泵工作。
3、水泵
水泵是输送液体或使液体增压的机械。可放置水中直接使用,4.5~12V宽电压供电范围。可用来为植物浇水,甚至为鱼缸换水。
4、unihiker库GUI类add_button()方法显示按钮
GUI类中的add_button()方法可以实现在行空板屏幕上显示一个按钮控件,在编程时,通过“对象.方法名()”的形式来实现功能,同时,此方法会返回一个控件对象,使用变量存储起来方便后续进行对象更新操作。
from unihiker import GUI # 导入unihiker库GUI模块
gui = GUI() # 实例化gui对象
#定义按钮被点击后的功能
def click_A(): # 定义点击按钮A时的操作–切换图片
img.config(w=240, h=320, image=‘img/浇水1.png’)
button_A = gui.add_button(x=50, y=260, w=70, h=40, text=“浇水”, οnclick=click_A ,state=‘disabled’)
其中,参数x和y分别表示按钮的横纵坐标位置,w和h表示按钮的宽度和高度,text指的是按钮上显示的文字,onclick表示按钮被点击后所触发的功能,这里,我们需要先将功能以回调函数的形式设定好,state表示的是按钮的状态,按钮有两种状态,normal表示正常可被点击的状态,disabled表示不可被点击状态,此时按钮显示灰色。
5、Pinpong库Pin类write_digital()方法实现数字输出
Pinpong库中Pin类的write_digital()方法可以实现数字输出,在使用前,我们需要先导入Pinpong库,初始化行空板,实例化Pin类来创建一个引脚对象。
from pinpong.board import Board, Pin # 导入pinpong库下的Board, Pin模块
Board().begin() # 初始化,选择板型和端口号,不输入则进行自动识别