技术探索 | 可触发拍照“电子眼”作品的升级实现
你的位置:醴陵市园林绿化管理局 > 站点风采 > 技术探索 | 可触发拍照“电子眼”作品的升级实现
技术探索 | 可触发拍照“电子眼”作品的升级实现
发布日期:2022-08-22 20:37    点击次数:191

2015年,笔者在《中国信息技术教育》杂志的“生活技术探索”栏目写过一篇题为《可触发拍照的“电子眼”》的文章,用Arduino结合Processing的形式,制作了一个简单的可触发拍照作品,模拟现在智慧城市中随处可见的“电子眼”功能。现在回头去看,虽然Arduino在中小学的应用已经比较常见,但Processing并没有得到普及。而且笔者设计的作品原型最大的缺点是难以部署——总不能搬一台计算机去充当“电子眼”吧?

当笔者再次审视过去的创客作品时,不得不为光阴流逝和技术变迁而感慨。当年为实现一些创意,满世界苦苦寻找低门槛的编程工具。现如今,那些创意作品大都能用现有的工具快速实现。以“电子眼”作品为例,借助行空板和OpenCV、pinpong库,寥寥几行代码就能实现这些功能(如图1)。

图1 2015年的“电子眼”原型作品界面和照片

▶ “电子眼”作品的工作流程分析

“电子眼”的核心功能是触发拍照,其工作原理如图2所示。当时笔者选择了红外热释电传感器、开源硬件(Arduino)、普通电脑和摄像头,软件则使用Processing。

图2 “电子眼”触发拍照的工作原理

红外热释电传感器(如图3)是能检测人或动物身体发射的红外线而输出电信号的传感器,输出开关信号,可以应用于各种需要检测运动人体的场合。在淘宝上,这种传感器的价格在20~50元之间。实际上,除了红外热释电传感器外,还可以选择其他类似的传感器(如下表),如微波位移传感器、红外测障传感器等。当然,如果要实现比较复杂的条件判断,可能需要更多的传感器组合。

图3 红外热释电传感器

▶ 用行空板实现“电子眼”的优势分析

行空板是一款为中小学Python编程而设计的开源硬件。行空板很小,尺寸略大于一张普通的明信片,但是性能却不弱:4核1.2G国产CPU、512M内存和16G固态硬盘,自带了Wi-Fi和蓝牙。行空板运行Linux操作系统,支持免驱摄像头、声卡等常见的外设, 中电电机并预装了一些与编程学习和创客造物息息相关的编程工具。例如,OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,比Processi ng更适合编写与摄像头相关的程序。

行空板还内置了单片机,相当于在普通的Linux电脑上接一块类似Arduino和掌控板的开源硬件。那么,借助pinpong库编写与传感器交互的摄像头程序,类似于用Mind+编写“实时模式”的代码,非常方便。

行空板虽然是一块配置了可触摸屏幕的智能终端,但并没有提供接键盘鼠标进行编程的模式。因为我们总是习惯于在自己的电脑上调试代码,然后“部署”(上传)到智能终端上。从这一点看,行空板提供的多种连接电脑方式尤其可圈可点:

①用USB方式,模拟出一块网卡;

②用Wi-Fi模式,和电脑连接同一个局域网;

③用热点模式,让行空板作为一个无线路由器。

除了自带的Jupyter和Mind+,站点风采行空板还可以使用Thonny作为IDE工具,调试代码非常方便。因为连接开源硬件采用了pinpong库,所以只要在电脑上接一块开源硬件和摄像头,“电子眼”的代码就可以在任何电脑上开发调试,等测试正常后再部署到行空板上(如图4)。

图4 用Thonny给行空板编写程序

▶ 可触发拍照“电子眼”作品的编程

根据“电子眼”的工作原理图,笔者将代码分解为拍照保存和传感器触发两个部分,逐一讲解。

参考代码1:打开摄像头,拍照并且保存

用OepnCV驱动摄像头拍照仅几行代码就可以实现。考虑到有些摄像头启动慢,代码中增加了等待0.5秒时间,避免拍摄的照片是黑屏,代码如图5所示。

图5

参考代码2:读取行空板传感器状态

行空板内置的按钮A和B,连接的是板载单片机的27、28引脚。图6所示的代码能够输出按钮A的状态。默认情况是1,按下是0。

图6

参考代码3:“电子眼”的最简代码

为了避免保存的图片文件被覆盖,代码中每拍一张照片就将图片编号加上1。一般来说,正式产品一般会采用“时间+编号”的方式来命名。红外热释电传感器和按钮一样,都属于开关量传感器,所以代码只需要根据接口编写做一下修改即可,在如图7所示的代码中,传感器接在21口。

图7

▶ 程序运行效果测试和优化

笔者将红外热释电传感器接在行空板的21口(背面的接口),接上一个普通的摄像头后测试,运行正常:当有人在传感器前活动的,就能自动保存摄像头照片(如图8、图9)。

图8 选择要运行的程序

图9 运行界面

需要说明的是,行空板有一个默认禁用的“开机自启”功能(如图10)。打开之后板子开机时会自动运行上一次关机前运行的程序。这样一来,只要插上电源,这个“电子眼”程序就能够一直运行下去。如果找一个盒子包装一下,这个“电子眼”作品和正式购买的安防产品功能上一样稳定,能够长时间使用。

图10 行空板的“开机自启”功能设置

笔者将这个作品部署在学校的人工智能实验室,作为暑假的安防管理,当拍到有人活动的照片后(因为暑假实验室不开放),还会同时给笔者发一封邮件。

▶ 结语

笔者曾在本刊2020年的专题《用Python驱动开源硬件》中,请上海蘑菇云的创客写了一篇文章,将之前用Processing完成的创客作品用Python“再造”了一次。 在创客文化中,“再造”是被鼓励的一种学习方式。 我们在不断快速前进的同时,不妨也回头看看,当年难以解决的一些问题或者门槛较高的技术方案,是否已经有了新的工具和新的解决方案? 在接下来的专栏文章中,笔者将继续整理这方面的内容,敬请关注。

本文作者:

谢作如 浙江省温州中学

文章刊登于《中国信息技术教育》2022年第15期



上一篇:行前指导|如何适应留学生活
下一篇:用真实生活建构、认识自我