FastBond4挑战部分-超声波测距
该项目使用了AtomS3配合ICU-10201,实现了手持超声波测距的设计,它的主要功能为:使用超声波传感器ICU-10201,配合上ATOMS3实现一个1米范围内高精度的超声波测距仪。。
标签
SPI
超声波测距
ESP32S3
AtomS3
daihuiji
更新2026-04-01
6
KiCad文件
全屏

一、项目介绍

手上有一个超迷你的超声波测距的探头,一直想把它驱动起来。于是就动手制作了一个超小巧的超声波测距仪。可以满足对犄角旮旯空间的距离测量的需求。

二、硬件介绍

主控:AtomS3。AtomS3 是一款基于 ESP32-S3 主控的高集成度可编程控制器,内部集成了 ESP32-S3 主控,集成 Wi-Fi 功能、8 MB 片上 Flash、0.85 寸 IPS 屏幕。屏幕下方具有可编程按键功能,内置 5V 转 3.3V 电路、6 轴陀螺仪传感器 MPU6886 。板载 USB Type-C 接口,用于供电及固件下载,还有一个 HY2.0-4P 扩展端口 。底部预留 6 个 GPIO 以及电源引脚,方便扩展应用。产品大小为 24.0 x 24.0 x 13.0mm。

传感器:ICU-10201 超声波飞行时间传感器。这是一个非常小巧的超声波传感器,它非常适合测量 10 厘米至 1.2 米之间的物体范围,并提供高达 180° 的可定制视野 (FoV)。它采用 3.5 mm × 3.5 mm × 1.26 mm LGA 封装,并包含用于信号处理的集成 DSP。ICU-10201 通过其超低功耗(17 µA 至 320 µA)延长电池寿命。由于具有大量嵌入式程序和数据内存,因此它具有高度的灵活性。

这款超声波传感器使用电压为1.8V,而主控AtomS3 只提供了5V、3.3V两种电压的输出,所以这里使用ADI出品的一颗ADPL40502AUJZ-1 .8-R7电源LDO芯片,来将3.3V调整为1.8V,给超声波传感器供电。

image.png

参考着网上寻来的资料绘制好转接电路图。ICU-10201 超声波飞行时间传感器与主机通讯使用SPI总线。使用fpc座做接口,12P的,其中3、4管脚可以用来接一个外部晶振,但是还没看太明白是做什么用的。电路图设计上,先预留了这部分元器件,但是没有焊接,先留空。AtomS3开发板背面有6个GPIO输出,通过排针与转接板连接。

image.png

image.png

image.png

image.png

image.png

image.png

三、系统实现

AtomS3使用背面外接的5个GPIO管脚与转接板连接,通过SPI管脚映射,通过SPI总线与ICU-10201模块通讯,将获取到的超声波测距信号通过屏幕进行展示。使用Arduino进行开发,开发工具为Vscode+platformIO。

image.png

ICU-10201在arduino下有开源的库,可以直接使用。AtomS3不知为什么,使用最新的espressif32编译会报错,所以使用了旧版“espressif32@5.3.0

[env]
; platform = espressif32
platform = espressif32@5.3.0
board = esp32-s3-devkitc-1
framework = arduino
; change microcontroller
board_build.mcu = esp32s3
board_build.f_cpu = 240000000L
board_build.f_flash = 80000000L
board_build.flash_mode = dio
monitor_speed=115200
build_flags =
    -DCORE_DEBUG_LEVEL=3
    -Iinclude
    -DARDUINO_USB_CDC_ON_BOOT=1    ; Serial Monitor on Serial0  串口可 用Serial正常输出到USB
    ; -DARDUINO_USB_MODE=0           ; Serial on USBCDC
    ; -DLEGACY_RMT_DRIVER=1
    ; -DCONFIG_RMT_ENABLE_LEGACY_DRIVER=y
    ; -DCONFIG_ARDUINO_HAL_I2C_ENABLE_LEGACY=y


lib_deps =
    m5stack/M5Unified @ ^0.2.13
    fastled/FastLED @ ^3.10.3
    tdk-invn-oss/ICUX0201 @ ^1.0.6



[platformio]
default_envs=04_icu10201_dist


src_dir = src/${platformio.default_envs}
[env:04_icu10201_dist]



image.png

超喜欢ESP32系列的管脚重映射功能。这里将SPI总线映射到AtomS3背面引出的GPIO口上,即可实现SPI驱动。

#define ICU_SCK 5
#define ICU_MOSI 6
#define ICU_MIS0 7
#define ICU_CS 8
#define ICU_INT1 39
// #define ICU_INT2 38
……​

SPI.begin(ICU_SCK, ICU_MIS0, ICU_MOSI, ICU_CS);

ICU-10201 超声波传感器探测距离并不算远,按官方说明是在120cm内(实际测试能够超出这个范围),当距离过大,无法探测时,就在屏幕上显示“---”。当正常探测到距离信息,就在屏幕上显示距离,单位为毫米。

void loop()
{
    int dist;
    if (ICU.data_ready())
    {
        /* Get range to target computed by sensor */
        dist = int(ICU.get_range());
        Serial.print(" D=");
        Serial.print(dist);
        Serial.println("mm");


        M5.Display.clear();
        M5.Display.setTextSize(4);              
        M5.Display.setCursor(10, 40);
        M5.Display.print(int(dist));
        M5.Display.setTextSize(2);              
        M5.Display.print(" mm");
    }else{
        M5.Display.clear();
        M5.Display.setTextSize(4);              
        M5.Display.setCursor(10, 40);
        M5.Display.print("---");
    }
}

四、效果展示

传感器贴在AtomS3的侧面,测量距离墙体的距离。

f0d6d94ec630e24152e013c82b2760ee.jpg

8c19e7e5d83325b602cb3c99d5b2ea2d.jpg

距离过远,探测失败,显示---

a1c0d6b35f457958ed46e9950503aea8.jpg

五、心得体会
学习单片机,常见到的电源电压5V、3.3V。这次遇到这个超声波传感器是1.8V,查看资料应该是为了低功耗而设计的。通过本项目,学习了电源电路中的LDO芯片的使用。感谢得捷和硬禾科技共同举办的FastBond活动,能够成功地将这些模块驱动起来,成就感满满!









附件下载
atoms3_dist.zip
源码
ICU10201.zip
电路
团队介绍
单片机入门选手
团队成员
daihuiji
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号