树莓派HC-SR04超声波测距 DHT11 温湿度传感器 DS18B20数字温度传感器
阅读原文时间:2021年04月21日阅读:4

准备工作
HC-SR04 模块
参数
测量 3cm – 4m 的距离,精确度可以达到 3mm。这个模块包括 超声波发射器、超声波接收器和控制电路三部分。有 4 个引脚。

接线方式
4 个引脚由 2 个电源引脚(Vcc 、GND)和 2 个控制引脚(Trig、Echo)组成。
Vcc 和 Gnd 接 5v DC 电源,但不推荐用独立电源给它供电,应使用树莓派或单片机的 GPIO 口输出 5v 和 Gnd 给它供电。不然会影响这个模块的运行。
Trig 引脚用来接收来自树莓派的控制信号。接任意 GPIO 口。
Echo 引脚用来发送测距结果给树莓派。接任意 GPIO 口。

(注意 Echo 返回的是 5v信号,而树莓派的 GPIO 接收超过 3.3v 的信号可能会被烧毁,因此需要加一个分压电路)
电路图

1k 和 2k 电阻组成了一个分压电路,使 GPIO 3 脚的电压降到了 3.3v 左右。

#导入 GPIO库
import RPi.GPIO as GPIO
import time

#设置 GPIO 模式为 BCM
GPIO.setmode(GPIO.BCM)

#定义 GPIO 引脚
GPIO_TRIGGER = 23
GPIO_ECHO = 24

#设置 GPIO 的工作方式 (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)

def distance():
    # 发送高电平信号到 Trig 引脚
    GPIO.output(GPIO_TRIGGER, True)

    # 持续 10 us 
    time.sleep(0.00001)
    GPIO.output(GPIO_TRIGGER, False)

    start_time = time.time()
    stop_time = time.time()

    # 记录发送超声波的时刻1
    while GPIO.input(GPIO_ECHO) == 0:
        start_time = time.time()

    # 记录接收到返回超声波的时刻2
    while GPIO.input(GPIO_ECHO) == 1:
        stop_time = time.time()

    # 计算超声波的往返时间 = 时刻2 - 时刻1
    time_elapsed = stop_time - start_time
    # 声波的速度为 343m/s, 转化为 34300cm/s。
    distance = (time_elapsed * 34300) / 2

    return distance

if __name__ == '__main__':
    try:
        while True:
            dist = distance()
            print("Measured Distance = {:.2f} cm".format(dist))
            time.sleep(1)

        # Reset by pressing CTRL + C   重置按
    except KeyboardInterrupt:
        print("Measurement stopped by User")
        GPIO.cleanup()

DHT11 温湿度传感器 DS18B20数字温度传感器

参考链接:http://shumeipai.nxez.com/2018/05/16/dht11-temperature-and-humidity-sensor-raspberry-pi.html
http://shumeipai.nxez.com/2014/10/10/raspberry-dht11-get-temperature-data.html

DHT11 规格
DHT11数字湿温度传感器的原理和应用范例:https://pan.baidu.com/s/1jGgM2Ya
湿度检测范围 : 20-80% (5% 精度)
温度检测范围 : 0-50°C (±2°C 精度)
注意:该厂商不建议读取频率小于2秒,如果这么做数据可能会有误。需要在电源和数据脚之间串联一个上拉电阻(4.7K-10K DS18B20数字温度传感器也需要),购买模块的基本带电阻。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章