【基于物联网的智能草莓种植系统的设计与实现系列教程】3-土壤湿度传感器代码与接线验证(课程设计、毕设项目、树莓派、yolov5、PCF8591)_树莓派土壤传感器 mk227接线

开始此章节教程之前,请确保你已经安装了相应的环境并且拥有相应的工具。
如果你还没有准备好可点此跳转

本章节将会带你使用树莓派连接PCF8591模数采集模块,并转换土壤湿度传感器采集的模拟量给树莓派,获取相应的土壤湿度数据。

硬件连接

1、土壤湿度传感器支持输出电平信号与模拟信号,电平信号只有高低,无法满足我们显示具体土壤湿度的要求,所以我们采用A0 模拟引脚,但是树莓派不支持模拟量输入,所以我们增加一个模数转换模块PCF8591,接线图如图所示。
在这里插入图片描述
请添加图片描述

我真的尽力了,建议看原理图,实物图真是惨不忍睹。连接正确的情况下,指示灯都会亮的。错了就多试几次,树莓派也是支持热拔插的,别断路就行。加油!
在这里插入图片描述

代码测试

1、直接运行代码肯定会报错,因为这里面还包含了光照强度传感器的代码,如图
在这里插入图片描述

2、所以我们需要注释掉光照强度传感器部分的代码,如图,需要用#号注释掉46-54行的代码。
31-44行的代码为PCF8591模块上面的温度与光照传感器,感兴趣的也可以去掉注释测试一下。在这里插入图片描述

3、注释掉以后重新测试即可得到具体的土壤湿度数据,正常应该是0,因为土壤湿度计并没有插到土里,你可以尝试有湿纸巾包裹传感器或者握住湿度计观察读数是否变化。如图。
在这里插入图片描述
好的,恭喜你完成了土壤湿度传感器的连接验证,继续加油!
如果你还是报错,可以检查一下树莓派I2C是否开启,或者检查接线是否正确,设备是否损坏等,可以通过以下命令行查看。

sudo i2cdetect -y 1

在这里插入图片描述

完整代码

代码和上面的测试代码完全一样的,推荐去第一章统一下载,点击跳转。

import smbus
import time

if __name__ == "\_\_main\_\_":
    #BH1750地址
    __DEV_ADDR=0x23

    __PCF_ADDR=0x48
 
    #控制字
    __CMD_PWR_OFF=0x00  #关机
    __CMD_PWR_ON=0x01   #开机
    __CMD_RESET=0x07    #重置
    __CMD_CHRES=0x10    #持续高分辨率检测
    __CMD_CHRES2=0x11   #持续高分辨率模式2检测
    __CMD_CLHRES=0x13   #持续低分辨率检测
    __CMD_THRES=0x20    #一次高分辨率
    __CMD_THRES2=0x21   #一次高分辨率模式2
    __CMD_TLRES=0x23    #一次分辨率
    __CMD_SEN100H=0x42  #灵敏度100%,高位
    __CMD_SEN100L=0X65  #灵敏度100%,低位
    __CMD_SEN50H=0x44   #50%
    __CMD_SEN50L=0x6A   #50%
    __CMD_SEN200H=0x41  #200%
    __CMD_SEN200L=0x73  #200%

    __PCF_THRES=0x42    #检测

    
    while True:
# bus.write\_byte(0x48,0x40)
 # bus.read\_byte(0x48)
  # illnum =bus.read\_byte(0x48)
   # illnum =(255-illnum)/255\*1000
    # print("光照强度:%.2f" % illnum + " lux ")
        
     # bus.write\_byte(0x48,0x41)
      # bus.read\_byte(0x48)
       # temnum =bus.read\_byte(0x48)
        #temnum +=bus.read\_byte(0x48)
# temnum +=bus.read\_byte(0x48)
 # temnum =temnum/3
  # temnum =(255-temnum)/255\*100-6.5
   # print("环境温度:%.2f" % temnum + " ℃ ")
        bus=smbus.SMBus(1)
        bus.write_byte(\_\_DEV\_ADDR,\_\_CMD\_PWR\_ON)
        bus.write_byte(\_\_DEV\_ADDR,\_\_CMD\_THRES2)
        time.sleep(0.2)
        illnum=bus.read\_word\_data(__DEV_ADDR,0)
        #read\_word\_data
        illnum=((illnum>>8)&0xff)|(illnum<<8)&0xff00
        illnum=round(illnum/(2\*1.2),2)
        result="光照强度: "+str(illnum)+" lux"
        print(result)
 
        bus.write_byte(\_\_PCF\_ADDR,\_\_PCF\_THRES)
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/a0ad91328089359eb9d24dd9ed691107.png)

![img](https://img-blog.csdnimg.cn/img_convert/5a493824edaf028ac7543a9eb84c8489.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/c30d5818d50edb68640067f083e6574f.png)

 ![img](https://img-blog.csdnimg.cn/img_convert/3236e95b5deae233cdc63729f68e082c.png)

![img](https://img-blog.csdnimg.cn/img_convert/47a348838917bc9bf178fa0eda22a532.png)

![img](https://img-blog.csdnimg.cn/img_convert/bb8285743ba585fb8928ba1dae43966b.png)

![](https://img-blog.csdnimg.cn/img_convert/34a3fdcd257b3a922a35b9bd07945a35.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值