嘉立创产业服务站群
发作品签到
专业版

基于ESP32S3便携式无线测距仪

工程标签

388
0
0
0

简介

基于ESP32S3便携式无线测距仪,超声波测距,OLED(128X32)显示。

简介:基于ESP32S3便携式无线测距仪,超声波测距,OLED(128X32)显示。
智能便携电子设备设计大赛

开源协议

TAPR Open Hardware License

创建时间:2025-02-21 02:50:57更新时间:2025-03-04 01:24:02

描述

前言

工作中需要测量一些长度之类的数据,为了体现电子工程师的B格,特意做了一款个人专属测距仪。

image.png
从结果上看,还是有误差的。具体算法需要进一步优化。
其实很简单的哦。下面简单介绍一下哈。

硬件设计

主控选择

主控选用ESP32-S3开发板。这个用的越来越喜欢。
相关介绍,我不详细说了。参考https://lckfb.com/project/detail/lckfb-esp32s3r8n8?param=baseInfo
立创开发板的资料很全,比我讲的好。
这里只列出我的使用管脚原理图:

image.png
主要包括,LED指示灯,OLED显示,超声模块接口等。

超声测距模块

image.png

工作电压:3-5.5V
工作电流:5.3MA
感应角度:小于15度
探测距离:2CM-600CM
探测精度:0.1CM+1%
输出方式: GPIO
管脚数量:4 Pin

测距原理

只需要在 Trig 管脚(触发信号)输入一个 10US 以上的高电平,系统便可发出 8 个 40KHZ 的超声波脉冲,然后检测回波信号。当检测到回波信号后,通过 Echo 管脚输出。根据 Echo 管脚输出高电平的持续时间可以计算距离值。即距离值为:(高电平时间*340m/s)/2。

image.png

这里预留排针即可:
image.png

按键电路

预留了4路按键,实际不需要那么多。
需要消抖哦。
image.png

显示电路

模块立创采购,方便的很。
image.png

预留好排针即可,注意上拉电阻。

image.png
IIC接口非常好用。

PCB设计

采用LC EDA 设计。
双面板设计。

image.png

外壳设计

采用LC EDA 设计。
上下壳设计,需要注意螺丝哦。

image.png

程序设计

主程序设计如下:

#include 
#include 
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "oled.h"
#include "esp_timer.h"
#include "bsp_ultrasonic.h"
#include "driver/gpio.h"
#include "esp_adc_cal.h"
#include "driver/adc.h"
#include "bsp_key.h"
void app_main(void)
{
    char ss[32];
    float dis=0;
    bool key2_flag = 0, key3_flag = 0;
    KeyGpioConfig();

    OLED_Init(); // 初始化OLED
    OLED_Clear();
    OLED_DisplayTurn(1);
    OLED_Refresh(); // 更新显示

    Ultrasonic_Init();
    printf("SR04 Start....\r\n");

    while(1)
    {
        uint8_t key = GetKeyValue();
        switch (key)
        {
        case 2:
            key2_flag = !key2_flag;
            break;
        case 4:
            key3_flag = !key3_flag;
            break;
        default:
            break;
        }
        if(key2_flag==0)
        {
            dis=Hcsr04GetLength();
            printf("dis: %0.2f\n",dis);
            sprintf(ss,"%7.2fcm",dis);
            OLED_Clear();
            OLED_ShowString(0, 0, (unsigned char *)ss, 24, 1); // 6*8
   
        }else{
            printf("hold-dis: %0.2f\n",dis);
            sprintf(ss,"%7.2fcm",dis);
            OLED_Clear();
            OLED_ShowString(0, 0, (unsigned char *)ss, 24, 1); // 6*8
            OLED_ShowString(48, 23, (unsigned char *)"HOLD", 8, 1); // 6*8
 
        }
            OLED_Refresh();  
            vTaskDelay(500 / portTICK_PERIOD_MS);  
        
    }


}

调试输出

fb02da0fbb214fbb071ecbf96fea83e.png

总结

还可以增加无线传输功能
还可以增加本地存储功能
还可以增加电池供电功能
不管咋样,第一步走出来了,还需要继续努力哦。
缺点是误差还是有的,需要改进方法。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航