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

硬件准备:开发板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
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
51单片机是一种非常常见的微控制器,广泛应用在各种控制系统和嵌入式系统中。而HCSR04超声波测距模块则是一种测距传感器,能够通过发送和接收超声波信号来测量距离。在Proteus仿真平台上,我们可以通过搭建电路模拟出HCSR04超声波测距模块与51单片机的连接,从而进行测距实验。 首先,在Proteus里选择51单片机芯片和HCSR04超声波测距模块,并将它们连接起来。具体可以参考相关的接口图和器件手册,将它们的引脚连接好。然后在51单片机的程序中,先初始化引脚,将HCSR04超声波测距模块的Trig引脚设置为输出模式,将Echo引脚设置为输入模式。接着,通过51单片机向Trig引脚发送一定持续时间的高电平信号,从而使HCSR04超声波测距模块开始发射超声波信号。在发射完超声波信号后,HCSR04超声波测距模块会将Echo引脚输出的电平信号变为高电平,并持续一定时间,此时51单片机便开始计时,记录下Echo信号持续的时间来计算出距离。 需要注意的是,HCSR04超声波测距模块的距离计算公式为距离=声速*时间/2,其中声速的值可以通过相关的手册或网络查找,一般为343m/s左右。而时间则是根据Echo引脚输出的高电平信号持续时间来计算得出。最后,通过将测得的距离结果在液晶显示屏上输出,就完成了基于51单片机HCSR04超声波测距实验。 总而言之,在Proteus中实现基于51单片机HCSR04超声波测距实验,需要熟悉51单片机及其编程、HCSR04超声波测距模块的工作原理及距离计算公式,并将它们通过电路连接起来,最终得到测距结果并进行显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lzlxlzy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值