ESP8266+micropython+HCSR04 超声波测距传感器

本文讲述了开发者在使用ESP8266 NodeMCU和HCSR04超声波模块进行测距时遇到的问题,包括硬件连接、驱动安装、代码调试,着重于解决不同模块间测距误差的排查过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬件准备:开发板ESP8266 CH340 NodeMCU Lua V3,数据线(确保数据线的可靠,踩坑之一,数据线问题,导致连接问题)
软件准备:ESP烧录工具NodeMCU-PyFlasher5.0(ESP8266 NodeMCU Lua V3似乎必须使用这款烧录工具,官网烧录工具烧录不成功),Thonny(代码工具)
第一步:电脑安装CH340驱动(驱动必须正确,和开发板匹配,要不然无法连接)
第二步:开发板烧录固件,官网下载了esp8266-20210902-v1.17版本的固件,使用NodeMCU-PyFlasher5.0烧录,如下图,连接好后,根据选项选择最后点击“Flash NodeMCU”
在这里插入图片描述
烧录成功后显示如下
在这里插入图片描述
第三步:打开Thonny,选择相应的开发板ESP8266及连接端口
在这里插入图片描述
正确连接后会显示MicroPython设备上的代码和固件版本,如下图
在这里插入图片描述
第四步:上载HCSR04.py代码
在这里插入图片描述
第五步:输入代码,并将代码保存到micropython设备,命名为main.py。

from machine import Pin
from HCSR04 import HCSR04
import time

trig = Pin(5, Pin.OUT)
echo = Pin(4, Pin.IN)
HC = HCSR04(trig, echo)

i = 0

for i in range(20):
    distance = HC.getDistance()
    print(str(distance) + ' cm')
    time.sleep(2)
    i += 1

第六步:连线,将HCSR04模块与ESP8266连接起来,注意连线正确
第七步:运行,显示如下:
在这里插入图片描述
测得的距离与“超声波测距模块 HC-SR04测试板”显示的相符,代码正确。
到此应该已经完事了,但在得到正确结果前,出了点问题,当时购买了两个HCSR04模块,第一个如下图
在这里插入图片描述
第二个如下图
在这里插入图片描述
两个模块在“HC-SR04测试板”都能显示相同且正确的距离,但用HCSR04.py的代码,使用第一个才能显示正确,第二个显示明显错误。
错误的距离信息如下:
在这里插入图片描述

HCSR04.py的代码如下,使用网上流传的代码。

from time import sleep_us, ticks_us


class HCSR04():
    def __init__(self, trig, echo):
        self.trig = trig
        self.echo = echo

    def getDistance(self):
        distance = 0
        self.trig.value(1)
        sleep_us(20)
        self.trig.value(0)
        while self.echo.value() == 0:
            pass
        if self.echo.value() == 1:
            ts = ticks_us()  # 开始时间
            while self.echo.value() == 1:
                pass
            te = ticks_us()  # 时间结束
            tc = te - ts
            distance = tc * 0.017  # 距离计算(单位: cm)
        return distance

不知道为什么出现距离测量错误的情况。如果哪位朋友遇到相同的情况,并且解决了,还请指教。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzlxlzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值