前言

什麼是 Meshtastic

Meshtastic 是一個由社群驅動的開源專案,目的是利用 LoRa(長距離、低功耗)無線電模組,在沒有行動網路或 Wi-Fi 的情況下,讓不同節點互相傳送文字與位置等資訊。我會注意到它,就是因為很好奇:如果把兩個節點分別帶到不同地方,只靠無線電,到底還能不能找到彼此?

Meshtastic 也有 Android 和 iOS App,手機透過藍牙連上節點後,就可以傳送與接收訊息,不需要一直對著開發板上的小螢幕操作。

詳細內容可以參考 Meshtastic 官網

開箱照片

這次使用的是 Heltec WiFi LoRa 32 開發板。它以 ESP32 為核心,整合了 LoRa 與小螢幕,拿來做 Meshtastic 節點很方便。我購入時單片大約 700 元左右,不過價格會隨通路和時間變動。

挑選版本時要特別留意無線電頻段。台灣低功率射頻器材的規範中,920 MHz~925 MHz 有開放給特定物聯網用途使用;實際設定仍要以當下法規、器材認證及發射功率限制為準。購買前最好先確認板子支援的頻段,不要只看外型就下單。相關規定可查閱國家通訊傳播委員會的低功率射頻器材技術規範

為了實際測試訊號範圍,我一次買了兩塊開發板。這樣不必等別人也有設備,我一個人就可以帶著兩個節點,到不同位置測試能不能互相收到訊息。

話不多說,直接開箱~

本體的樣子很像我以前買過的 TTGO 開發板。另外要注意小螢幕很脆弱,安裝外殼時不要直接壓到面板;我其中一台就是裝殼時不小心把螢幕弄壞了。

第一次設定

基本流程是先依照官方安裝說明將 Meshtastic 韌體寫入兩塊開發板,再用手機 App 透過藍牙配對。接著設定所在地區與無線電參數,最後讓兩台裝置使用相同的頻道設定,便可以互相傳送訊息。

介面和選項會隨韌體版本改變,所以這裡不把每一個按鈕固定寫死。真正重要的是:兩端的頻道資料要一致,地區與頻率設定也必須符合實際使用地的規範。

3D列印外殼

另外,我也替戶外攜帶和固定放置的裝置列印了不同外殼。以下是我實際裝過、覺得可以參考的設計。

隨身攜帶的裝置

  • 隨身攜帶的可以下載這個由 TonyG 設計的外殼
  • 不過要另外購買四個螺絲與螺帽。(我在家裡只有找的兩個適合的螺絲,所以就將就著用了)
  • 這個外殼有許多不同的造型可以選擇,我選擇的是六角形的造型。
  • 他還有很多細項可以選擇
    • 有沒有 GPS
    • 有沒有開關
    • 天線外置或內置
    • 有沒有按鈕
    • 不同大小的按鈕
    • 不同的厚度(2000mAh 的電池我選擇背板是 11 mm的版本)
  • 不過我組裝時遇到一個問題:外殼鎖緊後會誤觸按鈕,後來手動把按鈕柱削薄一點才解決。
正面 背面

家裡用的裝置

因為我有一台會放在家裡,相關設計圖可以參考這個由 Tai Robotik 設計的外殼。這個設計很緊湊,基本上沒辦法再放入其他模組(我後來放了氣壓計模組是直接貼在外面)。

這個外殼,如果沒有螺絲固定也可以很堅固。

因為會放在窗台邊,所以會比較容易接觸水氣的位置,所以我把裝置和 18650 電池盒一起放進大創買的收納盒。做一個簡單防潑水的防水殼的效果(更新:目前放了一年還是頭好壯壯)。

感測器模組

Meshtastic 節點還可以外接不同感測器。我買了一個 GPS 模組和一個氣壓計模組來裝在居家節點上。

GPS 模組

另外,我在戶外的裝置上裝了 GPS 模組 ATGM336h ,因為想說如果在外面遇到迷路,至少可以知道自己的位置。

安裝方式

這個模組從淘寶買的時候,大約 200 元左右。
不過我遇到一個奇怪的狀況:這顆 GPS 似乎只有開發板接上外部電源時才能正常工作,改用電池後就會斷線。可能和供電或板子的設定有關,但我還沒有確認原因,之後查到再更新。

氣壓計模組

居家節點則裝上 BMP280 氣壓計模組,讓它順便記錄氣壓與溫度。因為感測器離開發板很近,溫度可能會受到板子發熱影響,所以我會把它當成觀察趨勢的數值,而不是精密氣象資料。

安裝方式

BMP280 對應 heltec v3 的接線方式如下:

  • 模組上的 VCC 接開發板的 5V(或 3.3 V ,依照模組而定)
  • 模組上的 GND 接開發板的 GND
  • 模組上的 SCL 接開發板的 42
  • 模組上的 SDA 接開發板的 41
  • 模組上的 CSB 不用接
  • 模組上的 SDO 不用接

詳細接法可以參考這篇文章

換天線

後來換了一根天線試試看,訊號涵蓋範圍有比較廣一點,可以接收到比較遠的訊號。

成品展示

實際使用

目前測到的結果如下:

  1. 兩個節點直接通訊、不經過其他節點轉送時,大約 200 公尺還可以收到訊息,再遠就開始收不到。測試地點附近有不少大樓,遮蔽應該是重要因素之一。
  2. 訊息經過其他節點 hop 轉送時,我曾經從大都會公園傳到台北橋。這不是單一節點的直線距離,但可以看到網狀節點確實擴大了訊息能走到的範圍。
  3. 實際表現很吃視線範圍。建築、地形、天線位置和節點高度都會改變結果,因此這些數字只能代表我當時的測試環境。

心得

一開始只是想知道兩塊便宜的開發板究竟能傳多遠,真的做完後才發現,Meshtastic 好玩的地方不只距離。從頻率、天線、供電、GPS、外殼到節點擺放,每一項都會影響最後的結果。

它不像手機那樣打開就一定能傳到對方,卻也正因如此,每次成功收到遠方節點的訊息都很有成就感。之後如果能找到更高、遮蔽物更少的位置,我還想再做一次條件比較一致的距離測試。