标题:
STM32+VL53L0X激光测距源码
[打印本页]
作者:
busyyang
时间:
2018-4-25 16:57
标题:
STM32+VL53L0X激光测距源码
实验器材:
精英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,由于模块是属于光学器件,传感器表层的不洁净,会容易导致测量数据不佳。所以模块在使用前,保持传感器表层的清洁度,工作时请勿用手去触摸,以免导致模块工作不正常。
单片机源程序如下:
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "24cxx.h"
#include "usmart.h"
#include "vl53l0x.h"
//主函数
int main(void)
{
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
usmart_dev.init(72); //初始化USMART
KEY_Init(); //按键初始化
LED_Init(); //初始化与LED连接的硬件接口
LCD_Init(); //初始化LCD
AT24CXX_Init(); //IIC初始化
POINT_COLOR=RED; //设置字体为红色
LCD_ShowString(30,50,200,16,16,"Elite STM32");
LCD_ShowString(30,70,200,16,16,"Sensor VL53L0X TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2017/6/25");
POINT_COLOR=BLUE;//设置字体为蓝色
while(AT24CXX_Check())//检测不到24c02
{
LCD_ShowString(30,150,200,16,16,"24C02 Check Failed!");
delay_ms(500);
LCD_ShowString(30,150,200,16,16,"Please Check! ");
delay_ms(500);
LED0=!LED0;//DS0闪烁
}
while(1)
{
vl53l0x_test();//vl53l0x测试
}
}
复制代码
所有资料51hei提供下载:
(标准库版本,适合精英STM32开发板)扩展实验21 ATK-VL53L0X模块实验.rar
(496.85 KB, 下载次数: 359)
2018-4-25 16:56 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
久落凡尘
时间:
2018-4-27 14:35
楼主, vl53l0x一定要校准吗,能直接测距吗
作者:
上帝之杖
时间:
2018-8-4 16:17
谢谢楼主
作者:
mycnxp
时间:
2018-8-8 17:05
很想要。
作者:
mycnxp
时间:
2018-8-8 17:06
很想要,找了好久
作者:
assassin6279
时间:
2018-8-26 19:12
楼主 这是f1资料里面的内容吗 现在在用f4但是没有相关资料 是的话我就去下f1的资料了
作者:
Liqipeng0822
时间:
2019-1-16 13:20
谢谢楼主的分享,最近打算尝试这个模块。
作者:
史蒂芬帅
时间:
2019-1-18 16:15
感谢分享。。。。。。。。。。。。
作者:
史蒂芬帅
时间:
2019-1-18 16:15
非常感谢分享
作者:
Liqipeng0822
时间:
2019-2-28 09:42
久落凡尘 发表于 2018-4-27 14:35
楼主, vl53l0x一定要校准吗,能直接测距吗
您好!我也想问一下,如果VL53L0X不经过校准,直接使用,长时间会对精度产生影响吗?
作者:
zhongfei123
时间:
2019-3-28 18:29
找了好久,验证看能不能移值到VL53L1上
作者:
18779103902
时间:
2019-5-6 18:56
很不错,谢谢楼主
作者:
temp009
时间:
2019-8-4 11:54
很不错,谢谢楼主
作者:
hbthgsli
时间:
2019-8-4 15:40
谢谢分享,很实用
作者:
小苏ka
时间:
2019-8-8 16:11
感谢!!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1