找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13201|回复: 16
打印 上一主题 下一主题
收起左侧

STM32+VL53L0X激光测距源码

  [复制链接]
跳转到指定楼层
楼主
ID:316393 发表于 2018-4-25 16:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验器材:
    精英STM32F103开发板
   
实验目的:
    学习ATK-VL53L0X激光测距模块的使用,实现距离校准、普通测量模式和中断测量模式的功能,距离校准数据会存储在24C02上.
   
硬件资源:
    1,DS0、DS1(连接在PB5\PE5)
    2,串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面)
    3,ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模块(通过FSMC驱动,FSMC_NE4接LCD片选/A10接RS)
    4,按键KEY0(PE4)/KEY1(PE3)/KEY_UP(PA0)
    5,24C02(IIC连接在PB6/PB7上面)
    6,ATK-VL53L0X模块一个(连接在PB11(SCL),PB10(SDA),PA15(XSH),PA4(INT)上面),也可直接插在板上ATK-MODULE的接口。
   
实验现象:
    本实验功能简介:本实验用于测试ATK-VL53L0X激光测距模块,总共包含三大项测试:
   
    1,校准测试-通过KEY_UP按键进入此项测试。该功能实现对传感器测量误差的校准,进入
           测试后,会看到LCD屏幕提示,提示需要一个白色的目标(可以是白纸),且白色的目
           标需与模块保持在100mm的距离,确认目标和距离无误后,这时可按下LCD屏幕提示
           的 KEY1按键执行校准操作,若不想执行校准可按下KEY_UP返回主菜单。按下KEY1按
           键后,LCD 屏幕会显示开始校准,这时校准需要一定的时间,若校准成功,则会将校准
           的数据存入到24C02上。否则,将不会进行数据保存,校准过程结束后,会自动返回主
           菜单页面。
        2,普通测量测试-此测试是使用Single ranging(单次测量)工作模式,采用轮询方式,读取
           测量数据,通过KEY1按键进入此项测试。此项测试包含4个精度模式子项,其中包括:
           默认、高精度、长距离、高速。通过屏幕提示的KEY1按键操作,进行精度模式的切换。
           选择好精度模式后,按下KEY0按键可进入此模式测试。进入测试后,若之前成功校准过,
           会将保存在24C02的校准数据写进模块上,测量的数据通过轮询方式采集。数据采集结
           束后,数据显示在屏幕上、同时也打印在串口调试助手上。单击按下KEY_UP,可返回精
           度模式选项页面,双击按下,则返回主菜单页面。
        3,中断测量测试-此测试是使用Continuous ranging(连续测量)工作模式,采用中断方式,
           读取测量数据。通过KEY0按键进入此项测试。此项测试包含4个精度模式子项,其中包
           括:默认、高精度、长距离、高速。通过LCD屏幕提示的KEY1按键操作,进行精度模式
           的切换。选择好精度模式后,按下KEY0按键可进入此模式测试。进入测试后,若之前成
           功校准过,会将保存在24C02的校准数据写进模块上。在LCD屏幕上,会显示距离上下
           限阀值,当测出的距离在上下限阀值范围之间,模块不触发测距工作,中断没有输出,若
           在阀值外,则启动测距工作,测量结束会触发一次中断,通过中断读取测量数据,距离数
           据会显示在屏幕上,同时也会打印在串口调试助手上。单击按下KEY_UP,可返回精度模
           式选择页面,双击按下,则返回到主菜单页面。
   
         (关于工作模式和精度的介绍,请看ATK-VL53L0X激光传感器模块用户手册_V1.0)

  
注意事项:
    1,4.3寸和7寸屏需要比较大电流,USB供电可能不足,请用外部电源适配器(推荐外接12V 1A电源).
    2,本例程在LCD_Init函数里面(在ILI93xx.c),用到了printf,如果不初始化串口1,将导致液晶无法显示!!  
    3,校准过程中可能会受环境温度、红外线以及光线的影响,导致校准数据不准。
    4,由于模块是属于光学器件,传感器表层的不洁净,会容易导致测量数据不佳。所以模块在使用前,保持传感器表层的清洁度,工作时请勿用手去触摸,以免导致模块工作不正常。


