今天小編給大家?guī)淼氖莵碜詍ocketech的基于樹莓派和XIAO RP2040的圍棋棋盤娛樂系統(tǒng),每塊圍棋石都會根據(jù)其狀態(tài)顯示面部表情,從而便于評估整體比賽情況。即使是不熟悉圍棋規(guī)則的人也可以通過這些表情輕松理解游戲。
靈感
我的靈感來自網(wǎng)絡(luò)游戲SquishyGo,在SquishyGo中,您可以使用鼠標在網(wǎng)絡(luò)瀏覽器上放置圍棋棋子。我想如果我們能觸摸到圍棋子會更有趣,而且它們有面部表情,所以我做了這個小項目。
EmoGo圍棋
圍棋是一種基于領(lǐng)土的游戲。在職業(yè)圍棋中,獲勝者取決于他們自己的棋子包圍的區(qū)域的大小,那里沒有棋子。然而,EmoGo遵循“純圍棋”的規(guī)則,獲勝者取決于每個玩家在棋盤上的棋子數(shù)量。玩家只能放置棋子;一旦放置,它們就無法移動。兩位玩家最終在棋盤上的棋子數(shù)量相同。然而,如下圖所示,有一個特定的條件:如果圍棋棋子完全被對手的棋子或棋盤邊緣包圍,則必須將其移除。在EmoGo中,獲勝的關(guān)鍵是移除對手的棋子,同時確保自己的棋子留在棋盤上。
當圍棋被對手的圍棋包圍時,它們會顯示一張哭泣的臉。哭泣的圍棋被稱為“死棋”,必須從棋盤上移走。在傳統(tǒng)圍棋中,玩家經(jīng)常忘記移除死棋,但在這個游戲盤系統(tǒng)中,如果你嘗試在移除所有哭泣的圍棋之前放置新的圍棋,任何新放置的棋子也會顯示哭泣的臉,游戲無法進行。這確保了所有 “死子 ”都被清除,沒有任何錯誤。
在對手下一步移動時將成為死棋的圍棋會顯示出“麻煩臉”。如果您的圍棋顯示此表情,則表示您遇到了麻煩。您必須決定是保存這些棋子還是放棄它們。在這個游戲板系統(tǒng)中,Go 棋子的表情表示游戲狀態(tài)對您有利還是不利。隨著您對游戲越來越熟悉,您可以采取一些行動來防止您的圍棋棋子出現(xiàn)這種麻煩的表情。換句話說,圍棋上的表情有助于玩家理解圍棋的規(guī)則,并使他們能夠發(fā)展基本的戰(zhàn)術(shù)思維。
該系統(tǒng)的系統(tǒng)架構(gòu)如下

每個模塊由以下部分組成:
游戲控制器 x1:該設(shè)備管理整個游戲。它通過 CAN 與 Go 棋盤模塊通信,以檢測棋子的位置并指示應(yīng)在棋子上顯示哪些面部表情。
Rasbperry Pi 4 2GB
Raspberry Pi 7 英寸官方觸摸顯示器
WAVESHARE 2 CAN 擴展 HAT,適用于 Raspberry Pi

棋盤模塊 x 25 ( 用于 5x5 棋盤 ) 圍棋盤上的每個網(wǎng)格都是一個模塊。當放置或點擊圍棋時,它會通知游戲控制器,并按照游戲控制器的指示在圍棋上顯示面部表情。
Seeed XIAO RP2040
MCP2515 CAN 控制器
MCP2652 CAN 驅(qū)動

Go Stone x25 ( 用于 5x5 棋盤 ) 每個棋子在放置或點擊時都會通知其棋盤模塊,并根據(jù)從棋盤模塊收到的指令改變其面部表情。

