0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

小凌派-RK2206开发板:智慧车载

福州市凌睿智捷电子有限公司 2022-08-03 10:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、简介

智慧车载模块是一款集超声波测距以及报警电路的模块。模块可提供2cm-300cm的非接触式距离感测功能,测距精度可达2cm,能将测量距离转化为具有一定宽度的脉冲输出;声光报警电路由外部控制,当外部处理器判断距离达到预警设定值时,控制报警电路工作。

智慧车载模块目前只是一个简单的车距测试模块,随着它的功能逐步完善,其发展的方向将更加宽广。比如:智慧车载模块可完善成为智能车载资通讯电子系统,车辆自动/辅助驾驶系统、驾驶人瞌睡警示、防撞预警、车载自我诊断系统(On Board Diagnostics,OBD)、胎压检测装置(TPMS)、车道偏离警示系统(LWDS)、前方碰撞预警系统(FCWS)及后方碰撞预警系统等智慧车(Smart Car)相关应用。

本文基于瑞芯微RK2206芯片 + LiteOS操作系统,通过gpio控制智慧车载E53模块,实现智慧车载模块和开发板的互相通信功能。

二、硬件电路设计

1.整体硬件电路设计

智慧车载模块硬件电路如图1所示,电路中包含了E53接口连接器,EEPROM存储器、超声波处理电路和声光报警电路。

ff4bcf64-1059-11ed-9ade-dac502259ad0.png

图1 硬件电路图

超声波测距芯片,选用CS-100A,其是一款工业级超声波测距芯片,内部集成超声波发射电路,超声波接收电路,数字处理电路等,单片即可完成超声波测距,测距结果通过脉宽的方式进行输出。

CS100A配合使用40KHz的开放式超声波探头,在超声波发射端并联一个电阻R2到地和8MHz的晶振,即可实现高性能的测距功能,电阻R2的大小决定了超声波测量的距离。

三极管Q1为NPN管,基极为高电平时,三极管才能够导通,蜂鸣器需PWM波驱动,人耳可识别的频率范围为20Hz-20KHz,故PWM频率需在该范围内,我们默认使用3KHz的PWM波驱动。

小凌派-RK2206开发板与智慧车载模块均带有防呆设计,故很容易区分安装方向,直接将模块插入到开发板的E53母座接口上即可,安装如图2所示。

ff7e9ed0-1059-11ed-9ade-dac502259ad0.png

图2 硬件连接图

2.智慧车载电路设计

硬件资源图如下所示:

ffcdbfec-1059-11ed-9ade-dac502259ad0.png

引脚名称开发者可在硬件资源图中查看,也可在智慧车载模块背面查看。

引脚名称功能描述
ECHO测距脉宽输出,高电平的宽度表示超声波往返时间差
TRIG测距出发,输入10us的高电平脉冲,E53模块开始测距
BUZZER蜂鸣器控制
LED_WarningLED控制线,低电平有效
I2C_SCLI2C时钟信号线
I2C_SDAI2C数据信号线
GND电源接地引脚
3V33.3V电源输入引脚
GND电源接地引脚


三、程序设计

本实验使用智慧车载模块模拟智慧车载测距应用。超声波模块发送并接收信号,通过发射和接收信号的时间差来计算实际测量的距离;当测量的距离小于预先设置的阈值时,驱动蜂鸣器报警,点亮告警LED灯。

1. 主程序设计

如图6.3.3所示,为智慧车载主程序流程图,开机LiteOS系统初始化后,进入主程序先初始化智慧车载模块。程序进入主循环,采用轮询的方式,2秒测量一次距离,当测量到的距离小于等于20厘米时,控制蜂鸣器响,告警灯亮起;当测量到的距离大于20厘米时,蜂鸣器不响应,告警灯熄灭。


002b8816-105a-11ed-9ade-dac502259ad0.png

图6.3.3 主程序流程图

