首页 > 其他 >特殊应用电路 > 如何利用FRDM-K82F制作停车助手

如何利用FRDM-K82F制作停车助手

来源:互联网发布者:公子李 关键词: 传感器 计算机视觉 FRDM 更新时间: 2024/07/15

使用计算机视觉制作停车助手,让您可以始终如一地将汽车完美对齐地停放在车库中。

间接传感

在传感器领域,为了简化和降低传感成本,进行间接测量是很常见的。例如,为了检测人的存在以发出警报,超声波或热传感设备用于检测运动。然而,人类不是这样工作的。虽然我们可能可以使用声音来检测周围是否有人,但视觉是我们确定周围事物的最佳方式。一般来说,视觉可能是我们最有价值和最有能力的感觉,它使我们能够理解世界。

通过计算机视觉感知

最近,计算机视觉取得了很大进展。与机器学习相结合的新算法使我们能够从视频捕获中确定大量信息。然而,这些解决方案的成本远远高于其他类型的传感,因此其用途仅限于监控和工业应用。成本主要来自捕获和分析视频所需的强大计算机。

廉价的计算机视觉 (CV) 传感器可能会成为传感技术的一项突破,原因有很多:

它可以做得比间接传感器更智能。例如,在占用传感器中,当占用者不移动时,间接传感器会失效。即使没有移动,真正的计算机视觉占用传感器也可以检测占用情况。

只需一个视觉传感器就可以检测到许多不同的事物。例如,同一设备可用于检测位置、占用情况(即使现在很多人都在一个房间里)、火情、光照水平、设备状态(灯是否亮着?电视是否开着?)、手势控制,你的名字。如果您可以用自己的眼睛看到它,那么计算机视觉传感器也可以检测到它。

一旦开始使用,价格就会自行降低。基本上,这是大规模生产的结果。如果不生产占用传感器、火灾传感器、位置传感器,甚至墙壁开关,用基于摄像头的手势检测代替,一切都只用一个 CV 传感器完成,那么价格将比现在间接感应的价格降低得多。

基于摄像头的停车助手

由于上述原因,我想使用 FRDM-K82F 创建某种基于计算机视觉的传感器。虽然我想到了很多想法,但只有一个是实用的、有用的,并且可以在比赛截止日期前完成。

将汽车始终停在车库内的同一位置是非常困难的。您最终会在侧面过多,或者在前面或后面没有留下足够的空间。或者,也许你非常小心,但你的另一半却不是,如果你像我一样,那会让你发疯。目前有解决方案,从低技术到“伪高科技”。这些是其中的一些:

我的想法是创建对用户更友好的完全不同的东西。这个想法是使用计算机视觉制作一个系统,可以始终指导您正确停车。比现有解决方案更类似于此:

如何运作?

使用视频图像中的运动检测,系统应该能够指示车辆是否需要左移、右移或停止。

对用户的指示必须来自一个非常简单的基于灯光的界面,如下所示:

左右箭头将指示汽车是否必须向左或向右转向。中间的灯会显示三种颜色,绿色表示前进,黄色表示谨慎前进,红色表示停止。

为什么选择带有 FlexIO 的 FRDM-K82F?

像 UV7670 这样的相机之前已经连接到其他类型的微处理器。然而,在大多数这些实现中,微处理器积极参与从图像中捕获数据。这需要微处理器的大量处理能力。一旦图像被获取并在 RAM 中,真正的工作就从图像处理功能开始。

Kinetis FlexIO 允许从 UV7670 传感器中检索图像,几乎无需微处理器进行处理。一旦图像被完全捕获,中断指示图像已准备好并在内存中。在处理图像时,将同时捕获下一张图像。

这使得 FRDM-K82F 成为该项目目标的理想平台:一个非常低成本的图像处理平台。

为什么选择 OV7670 摄像头模块?

OV7670 是一款 300Kpixels 相机。分辨率对于这个应用程序来说并不那么重要,实际上在撰写本文时,程序以最低分辨率 (120x160) 使用它。OV7670 的关键是规模经济。因为它在小型项目中被大量使用,所以在包含镜头的分线板上组装相机的成本约为 10 美元。它还具有其他优点,例如没有红外滤光片,使其适合使用红外照明进行应用。

构建说明

摄像头组装:FRDM-K82F 平台的设计人员很高兴能包含一个用于 FlexIO 的连接器,其引脚与 OV7670 完全相同。可以将 OV7670 直接焊接到 FRDM-K82F 板上,但是,我将 0.1” 插座焊接到板上。这样我以后可以将其他相机或设备连接到 FlexIO 接口。

指示灯:这是项目中唯一需要一些人工来复制它的部分。指示灯是使用带控制器的 WS2812B RGB LED 制成的,并使用泡沫板进行安装。使用 WS2812B LED 的原因是因为它们提供了很大的灵活性(可以自定义颜色,并且可以连接任意数量的 LED),只需使用微控制器中的一个简单 GPIO。指示灯示意图如下:

LED 安装在双面原型穿孔板上,作为三个单独的板。三块板用扁平电缆连接。第一个板是唯一不同的,因为它包含上拉电阻。

如果有可用的 WS2812B 分线板,使用起来会更容易。

在泡沫板上切割灯的形状。小心不要完全切开。也就是说,将纸板背面留在一侧。剩余的纸板为 LED 提供了很好的扩散器。这样做两次,并使用锐器为内部边界着色,以避免光线扩散到创建的形状之外。LED 板安装在其中一块泡沫板上,并使用双面胶带将所有东西放在一个组件中。

