帶無線控制器的乒乓球比賽 - 示意圖
自定義控制原理圖(基礎)。查看完整尺寸版本。
無線控制器和乒乓球比賽工作
這個項目分為三個主要部分:控制器,服務器和乒乓球比賽。服務器本身很容易使用。不需要特殊的服務器代碼,因為它將要做的唯一工作是將數據包從控制器重新路由到乒乓球游戲。該項目的所有文件都以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文章
29瀏覽量
10915
發布評論請先 登錄
相關推薦
評論