目前還沒有人照這些指南組裝出盒子,Field Box 也還沒有外殼。只有一個用散線連接、能玩遊戲的Field Box 工作台組裝。指南中的腳位會自動和韌體核對,但每一個實體步驟(外殼、電源、續航時間、無線電距離)都還沒測試過,其他盒子的照片要等它們的第一批成品才會有。如果你做了一個,請告訴我們你發現了什麼。
安全第一
這些規則適用於本頁的每一種組裝,和 Field Box 一樣。
- 開發板沒接 LoRa 天線時絕對不要通電,即使是 USB 供電也不行:對著空的天線接頭發射,可能會燒毀無線電的放大器。先把兩根天線都裝上,而且不要拆下來。
- 只能串接一顆鋰電池芯(1S,3.0–4.2 V):使用有保護板的電芯、在電芯附近加保險絲,並加一顆二極體防止電芯裝反。開發板的電池插座和充電器只接受一顆電芯;2S 電池組會把它們燒壞。每次接線前都用電錶確認極性:小型電池插頭沒有統一的極性標準。
- 充電時要有人看著,絕不在密閉的盒子裡充電,只在約 0 到 45 °C 之間充電;作業時把電芯放在防火袋裡,而且電芯要從盒子裡拿出來。有凹痕、膨脹、發燙或電壓低於 2.5 V 的電芯絕對不要用。
- 只能把 3.3 V 訊號接進開發板:LED 燈環要經過電位轉換器驅動,每個 I2C 模組都必須把訊號線上拉到 3.3 V,絕不能是 5 V。
- 絕對不要接 GPIO 5 或 46(無線電的前端),也不要接 GPIO 34 或 38–42(開發板的 GPS 接頭)。
- 完成發射功率檢查之前不要開始遊戲,這是啟用清單中的一項:韌體依據一個還沒實測過的放大器增益,把無線電維持在法定限制內。
- 用塑膠盒,絕不用金屬盒(無線電訊號要出得去),要防水,顏色鮮豔,貼上「GAME PROP」標籤,而且不能有任何看起來像爆裂物的東西。
- BB 彈和漆彈會打到它。電芯和開發板要遠離外殼壁、避開射擊線,手機螢幕要放在透明聚碳酸酯板後面(絕不能用玻璃),除非它本身就是標靶,否則絕不要把盒子放在玩家必須朝它射擊的位置。
Field Box
主要的道具,有隊伍按鈕、按鍵、彩色螢幕、LED 燈環、NFC 讀卡機和喇叭。它的組裝手冊(英文)包含零件、接線圖、電源與電池安全、第一次燒錄和故障排除;下面的指南凡是共通的步驟都參照它。
第一個工作台組裝
Field Box 現在不只存在於紙上,但目前只是工作台上的組裝:第一塊能玩完整場遊戲的開發板,螢幕、按鈕和按鍵都用散線連接,還沒有外殼。它不是成品,也不是照指南組裝出來的盒子。
腳位
韌體的預設值。不在這張表中的開發板腳位一律不接。
| 用途 | GPIO |
|---|---|
| 隊伍按鈕 1(遊戲的第一隊) | 4 |
| 隊伍按鈕 2(第二隊) | 48 |
| 隊伍按鈕 3,選用(開發板的 UART0 接收線) | 44 |
| 隊伍按鈕 4(在按鍵擴充晶片上) | PCF8574 P7 |
| 按鍵,經由 PCF8574 擴充晶片(位址 0x20) | PCF8574 P0–P6 |
| LED 燈環資料線,經過 74AHCT125 電位轉換器 | 35 |
| 螢幕 MOSI(SPI) | 33 |
| 螢幕時脈(SCK) | 47 |
| 螢幕晶片選擇(CS;開發板的電池電壓腳位,當作輸出使用) | 1 |
| 螢幕資料/指令(DC) | 3 |
| 螢幕 RESET 和背光:兩者都接 3V3 腳位,不用 GPIO | 3V3 |
| I2C SDA,給按鍵擴充晶片、NFC 讀卡機和電量計用(開發板自己的匯流排) | 17 |
| I2C SCL | 18 |
| 擴大器 BCLK(選用) | 6 |
| 擴大器 LRC | 15 |
| 擴大器 DIN | 16 |
GPIO 1、35 和 44 是 Field Box 刻意共用的開發板腳位,各自只用於這一個用途:1 是開發板的電池電壓輸入(電量計改由 I2C 讀取電池),35 是它的白色 LED(會隨燈環微微閃爍),44 是 UART0 的接收線(USB 主控台不受影響)。
接線圖
兩張圖,由程式庫中的 WireViz 檔案產生:一張是訊號和 3.3 V 邏輯電源,一張是電池、開關和 5 V 電源線。開發板的腳位只用 GPIO 編號稱呼:請依接頭旁印的編號找到每一支腳位。標示(腳位、電線、零件名稱)在所有語言中都維持英文,和程式庫一致;如果文字和圖不一致,以圖為準。
這張圖很寬:點一下就能以完整尺寸開啟,可以縮放和平移。深色主題下也放在白色底板上,讓電線顏色保持真實。
衛星盒
用在次要據點或信標的小盒子:Field Box 的開發板加上兩個大的隊伍按鈕(可以再加第三個)、一個顯示佔領隊伍的 LED 燈環、開發板自己的小螢幕,以及一顆 18650 電芯。零件約 30–40 歐元(設計時的估計)。它執行的是 Field Box 自己的韌體,只是裝的零件比較少:韌體在開機時會把每個缺少的零件回報一次,然後繼續運作。
沒有按鍵,它沒辦法自己選遊戲:它玩的是場地控制器邀請它加入的遊戲,當作主站與衛星的衛星或主站,或當作任何只需要隊伍按鈕的模式(佔點、全佔點、最後一人)的據點。它透過 USB 線或小螢幕上的配對代碼加入場地(它沒有可以讀場地卡的 NFC 讀卡機)。
零件
- Heltec WiFi LoRa 32 V4 開發板,V4.2 或 V4.3 版,863–928 MHz,不含外殼。
- 一根 2 dBi 以下的 868 MHz 天線(開發板套件附的那根),以及一根 2.4 GHz 天線,這是必要的:第一次設定、下載模式和韌體更新都要用 Wi-Fi。
- 兩個(或三個)附 5 V LED 的 60 mm 大型街機按鈕。
- 一個 WS2812B LED 燈環(預設 24 顆 LED;改一個韌體設定就能用 12 或 16 顆),搭配 74AHCT125 電位轉換器、一顆 330 Ω 電阻和一顆 1000 µF 電容,焊在一小塊洞洞板上。
- 建議加一顆 MAX17048 電量計:沒有它,盒子永遠不知道自己的電量。
- 一顆裝在電池座裡、有保護板的 18650 電芯(或一組附保護板的 1S 電池組)、一個 5 A 保險絲、一顆蕭特基二極體、一個有護蓋的主開關、一個給燈環用的 5 V 升壓模組,以及快速接線端子:也就是只用一顆電芯的 Field Box 電源線路。
- 聲音是選用的:Field Box 的 MAX98357A 擴大器和一個小喇叭。
- 一個顏色鮮豔的 IP65 塑膠盒,有透氣孔和電纜固定頭,貼上「GAME PROP」標籤。
腳位
韌體的預設值。不在這張表中的開發板腳位一律不接。
| 用途 | GPIO |
|---|---|
| 隊伍按鈕 1(遊戲的第一隊) | 4 |
| 隊伍按鈕 2(第二隊) | 48 |
| 隊伍按鈕 3,選用(開發板的 UART0 接收線) | 44 |
| LED 燈環資料線,經過 74AHCT125 電位轉換器 | 35 |
| I2C SDA,給電量計用(開發板自己的匯流排) | 17 |
| I2C SCL | 18 |
| 擴大器 BCLK(選用) | 6 |
| 擴大器 LRC | 15 |
| 擴大器 DIN | 16 |
韌體仍然會驅動 Field Box 的螢幕腳位(GPIO 1、3、33 和 47):這些腳位不要接。
它的接線是 Field Box 的子集:照著 Field Box 的接線圖接,省略這個版本沒有的零件(彩色螢幕、按鍵和 NFC 讀卡機)。它自己的接線圖還沒有畫。
步驟
- 看開發板 LoRa 天線接頭旁邊的晶片:KCT8103L 是 V4.3(韌體的預設值),GC1109 是 V4.2。在開發板第一次通電之前,就把兩根天線裝好並貼上標籤。
- 先在紙上規劃盒子,在放進任何電子零件之前把所有孔都鑽好:按鈕和燈環在蓋子上,開關要內嵌或加蓋,透氣孔開在下方。
- 先在不接開發板的情況下做好電源線路:電芯、保險絲、二極體、開關、接線端子;在接上任何東西之前,先單獨把升壓模組調到 5.0–5.2 V。
- 做那塊小小的轉接板:3V3、GND 和 5V 電源軌(以及給電量計用的 SDA 和 SCL)和電位轉換器,照 Field Box 手冊的做法。
- 依照上面的腳位,接好按鈕(按下時接 GND)、經電位轉換器的燈環、電量計,以及選用的擴大器。
- 拔掉電芯,用電錶檢查:電源軌之間沒有短路,每個按鈕只在按下時導通,以及開發板電池線的極性。
- 依照 Field Box 手冊的說明建置並燒錄 Field Box 韌體,設定成你的開發板版本和燈環的 LED 數量。
- 執行適用於衛星盒的啟用步驟:開機、按鈕、LED、電池,以及在任何遊戲之前檢查無線電和它的發射功率。
- 用手機在它的 Wi-Fi 設定頁面設定名稱、地區和管理 PIN 碼,透過 USB 線或配對代碼把它綁定到你的場地,再從 GM 控制台邀請它加入遊戲。
尚未決定
- 原始設計中的壓電蜂鳴器:韌體只透過擴大器發出聲音,所以蜂鳴器需要修改韌體。
- 外殼:還沒選定盒子。
- 一顆電芯的續航時間:還沒量測。
- 專屬的接線圖:目前 Field Box 的接線圖已經涵蓋衛星盒的每一條線。
完整指南:衛星盒組裝指南(英文)。
I/O 模組
這個盒子把手機缺少的東西借給 Android 道具:大的隊伍按鈕、按鍵、LED 燈環、聲音、NFC 讀卡機、一個偵測盒子被打開的開關,以及 LoRa 無線電。手機執行遊戲模式;I/O 模組透過 USB 線或藍牙,當它的手和它的無線電。它就是沒有彩色螢幕的 Field Box 硬體,執行 I/O 模組韌體,這個韌體已在電腦上測試過,但還沒在開發板上跑過。零件約 35 歐元(設計時的估計)。
除了開發板以外,每個零件都是選用的:I/O 模組會告訴手機自己有什麼,手機就只用那些。和 Field Box 一樣,按鈕 1 是遊戲的第一隊。外殼被打開時,GM 控制台會收到防拆警報。
零件
- Field Box 的零件,少了螢幕:開發板、按鈕(最多四個)、按鍵和它的 PCF8574 擴充晶片、附電位轉換器的 LED 燈環、PN532 NFC 讀卡機、擴大器和喇叭、電量計,以及同樣只用一顆電芯的電源線路。
- 兩根天線:LoRa,以及給藍牙用的 2.4 GHz。
- 一個由蓋子蓋上時壓住的微動開關:也就是外殼開關。
- 一個面板式 USB-C 插座,要有資料線(不能只能充電),接手機的線用;以及一條給手機用的 USB-C OTG 線。
- 只在工作台上用:一個 3.3 V USB 轉序列埠轉接器,用來讀 I/O 模組的紀錄。
腳位
韌體的預設值。不在這張表中的開發板腳位一律不接。
| 用途 | GPIO |
|---|---|
| 隊伍按鈕 1(遊戲的第一隊) | 4 |
| 隊伍按鈕 2(第二隊) | 48 |
| 隊伍按鈕 3,選用(開發板的 UART0 接收線) | 44 |
| 隊伍按鈕 4(在按鍵擴充晶片上) | PCF8574 P7 |
| LED 燈環資料線,經過 74AHCT125 電位轉換器 | 35 |
| I2C SDA,給按鍵擴充晶片、NFC 讀卡機和電量計用(開發板自己的匯流排) | 17 |
| I2C SCL | 18 |
| 擴大器 BCLK(選用) | 6 |
| 擴大器 LRC | 15 |
| 擴大器 DIN | 16 |
| 外殼開關,接 GND | 47 |
| 紀錄輸出(UART0 TX):只接 3.3 V USB 轉序列埠轉接器的 RX,限工作台上使用 | 43 |
I/O 模組不使用 Field Box 其他的螢幕腳位(GPIO 1、3 和 33):這些腳位不要接。
I/O 模組的接線就是沒有螢幕的 Field Box:照著 Field Box 的接線圖接,省略螢幕和它的線。它自己的接線圖還沒有畫。
步驟
- 把它當成沒有螢幕的 Field Box 來組裝:開發板版本、天線、外殼、電源線路、轉接板,再加上你要裝的按鍵、燈環、NFC 讀卡機、按鈕和擴大器,每一項都照手冊做檢查。
- 把微動開關裝在蓋子蓋上時會壓到的位置,從 GPIO 47 接到 GND。I/O 模組要先讀到一次「關閉」之後才會開始監看它,所以沒裝開關的 I/O 模組永遠不會發出警報。
- 建置 I/O 模組韌體(
python tools/docker_fw.py pod),並從build-pod資料夾燒錄,做法和 Field Box 一樣。 - 用 USB 轉序列埠轉接器從 GPIO 43 讀它的紀錄:USB-C 埠負責 I/O 模組和手機之間的連線,不輸出紀錄。
- 在 App 中先用 USB-C OTG 線連結它,再用藍牙連結(Android 會要求配對一次)。
- 執行 I/O 模組的啟用檢查,包括在任何遊戲之前檢查無線電的發射功率。
尚未決定
- 獨立的警報器或閃光燈:I/O 模組的聲音來自它的擴大器;開關其他負載不在它的韌體功能中。
- 由手機供電:接上線時,手機會供電給 I/O 模組,也可能替它的電芯充電。是否應該這樣、手機能提供多少電,要在第一次組裝時確認。
- 外殼,以及手機和 I/O 模組要怎麼一起攜帶。
- 從手機調整設定:按鈕顏色、LED 數量和其他設定,目前都在建置韌體時設定。
完整指南:I/O 模組組裝指南(英文),以及啟用清單中搭配手機的 I/O 模組檢查。
無線電數據機
場地控制器的無線電:第二塊 Heltec WiFi LoRa 32 V4,燒錄數據機映像檔後插在場地控制器的 USB 埠。沒有它,控制器仍會運作、控制台也打得開,但訊息到不了盒子,也聽不到盒子的訊息。它沒有 Wi-Fi,所以只需要 LoRa 天線。
照這樣燒錄的數據機,已在工作台上和控制器及真實盒子一起運作過(一台電腦,控制器跑在 Docker 裡)。尚未在 Raspberry Pi 上跑過,也沒在 macOS 上試過,更沒在場地上用過。
步驟
- 在板子通電之前先裝好 LoRa 天線,燒錄時也一樣,並使用 USB-C 資料線。先決定無線電區域:數據機和盒子必須相同。
- 從發佈頁面下載
atalaia-modem-<版本>-usb.zip和SHA256SUMS(V4.3、EU868),或自行編譯:python tools/docker_fw.py modem(V4.2、台灣、其他天線)。 - 用 esptool 4.8.1 清除新板子,再寫入
flash_args列出的檔案:esptool --chip esp32s3 -p PORT write_flash "@flash_args",Windows 的埠是COM5,Linux 是/dev/ttyACM0,macOS 是/dev/cu.usbmodem…。在 Linux 上要先加入dialout群組。 - 板子的螢幕會顯示塔和 MODEM MODE,接著是
LINK waiting(等待)。這表示數據機正常,只是還沒有控制器。RADIO FAULT 表示無線電晶片沒有啟動。 - 把它插到控制器,找出它的埠(
ls /dev/ttyACM*),填入/etc/atalaia/controller.toml的[modem] port,然後重新啟動服務(sudo systemctl restart atalaia-controller)。 - 螢幕顯示 LINK OK(正常),控制台標頭顯示「無線電: 正常」,控制器的記錄裡有
modem link up。 - 打開一個已綁定的盒子,建立遊戲並邀請該盒子:狀態會依序是傳送中、已邀請、已加入,數據機的螢幕會累計封包數。
每個系統的完整指令、如何找到埠,以及故障排除表(只能充電的線、埠錯誤、埠被其他程式佔用、dialout、區域不符、LINK waiting 或 DOWN、RADIO FAULT、分割表錯誤):Set up the radio modem(英文)。
標靶擴充模組
還不能組裝:盒子這一端的接頭已經決定,擴充模組本身還沒有。不要照這一頁把靶板接到盒子上。
一塊讓玩家射擊的靶板,有一個感應每次命中的感測器。它插到盒子上,就能把盒子變成標靶時窗的計分標靶;標靶時窗的規則已完成並在模擬器中測試過。時窗由盒子自己的燈環顯示。
已經決定的
- 一塊鋼板或聚碳酸酯板、一個壓電感測器,以及一顆自己的小處理器(RP2040 或 ATtiny 等級)用來偵測命中。零件約 20–30 歐元(設計時的估計)。
- 它插在盒子上一個防水的 5 針 M12 接頭,這個接頭只帶 3.3 V:開發板的 3.3 V、接地和兩條 I2C 線;沒有 5 V,第五針不接。線長最多 2 m。它的處理器會告訴盒子自己是什麼,所以盒子不需要為每種擴充模組加新的驅動程式。
- 它最多只能從盒子取用 25 mA,中間經過一個可自恢復保險絲:夠處理器和感測器用,但不夠點燈。標靶時窗點亮的是盒子自己的 LED 燈環;擴充模組如果要有自己的燈,就需要自己的電池。
- 沒有中斷線:盒子每 20 ms 透過 I2C 讀取一次擴充模組,大約占匯流排的 3%,所以命中最多約 21 ms 就會傳到遊戲。盒子的腳位都不用改。盒子的韌體已經有這個讀取功能,也測試過,正等著擴充模組。
- 遊戲腳本會看到每次命中和它的力道(0 到 255),也可以啟動和解除標靶。手機的 I/O 模組也定義了同樣的功能。
- 標靶時窗會讓標靶亮起隨機一隊的顏色幾秒鐘;在這段時間內力道夠強的命中,就替那一隊得分。
- 接下來是擴充模組自己的韌體、讓盒子實際讀取這個接頭,以及在真正的鋼板和聚碳酸酯板上調校感測器;之後標靶時窗就會成為盒子提供的模式。
尚未決定
- 處理器(RP2040 或 ATtiny,耗電在 25 mA 以內)和它的韌體。
- 擴充模組的 I2C 位址,以及它如何說明自己是什麼;回報命中的方式已有草案,會在第一個擴充模組完成時定案。
- 第一次組裝時要檢查的事:接上 2 m 線材後匯流排的上拉電阻、保險絲,以及接頭防靜電和防水的保護。
- 感測器電路和它的安裝方式,以及靶板、靶架和角度。
等到真的有東西可以做的時候,安全事項
- 護目鏡和面罩:有人朝它射擊時,射程內的每個人都要戴,在工作台上也一樣。
- BB 彈打到硬靶板會反彈,有些會彈回來:鋼板要斜放,讓 BB 彈往地面彈,絕不能正面對著射手。
- 只有靶板是標靶:絕不要射盒子、線材或接頭,電子零件要放在靶板後面或它們自己的外殼裡。
- 射擊標靶和射擊玩家一樣,都要遵守場地的能量限制。
已經決定的事項,以及每個決定背後的文件:標靶擴充模組指南(英文)。