单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"
  7. #include "24cxx.h"
  8. #include "usmart.h"
  9. #include "vl53l0x.h"

  10. //主函数
  11. int main(void)
  12. {         
  13.          delay_init();                        //延时函数初始化          
  14.      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  15.          uart_init(115200);                     //串口初始化为115200
  16.          usmart_dev.init(72);            //初始化USMART       
  17.          KEY_Init();                //按键初始化
  18.          LED_Init();                                  //初始化与LED连接的硬件接口
  19.          LCD_Init();                                   //初始化LCD                
  20.          AT24CXX_Init();                        //IIC初始化
  21.          POINT_COLOR=RED;           //设置字体为红色
  22.          LCD_ShowString(30,50,200,16,16,"Elite STM32");       
  23.          LCD_ShowString(30,70,200,16,16,"Sensor VL53L0X TEST");       
  24.          LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  25.          LCD_ShowString(30,110,200,16,16,"2017/6/25");            
  26.          POINT_COLOR=BLUE;//设置字体为蓝色
  27.          while(AT24CXX_Check())//检测不到24c02
  28.          {
  29.                 LCD_ShowString(30,150,200,16,16,"24C02 Check Failed!");
  30.                 delay_ms(500);
  31.                 LCD_ShowString(30,150,200,16,16,"Please Check!      ");
  32.                 delay_ms(500);
  33.                 LED0=!LED0;//DS0闪烁
  34.          }
  35.          while(1)
  36.          {
  37.                
  38.             vl53l0x_test();//vl53l0x测试
  39.         
  40.          }
  41.        
  42. }

复制代码

所有资料51hei提供下载:

(标准库版本,适合精英STM32开发板)扩展实验21 ATK-VL53L0X模块实验.rar (496.85 KB, 下载次数: 356)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:188187 发表于 2018-4-27 14:35 | 只看该作者
楼主, vl53l0x一定要校准吗,能直接测距吗
回复

使用道具 举报

板凳
ID:137119 发表于 2018-8-4 16:17 | 只看该作者
谢谢楼主
回复

使用道具 举报

地板
ID:371971 发表于 2018-8-8 17:05 | 只看该作者
很想要。
回复

使用道具 举报

5#
ID:371971 发表于 2018-8-8 17:06 | 只看该作者
很想要,找了好久
回复

使用道具 举报

6#
ID:286687 发表于 2018-8-26 19:12 | 只看该作者
楼主 这是f1资料里面的内容吗 现在在用f4但是没有相关资料 是的话我就去下f1的资料了
回复

使用道具 举报

7#
ID:388992 发表于 2019-1-16 13:20 | 只看该作者
谢谢楼主的分享,最近打算尝试这个模块。
回复

使用道具 举报

8#
ID:304366 发表于 2019-1-18 16:15 | 只看该作者
感谢分享。。。。。。。。。。。。
回复

使用道具 举报

9#
ID:304366 发表于 2019-1-18 16:15 | 只看该作者
非常感谢分享
回复

使用道具 举报

10#
ID:388992 发表于 2019-2-28 09:42 | 只看该作者
久落凡尘 发表于 2018-4-27 14:35
楼主, vl53l0x一定要校准吗,能直接测距吗

您好!我也想问一下,如果VL53L0X不经过校准,直接使用,长时间会对精度产生影响吗?
回复

使用道具 举报

11#
ID:499762 发表于 2019-3-28 18:29 | 只看该作者
找了好久,验证看能不能移值到VL53L1上
回复

使用道具 举报

12#
ID:436524 发表于 2019-5-6 18:56 | 只看该作者
很不错,谢谢楼主
回复

使用道具 举报

13#
ID:594946 发表于 2019-8-4 11:54 | 只看该作者
很不错,谢谢楼主
回复

使用道具 举报

14#
ID:323453 发表于 2019-8-4 15:40 | 只看该作者

谢谢分享,很实用
回复

使用道具 举报

15#
ID:529132 发表于 2019-8-8 16:11 | 只看该作者
感谢!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表