項目亮點
1. 模塊式連接
該系統(tǒng)最初是使用 5×5 板創(chuàng)建的,但也可以很容易地適應(yīng)其他尺寸,例如 7×7、9×9 或 6×8。所有圍棋板模塊都設(shè)計為連接到單個 CAN 總線,并且可以在總線電氣特性允許的范圍內(nèi)添加。每個圍棋板模塊的尺寸為 50mm × 50mm,它們的總線和電源線使用排針和插針以鏈形式連接,從而可以將多個模塊鏈接在一起。
2. 同步閃爍
我想實現(xiàn)的一個關(guān)鍵功能是同步閃爍:當點擊圍棋時,所有連接的棋子(包括點擊的棋子)都會同時閃爍。由于每個棋子都需要改變其外觀或閃爍,因此它必須與游戲管理設(shè)備通信。挑戰(zhàn)在于有效地實現(xiàn)這種同步。
雖然無線通信允許廣播,但由于展覽場地可能會受到干擾,因此我避免了廣播。我考慮了幾種有線通信協(xié)議:SPI、I2C、RS485 和 CAN。由于廣播通信限制,SPI 和 I2C 被取消。盡管 RS485 支持與板模塊的單獨和廣播通信,但它需要實現(xiàn)自定義協(xié)議。這種額外的處理可能會使 RP2040 負擔過重,從而導(dǎo)致同步問題。
最終,我選擇了 CAN 協(xié)議,因為它的控制器在本地實現(xiàn)了個人和廣播通信。此選項可減少 RP2040 的處理負載并最大限度地減少同步問題。雖然為每個板卡模塊配備 MCP2515 CAN 控制器會增加當前成本,但我們預(yù)計未來通過用 XIAO RA4M1 替換 XIAO RP2040 來降低成本,這將消除對單獨 CAN 控制器的需求。
每個板卡模塊根據(jù)其位置分配一個唯一的 XY ID。使用此 ID,通過以下 CAN ID 處理通信:
0x4XY:從游戲手柄發(fā)送,指示圍棋改變面部表情或準備眨眼
0x6XY:放置、移除或點擊圍棋時,從棋盤模塊發(fā)送到游戲控制器
0x1FF:廣播到所有準備閃爍的棋子,觸發(fā)它們同時閃爍
例如,要僅使編號為 0x12 且 0x14 閃爍的棋子,該過程如下:
游戲控制器向編號為 0x12 和 0x14 的棋子發(fā)送消息0x02FF,使這些棋盤模塊進入閃爍就緒狀態(tài)。
然后,游戲控制器0x1FF03FF (on) 和 0x1FF0300 (off) 廣播消息。只有處于 blink-ready 狀態(tài)的板子模塊 (0x12 和 0x14) 響應(yīng)這些命令,而所有其他模塊都會忽略它們。這將啟用僅選定的 Go 棋子的同步閃爍。
這種通信機制可確保無縫閃爍,從而防止播放器出現(xiàn)任何明顯的同步延遲。
-
控制器
+關(guān)注
關(guān)注
114文章
17787瀏覽量
193065 -
游戲
+關(guān)注
關(guān)注
2文章
790瀏覽量
27458 -
樹莓派
+關(guān)注
關(guān)注
122文章
2078瀏覽量
110452
原文標題:創(chuàng)客項目秀|基于XIAO RP2040和樹莓派的圍棋棋盤游戲系統(tǒng)
文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創(chuàng)客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
使用樹莓派Pico的RP2040微控制器內(nèi)置溫度傳感器
在樹莓派Pico RP2040上怎樣使用MicroPython呢?
矽遞科技XIAO RP2040開發(fā)板的Arduino開發(fā)環(huán)境配置教程
使用RP2040設(shè)計一個迷你板
ubuntu上交叉編譯rp2040
樹莓派Pico迷你開發(fā)板及所使用的RP2040 MCU芯片有哪些特性
在IAR EWARM v7.10下,開發(fā)樹莓派RPi Pico/RP2040c
RP2040
BBkey80:由XIAO RP2040驅(qū)動的GL516兼容鍵盤
AI WB2和XIAO RP2040組合開源
9.9元包郵!合宙RP2040開發(fā)板,兼容樹莓派PICO
9.9元自制樹莓派邏輯分析儀?!合宙RP2040開發(fā)板輕松DIY
合宙RP2040開發(fā)板,兼容樹莓派PICO
RP2040的工業(yè)級封裝系統(tǒng)!
基于XIAO RP2040和樹莓派的圍棋棋盤游戲系統(tǒng)設(shè)計
評論