电子说
带无线控制器的乒乓球比赛 - 示意图
自定义控制原理图(基础)。查看完整尺寸版本。
无线控制器和乒乓球比赛工作
这个项目分为三个主要部分:控制器,服务器和乒乓球比赛。服务器本身很容易使用。不需要特殊的服务器代码,因为它将要做的唯一工作是将数据包从控制器重新路由到乒乓球游戏。该项目的所有文件都以ZIP文件形式提供。
控制器
控制器本身只包含一个兼容RIOT的PIC器件(如PIC16F1516)和一些外部器件,包括功率调节和几个开关。当控制器打开时,器件配置为确保为ESP8266正确配置UART,在接收到UART字节时触发中断,内部振荡器处于最大速度,并且所有IO端口都配置为输入或输出。设置代码完成后,微控制器需要启动RIOTOUS并尝试通过Wi-Fi连接到路由器(这是您需要填写自己的详细信息,包括SSID和密码)。一旦建立了Wi-Fi连接,微控制器就会进入循环,不断尝试连接到我们的RIOTOUS服务器(同样,您需要填写托管RIOTOUS服务器的计算机的IP地址)。建立连接后,控制器会发送一条消息,让服务器在其日志中显示,并告知服务器其唯一ID。 RIOTOUS服务器根据它们所连接的端口识别设备,但每个连接的设备也可以具有唯一的ID。这个唯一ID与MAC地址的工作方式几乎完全相同,如果两个客户端想要相互通信(例如,控制器和乒乓球游戏),它们都需要一个唯一的ID,然后要求服务器重新路由数据到具有唯一ID的设备。设置设备的唯一ID非常简单,只需要两个字节:字母“I”和第二个字节,其值代表唯一ID(0到255)。在我们的例子中,我们将控制器的唯一ID设置为“M”,因此将数据包发送到服务器“IM”。
一旦所有启动代码都有已执行,主循环启动。此循环只是查找按钮按下并根据当前按钮状态发送消息。上下按钮仅在按下或释放按钮时发送消息,而每次代码循环时,开始按钮将发送消息。
游戏
游戏本身是使用名为Multimedia Fusion 2.5的程序制作的,是一个软件包,可以在不使用代码的情况下进行游戏制作。尽管没有使用代码,但该软件功能强大且比大多数人认为的更灵活。程序是使用点击式系统制作的,具有可配置的事件和操作,具有许多扩展,允许用户执行任何操作(包括网络,目录搜索,系统进程查看等)。虽然MMF2易于使用,但我建议您在进行此项目之前尝试更轻松的项目,因为您需要一些关于可变值和基本游戏练习的知识。
在我们的乒乓球在游戏中,我们利用了RIOTOUS小部件,它包含一个对象,两个moo套接字和一些处理所有数据传输的代码。需要完成的第一项任务是更改RIOTOUS小部件的一些可变值。 “服务器IP”需要设置为RIOTOUS服务器的IP地址,“广告端口”需要设置为广告端口(默认为333),“唯一ID”需要设置为唯一ID。游戏,将是“A。”
完成后,我们需要让RIOTOUS小部件连接到游戏首次启动时的RIOTOUS服务器,这是通过在触发“开始帧”事件时将可更改字符串“Connect”设置为“true”来完成的。发生这种情况时,RIOTOUS会自动尝试连接到服务器,如果成功,“ServerConnectionStatus”将等于“true”。
现在RIOTOUS小部件已将我们连接到服务器,我们等到用户按下无线控制器上的开始按钮,按下后,控制器将文本“RADBSTART”发送到服务器。服务器首先查看第一个字母并确定所请求的操作是什么。在这种情况下,第一个字母是R,表示重定向。下一个字母/字节是将消息重定向到的唯一ID(在本例中为A)。然后将其余数据发送到具有唯一ID(DBSTART)的设备。
当客户端(我们的游戏)收到此包时,它会查看第一个字母以确定数据包是什么。我们数据包中的第一个字母是D,代表“数据”,因此客户端将数据包“DBSTART”放入其数据缓冲区,并将“DataAvailable”变量设置为“true”。如果游戏检测到此数据包,则启用控制游戏的事件(玩家控制和游戏事件)。当从RIOTOUS小部件读取成功的数据时, 您必须清除缓冲区中的数据并将“DataAvailable”设置为false!
完成后,我们的游戏运行,按下按钮可上下移动划水板。但是,当按下按钮时,它只发送一条消息,因为微控制器的速度不足以反复向游戏发送移动数据。因此,在我们的游戏中,如果检测到按钮按下,则播放器将朝该方向移动 ,直到释放按钮 。这提供了平滑响应控制的效果,并且由于控制器和游戏之间的延迟小于20ms,因此给人的印象是正在使用有线控制器。
您可能已经注意到检查可用数据的最后一个事件是否为真。关于MMF2的好处是事件按顺序执行,以便事件16始终在事件17之前执行。在我们的示例中,如果已发送损坏的数据且没有触发任何数据事件,则最后一个数据可用事件将清除缓冲区,以便新数据可以到达。游戏代码本身不会被解释,因为它是A)MMF2文件中的微不足道而B)不太重要。什么 重要的是RIOTOUS客户端,服务器和MMF2之间的通信。
构建
您可以使用许多不同的技术构建此项目。第一个也是最简单的方法是构建一个RIOTOUS开发板(上面提供的原理图)或者获得一个RIOTOUS开发板(很快就可用)。但是,如果您需要个性化控制器,则可以使用不同的电路构造技术,包括面包板,条形板,矩形板和PCB。控制器需要兼容RIOTOUS(》 4 MIPS,4KB ROM和256字节RAM),下面是控制器板PCB布局的示例。
通用控制器PCB的一个例子(需要按钮和其他输入的屏蔽)
此项目中使用的开发板(PIC16F1516)
全部0条评论
快来发表一下你的评论吧 !