FastBond2阶段2-基于STM32G030的激光测距仪的设计
基于STM32G030的激光测距仪,使用 VL53L0X激光测距传感器开发,设备包含:STM32G030单片机,oled显示,VL53L0X激光测距,锂电池充电电路,锂电池
标签
STM32G030
FastBond2阶段2
激光测距仪
星辰i
更新2023-11-01
304

项目介绍

基于STM32G030的激光测距仪,使用 VL53L0X激光测距传感器开发,设备包含:

  • STM32G030单片机
  • oled显示
  • VL53L0X激光测距
  • 锂电池充电电路
  • 锂电池
  • 2个按键
  • 蜂鸣器

设备功能有:

  1. 单片机采集VL53L01激光测距传感器测量的距离值,显示在oeld上面,单位mm,测量距离范围20mm~2000mm
  2. 2个按键设定设备配置信息,包括接近报警、远离报警、测量精度等配置,各种配置保存在单片机内部FLASH中,掉电可以保存。
  3. 当触发报警逻辑时,蜂鸣器报警,提示用户当前异常。
  4. oled显示距离值以及设备处于的状态。


市场应用介绍

本设计适用于家用测量,具有体积小,使用方便等优点。

作为一个工程师,谁不想拥有一把酷酷的电子米尺。


项目设计思路

以小巧,便携,易于使用为主要思路,核心芯片选择STM32G031,属于比较新的芯片,价格与开发易用度都很高。

测距芯片选择VL53L0X,ST比较成熟的测距芯片,价格也合适,资料也多,很适合拿来开发。

 

项目方案框图和原理图解释

Fs2dzjmzfmg0sPI5DbgYSxk7vQJv

FnIYR2M9vJymI6-0BaXnRj3DkgB8

U3是本次的主角,通过IIC与OLED以及VL53L0X进行通信,这里选择使用了两路IIC进行控制,因为IO比较多,为了方便设计就没放在一起。

U1是xc6206,一个很小的LDO芯片,很好用。

 

设计中用到规定厂商的元器件介绍

1.STM32G030

全新的STM32G0系列不仅仅是另一种Arm® Cortex®-M0+微控制器。它为高效微控制器必须具备的功能设定了新的定义。这一切都是关于最优化设计,通过详细的各种细节设置,帮您以最小的BOM成本和最大的升级灵活性实现设计目标,从而让您的投资物超所值。

STM32G0x0 超值系列在传统的8位和16位市场中具有很强的竞争力,并通过嵌入精确的内部时钟进一步节省了成本。它帮用户省去了管理不同的架构的需求,以及相关的开发开销。

STM32G0系列采取“万能的通用架构”概念,可满足未来需求。

STM32G0系列具有高效、简单、坚固耐用等特点,可选的闪存大小为16~512 KB,封装的引脚选择范围是8~100,可满足众多行业领域的不同应用需求。

 

2.VL53L0X

VL53L0X是新一代飞行时间(ToF)激光测距模块(不同于传统技术),采用目前市场上最小的封装,无论目标反射率如何,都能提供精确的距离测量。它可以测量2m的绝对距离,为测距性能等级设定了新的基准,为各种新应用打开了大门。

VL53L0X集成了一个领先的SPAD阵列(单光子雪崩二极管),并内嵌ST的第二代FlightSense™专利技术。

VL53L0X的940nm VCSEL发射器(垂直腔面发射激光器)完全不为人眼所见,加上内置的物理红外滤光片,使其测距距离更长,对环境光的免疫性更强,对盖片的光学串扰具有更好的稳定性。

 


PCB绘制打板介绍及遇到的问题和解决方法


关键代码及说明

核心代码

uint8_t data;
uint8_t len;
uint16_t word;
uint8_t data1;
static char buf[VL53L0X_MAX_STRING_LENGTH];//测试模式字符串字符缓冲区
VL53L0X_Error Status=VL53L0X_ERROR_NONE;//工作状态
uint8_t mode=2; //0:默认;1:高精度;2:长距离;3:高速度
u32 i;
if(vl53l0x_init(&vl53l0x_dev))     //vl53l0x初始化
{
    HAL_Delay(200);
}
else
{
    VL53L0X_RdByte(&vl53l0x_dev,0xC0,&data);
    VL53L0X_RdByte(&vl53l0x_dev,0xC1,&data1);
    VL53L0X_RdByte(&vl53l0x_dev,0xC2,&len);
    Status = VL53L0X_WrByte(&vl53l0x_dev,0x51,0x12);
    VL53L0X_RdByte(&vl53l0x_dev,0x51,&len);
    Status = VL53L0X_WrWord(&vl53l0x_dev,0x62,0x9e12);
    VL53L0X_RdWord(&vl53l0x_dev,0x62,&word);
}
vl53l0x_set_mode(&vl53l0x_dev,mode);   //配置测量模式

while(1)
{
    Status = vl53l0x_start_single_test(&vl53l0x_dev,&vl53l0x_data,buf);//执行一次测量    
    OLED_ShowNum(0,0,Distance_data,5,32);
    OLED_ShowString(80,0,"mm",32);
    HAL_Delay(200);
}

 

功能展示及说明

测距功能

Fp_DBnqzGsBtjP8Fo6UMK5sATciH

 

充电功能

FtdSH1kwZW0MB4Ybxg9b4m7CIhN5


对本大赛的心得体会(包括意见或建议),及整个设计过程中遇到的难点和解决方法

软硬件
电路图
附件下载
PCB.zip
temp.zip
程序
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号