開発環境のセットアップ (M5Stamp PICO + Cat-M Module)

目次


前提

M5Stamp PICOの開発手法

M5Stamp PICO の開発手法はいくつか選択可能ですが、ここでは Arduino IDE を使用した開発の手順について記載いたします。他の開発手法(UIFlow, MicroPython 等)を利用したい場合は、M5Stack公式サイトのドキュメントをご参照ください※1

ドキュメントについて

M5Stack公式サイトに Arduino IDE を使用した開発方法のドキュメントが公開されております。必要に応じてご参照ください。
https://docs.m5stack.com/en/quick_start/stamp_pico/arduino

使用機材について

M5Stamp PICO DIY Kit ( M5Stamp PICO本体と ダウンローダー(USBシリアルボード) のセット)

M5Stamp CAT-M Module


開発環境のセットアップ手順

USBドライバーのインストール
  1. M5Stamp PICO DIY Kit 付属のダウンローダー(USBシリアルボード)とPCをUSBケーブルで接続します。
  2. PC側でダウンローダーが認識された場合は、すでにドライバーがセットアップ済みですので、そのままご利用ください。
    PC側でダウンローダーが認識されなかった場合は、以下の手順に進んでください。
  3. https://docs.m5stack.com/en/quick_start/stamp_pico/arduino よりドライバーをダウンロードしてインストールしてください。この際、使用するダウンローダーの機種により使用するドライバーが異なりますのでご注意ください。
  4. ドライバーをインストール後、改めてダウンローダーをPCに接続し、PC側で認識されることを確認します。


Arduino IDE のインストールと初期設定
  1. https://www.arduino.cc/en/software より、Arduino IDEをダウンロードし、インストールします。
  2. Arduino IDE を起動します。
  3. メニューより ファイル→環境設定 を選択します。表示されたダイアログの「追加のボードマネージャのURL」の欄に、以下のURLを入力し、画面上の「OK」ボタンを押します。

    https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json

  4. メニューより ツール→ボード→ボードマネージャ を選択します。

  5. 「ボードマネージャ」のダイアログが表示されますので、検索ボックスに「 m5stack 」と入力します。1件ヒットする「M5Stack」を選択し画面上の「インストール」ボタンを押します。

    インストールが完了したら「閉じる」を押します。
  6. メニューより ツール→ライブラリを管理 を選択します。
  7. 「ライブラリマネージャ」のダイアログが表示されますので、検索ボックスに「 stamp-pico 」と入力します。
    ヒットした「STAMP-PICO」を選択し、画面上の「インストール」ボタンを押します。


  8. これでM5Stamp PICO 開発用の Arduino IDE のセットアップは完了です。

サンプルプログラムをビルドしてみる
  1. M5Stamp PICO本体とダウンローダーを、写真のように接続します(差し込みます)。

    接続の方向にご注意ください。間違った方向に接続すると機器が壊れます。

    M5Stamp PICO と ダウンローダーのそれぞれの基板にプリントされているピン配置の表示が一致していることを確認してください。

  2. ダウンローダーとPCをUSBケーブルで接続します。

  3. メニューの ツール→ボード を選択し、M5Stack Arduino の中から STAMP-PICO を選択します。
  4. メニューの ツール→シリアルポート を選択し、ダウンローダーが接続されているシリアルポートを選択します。
  5. メニューの ファイル→スケッチ例 を選択し、さらに STAMP-PICO → Basic → LED を選択します。
    すると、サンプルのソースコードが表示されます。
  6. メニューの スケッチ→マイコンボードに書き込む を選択するか、ツールバーの左から2番目の「➡」のアイコンをクリックします。
  7. ソースコードのコンパイルの後、M5Stamp PICO に書き込みが始まります。

    M5Stamp PICO本体とダウンローダーの接触が悪いと書き込みエラーになる場合があります。その場合は端子を正しく接触させてみたり、シリアルの通信速度の設定を下げてみるなどの対処をしてみてください。
    もしくは、M5Stamp PICOにピンヘッダやピンソケットをハンダ付けした上でダウンローダーと接続するような方法をご検討ください。

  8. 正常に書き込みが完了すると、M5Stamp PICO のLEDが点滅します。


