首页 科技正文

欧博亚洲注册:在树莓派上读取土壤湿度传感器读数-python代码实现及常见问题(周全简朴易懂)

admin 科技 2020-06-25 54 0

本篇文章简朴先容了如何在树莓派上设置土壤湿度传感器以读取土壤湿度及代码实现。

主要包罗有以下4个模块:

一、土壤湿度传感器常见类型及先容

二、实验所需装备

三、装备连线方式与代码实现

四、常见问题及注重事项

需要哪个模块的内容直接跳转去看即可~

 

一、土壤湿度传感器常见类型及先容

 土壤湿度传感器,又名土壤水分传感器、土壤墒情传感器、土壤含水量传感器等。顾名思义,主要用来丈量土壤相对含水量,做土壤墒情监测。在智能农业,农业浇灌和林业防护等领域极广。该传感器价格低廉,若是想在家制作一个浅易的智能自动化作物浇灌系统,有了它,再加上温湿度传感器、树莓派/Arduino就可以轻松完成。

常见的土壤传感器分为两类,电阻型和电容型土壤湿度传感器。但原理大同小异,都是丈量土壤中水分的体积含量,并以电压示意水分值。

(一)电阻型土壤湿度传感器

常见的有传感器型号有YL-69(下图左)和FC-28(下图右)。这是一种低技术含量的传感器这类传感器由两部门组成,带探针的传感器,A to D(模拟信号转数字信号)电子板(校准灵敏度主板),两者用母对母杜邦线毗邻。                

            它凭据土壤的介电常数(土壤的导电能力)来估量土壤体积水含量,事情时,使用两个探针让电流通过土壤,然后读取电阻来获得湿度水平。水分越多,土壤导电越容易(电阻越小),而土壤干燥,导电越差(电阻越大)。土壤中的湿度是一个延续转变的一系列值,为模拟信号,使用A to D接线板之后可以将从环境中得来的模拟信号转成数字信号,在该板上有两个指示灯,PWR-LED和DO-LED,前者检测是否插好电源,若是电源的正负极毗邻准确,则会亮起,如下图(左)所示。在这里我使用的是YL-69型号,灯为绿色,也有一些厂商生产的传感器指示灯为红色。该传感器在输出数字信号时,可以使用改锥调治板上的电位计(蓝色中心有十字架的部位)来提前设定阈值巨细,一旦土壤湿度到达或大于阈值,则DO-LED亮起,如下图(中)所示。

 电子板从左到右的标记为AO、DO、GND、VCC,如下图(右)所示。AO和DO为信号引脚,若是需要模拟信号,则毗邻AO,输出的模拟值是介于所提供的电压值到0V间的转变的电压值,若是输出0V,则代表土壤导电性欠好,即水分含量低,可以用这个电压值来估量土壤湿度。若是需要数字信号输出则毗邻DO,简朴的输出0和1,可直接通过信号灯判断土壤中水分是否低于阈值,高于则“开”,低则“关”。GND示意接地,VCC毗邻电源,但在这个项目中,我们将单独行使模拟输出。

               

 该传感器的优点是价格低廉,且有指示灯,考察利便,但由于土壤环境是酸性的(acidic),随着时间的推移,土壤里的化学物质会使得探针氧化(oxidize)导致丈量不准确,以是需要时不时的举行替换以保证丈量的准确性。

(二)电容型传感器

相比较前一类型的传感器,这类传感器就显得“光秃秃”了,只有一个组件,没有指示灯,且只能输出模拟信号。它区别于电阻传感器,行使电容感应原理来检测土壤湿度,避免了电阻式传感器极易被侵蚀的问题,生命周期较长,瑕玷是不能用指示灯判断传感器是否正常事情,它同时只提供模拟信号。如图设计DF Robot的一款传感器,内置稳压芯片,支持3.3V-5.5V宽电压事情。DFRobot-Gravity接口具有兼容性,可直接和Gravity IO扩展板相毗邻。输出电压为0-3VDC。

欧博亚洲注册:在树莓派上读取土壤湿度传感器读数-python代码实现及常见问题(周全简朴易懂) 第1张

在自动化浇灌系统中,湿度传感器用于丈量土壤中水分,可以提前预设一个阈值,一旦土壤中的水分低于此阈值,则启动毗邻着蓄水池(家用拿矿泉水瓶装满水替换即可)的水泵喷水,等到水分值跨越预设值,则水泵暂停事情。

 

二、实验所需装备

树莓派 3 b+/树莓 4 b/树莓派Zero W

MCP3008

面包板

跳线(公对母,母对母,最很多多少准备一些)

土壤传感器(电容式、电阻式均可)

一杯水(可以将传感器放入水中来考察湿度读数的转变,若没有条件也可直接用手握住传感器的探针)

MCP3008

由于树莓派没有模拟信号引脚,以是没有办法直接输出模拟信号数值,此时我们需要使用MCP3008集成电路。

