可触发拍照“电子眼”作品的升级实现

2022-08-04 10:37:48谢作如浙江省温州中学
中国信息技术教育 2022年15期
关键词:电子眼开源代码

谢作如 浙江省温州中学

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是一个开源的跨平台计算机视觉和机器学习软件库,比Processing更适合编写与摄像头相关的程序。

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

行空板虽然是一块配置了可触摸屏幕的智能终端,但并没有提供接键盘鼠标进行编程的模式。因为我们总是习惯于在自己的电脑上调试代码,然后“部署”(上传)到智能终端上。从这一点看,行空板提供的多种连接电脑方式尤其可圈可点:①用USB方式,模拟出一块网卡;②用Wi-Fi模式,和电脑连接同一个局域网;③用热点模式,让行空板作为一个无线路由器。

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

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

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

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

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

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

图5 参考代码1

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

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

图6 参考代码2

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

为了避免保存的图片文件被覆盖,代码中每拍一张照片就将图片编号加上1。一般来说,正式产品一般会采用“时间+编号”的方式来命名。

红外热释电传感器和按钮一样,都属于开关量传感器,所以代码只需要根据接口编写做一下修改即可,在如图7所示的代码中,传感器接在21口。

图7 参考代码3

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

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

图8 选择要运行的程序

图9 运行界面

需要说明的是,行空板有一个默认禁用的“开机自启”功能(如图10)。打开之后板子开机时会自动运行上一次关机前运行的程序。这样一来,只要插上电源,这个“电子眼”程序就能够一直运行下去。如果找一个盒子包装一下,这个“电子眼”作品和正式购买的安防产品功能上一样稳定,能够长时间使用。笔者将这个作品部署在学校的人工智能实验室,作为暑假的安防管理,当拍到有人活动的照片后(因为暑假实验室不开放),还会同时给笔者发一封邮件。

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

●结语

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

猜你喜欢
电子眼开源代码
五毛钱能买多少头牛
创世代码
动漫星空(2018年11期)2018-10-26 02:24:02
创世代码
动漫星空(2018年2期)2018-10-26 02:11:00
创世代码
动漫星空(2018年9期)2018-10-26 01:16:48
创世代码
动漫星空(2018年5期)2018-10-26 01:15:02
交警的幽默提醒
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
90后李永乾:研发“盲人电子眼”
金色年华(2016年14期)2016-02-28 01:44:30
开源计算机辅助翻译工具研究