{
unsigned int ret = 0;
/* 每个周期为200usec,占空比为100usec */
unsigned int duty_ns = 500000;
unsigned int cycle_ns = 1000000;
float distance_cm = 0.0;
/*智慧车载模块初始化*/
e53_iv01_init();

while (1)
{
/*获取智慧车载模块测量的距离*/
ret = e53_iv01_get_distance(&distance_cm);
if (ret == 1)
{
printf("distance cm: %f\n", distance_cm);
/*距离小于等于20cm,开启蜂鸣器告警,点亮LED告警灯;
否则,关闭蜂鸣器,熄灭LED告警灯*/
if (distance_cm <= 20.0)
{
e53_iv01_buzzer_set(1, duty_ns, cycle_ns);
e53_iv01_led_warning_set(1);
}
else
{
e53_iv01_buzzer_set(0, duty_ns, cycle_ns);
e53_iv01_led_warning_set(0);
}
}
LOS_Msleep(2000);
}
}

2. 初始化程序设计

智慧车载初始化程序主要分为IO初始化和PWM设备初始化两部分。

IO初始化程序主要设置GPIO0_PC4为输出模式,作为超声波测距Trig控制管脚;设置GPIO0_PA5为输出模式,作为LED_WARNING告警灯控制管脚;设置GPIO_PA2为输入模式,作为超声波测距Echo控制管脚。

{ /* Trig引脚设置为GPIO输出模式 */ PinctrlSet(E53_IV01_TRIG_GPIO, MUX_FUNC0, PULL_KEEP, DRIVE_KEEP); LzGpioInit(E53_IV01_TRIG_GPIO); LzGpioSetDir(E53_IV01_TRIG_GPIO, LZGPIO_DIR_OUT); E53_IV01_TRIG_Clr(); /* LED告警灯引脚设置为GPIO输出模式 */ PinctrlSet(E53_IV01_LED_WARNING_GPIO, MUX_FUNC0, PULL_KEEP, DRIVE_KEEP); LzGpioInit(E53_IV01_LED_WARNING_GPIO); LzGpioSetDir(E53_IV01_LED_WARNING_GPIO, LZGPIO_DIR_OUT);e53_iv01_led_warning_set(0);

/* Echo引脚设置为GPIO输入模式 */ PinctrlSet(E53_IV01_ECHO0_GPIO, MUX_FUNC0, PULL_KEEP, DRIVE_KEEP); LzGpioInit(E53_IV01_ECHO0_GPIO); LzGpioSetDir(E53_IV01_ECHO0_GPIO, LZGPIO_DIR_IN);

}

初始化PWM7设备,使用PWM7作为蜂鸣器的控制源。

{ /* 初始化pwm */ PinctrlSet(E53_IV01_BUZZER_GPIO, MUX_FUNC2, PULL_DOWN, DRIVE_KEEP); PwmIoInit(m_buzzer_config); LzPwmInit(E53_IV01_PWM_IO); return 0;}

3. 距离测量程序设计

发送至少10us的高电平给智慧车载,触发其开始工作;等待200ms,整个测距最长为66ms,获取Echo管脚的电平,当高电平时获取一个时间戳,当低电平时再获取一个时间戳,两个时间戳的差值即为超声波测距所产生的时间。

{ uint8_t value = 0; m_echo_info.flag = EECHO_FLAG_CAPTURE_RISE;

while (1) { LzGpioGetVal(E53_IV01_ECHO0_GPIO, &value); if (value == LZGPIO_LEVEL_HIGH) { m_echo_info.time_rise = *m_ptimer5_current_value_low; m_echo_info.flag = EECHO_FLAG_CAPTURE_FALL; break; } }

while (1) { LzGpioGetVal(E53_IV01_ECHO0_GPIO, &value); if (value == LZGPIO_LEVEL_LOW) { m_echo_info.time_fall = *m_ptimer5_current_value_low; m_echo_info.flag = EECHO_FLAG_CAPTURE_SUCCESS; break; } }

/* 释放信号量 */ LOS_SemPost(m_task_sem);}