灯总成数据线连接到Port C pin 12,即FRDM-K82F板子中的PTC12:

软件

至此,硬件准备就绪,是时候在软件中工作了。

首先安装 Kinetis Design Studio。就我而言,我将它安装在我的 MacBook Pro 上,虽然文档不能保证它会起作用,但它对我来说完美无缺。

要刷新 FRDM-K82F 板,到处都使用 JLink JTAG 适配器,但是,我使用了 OpenSDAv2.1 接口,或者最常见的 mbed 接口。将 OpenSDA 端口连接到 MAC 后,它将显示为 USB 驱动器,其中复制了 KDS 生成的 .bin 文件。

我这样做只有一个问题。在某些时候,由于某种无法解释的原因,配套的微处理器(实现 OpenSDA 接口的那个)不知何故被擦除了。它没有作为名为 mbed 的 USB 驱动器出现,而是显示为 BOOTLOADER。

只需将固件复制到 USB 驱动器中,几分钟后我就可以重新启动并运行。

我根据安装 Kinetis Design Studio 时复制到示例文件夹中的 dev_video_flexio_ov7670_lite 示例启动了我的软件。有一段时间,我计划完全删除代码的 USB 部分,但我没有这样做很好,因为它有助于调试应用程序。

通常在计算机视觉应用中,不是使用 RGB,而是使用黑白视频。但是,从 RGB 转换为基于强度的视频需要太多的处理器时间,我想为图像处理留下尽可能多的处理能力,所以我更改了演示程序,以便从 OV7670 传感器捕获的图像在 YUV422 中完成。YUV 422 格式再次使用每像素 16 位,一个字节用于强度,另一个字节用于颜色信息。

这很容易在 flexio_ov7670.h 文件中更改,只需更改以下行:

.outputFormat = (ov7670_output_format_config_t*)&OV7670_FORMAT_RGB565,

.outputFormat = (ov7670_output_format_config_t *)&OV7670_FORMAT_YUV422,

然而,正如预期的那样,这搞砸了通过 USB 发送的视频。我尝试了一段时间将东西的USB端更改为YUV422格式,但我没有成功,所以为了保持USB视频可用,我将Intensity转换为RGB图像,很多比将 RGB 转换为强度更简单。

在通过 USB 发送图像之前,我还在图像中添加了一些信息,以帮助调试应用程序。这是我的视频在带有调试信息的 PC 端的外观:

停车助手所需的软件在parkasst.c文件中,基本上需要用YUV422图像的缓冲区调用。所以这很容易迁移到其他平台。然而,要复制整个项目,只需在 FRDM-K82F 板中加载项目中包含的 .bin 文件并按照项目中的说明添加 LED。

总结

这不算是一个尽如人意的项目。但是,还是有一些今后可以进行拓展完善的功能。这些是完成该项目的下一个功能步骤:

使用蓝牙低功耗将图像上传到手机,这样用户就可以准确地配置停车限制

将停车区更改为三角形而不是正方形。它需要是一个三角形来考虑相机的视角

提问/讨论

这里还没有内容,您有什么问题吗?

我要提问/讨论

推荐帖子 最新更新时间:2024-11-13 08:50

Altium Designer 原理图和PCB多通道设计方法介绍
转载自: http://bbs.21ic.com/icview-141848-1-1.html by:pk.kong 曾经把不少ad6的资料整理想发出来,后来发现用ad6的朋友并不多,所以一直没有动手。 不过最近好几个朋友问ad6这个多通道设计的问题。特别是许mm,可是每次我都
 ginaPCB设计
设备低温测试
买的一款第三方手持终端设备(嵌入有我们自己开发的软件),规格书上写的工作温度为-20度至+55度,我们测试-20度下的老化情况:低温环境下带电放置2小时,功能正常,此时电量为98%;然后第二天发现设备电池电量只剩1%,还没操作就自动关机(此时已放置18小时);然后常温下放置半小
 xxhhzz测试/测量
做过SIM卡,智能卡,IC卡的来看看
有分析过IC卡协议的吗?我现在在做SIM卡的驱动,对于协议里面的东西不理解, 能跟我说下PTS的过程吗?还有TC1,guard time 的取值问题, 做过SIM卡,智能卡,IC卡的来看看 http://blog.eeworld.net/jennyvenus/archive/20
 cecilecheung嵌入式系统
请教关于wince IE问题
需要写一个IE浏览器 请问怎么能检测到当前网络状态(应该是IE的状态)是否连上或者断开, 通过检测无线网卡的方式经过实验发现不行,因为无线网卡的驱动好象也 不是时时检测 这个连接状态的,我把AP断开,无线网卡的信号还很强, 现在想通过 判断IE 是否能打开网页来判断,即:当正常打
 xianghongheWindowsCE
4*4键盘的问题
4*4键盘先编排好0-9十个数字,第一次按键盘时第一个数码管显示按键的读数.第2次按时第2个数码管显示第2次按键的值,第一个保持不变.于此类推,一直到第6次按键的第6位数码管. 用C语言写 这样的程序应该怎样想,给个思路就好.谢谢了.想了一晚了. 4*4键盘的问题 这个并不复杂
 有理想的猫单片机
电偶分度表大全
这里面含有B、E、J、K、N、R、S、T等分度号的分度表。 电偶分度表大全 谢谢!
 huchuan987测试/测量

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved