求一种基于RT-Thread和N32G457的便携测距模块设计方案

测量仪表

1479人已加入

描述

背景:基于RT-Thread系统和N32G457开发板开发的一款便携测距小模块;
可应用在测量无人实验室,无人小车,自动避让障碍,近距离测量物体的距离,不用传统的尺子测量。更加快速的测量到墙面,以及地面,可以在给施工装修等工人提供便捷的测距。
硬件部分由SSD1306模块,TTL转485模块,测距模块,N32G457主控板等组成;
软件部分实现实时采集数据上传,屏幕显示,数据采集等功能。

硬件框架:
模块使用的TTL转485模块,测距模块是485的,需要转换一下。
OLED0.96寸的SSD1306模块,大家可以学习一下怎么配置I2C配置。
超声波测距模块,市面上的超声波测距传感器,距离是可以定制的。
N32G457主控板,负责处理数据显示数据,实时的控制显示。
LED控制,通过程序控制,发送的时候灯闪烁。

N32G457

软件框架:
软件模块说明,
利用定时控制显示,测距以后实时显示测距
通过DAP升级,即USB串口升级。

超声波测距————> N32G457————>SSD1306
上位机数据——————^

效果图:

N32G457

示例代码:

//定时器3设定
RT_SECTION(".irq.Timer3Int")
void Timer3Int(uint32_t timeus) {
rt_err_t ret_ = RT_EOK;
rt_hwtimer_mode_t mode=HWTIMER_MODE_PERIOD;
rt_hwtimerval_t timeout_s;
timer3_ = rt_device_find(SAMPLE_TIMER3_NAME);
ret_ = rt_device_open(timer3_, RT_DEVICE_OFLAG_RDWR);
rt_device_set_rx_indicate(timer3_, timeout_cb);
ret_ = rt_device_control(timer3_, HWTIMER_CTRL_MODE_SET, &mode);
timeout_s.sec = 0;
timeout_s.usec = timeus;
if (rt_device_write(timer3_, 0, &timeout_s, sizeof(timeout_s)) != sizeof(timeout_s)) {
rt_kprintf("Tips : Timer Int Error.rn");
}
else {
rt_kprintf("Tips : Timer Int Success.rn");
}
}
RT_SECTION(".irq.timeout_cb")
rt_err_t timeout_cb(rt_device_t dev, rt_size_t size) {
Timer3_10ms++;
if(sensor_overTime != 0){
sensor_overTime--;
}
if(Timer3_10ms%50==0) {
Timer3_10ms = 0;
get_time ++;
}
return 0;
}
//传感器发送:
void sensor_analysis_fun()
{
uint8_t str1[6] = { 0xFC, 0x01, 0xB2, 0x00, 0x00, 0xAF };
uint8_t str2[6] = { 0xFC, 0x01, 0xC3, 0x00, 0x00, 0xC0 };
if (sensor_analysis_bit != 0)
{
led_0_Write(1);
rt_device_write(serial2, 0, str1, (sizeof(str1)));
rt_thread_mdelay(50);//白
rt_device_write(serial2, 0, str2, (sizeof(str2)));
}
led_0_Write(0);
}
//OLED初始化:
void OLED_Init(void)
{
GPIO_InitType GPIO_InitStructure;
RCC_EnableAPB2PeriphClk(OLED_GPIO_CLK, ENABLE);
GPIO_InitStructure.Pin = (OLED_SIP_SCK|OLED_SIP_SDA);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitPeripheral(OLED_SIP_PORT, &GPIO_InitStructure);
GPIO_SetBits(OLED_SIP_PORT,(OLED_SIP_SCK|OLED_SIP_SDA));
rt_thread_mdelay(200);
OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel
OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
OLED_WR_Byte(0x40,OLED_CMD);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
OLED_WR_Byte(0x81,OLED_CMD);//--set contrast control register
OLED_WR_Byte(0xCF,OLED_CMD);// Set SEG Output Current Brightness
OLED_WR_Byte(0xA1,OLED_CMD);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常
OLED_WR_Byte(0xC8,OLED_CMD);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常
OLED_WR_Byte(0xA6,OLED_CMD);//--set normal display
OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty
OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)
OLED_WR_Byte(0x00,OLED_CMD);//-not offset
OLED_WR_Byte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency
OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
OLED_WR_Byte(0xD9,OLED_CMD);//--set pre-charge period
OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
OLED_WR_Byte(0xDA,OLED_CMD);//--set com pins hardware configuration
OLED_WR_Byte(0x12,OLED_CMD);
OLED_WR_Byte(0xDB,OLED_CMD);//--set vcomh
OLED_WR_Byte(0x40,OLED_CMD);//Set VCOM Deselect Level
OLED_WR_Byte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
OLED_WR_Byte(0x02,OLED_CMD);//
OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable
OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disable
OLED_WR_Byte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5)
OLED_WR_Byte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7)
OLED_Clear();
OLED_WR_Byte(0xAF,OLED_CMD);
}

实验用挡板阻挡测量距离,根据实际显示的可以知道距离,可以应用在无人实验室测量是否有物体,以及近距离测距,实现测量实际距离,方便用户在使用中更便捷知道物体与设备的实时距离,便携设备的测量通过显示屏,串口,把数据及时传给上位机。

本程序逻辑让使用者I2C通讯,以及常规的定时器和串口2,3来同时通讯
此测距模块是超声波模块,我们可以针对这个模块进行更深的开发利用。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分