获得超声波测距的时间后,通过公式计算距离,计算公式:距离 = 时间差 * 340米/秒 / 2 * 100厘米/米

{ float f_time = (float)time; float f_freq = (float)freq; /* 距离 = 时间差 * 340米/秒 / 2(超时波来回2次) * 100厘米/米 */ *cmeter = f_time / f_freq * 170.0 * 100.0;}



四、编译过程

1、搭建和下载源代码

我已将OpenHarmony源代码上传到Gitee社区中,大家可以根据以下网址下载。

https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts

注意:编译环境可根据以下网址来操作:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts/blob/master/vendor/lockzhiner/rk2206/README_zh.md

2、打开sdk下面路径的文件

/vendor/lockzhiner/rk2206/samples/c4_e53_intelligent_vehicle_01 /e53_intelligent_vehicle_01_example.c

3、修改编译脚本

修改 vendor/lockzhiner/rk2206/sample 路径下 BUILD.gn 文件,指定 e53_iv01_example 参与编译。

"./c4_e53_intelligent_vehicle_01:e53_iv01_example",

修改 device/lockzhiner/rk2206/sdk_liteos 路径下 Makefile 文件,添加 -le53_iv01_example 参与编译。

hardware_LIBS = -lhal_iothardware -lhardware -le53_iv01_example

3、编译固件

hb set -root .hb sethb build -f

4、烧写固件

请参考Gitee网址的说明手册(“烧录打印”章节):https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts/blob/master/device/rockchip/README_zh.md

五、实验结果

程序编译烧写到开发板后,按下开发板的RESET按键,通过串口软件查看日志如下;智慧车载模块超声波探头正对着墙壁进行测距,移动模块到不同的距离,当测量的距离小于等于20厘米时,蜂鸣器响起,告警灯亮起;当测量的距离大于20厘米时,蜂鸣器不响应,告警灯熄灭。

========== E53 IV Example ==========distance cm: 23.89========== E53 IV Example ==========distance cm: 23.90

