木子呢 发表于 2023-2-7 13:38:35

【行空板】用Python玩转开源硬件-第02课:人体感应广告牌

本帖最后由 木子呢 于 2023-2-7 14:05 编辑

第02课:人体感应广告牌
户外电子广告牌在为夜晚增添色彩的同时也给市民的出行带来了困扰,昼夜长亮的广告牌从最初的吸引眼球逐渐变成了人们眼睛的伤害者,在夜间还造成了严重的光污染,浪费了宝贵的电资源。


我们是否可以设计一款感应式的广告牌?使用传感器对广告牌范围内的行人进行检测,感知范围内无行人经过广告牌时,不工作;有行人经过时广告牌时,开始工作。这种感应式的广告牌不仅能够节能省电,还能改善因广告牌滥用造成的光污染。接下来,就使用人体红外运动传感器和行空板制作一款节能省电,还不会造成夜间光污染的人体感应广告牌吧!


任务目标

当人体红外运动传感器检测到有人经过广告牌时,行空板屏幕自动投送广告;当检测到人离开后,行空板暂停广告投送。
https://www.bilibili.com/video/BV1aR4y1z7gS/?vd_source=27fedd3ac40d3e58da0788477833f7ac
知识点

1. 了解数字输入信号的概念

2. 认识控制系统及其组成

3. 掌握行空板获取数字输入信号的方法

4. 掌握人体红外运动传感器的使用方法及工作原理

材料清单


软件使用:Mind+编程软件 x1

下载地址:https://mindplus.cc/


动手实践

如何才能使用人体红外运动传感器和行空板制作一款人体感应广告牌呢?接下来,就将人体感应广告牌这个项目,分为读取人体红外运动传感器的值和制作人体感应广告牌这两个小任务来实现!

任务一:读取人体红外运动传感器的值

这个任务,主要是读取人体红外运动传感器在工作时的输入信号。

任务二:制作人体感应广告牌

通过分析人体红外运动传感器输入的数字信号,判断广告牌范围内有无行人,有行人,播放广告;没有行人,停止播放。

任务一:读取人体红外运动传感器的值

1. 硬件连接

人体红外运动传感器是一款可以检测运动的人或动物身上发出的红外线,并且输出数字信号。下面将人体红外运动传感器连接到行空板的P24数字引脚,硬件连接成功后,使用USB线将行空板连接到计算机。

注意:“人体红外运动传感器”的相关介绍,见知识园地。


2. 软件准备

打开Mind+,按照下面图示完成软件准备工作。


3. 编写程序

人体红外运动传感器连接到P24数字引脚后,怎样才能获取人体红外运动传感器检测到的值呢?使用读取数字引脚指令,并选择引脚为P24引脚。


然后使用显示文字指令,将人体红外运动传感器检测到的数字值显示在行空板上。


4. 程序运行

点击运行,程序运行成功后,当人体红外运动传感器检测到有人时,人体红外运动传感器上的指示灯亮起,行空板上显示数字1;反之,人体红外运动传感器上的指示灯灭,行空板上显示数字0。


任务二:制作人体感应广告牌

1. 编写程序

想一想,如何才能实现人体感应的广告牌呢?当检测到有人时,广告牌自动播放广告图片;当检测到没有人时,广告牌就停止播放广告图片。

要实现播放广告图片,首先需要将图片文件夹中的广告图片导入到行空板的文件系统中。


使用显示图片指令,在行空板上显示图片,并使用更新数字参数指令,设置图片的宽为240。


当检测到有人靠近广告牌时,使用条件判断指令,判断表达式读取数字引脚P24的值是否等于1?如果是,使用更新图片指令每隔1.5秒更新一张图片。


当检测到无人靠近广告牌时,使用条件判断指令,判断表达式读取数字引脚P24的值是否等于0?如果是,使用更新图片指令显示停止图片。


在图片很少的情况下,检测到有行人时,可以使用这种方式进行广告图片的切换。如果现在导入的广告图片有20张,甚至更多,使用这种方式就不太合理了。能不能找到一种更为简单的方法来实现图片切换呢?

先来观察一下程序中的更新图片指令,除了图片源的文件名不一样,其他的都一样。并且图片的文件名还是以“数字+.png”的格式组成,也就是说图片的文件名可以使用合并字符串指令。


新建一个变量图片名,通过让变量图片名+1的方式,来更改图片名。


运行程序后,发现当所有广告图片播放完了之后,人体红外运动传感器再次检测到有人靠近时,行空板界面上的广告图片都消失了,并且终端就打印报错信息。

这是因为当人体红外运动传感器检测到有人时,变量图片名还在+1,但是文件系统中并没有6.png的图片。因此,在条件判断外层再增加一个条件分支指令,当变量图片名<6时,执行检测到有人播放广告;否则,将变量图片名设置为1。完整程序如下:


