关于传感器的一些说明

我的想法是这样的

我尽量用易于理解的语言去说我的想法

首先,土壤湿度传感器和dh11会获取数据,然后树莓派会处理这些数据,读出土壤温湿度和空气温湿度,并将这些数据上传到云服务器,

云服务器会将这些数据显示在网页上,同时树莓派会根据这些数据来决定是否控制继电器进而控制水泵来浇水,当然,水泵是否浇水也可以通过事先做的网页看到。

接下来我将分别介绍这几个传感器和水泵

  • 首先是dh11

    • 先放上控制dh11的代码(通过python2来运行)
# coding=UTF-8
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
channel = 16 #引脚号16
data = [] #温湿度值
j = 0 #计数器
a=20
GPIO.setmode(GPIO.BCM) #以BCM编码格式
time.sleep(1) #时延一秒
GPIO.setup(channel, GPIO.OUT)
GPIO.output(channel, GPIO.LOW)
time.sleep(0.02) #给信号提示传感器开始工作
GPIO.output(channel, GPIO.HIGH)
GPIO.setup(channel, GPIO.IN) while GPIO.input(channel) == GPIO.LOW:
continue while GPIO.input(channel) == GPIO.HIGH:
continue while j < 40:
k = 0
while GPIO.input(channel) == GPIO.LOW:
continue while GPIO.input(channel) == GPIO.HIGH:
k += 1
if k > 100:
break if k < 8:
data.append(0)
else:
data.append(1) j += 1 print "温度传感器正在工作.以下是二进制数据"
print data #输出初始数据高低电平 humidity_bit = data[0:8] #分组
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40] humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0 for i in range(8):
humidity += humidity_bit[i] * 2 ** (7 - i) #转换成十进制数据
humidity_point += humidity_point_bit[i] * 2 ** (7 - i)
temperature += temperature_bit[i] * 2 ** (7 - i)
temperature_point += temperature_point_bit[i] * 2 ** (7 - i)
check += check_bit[i] * 2 ** (7 - i) tmp = humidity + humidity_point + temperature + temperature_point #十进制的数据相加 if check == tmp: #数据校验,相等则输出
print "temperature : ", temperature, ", humidity : " , humidity
if temperature>=20 :
print"123" else: #错误输出错误信息,和校验数据
print "信息错误,将输出校验数据"
print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp GPIO.cleanup()
  • continue

  • continue
    • dh11是用来获取空气湿度和温度数据的
    • DHT11有三个IO接口,一个VCC(正极)接3.3v,一个GND接GND,剩下一个DATA接树莓派的任意一个GPIO
    • 原理推荐阅读这个简书
  • 土壤湿度传感器
    • 这是控制土壤湿度传感器的代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import RPi.GPIO as GPIO
import time channel = 21 #管脚40,参阅树莓派引脚图,物理引脚40对应的BCM编码为21 GPIO.setmode(GPIO.BCM)
GPIO.setup(channel, GPIO.IN) while True:
if GPIO.input(channel) == GPIO.LOW:
print "土壤检测结果:潮湿"
else:
print "土壤检测结果:干燥"
time.sleep(1)
  • continue

  • continue

    • YL-69有模拟输出(AO口)和数字输出(DO口),由于树莓派的GPIO只支持数字输入,所以AO口悬空。将VCC连接物理接口2,GND引脚连接物理接口14,DO引脚连接物理接口,接好线以后,电源灯(红灯)会亮起,调节传感器上的阈值旋钮,使得在空气中绿灯不亮。此时将传感器触角伸入水中,可以看到绿灯亮起。
    • 当然这些接口比如vcc gnd 接别的也行
    • 土壤传感器的原理看这里原理
  • 继电器和水泵

    • 控制继电器和水泵的代码是这样的
import RPi.GPIO as GPIO
import time print("PC ON: PC-ON")
print("Exit: Q and q") while True:
user_choice=input("Choice:")
if user_choice=="PC-ON":
GPIO.setmode(GPIO.BCM)
GPIO.setup(25,GPIO.OUT)
GPIO.output(25,GPIO.LOW)
print("3")
time.sleep(1.0)
print("2")
time.sleep(1.0)
print("1")
time.sleep(1.0)
GPIO.cleanup()
elif user_choice=="q" or user_choice=="Q":
GPIO.cleanup()

这里需要注意一个问题,控制继电器时不可以像普通单片机那样用高低电平来控制继电器,不能用高低电平的原因是电流过大,不管是低电平还是高电平都会是通路,当然,如果接一个合适的电阻就会解决这个问题。我这里没有接合适的电阻而是采用设置和释放gpio的方法。

  • continue

  • continue
    • 继电器VCC就是电源正极,GND就是电源负极,IN是通断信号的输入引脚。NC即常闭端(normal close),COM即公共端,NO即常开端。继电器一端连上正负极和IN,另一端电池盒和水泵和继电器相连。