好了,今天的课程就到这里,我们下次再见!


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

    关注

    26

    文章

    6425

    浏览量

    120938
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【飞嵌入式RV1126B开发板试用体验】初识飞嵌入式RV1126B开发板

    )RV1126B/ RV1126BJ 处理器开发设计的工业级开发板/核心,面向智慧工业、智慧园区、
    发表于 04-13 17:27

    精灵(ElfBoard)技术贴|如何在ELF-RK3506开发板上实现GPIO复用

    2026年全国大学生嵌入式芯片与系统设计竞赛报名已正式启动。本次瑞芯微&飞嵌入式赛题共设置了三个参赛平台(ELF2开发板、ELF-RV1126B开发板、ELF-RK3506
    的头像 发表于 03-16 14:55 6310次阅读
    飞<b class='flag-5'>凌</b>精灵(ElfBoard)技术贴|如何在ELF-<b class='flag-5'>RK</b>3506<b class='flag-5'>开发板</b>上实现GPIO复用

    OpenHarmony开发开源资料!-RK3568开发板:从入门到实战的全栈硬件平台

    点的利器: - RK3568 开发板,以及它的核心开源资源站——Gitee 仓库(https://gitee.com/xie-shancai/lockzhiner-
    的头像 发表于 02-05 13:56 652次阅读
    OpenHarmony<b class='flag-5'>开发</b>开源资料!<b class='flag-5'>凌</b>蒙<b class='flag-5'>派</b>-<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>:从入门到实战的全栈硬件平台

    【超值首选!仅88元】ELF-RK3506开发板限时优惠震撼来袭

    ElfBoard特别推出了ELF-RK3506开发板,助力大家快速掌握实际应用场景下的嵌入式Linux开发技能。【性能卓越,技术领先】ELF-RK3506
    的头像 发表于 01-16 16:41 1350次阅读
    【超值首选!仅88元】ELF-<b class='flag-5'>RK</b>3506<b class='flag-5'>开发板</b>限时优惠震撼来袭

    性能跃迁,鸿蒙开发新纪元!RK3566鸿蒙开发板,开启全场景开发之旅

    【导语】还在为鸿蒙开发寻找强劲、稳定、高效的硬件平台?RK3566鸿蒙开发板震撼登场!集高性能、全接口、强生态于一身,专为鸿蒙
    的头像 发表于 12-11 17:58 2672次阅读
    性能跃迁,鸿蒙<b class='flag-5'>开发</b>新纪元!<b class='flag-5'>凌</b>羽<b class='flag-5'>派</b><b class='flag-5'>RK</b>3566鸿蒙<b class='flag-5'>开发板</b>,开启全场景<b class='flag-5'>开发</b>之旅

    如何移植EtherCAT Igh--基于米尔RK3576开发板

    本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微RK3576开发板)的端移植EtherCATIgh方案的开发测试。摘自优秀
    的头像 发表于 09-26 08:04 1w次阅读
    如何移植EtherCAT Igh--基于米尔<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>

    RK3506开发板Linux开发板极致性价比之选

    RK3506开发板Linux开发板极致性价比之选瑞芯微RK3506开发板,3核Cortex-A7@1.5GHz+Cortex-M0,Linu
    的头像 发表于 09-11 16:26 3903次阅读
    <b class='flag-5'>RK</b>3506<b class='flag-5'>开发板</b>Linux<b class='flag-5'>开发板</b>极致性价比之选

    RK3568开发板暗藏32位兼容开关?飞嵌入式带你一键解锁!

    RK3568是一款64位处理器,飞嵌入式为其提供的交叉编译器也是64位的,然而部分用户可能需要在RK3568开发板上运行32位应用。本文将详细阐述如何使用32位交叉编译器,编译出32
    的头像 发表于 07-19 08:49 4567次阅读
    <b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>暗藏32位兼容开关?飞<b class='flag-5'>凌</b>嵌入式带你一键解锁!

    睿擎RK3506J开发板开箱记录、初步调试

    睿擎基于RK3506J开发RK3506J是一款三核A7+M0的入门级工业MPU,由于其价位低,性能优异,近期收到热捧,各家都出了很多RK
    的头像 发表于 06-20 20:43 2661次阅读
    睿擎<b class='flag-5'>派</b><b class='flag-5'>RK</b>3506J<b class='flag-5'>开发板</b>开箱记录、初步调试

    基于RK3576开发板的人脸识别算法

    RK3576开发板展示人脸识别算法例程和API说明
    的头像 发表于 05-07 16:48 2926次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的人脸识别算法

    基于RK3576开发板的RTC使用说明

    文章主要展示RK3576开发板的RTC信息和快速上手例程
    的头像 发表于 05-07 15:04 2576次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的RTC使用说明

    基于RK3576开发板的PWN使用说明

    RK3576开发板使用PWN教程及Demo
    的头像 发表于 05-07 14:07 2499次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的PWN使用说明

    基于RK3576开发板的TF卡槽使用说明

    RK3576开发板使用TF卡槽
    的头像 发表于 05-07 09:24 2358次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的TF卡槽使用说明

    基于RK3576开发板的WDT看门狗使用说明

    RK3576开发板的WDT使用说明
    的头像 发表于 05-06 17:15 1375次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的WDT看门狗使用说明

    基于RK3576开发板的MIPI-DSI使用

    MIPI DSI接口是由MIPI联盟下的Display工作组指定的DSI(Display Serial Interface)的接口标准。rk3576开发板使用mipi-dsi教程
    的头像 发表于 05-06 16:11 1641次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的MIPI-DSI使用