(6)ESP32+Python 做一个超声波探测器

简介: OLED+超声波组合

我们经常在智能小车上都能看到一个长这么样得一个东西。

image.png


这个东西就是一个超声波测距模块,一共有4个引脚VCC,Trig,Echo,Gnd。

VCC:接VCC电源,一般都是5V,但是现在市面上也有支持3.3V的

Trig:  给这个引脚输入一个10us的高电平,就可以触发测距。

Echo: 在测距结束时,这个引脚会输出一个高电平。电平的宽度经过计算的后,就是测距的距离

GND:接地

这里有一个计算公式:

测距距离 = (高电平的时间 * 音速【340M/S】/2)

简单的来讲实现原理是当我们需要测试距离时,

  1. 把Trig输入10us的高电平,然后拉低。测距开始。
  2. 当Echo收到发出的信号后,会把引脚的电平拉高。
  3. 计算第一步和第二步的时间差。
  4. 套入公式,计算距离(音速的时间是340米每秒,第一步和第二步的时间是US,所以计算时要用10000计算回来)

注意,超声波是一种波,并不是百分之百的和下面的图一样,发送的是直线。



image.png


在了解好原理后,把传感器和硬件进行连接,然后开始写代码吧。

第一个实现,我们还是采用原生的写法。


frommachineimportPinimportutimeclassORGHCSR04:
trig=Noneecho=Nonedef__init__(self): 
globaltrig, echotrig=Pin(25, Pin.OUT)
echo=Pin(26, Pin.IN)
trig.off()
echo.off()
defstart_scan(self): 
whileTrue:
self.start_hc() 
utime.sleep_ms(800) # 这里根据需要设定SLEEP时间print('>_<')
defstart_hc(self):
globaltrig, echotrig.on()
utime.sleep_us(10)
trig.off()
whileecho.value() ==0 : 
passstart_us=utime.ticks_us()
whileecho.value() ==1 : 
passend_us=utime.ticks_us()
rang_us=utime.ticks_diff(end_us,start_us)/10000dist=rang_us*340/2print("dist is: %0.2f CM"%dist)

完成后烧录到开发板进行测试


image.png


如果要用HAAS进行,首先需要在board.json当中进行定义


{
    "name": "haasedu",
    "version": "1.0.0",
    "io": {
        "hc_triger":{ 
          "type": "GPIO",
          "port": 25,
          "dir": "output",
          "pull": "pulldown"
        },
        "hc_echo":{ 
          "type": "GPIO",
          "port": 26,
          "dir": "input",
          "pull": "pulldown"
        } 
    },
    "debugLevel": "ERROR",
    "repl": "disable"
  }

Haas 实现代码如下:

importutimefromdriverimportGPIOclassHAASHCSR04:
triger_gpio=Noneecho_gpio=Nonedef__init__(self): 
globaltriger_gpio, echo_gpiotriger_gpio=GPIO()
triger_gpio.open('hc_triger')
triger_gpio.write(0)
echo_gpio=GPIO()
echo_gpio.open('hc_echo')
echo_gpio.write(0)
defstart_scan(self):  
whileTrue:
self.start_hc() 
utime.sleep_ms(800) # 这里根据需要设定SLEEP时间defstart_hc(self):
globaltriger_gpio, echo_gpiotriger_gpio.write(1)
utime.sleep_us(10)
triger_gpio.write(0)
while(echo_gpio.read()==0):  
passstart_us=utime.ticks_us()  
while(echo_gpio.read()==1):  
passend_us=utime.ticks_us()
rang_us=utime.ticks_diff(end_us,start_us)/10000dist=rang_us*340/2print("dist is: %0.2f CM"%dist)



但是,上面代码的输出都是通过print输出的,不太灵性。之前我们有做过连接OLED,这里我们可以把OLED也用起来。

效果如下,我们还可以把之前的红绿灯也插上去。红灯停,绿灯行。哈哈。

 image.png

目录
相关文章
|
7月前
|
网络协议 安全 测试技术
21.2 Python 使用Scapy实现端口探测
Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包。能够很容易的创建,发送,捕获,分析和操作网络数据包,包括TCP,UDP,ICMP等协议,此外它还提供了许多有用的功能,例如嗅探网络流量,创建自定义协议和攻击网络的安全测试工具。使用Scapy可以通过Python脚本编写自定义网络协议和攻击工具,这使得网络安全测试变得更加高效和精确。
93 0
21.2 Python 使用Scapy实现端口探测
|
12月前
|
传感器 运维 监控
这个夏天太热了,只能用他来保命,ESP32 + Python做一个检测紫外线设备
这个夏天太热了,只能用他来保命,ESP32 + Python做一个检测紫外线设备
143 0
|
12月前
|
移动开发 自动驾驶 网络协议
Python + ESP32 制作车辆定位系统,终于可以随时随地知道爱车的位置了
Python + ESP32 制作车辆定位系统,终于可以随时随地知道爱车的位置了
596 0
|
12月前
|
传感器 监控 网络协议
Python + ESP32 DIY自动感应智能皂液器 避免触摸更安全
Python + ESP32 DIY自动感应智能皂液器 避免触摸更安全
147 0
|
12月前
|
传感器 人工智能 开发框架
ESP32 + Python 还不知道怎么垃圾分类? 用HaaS DIY一个智能垃圾桶吧
ESP32 + Python 还不知道怎么垃圾分类? 用HaaS DIY一个智能垃圾桶吧
173 0
|
12月前
|
开发框架 开发者 Python
Python+ESP32 DIY 一个【赛博朋克逗猫机】 喵喵喵?今天的主子看起来有点奇怪
Python+ESP32 DIY 一个【赛博朋克逗猫机】 喵喵喵?今天的主子看起来有点奇怪
123 1
|
12月前
|
传感器 开发框架 人工智能
Python + ESP32 DIY炫酷的物联网远程机械臂
Python + ESP32 DIY炫酷的物联网远程机械臂
247 0
|
12月前
|
传感器 网络协议 物联网
HaaS Python + ESP32 打造智能洗手间 检测使用率和空气质量 帮你挑选最好的坑位
HaaS Python + ESP32 打造智能洗手间 检测使用率和空气质量 帮你挑选最好的坑位
149 0
|
12月前
|
传感器 安全 网络协议
【毕设参考】跌倒检测 ESP32+HaaS Python Motion API 快速打造上云的跌倒检测系统
【毕设参考】跌倒检测 ESP32+HaaS Python Motion API 快速打造上云的跌倒检测系统
187 0
|
12月前
|
传感器 监控 网络协议
【毕设参考】ESP32 + HaaS Python打造可以统计流量的自动感应门系统
【毕设参考】ESP32 + HaaS Python打造可以统计流量的自动感应门系统
153 0