树莓派dht11,土壤湿度传感器,继电器的使用。树莓派云灌溉(二)的更多相关文章

  1. 在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)

    最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...

  2. 在树莓派上读取土壤湿度传感器读书-python代码实现及常见问题(全面简单易懂)

    本篇文章简单介绍了如何在树莓派上配置土壤湿度传感器以读取土壤湿度(以百分比的形式出现)及代码实现. 主要包含有以下4个模块: 一.土壤湿度传感器常见类型及介绍 二.实验所需设备 三.设备连线方式与代码 ...

  3. Arduino与水泵实验+土壤湿度传感器

    1 水泵实验我们这里是使用的继电器控制的水泵,注意再实验的时候电池的电压不要超过6v,太大容易烧毁水泵,如果是长时间的使用水泵,要注意将水泵放入水中,这样可以达到给水泵降温的效果.1.全新5V继电器模 ...

  4. 【雕爷学编程】Arduino动手做(53)---土壤湿度传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...

  5. Arduino和C51开发DHT11温湿度传感器

    技术:51单片机.Arduino.DHT11.温湿度传感器.传感器   概述 学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产 ...

  6. 树莓派两用优盘制作(FAT32存储+EXT树莓派系统)

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:树莓派两用优盘制作(FAT32存储+EXT树莓派系统)     本文地址:http://tec ...

  7. DHT11温湿度传感器编程思路以及代码的实现(转载)

    源自:https://blog.csdn.net/qq_34952376/article/details/81193938 在我们刚开始进入单片机的学习中,练习写传感器的时序是必不可少的,其实我比较推 ...

  8. DHT11温湿度传感器模块使用方法和驱动代码实现

    DHT11模块简介 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器.它具有超小体积.极低功耗的特点.它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上.非常适用于对 ...

  9. STC15系列通用-STC15F2K60S2/STCW4K32S4读取DHT11温湿度传感器数据串口输出代码实例工程免费下载

    //为了方便大家调试,另附程序工程共大家下载,下载地址:https://www.90pan.com/b1908750 ​ //************************** //程序说明:stc ...

随机推荐

  1. Java集合对象比对

    1. 场景描述 通过java代码从外围接口中获取数据并落地,已经存在的不落地,不存在的落地,因有部分字段变化是正常的,只需比对3个字段相同即为相同. 2. 解决方案 设置定时任务(三个标签完成spri ...

  2. ~~Python文件简单操作~~

    进击のpython Python文件操作 在说Python的文件操作之前 我们可以先思考一个问题 平时我们是怎么对电脑中的文件进行操作的呢? 打开电脑⇨找到文件⇨打开文件⇨读文件⇨修改文件⇨保存文件⇨ ...

  3. Oracle使用MyBatis中RowBounds实现分页查询

    Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...

  4. 最大公约数GCD学习笔记

    引理 已知:k|a,k|b 求证:k|(m*a+n*b) 证明:∵ k|a ∴ 有p*k=a 同理可得q*k=b ∴ p*k*m=m*a,q*k*n=n*b ∴ k(p*m+q*n)=m*a+n*b ...

  5. RabbitMQ实战(三)-高级特性

    0 相关源码 1 你将学到 如何保证消息百分百投递成功 幂等性 如何避免海量订单生成时消息的重复消费 Confirm确认消息.Return返回消息 自定义消费者 消息的ACK与重回队列 限流 TTL ...

  6. React躬行记(9)——组件通信

    根据组件之间的嵌套关系(即层级关系)可分为4种通信方式:父子.兄弟.跨级和无级. 一.父子通信 在React中,数据是自顶向下单向流动的,而父组件通过props向子组件传递需要的信息是组件之间最常见的 ...

  7. C语言入门9-2-模块大致一览

    字母数字 判断字符是否为英文字母isalpha()判断字符是否为数字isdigit()判断字符是否为英文字母或数字isalnum()判断字符是否为小写字母islower()判断字符是否为大写字母isu ...

  8. [PTA] 1001. 害死人不偿命的(3n+1)猜想 (Basic)

    import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Sc ...

  9. md文档的书写《三》

    markdown语法 官网 这是标题 "#加空格" 是标题,通常可以设置六级标题. 内容下 空格是换行 列表 无序列表:使用" - + * "任何一种加空格都可 ...

  10. rest-frameword框架的基本组件

    序列化 1.models部分 from django.db import models # Create your models here. class Book(models.Model): tit ...