ライブラリの追加

ライブラリの追加

CAT-M Module やその他サンプルプログラムを動作させるためには、各種ライブラリを追加でインストールする必要があります。
以下の手順でArduino IDEにライブラリを追加インストールしてください。

TinyGSM
  1. メニューより ツール→ライブラリを管理 を選択します。
  2. 「ライブラリマネージャ」のダイアログが表示されますので、検索ボックスに「 TinyGSM」と入力します。
    何件かヒットする中から「TinyGSM」を選択し、画面上の「インストール」ボタンを押します。
ArduinoJson
  1. 同様に、「ライブラリマネージャ」のダイアログより、「 arduinojson 」で検索します。
    ヒットした中から「ArduinoJson」を選択し、画面上の「インストール」ボタンを押します。

    今回使用するライブラリは「 ArduinoJson 」です。似たような名称のライブラリ「 Arduino_JSON 」が存在しますが、別物ですのでご注意ください。

ArduinoHttpClient
  1. 同様に、「ライブラリマネージャ」のダイアログより、「ArduinoHttpClient」で検索します。
    ヒットした中から「ArduinoHttpClient」を選択し、画面上の「インストール」ボタンを押します。
TinyGSMの修正

上記でインストールした TinyGSM にはいくつか問題があり、そのままでは CAT-M Module (SIM7080G) が正常動作しません。
そのため、以下の部分について修正を行います。

今回は TinyGSM v0.11.5 に対して修正をしております。将来のバージョンで該当部分の問題が解決される可能性があります。

  1. テキストエディタで、修正対象のソース(以下)を開く
    • C:\Users\ログインユーザ\Documents\Arduino\libraries\TinyGSM\src\TinyGsmClientSIM7080.h (Windowsの場合)
    • ~/Documents/Arduino/libraries/TinyGSM/src/TinyGsmClientSIM7080.h (macOSの場合)
  2. 以下2箇所を修正して保存する(修正点はソース内のコメントを参照のこと)
    • TinyGsmClientSIM7080.h 216行目あたり

      bool gprsConnectImpl(const char* apn, const char* user = NULL,
                           const char* pwd = NULL) {
        gprsDisconnect();
       
        // Define the PDP context
        sendAT(GF("+CGDCONT=1,\"IP\",\""), apn, '"');
        waitResponse();
       
        // ↓↓↓ ここを追加 ↓↓↓
        if (pwd && strlen(pwd) > 0 && user && strlen(user) > 0) {
            sendAT(GF("+CGAUTH=1,3,\""), pwd, "\",\"", user , "\"");
            waitResponse();
        }
        // ↑↑↑ ここまで追加 ↑↑↑
    • TinyGsmClientSIM7080.h  243行目あたり

      // Bearer settings for applications based on IP
      // Set the user name and password
      // AT+CNCFG=<pdpidx>,<ip_type>,[<APN>,[<usename>,<password>,[<authentication>]]]
      // <pdpidx> PDP Context Identifier - for reasons not understood by me,
      //          use PDP context identifier of 0 for what we defined as 1 above
      // <ip_type> 0: Dual PDN Stack
      //           1: Internet Protocol Version 4
      //           2: Internet Protocol Version 6
      // <authentication> 0: NONE
      //                  1: PAP
      //                  2: CHAP
      //                  3: PAP or CHAP
      if (pwd && strlen(pwd) > 0 && user && strlen(user) > 0) {
        // ↓↓↓ ここを修正 ↓↓↓
        //sendAT(GF("+CNCFG=0,1,\""), apn, "\",\"", user, "\",\"", pwd, '"');     //修正前
        sendAT(GF("+CNCFG=0,1,\""), apn, "\",\"", user, "\",\"", pwd, "\",3");    //修正後
        // ↑↑↑ ここを修正 ↑↑↑
        waitResponse();
      } else if (user && strlen(user) > 0) {




脚注

※1 以下のページをご参照ください。