4469| 4
|
[项目] 闯红灯拍照系统 |
【项目背景】 交通陋习不但直接威胁着出行安全,扰乱了正常的交通秩序,也破坏了城市的整体形象。随着文明城市创建的深入人心,文明交通必将受到全社会的推崇。借助“闯红灯拍照系统”可以宣传文明交通、安全交通法规,引导大家告别交通陋习,倡导文明出行,提升人民素质,为城市的文明建设出一份力量,人民的出行也更有安全感。 【原理分析】当红灯亮并且有车越线行驶时,拍照识别闯红灯车辆车牌号。我们可以利用红外避障开关来检测过往车辆是否越线闯红灯。具体的流程图如下所示。左侧是红绿灯系统的流程图,右侧是抓拍系统的流程图。 材料清单 1x DFRduino UNO R3 链接 1x IO 传感器扩展板 V7.1 链接 1x 数字食人鱼红色LED发光模块 链接 1x 数字食人鱼绿色LED发光模块 链接 1x 数字食人鱼黄色LED发光模块 链接 1x 3-80cm红外数字避障传感器 链接 1x A-B 方口USB线 链接 1x 罗技C270电脑摄像头 链接 因为我们用到了麦昆来模拟行驶的车辆,所以还需要以下硬件: 材料清单1x 麦昆: micro:bit教育机器人 V4.0 麦昆+锂电池 链接 1x 掌控板 链接 1x IR kit红外遥控套件 链接 1x 高品质 micro USB数据线 链接 步骤1 连接器材 我们需要用到红、黄、绿三色LED以及红外避障开关。将数字食人鱼红色LED发光模块连接到扩展板的4号引脚,将数字食人鱼黄色LED发光模块连接到扩展板的5号引脚,将数字食人鱼绿色LED发光模块连接到扩展板的6号引脚。红外避障开关我们连接到扩展板的2号引脚即可。具体接线可以参考下图。 连线完成后的效果如下: 步骤2 编写主程序 打开Mind+,切换到实时模式。选择左下角的“扩展”按钮,接着选择“主控板”选项卡下的“Arduino UNO”作为主控。 将“网络服务”下的“AI图像识别”加入扩展。 在舞台背景库中选择“Colorful City”作为舞台背景。 参考流程图,开始编写代码。这里遇到了一个问题。本来按照原先的设想,应该使用多线程来编写的。一个线程模拟红绿灯系统,一个线程用来抓拍闯红灯的车牌。但是老师提醒我,由于UNO性能不够,不支持多线程。后来我看到论坛里的帖子“在UNO上如何实现同时控制多个延时程序?系统运行时间”,于是有了灵感。最终代码完成如下: 由于红绿灯系统要始终运行,如果用等待几秒这样的语句,会使系统阻塞。在此期间无法执行任何其他操作。所以改用记录当前系统运行时间的方法来控制红绿灯的持续时间。红灯亮的时候打开摄像头,如果红外避障开关检测到有车辆经过,就开始拍照识别。 步骤3 创建百度智能云应用 首先打开百度AI开放平台http://ai.baidu.com,点击右上角的控制台。用百度账号登录后选择页面左侧的“文字识别”。 在新页面中选择“创建应用”按钮。 完善应用信息。默认已经帮我们勾选了文字识别的相关服务,其中包含车牌识别。 创建完后在应用列表中能看到刚才创建的应用。我们需要记录列表中的AppID、API Key和Secret Key。 回到Mind+,将上述AppID、API Key和Secret Key的值填入“切换至独立账户”指令中。 至此,闯红灯抓拍系统的代码部分已经全部完成,接下来可以设计外观了。 步骤4 制作外观 首先制作红绿灯的外观。选择一张瓦楞纸,中间折两下。在上面挖三个孔用来安放LED。背面将LED和线材用透明胶带固定。 原本想将红绿灯做成L型的,但考虑到要挂摄像头上去,估计很难固定,所以将红绿灯做成直立型。由于做好的红绿灯是三棱柱的形状,底部受力面积太小,立不住,我们要设计一个底座。在瓦楞纸中间开了一个梯形的孔,用于放置信号柱。 放上去之后是这样子的。 看上去效果还可以。但是还有一个笨重的摄像头要放上去。结果一放上去就翻了!没办法,只好想办法解决。我们的杀手锏是用泡沫板做了一个很大的底座。 最终效果就是这样。 步骤5 编写测试车辆代码 为了更好的控制车辆,我们使用遥控板来控制麦昆的前进与后退。因此先要测试得出遥控各个按键的码值。我们将获取到的遥控信息输出到串口中。 经过测试,得到要用到的几个按键的码值如下表所示。 编写程序控制麦昆前进、后退、左转、右转与停止。 步骤6 测试运行 我们在麦昆身上放一张模拟车牌。 测试场景是这样的。由于前方到达桌子边缘,为防止小车坠落,特意放了两个盒子作为阻挡。 经过测试,基本能够实现闯红灯拍照效果。小车停下来是因为如果开过去就撞翻纸盒掉地上了,所以暂时只能这样处理。 附件 闯红灯拍照系统.sb3 遥控麦昆.sb3 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed