0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M5Stack で Meshtastic 2025

Last updated at Posted at 2025-12-02

はじめに

M5Stack Advent Calendar 2025 の3日目

早いもので 昨年の Advent Calendar 2024 - M5StackでMeshtasticを試す では、Grove Wio-E5 を使ってMeshtasticを試してました。

最近は技適を取得したLoRaデバイスが増えてますので、今回は Wio-SX1262 for XIAO を使用してみました。

Meshtasticのファームウェア

Meshtasticを使うには、M5StackにMeshtasticのファームウェアを書き込む(アップロードする)必要があります。
GitHubから Meshtastic firmwareのソースコード をクローンして、PlatformIOでビルドします。
ビルド方法のドキュメントは こちら です。

前回は、シリアル接続の Grove Wio-E5 を無理やり使ったので、ソースコードに手を入れましたが、今回は素直に SPI 接続のデバイスを利用するので、修正は variant.h のみです。

firmware/variants/esp32/m5stack_core/variant.h
// #define BUTTON_NEED_PULLUP // if set we need to turn on the internal CPU pullup during sleep

#define I2C_SDA 21
#define I2C_SCL 22

// #define BUTTON_PIN 39 // 38, 37
// #define BUTTON_PIN 0
#define BUTTON_NEED_PULLUP
// #define EXT_NOTIFY_OUT 13 // Default pin to use for Ext Notify Plugin.

#define BUTTON_PIN 38

#define PIN_BUZZER 25

#undef LORA_SCK
#undef LORA_MISO
#undef LORA_MOSI
#undef LORA_CS

#define LORA_SCK 18
#define LORA_MISO 19
#define LORA_MOSI 23
#define LORA_CS 5

//#define USE_RF95
//#define LORA_DIO0 36 // a No connect on the SX1262 module
//#define LORA_RESET 26
//#define LORA_DIO1 RADIOLIB_NC // Not really used
//#define LORA_DIO2 RADIOLIB_NC // Not really used

#define USE_SX1262
#define LORA_RESET 26
#define LORA_DIO1 36
#define LORA_DIO2 35

#ifdef USE_SX1262
#define SX126X_CS LORA_CS
#define SX126X_DIO1 LORA_DIO1
#define SX126X_BUSY 2
#define SX126X_RESET LORA_RESET

//  DIO2 controlls an antenna switch and the TCXO voltage is controlled by DIO3
#define SX126X_DIO2_AS_RF_SWITCH
#define SX126X_RXEN 35
#define SX126X_TXEN RADIOLIB_NC
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
#endif

// This board has different GPS pins than all other boards
#undef GPS_RX_PIN
#undef GPS_TX_PIN
#define GPS_RX_PIN 16
#define GPS_TX_PIN 17

#define TFT_HEIGHT 240
#define TFT_WIDTH 320
#define TFT_OFFSET_X 0
#define TFT_OFFSET_Y 0
#define TFT_BUSY -1

// LCD screens are slow, so slowdown the wipe so it looks better
#define SCREEN_TRANSITION_FRAMERATE 1 // fps

#define ILI9341_SPI_HOST VSPI_HOST // VSPI_HOST or HSPI_HOST

ビルド方法

ソースコードをクローンします。

git clone https://github.com/meshtastic/meshtastic.git

リポジトリのサブモジュールを更新します。

cd firmware && git submodule update --init

PlatformIOでフォルダーを開きます。

Windowsの場合、Ctrl + Shift + P を押すと表示される PlatformIO: Pick Project Environmentenv:m5stack-core を選択します。この環境変数を選択することで、M5Stack-Core用のファームウェアをビルドします。

あとは通常のPlatformIO+M5Stack開発と同様に、ビルド(PlatformIO: Build)して、アップロード(PlatformIO: Upload)すればOKです。環境変数の選択、ビルド、アップロードはウインドウ下部のステータスバーのボタンを押しても大丈夫です。

CLIが好きな人はこちらになります。

pip install platformio

pio run -e m5stack-core

結線図

ファームウェアをアップロードしたら、M5StackとWio-SX1262を以下のとおり結線します。

M5Stack_Wio-SX1262.drawio (1).png

こんな感じにります。

image.png

さいごに

SX1262は多くのLoRa/Meshtasticデバイスで使われていて安定して使えます。

ここまで試してから、結線を2本減らせることに気づきましたのでメモ。
SX1262のDIO2にRF Switchの制御を行わせること、リセットは不要。

// #define BUTTON_NEED_PULLUP // if set we need to turn on the internal CPU pullup during sleep

#define I2C_SDA 21
#define I2C_SCL 22

// #define BUTTON_PIN 39 // 38, 37
// #define BUTTON_PIN 0
#define BUTTON_NEED_PULLUP
// #define EXT_NOTIFY_OUT 13 // Default pin to use for Ext Notify Plugin.

#define BUTTON_PIN 38

#define PIN_BUZZER 25

#undef LORA_SCK
#undef LORA_MISO
#undef LORA_MOSI
#undef LORA_CS

#define LORA_SCK 18
#define LORA_MISO 19
#define LORA_MOSI 23
#define LORA_CS 5

//#define USE_RF95
//#define LORA_DIO0 36 // a No connect on the SX1262 module
//#define LORA_RESET 26
//#define LORA_DIO1 RADIOLIB_NC // Not really used
//#define LORA_DIO2 RADIOLIB_NC // Not really used

#define USE_SX1262
#define LORA_RESET 26
#define LORA_DIO1 36
//#define LORA_DIO2 35

#ifdef USE_SX1262
#define SX126X_CS LORA_CS
#define SX126X_DIO1 LORA_DIO1
//#define SX126X_BUSY 2
#define SX126X_BUSY -1
#define SX126X_RESET LORA_RESET

//  DIO2 controlls an antenna switch and the TCXO voltage is controlled by DIO3
#define SX126X_DIO2_AS_RF_SWITCH
//#define SX126X_RXEN 35
//#define SX126X_TXEN RADIOLIB_NC
#define SX126X_DIO3_TCXO_VOLTAGE 1.8
#endif

// This board has different GPS pins than all other boards
#undef GPS_RX_PIN
#undef GPS_TX_PIN
#define GPS_RX_PIN 16
#define GPS_TX_PIN 17

#define TFT_HEIGHT 240
#define TFT_WIDTH 320
#define TFT_OFFSET_X 0
#define TFT_OFFSET_Y 0
#define TFT_BUSY -1

// LCD screens are slow, so slowdown the wipe so it looks better
#define SCREEN_TRANSITION_FRAMERATE 1 // fps

#define ILI9341_SPI_HOST VSPI_HOST // VSPI_HOST or HSPI_HOST

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?