
视频演示
成品展示
项目启发
"西蒙说了什么"是一款种经典的聚会小游戏游戏。该游戏原版也有许多不同衍生的玩法,其中一些与身体动作相关,而另一些则涉及按照一定顺序做一系列动作。不幸的是,因为疫情,人们无法再参加线下聚会,因此我们提出了这个想法:我们将在每个用户的端口上使用一个"西蒙说了什么"游戏设备,并使用云服务将两个或多个设备连接在一起,这样游戏可以在有互联网连接的任何地方玩。现在,借助这些设备,人们仍然可以远程聚会并享受"西蒙说"游戏的乐趣。
项目简介
在这个游戏中,将会有两名玩家。玩家一将充当逃跑者,而玩家二将充当寻找者。游戏开始时,玩家一将使用操纵杆控制自己要去的地方。他可以总共移动五步。每次移动,都会点亮键盘上对应的LED,这些LED指示了用户1所在的位置。游戏过程中,游戏数据既在本地键盘上,也在云端。当玩家一完成所有移动后,他所经过的位置将被上传到云端。然后,玩家二将出现。玩家二需要通过按下与玩家一所走路径完全相同的路径来找到玩家一。如果玩家二的输入序列与玩家一的移动匹配,他/她将赢得游戏。否则,玩家一将赢得游戏。
工作原理
头脑风暴及硬件筛选
-
摇杆将作为用户的输入,键盘将执行输出任务给用户。用户将摇动摇杆到特定方向,而另一用户的键盘将显示摇杆移动的方向。
-
包含WiFi模组 (SAMW25)的微控制器单元(MCU),ADAFRUIT NEOTRELLIS RGB DRIVER(3954),ADAFRUIT Mini 2-Axis Analog Thumbstick(2765)
使用Altium Designer进行原理图设计
-
RGB驱动器通过I2C与MCU连接。
-
摇杆通过模拟输入与MCU连接。
-
电路板通过电源插座接受来自墙插的5V输入,并从输入中提供2个电压轨道,分别是3.3V和5V。5V直接来自电源插座,而3.3V来自降压转换器(TPS62827DMQR),将5V降至3.3V。
使用Altium Designer进行PCB布局设计和零件选择(BOM)
-
电路板尺寸:80毫米 * 80毫米(我们将摇杆安装在板上,因此占用了大量空间)
-
4层电路板:顶层,电源平面,地面平面,底层平面
-
我们为摇杆创建了自己的封装
-
电路板上提供了额外的I2C和模拟连接器,用于未来的开发
-
电路板上的元件布局得当
-
Digikey是我们的主要供应商
引导加载程序(BOOTLOADER)和空中固件更新(OTAFU)
-
引导加载程序存储在NVM的0x0000位置,而主固件存储在NVM的0x12000位置。
-
引导加载程序能够读取SD卡中的二进制文件,擦除从0x12000开始的旧固件,并将新固件写入NVM。
-
在NVM写入过程中将执行循环冗余校验(CRC),以确保更新的固件完整性。
-
电路板上提供了额外的I2C和模拟连接器,用于未来的开发。
-
支持空中固件更新(OTAFU)。这将通过使用WIFI芯片从UPenn服务器下载固件,重新启动系统,然后使用引导加载程序加载新固件来实现。
NODE-RED 前段交互UI
-
Node-Red部署在IBM云上
-
使用HiveMQ作为MQTT代理来实现数据交换
-
玩家状态和输入将实时反映在Node-Red仪表板上
-
游戏管理员可以使用Node-Red仪表板来重置游戏或开始另一场游戏。
命令行UI(CLI)和固件详叙
-
使用FreeRTOS来实现嵌入式系统多线程(Multi-thread)并发
-
使用HiveMQ作为MQTT代理来实现数据交换
-
玩家状态和输入将实时反映在Node-Red前段UI上
-
游戏管理员可以使用Node-Red仪表板来重置游戏或开始另一场游戏