2. 程序运行

点击运行,程序运行成功后,当人体红外运动传感器检测到有人时,行空板上自动播放广告;当人体红外运动传感器检测到没有人时,行空板就暂停广告播放;再次检测到有人时,接着当前广告继续播放。

知识园地

1. 什么是数字输入信号

什么是数字输入信号?在第一课中,学习了数字信号就是指用特殊的数据0和1来表示信号。数字输入信号其实就是数字传感器采集到信号,并且采集到的信号只有0和1。

那如何才能分辨这个传感器是否为数字传感器呢?在传感器板子上会印有“D”和“A”的字样。其中,“D”代表“数字”,“A”代表“模拟”。标有“D”的传感器就为数字传感器,标有“A”的传感器就为模拟传感器。关于模拟传感器的知识,在使用到模拟传感器时会有相关介绍。


在行空板上连接传感器时,需要注意什么呢?行空板上有4个3Pin的引脚,分别是P21、P22、P23、P24。这四个引脚都可以用来连接数字传感器,其中,P21、P22、P23可以用来连接PWM传感器(舵机),最后只有P21、P22可以连接模拟传感器。关于PWM的知识,在使用到PWM传感器时会有相关介绍。


2. 认识控制系统及其组成

什么是控制系统?控制系统是指能够接收到外界的输入,并按照一定需求调节其输出的系统,下图为控制系统的框图。


也就是说,在一个控制系统中,至少具备三个元素:输入、控制器和输出。其中,输入设备用来收集信号,控制器对接收到的信号进行处理,最后由输出设备输出信号。以我们人来说,五感就是输入设备收集信号,把信号送到大脑,大脑再做出反应,输出的就是人的行为。


生活中广泛存在着“输入—计算—输出”的系统模型,从外界获得的输入经过计算产生输出,进而作用于外界再影响输入,从而形成控制系统。比如微波炉,设定好加热时间后,控制器获取输入时间,然后控制器再对加热装置(执行器)下达加热指令,微波炉开始加热并计时,当计时到达设定时间后,微波炉停止加热。


在行空板的世界中也有同样的输入、控制、输出。行空板的输入可以通过不同的传感器来是实现,行空板作为控制器,来反应和处理信号,最后输出主要由屏(行空板显示屏)、声音(蜂鸣器)、光(LED灯、RGB灯)、动(舵机、电机)等表现形式。

这节课的人体感应广告牌项目中,人体红外运动传感器作为输入设备,检测到有人来时,行空板控制器就会收到一个信号,然后执行器展示广告图片。


3. 了解人体红外运动传感器的工作原理

人体红外运动传感器又称人体红外热释电运动传感器,是一种能够探测人或动物发出的红外线并输出电信号的传感器。在自然界,任何高于绝对温度(-273℃)的物体都将产生红外光谱,不同温度的物体释放的红外能量的波长是不一样的,因此红外波长与温度的高低是相关的,而且辐射能量的大小与物体表面温度有关。


人体有恒定的体温,一般在37℃左右,会发出10um左右的特定的红外线,人体发射的红外线聚集在敏感元上,通过电路的处理就会有输出信号。


你为什么人体红外运动传感器探头前面会加一个菲涅尔透镜吗?

我们可以将菲涅尔透镜理解为放大镜,不加菲涅尔透镜时,该传感器的探测半径可能不足2米,配上菲涅尔透镜则可达7米,甚至更远。所以只有当人体红外运动传感器配合菲涅尔透镜使用时,才能发挥最大作用。


当人体进入到检测区域时,菲涅尔透镜对人体红外线进行聚焦,提高传感器检测的灵敏度。红外线通过菲涅尔透镜聚焦后,汇聚到热释电单元。此时热释电接收到的热量不同,热释电也会不同,就会有信号输出。这个信号被放大处理后,就输出了对应的数字信号1和0。

4. 指令学习

该指令用于读取数字引脚的输入值。


挑战自我

这节课,学了如何使用人体红外运动传感器,并且也了解到了什么自动控制。接下来,大家可以利用人体红外运动传感器控制行空板背部的板载LED灯,做一个自动感应灯。当有人经过时,行空板背部板载的LED灯自动亮起,人一旦走了,LED灯又自动关闭。

附件下载

如有其它问题,请添加微 信咨询:DFRobot2019)



手机连接万物 发表于 2023-12-10 14:15:53

很详细,学习了

wangyi101 发表于 2024-4-17 17:02:35

1、程序中用到的图片,放在程序存放的根目录(比如:桌面\test),图片还是不能显示。必须添加到“项目文件中的文件”???
2、为什么我保存了项目,项目中的文件的位置还是“C盘里的缓存”的位置?
3、行空板里运行的文件不是 mp文件?是临时的py文件?
页: [1]
查看完整版本: 【行空板】用Python玩转开源硬件-第02课:人体感应广告牌