MCP3008 IC(Integrated Circuit)是一个8通道,10位的具有SPI串行接口的A / D转换器(模拟-数字转换器),共有16个引脚,可以用来解决模拟引脚问题(MCP3004也是ADC,不过为4路,体型更小)MCP3008使用SPI总线协议从树莓派吸收模拟输入值。它有8个模拟输入(ch0-ch7),另外一列的8个引脚中有4个电源和地引脚和4个毗邻树莓派的引脚,它发生局限为0-1023的输出值(注重:0示意0V, 1023示意3.3V)。

欧博亚洲注册:在树莓派上读取土壤湿度传感器读数-python代码实现及常见问题(周全简朴易懂) 第2张

三、装备连线方式与代码实现

在此实验中,主要先容和使用的FC-28型号土壤湿度传感器,但其它型号的传感器使用,连线均与此相同。

(一)装备连线方式

1.电路图及说明

MCP3008共有16个引脚,其中8个用于纪录模拟输入值,位于CH0-CH7(引脚1-8),4个通讯引脚通过SPI协议方式与树莓派通讯,另有2个电源引脚,2个接地引脚。

欧博亚洲注册:在树莓派上读取土壤湿度传感器读数-python代码实现及常见问题(周全简朴易懂) 第3张

欧博亚洲注册:在树莓派上读取土壤湿度传感器读数-python代码实现及常见问题(周全简朴易懂) 第4张

(二)代码实现

1. 启用树莓派的SPI接口

树莓派的SPI接口与SSH、VNC服务相同,是默认关闭的,需要我们在设置中打开此服务才可以使用。

根据以下步骤启动终端并输入以下下令:

(1)打开树莓派设置选项

sudo raspi-config

(2)导航到Interface选项,启用SPI接口。

(3)重启树莓派

reboot

2. 安装spidev库

光启用SPI接口,然则树莓派照样无法读取传感器传过来的值,spidev库将辅助通过SPI接口读取传感器值。

 使用以下下令安装spidev库:

sudo apt-get install git python-dev
git clone git://github.com/doceme/py-spidev
cd py-spidev/
sudo python setup.py install

3. 安装numpy库

我们从传感器获得的值照样电压值而非土壤湿度值,土壤湿度需要使用百分比的形式体现,为了将输出值转换为百分比,还需要使用numpy库。我们从MCP3008 IC吸收到的输出值是在前面提到的0-0123局限内的数值,仍需要将把这些值映射到0-100,以获得一个百分比。

使用以下下令安装numpy模块:

sudo apt-get install python-numpy

4. Python代码

# Importing modules
import spidev # To communicate with SPI devices
from numpy import interp  # To scale values
from time import sleep  # To add delay


# Start SPI connection
spi = spidev.SpiDev() # Created an object
spi.open(0,0) 


# Read MCP3008 data
def analogInput(channel):
  spi.max_speed_hz = 1350000
  adc = spi.xfer2([1,(8+channel)<<4,0])
  data = ((adc[1]&3) << 8) + adc[2]
  return data


while True:
  output = analogInput(0) # Reading from CH0
  output = interp(output, [0, 1023], [100, 0])
  output = int(output)
  print("Moisture:", output)
  sleep(0.1)

当从土壤湿度传感器读取模拟输出值时,它以百分比丈量湿度,使用来自numpy库的特定interp模块举行映射获得从0-100的值。

四、常见问题及注重事项

(一)常见问题

1. 连续输出0或100,无论探针是否放入水中均没有转变

2. 没有操作探针,但读数呈有纪律地转变

针对以上泛起有以下几种解决方案

1.检查树莓派的SPI服务有无准确打开

2.先检查线有没有接稳,查看是不是线的毗邻顺序(传感器的正负极有没有接反,与树莓派的连线有没有串行)有误

3. 线是否有生锈或损坏(之前第一次做实验时,种种调试都泛起不了准确效果,厥后才发现是有几根线生锈了以是不通)

(二)注重事项 

1. 只管使用长线,便于看清连线位置

2. 只管不要使用拼接线(一根公对公,一根母对母拼接成公对母的),这样需要照顾的线更多,也更容易出纰漏

3. 一定一定要有耐心,泛起问题后根据顺序逐一排查。由于涉及到的连线较多,对硬件小白来说,很容易眼花缭乱想放弃,然则太简朴的器械谁都能做,能攻破学习或者生涯中一个个难关的人才气有所发展啊~

欧博亚洲注册:在树莓派上读取土壤湿度传感器读数-python代码实现及常见问题(周全简朴易懂) 第5张

若是你在设置土壤湿度传感器时或使用树莓派时遇见了什么问题,迎接在谈论区写下,看到了会实时回答。期待与人人一起学习。

文字及图片部门泉源:https://maker.pro/raspberry-pi/tutorial/interfacing-soil-moisture-sensor-with-raspberry-pi

转发请标明泉源。祝人人学派happy!

,

联博

www.326681.com采用以太坊区块链高度哈希值作为统计数据,联博以太坊统计数据开源、公平、无任何作弊可能性。联博统计免费提供API接口,支持多语言接入。

版权声明

本文仅代表作者观点,
不代表本站Allbet欧博官网的立场。
本文系作者授权发表,未经许可,不得转载。

评论