方案说明:
和前面几个任务一样,还是依照百年精神来搭建沙盘。沙盘使用地理组的地形教具,主控采用Firebeetle,每个主控连接一个红外接收和一个RGB灯。既可以使用红外的遥控器控制每个地点上RGB灯的闪烁,也可以使用APP来互动,也可以直接在电脑上发送IoT信息来控制灯的互动。
步骤1 设计3D星星模型
选择有明确地点特征的10种中国精神:五四精神、红船精神、井冈山精神、沂蒙精神、遵义会议精神、延安精神、西柏坡精神、大庆精神、吕梁精神、红岩精神,表现形态为小星星灯座。整个外形分为三部分,最上方为五角星,中间放置RGB灯和红外接收探头,下方长长的管子用来放置导线,并插入到沙盘中(因为沙盘比较厚,所以管子也要比较长)。
步骤2 获取红外遥控器的红外编码
器材库里的遥控器都是18或21键的迷你遥控器,按键不够。突然想起实践室班牌配的遥控器貌似键不少,找出来一年乐了,居然有32个键,妥妥的够用。
用UNO加一个红外接收,编写程序读取红外编码。程序上传成功后,使用遥控器依次按下32个键,在串口监视器会得到每个键的红外编码。
将红外编码选中并复制到Excel表格中。
步骤3 程序编写
下面以五四精神为例说明程序的编写,其余精神只需要修改红外编码的序号(28种中国精神的序号,五四精神为1,红船精神为2,以此类推)及MQTT消息(五四精神为1,红船精神为2,以此类推)即可,其余代码完全一样。
主程序
1. 初始化红外编码,目的是将红外编码保存到列表中,方便访问(序号为17的红外编码在遥控器上的按钮是1,详见前面的Excel表格)。
2. 进行网络初始化,设置wifi及MQTT。
3. 重复判断是否接收到红外信号,并根据红外信号的索引来点亮对应主控上的RGB灯,并发送对应的MQTT消息给APP来跳转页面。
函数:初始化红外编码
1. 依次分离红外编码并保存到列表中
2. 通过串口监视器显示红外编码。如果正常运行,则删除这段代码。
红外编码初始化成功后,可以将多余的代码删除,如下图所示:
函数:初始化网络
1. 设置WiFi并连接,连接正常亮灯 。
2. 设置MQTT并连接,连接正常亮灯。
亮灯是为了观察状态方便,可根据需要删除。
当接收到MQTT消息时
根据消息内容(索引)点亮对应主控的RGB灯。
点亮RGB灯
每个主控都可以用不同方式点亮RGB灯,下面是一种示例。
等待刷程序的firebeetle
步骤4 装配
刷好程序贴好标签的Firebeetle排排坐,准备安装。
后面的饮料是大家加班时点的外卖,6月30晚战斗了一个通宵。
沙盘底座是木板,背面也是用木板支撑,隔成了若干区域。背面放置主控及充电。
插座虽然是有6个孔,但是间距太小,3个4口的USB集线器无法同时插到插座上,只能把USB的Hub拆开装上去,这样3个孔可以有12个USB充电口。10个用来给10个主控板供电,剩下的两个充电口一个给平板供电,一个给沙盘四周的三色LED灯供电。LED灯通过了红外接近传感器和继电器控制,当红外接近传感器检测到有人接近沙盘两边时,会给继电器发送信号,控制LED灯点亮。
上下两张图是沙盘的背面。
下图是更早的方案,使用锂电池供电。后来发现不方便,最后改成直接用USB供电。
沙盘正面图:
hnyzcj2021.07.09
老板下血本了