找回密码
 立即注册

QQ登录

只需一步,快速开始

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

GY-53激光测距资料(含arduino与stm32,51单片机源码)

[复制链接]
跳转到指定楼层
楼主
GY-53激光测距资料 板子集成stm32芯片 直接输出pwm波 不需要复杂的IIC通信
资料包内含arduino平台与stm32处理器,51单片机源码

一、 概述
GY-53 是一款低成本数字红外测距传感器模块。   工作电压 3-5v,功耗小,体积小,安装方便。   其工作原理是,红外 LED发光,照射到被测 物体后,返回光经过 MCU接收,MCU计算出 时间差,得到距离。直接输出距离值。 此模块,有两种方式读取数据,即 串口 UART(TTL电平)+PWM(1 线)
或者芯片 IIC模式,串口的波特率有 9600bps 与 115200bps,可配置,有连续,询问输出两种方式,可掉电保存设置。提供 arduino,51,stm32单片机 通讯程序。 ,不提供原理图及内部单片机源码。
模块另外可以设置单独传感器芯片工作模式, 作为简单传感器模块,MCU不参与数据处理工作。



六、模块使用方法
该模块为串口和 IIC 输出模块,模块默认为串口模式。串口模式下,PWM自动工作。
串口模式(默认) :PS 端口拉高,模块上电,默认配置为波特率 9600、高精度测量、连续输出模式;使用该模块配套的上位机可方便的对模块进行相应的设置;上位机使用前请先选择好端口和波特率,然后再点击“打开串口”按钮,此时,上位机将显示对应的数据,点击“帮助”按钮,在上位机下方状态栏将显示具体按钮用法。  
注意,所有的设置指令只有发送保存指令后才会掉电保存状态。
仅使用传感器芯片模式: PS 端口接 GND, 此模式下模块的 MCU不对芯片进行设置和读取。此模式下请客户自行在网上查找资料及程序,这里不再提供。

模块与 mcu或者 USB  转 ttl,连接图:
串口接 USB转 ttl:

上位机使用截图:



stm32单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "string.h"
  5. #include "LED.h"
  6. /*
  7. Keil: MDK5.10.0.2
  8. MCU:stm32f103c8
  9. 硬件接法:
  10. GY-53---STM32
  11. 1、GY-53_RX---STM32_TX,STM32复位将发送A5 45 EA 给模块
  12. 2、STM32_TX---FT232,STM32将数据上传给上位机
  13. 3、GY-53_TX---STM32_RX,接收模块数据
  14. 软件说明:
  15. 该程序采用串口方式获取模块rgb数据,波特率115200

  16. 注:中断函数位于stm32f10x_it.c
  17. 联系方式:
  18. http://shop62474960.taobao.com/?spm=a230r.7195193.1997079397.2.9qa3Ky&v=1
  19. */
  20. static void NVIC_Configuration(void)
  21. {
  22.   NVIC_InitTypeDef NVIC_X;
  23.   
  24.   /* 4个抢占优先级,4个响应优先级 */
  25.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  26.   /*抢占优先级可打断中断级别低的中断*/
  27.         /*响应优先级按等级执行*/
  28.         NVIC_X.NVIC_IRQChannel = USART1_IRQn;//中断向量
  29.   NVIC_X.NVIC_IRQChannelPreemptionPriority = 0;//抢占优先级
  30.   NVIC_X.NVIC_IRQChannelSubPriority = 0;//响应优先级
  31.   NVIC_X.NVIC_IRQChannelCmd = ENABLE;//使能中断响应
  32.   NVIC_Init(&NVIC_X);
  33. }
  34. void send_com(u8 data)
  35. {
  36.         u8 bytes[3]={0};
  37.         bytes[0]=0xa5;
  38.         bytes[1]=data;//功能字节
  39.         USART_Send(bytes,3);//发送帧头、功能字节、校验和
  40. }

  41. int main(void)
  42. {
  43.   u8 sum=0,i=0;
  44.         int16_t data=0;
  45.         uint16_t distance=0;
  46.         delay_init(72);
  47.         NVIC_Configuration();
  48.         Usart_Int(9600);
  49.         delay_ms(500);//等待模块初始化完成
  50.         send_com(0x45);//发送读rgb指令
  51.         while(1)
  52.         {
  53.                 if(Receive_ok)//串口接收完毕
  54.                 {
  55.                         for(sum=0,i=0;i<(re_Buf_Data[3]+4);i++)//rgb_data[3]=3
  56.                         sum+=re_Buf_Data[i];
  57.                         if(sum==re_Buf_Data[i])//校验和判断
  58.                         {
  59.                                 distance=re_Buf_Data[4]<<8|re_Buf_Data[5];
  60.                                 send_3out(&re_Buf_Data[4],3,0x15);//上传给上位机
  61.                         }
  62.                         Receive_ok=0;//处理数据完毕标志
  63. ……………………

  64. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
GY-53资料v1.rar (3.43 MB, 下载次数: 196)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:353852 发表于 2018-6-19 14:06 | 只看该作者
测距精度最重要的就是时间控制,不知道程序里有写吗,想学习一下
回复

使用道具 举报

板凳
ID:430234 发表于 2019-5-8 20:56 | 只看该作者
对于stm32定时器周期的把控呢?PWM模式那个返回的是一个20Hz的波,如何去调整定时器预分频和周期呢?
回复

使用道具 举报

地板
ID:557411 发表于 2019-7-6 21:50 | 只看该作者
这个非常好,我买了一个是GY56,但是测量精度只有cm级。
回复

使用道具 举报

5#
ID:421308 发表于 2019-7-14 09:24 | 只看该作者
怎么调里面的分频啊,可以讲解下吗
回复

使用道具 举报

6#
ID:617442 发表于 2019-10-5 15:35 | 只看该作者
有用,多谢
回复

使用道具 举报

7#
ID:305242 发表于 2021-5-20 14:45 | 只看该作者
最小能检测到20mm吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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