Arduino Nesso N1の使い方:基礎編

Arduino Nesso N1アイキャッチ

「M5Stack」と「Arduino」の共同開発で作られた、小型で高性能なIoTデバイス「Arduino Nesso N1」の初期設定から使い方まで、サンプルプログラムを使って詳しく紹介します。

「M5StickC Plus/Plus2」と寸法や端子配列に互換性があり、既存のHATユニット等をそのまま使用できて拡張性も高いです。
機能的には液晶画面がタッチパネルで、無線通信はWi-Fi、Bluetoothに加えてLoRa(850〜960MHz)、Thread/Zigbeeに対応しており、これらを利用した機器の製作や学習用途に最適です。
小型なパッケージに多くの機能を持たせたことで、限られたGPIOを有効に使用するために入出力端子を拡張する「I/Oエキスパンダー」が2つ使用されています。
提供されているボードマネージャやライブラリを使用すれば気にすることなく使ますが、このデバイスを使いこなすためにはどの端子が直接「GPIO」接続なのか「I/Oエキスパンダー」経由なのか知っておくべきと思いますので、端子配列についても詳しく一覧表でまとめています。
初心者の方向けではないと思うので、LチカやWi-Fi通信、液晶表示方法の確認や学習用途であれば「M5StickC Plus/Plus2」の使用をおすすめします。

「M5StickC Plus2」の使い方は以下のリンクで詳しく紹介しています。

M5StickC Plus2の使い方、初期設定、旧モデルとの違い等サンプルプログラムで詳しく紹介
M5StickCの最新版M5StickC Plus2について、旧モデルとの違いを確認しながら、初期設定や端子配列、機能、使い方をサンプルプログラムで詳しく紹介します。
スポンサーリンク

1.Arduino Nesso N1とは

「Arduino Nesso N1」は、「Arduino」と「M5Stack」が共同開発したオールインワンIoT開発ボードで、ESP32-C6を搭載し、Wi-Fi 6・Bluetooth 5.3・Thread/Zigbee・LoRaなど複数の通信規格に対応する次世代デバイスです。

1.14 インチの LCD タッチスクリーン、6軸 IMU センサー、2つのプログラマブルボタン、LED、ブザー、充電式バッテリーまで内蔵し、GroveコネクタとQwiicコネクタも搭載しています。
さらに、「M5StickC Plus/Plus2」と同一寸法、同一端子配列で、完全上位互換機としてHATユニット等を使用した高機能なIoTデバイスをこれ1つで実現することができます。

公式のデータシートへのリンクは以下になります。

https://docs.arduino.cc/resources/datasheets/TPX00227-datasheet.pdf

スポンサーリンク

2.外観

梱包状態から、本体の外観、デモ画面、M5StickC Plusとの外観比較について以下から詳しく紹介します。

・梱包状態

梱包状態は下画像のようになります。

Arduino Nesso N1外観 梱包状態

箱はしっかりした箱でビニールに包まれて高級感があります。

Arduino Nesso N1外観 梱包状態

箱の底には基本的な仕様が書かれています。

Arduino Nesso N1外観 梱包状態
Arduino Nesso N1外観 梱包状態
Arduino Nesso N1外観 梱包状態

箱を開けると上写真のようにArduino Nesso N1本体が収納されています。
本体画面に貼られているフィルムの気泡が気になりますね^^;

Arduino Nesso N1外観 梱包状態

本体を取り出すと六角レンチが付属しています。
これは背面のアンテナを収納しているケース部を取り外すためのものです。

内容物を全て取り出したものは下写真のようになります。

Arduino Nesso N1外観 梱包状態

・本体

本体の外観は外観は下画像のようになります。

Arduino Nesso N1本体外観

背面には取得している規格が書かれており、技適も取得済みのため安心して使用することができます。

Arduino Nesso N1本体外観

本体は厚さがありますが、付属のアンテナを収納しているケース部が大きいためです。

Arduino Nesso N1本体外観
Arduino Nesso N1本体外観
Arduino Nesso N1本体外観

左側面には「Qwiicコネクタ」の差し込み口があります。これは「I2C通信」デバイスの接続をメインに使用することになると思います。

Arduino Nesso N1本体外観

底部分には「USBーCコネクタ」と「Groveコネクタ」、背面のケースには付属のアンテナが収納されているのが見えます。

Arduino Nesso N1本体外観

付属のアンテナは上写真のように引っ張ると取り出すことができます。

Arduino Nesso N1本体外観

アンテナは取り出すと本体と同じぐらい長いです。

Arduino Nesso N1本体外観

アンテナはLoRa通信の850-960MHzに対応していることが記載されています・。

Arduino Nesso N1本体外観

取り出したアンテナは上写真のように側面に取り付けて使用します。

Arduino Nesso N1本体外観

アンテナは3方向の取り付けが可能で上写真のようにも取り付け可能です。

Arduino Nesso N1本体外観

上写真のようにも取り付け可能でコンパクトに使用できますが、この場合は側面のボタンを押すことができなくなります。

・デモ画面

USB-Cコネクタから電源を供給すると以下のようなデモ画面が表示されます

Arduino Nesso N1デモ画面

まずは「Arduino」のロゴが描かれて表示されます。

Arduino Nesso N1デモ画面

次に上写真のように「ARDUINO NESSO N1」のようにデバイス名が表示されます。

Arduino Nesso N1デモ画面

次に「drag to reveal」と表示されますが、これは「ドラッグして表示」という意味です。

Arduino Nesso N1デモ画面

本体画面を指でなぞると、なぞった部分に上写真のようにロゴが表示されていき、全体が表示されると次の画面に切り替わります。

最後の画面は下写真のようになり、使用されているコントローラ名「ESP32-C6」や使用されている周辺機器のIC名、液晶サイズ、「Nesso N1」のWebページのアドレスが表示されます。

Arduino Nesso N1デモ画面

さらに画面をタップすると、最初のロゴ画面に戻り、同じように繰り返し表示されます。

・M5StickC Plus2と比較(互換寸法)

無線通信用のアンテナが付属しており、本体ケース内に格納されているため大きく見えますが、アンテナが収納されているケースは下画像のように取り外すことができ、取り外すと「M5StickC Plus/Plus2」と同一寸法で、端子配列も同じです。

Arduino Nesso N1 とM5StickC Plusとの比較

付属の六角レンチを使用して背面のネジ2本を緩めることで、アンテナを収納しているケースを取り外すことができます。

Arduino Nesso N1 とM5StickC Plusとの比較

背面のケースを取り外すと上写真のようになり、端子配列等の情報が記載されているのが確認できます。

Arduino Nesso N1 とM5StickC Plusとの比較

背面のケースを外すと「M5StickC Plus/Plus2」と同一寸法になります。
正面にはそれぞれプログラムで使用できるボタンがあります。

Arduino Nesso N1 とM5StickC Plusとの比較

背面に記載されている端子配列を確認すると、「M5StickC Plus/Plus2」と同じ配列になっていることが確認できます。

Arduino Nesso N1 とM5StickC Plusとの比較

「USB-Cコネクタ」と「Groveコネクタ」の配置もほぼ同じです。

Arduino Nesso N1 とM5StickC Plusとの比較

上面の外部入出力端子の配置と、赤外線LED(IR)の配置もほぼ同じです。

Arduino Nesso N1 とM5StickC Plusとの比較

右側面にはそれぞれプログラムで使用できるボタンがあり、「Nesso N1」には上側にアンテナが取り付けられるようになっており、下側にはストラップを取り付けるホルダーがあります。

Arduino Nesso N1 とM5StickC Plusとの比較

左側面にはそれぞれ電源ボタンがあり、「Nesso N1」には「QWIICコネクタ」があります。

「NESSO N1」の電源ボタンは以下のような動作で「M5StickC」とは異なります。
 ・短押し:電源ON、リセット
 ・ダブルクリック:電源OFF
 ・長押し:プログラムダウンロードモード

「M5StickC」用のHATユニット使用可

下写真のように「M5StickC」用のHATユニットもピッタリサイズで取り付け可能です。

Arduino Nesso N1 とM5StickC Plusとの比較
Arduino Nesso N1 とM5StickC Plusとの比較
Arduino Nesso N1 とM5StickC Plusとの比較

上写真のようなユニットも問題なく使用できます。

Arduino Nesso N1 とM5StickC Plusとの比較

上写真のような腕時計として使用できる「Watch Accessories」も使用できます。

スポンサーリンク

3.仕様一覧表

基本的な仕様は以下表のようになります。

項目詳細
コントローラESP32-C6 RISC-V 32-bit single-core CPU 160 MHz
システムメモリFLASH:1536 kB
SRAM:512 kB 16 MB external Flash (GD25Q128/W25Q128)
無線通信2.4 GHz Wi-Fi® 6 (802.11ax)  Bluetooth® 5.3 LE  802.15.4
Thread/Zigbee®  FPC専用アンテナ
LoRa® 無線通信モジュールトランシーバ:SX1262(850-960 MHz) 
アンテナ:IPEX4(取り外し可能、本体に格納可)
受信用低ノイズアンプ:FM8625H
送信用低ノイズアンプ:SGM13005L4
USBコネクタUSB-C(USB 3.0)
LCD1.14″ IPS LCD ST7789P3 SPI通信
135 × 240 pixels – 262K colors (18-bit)
タッチパネルFT6336U(静電容量式)I²C通信
本体ボタン本体正面ボタン(KEY1) 本体右側面ボタン(KEY2)
本体左側面ボタン(電源ボタン)
・短押し:電源ON、リセット
・ダブルクリック:電源OFF
・長押し:プログラムダウンロードモード
内蔵LED ※電源ボタン部LED緑:プログラムで使用可能
LED青:電源/本体状態表示用
ブザーパッシブブザー(4kHz)プログラムで使用可能
赤外線LED送信用
IMU(慣性計測)センサーBMI270 6軸 IMU(3軸 加速度 + 3軸 ジャイロ)I²C通信
入出力コネクタ、端子Groveコネクタ:GPIO, 5V電源、I²C通信(HY2.0-4P)
Qwiicコネクタ:I²C通信 ※3.3V(PH1.0-4P)
外部入出力(8ピンHAT):M5StickC HAT互換 (GPIO/ADC/power/BAT)
バッテリー内蔵リチウムポリマーバッテリー 250 mAh(3.7 – 4.2 V)
バッテリー管理ICバッテリー充電管理IC:AW32001ECSR
バッテリー監視IC:BQ27220YZFR
電源制御ICDC-DCコンバータ:JW5712(システム用3.3V)
ブーストコンバータ:SGM6603(周辺機器用3.3V→5V 出力)
入力電圧USB-C:5V DC input バッテリー:3.7 V (3.7 – 4.2 V)

4.端子番号、機能一覧表

端子番号と各端子の機能について以下表のようにまとめました。

Arduino Nesso N1 端子配列
「Arduino」の「Arduino _Nesso_N1」ライブラリを使用することで、オレンジで塗りつぶされた箇所の「Pin Name」を指定して各機能の使用を指定することができます。
「M5Stack」の「M5Unified」ライブラリを使用する場合、「正面ボタン」は「KEY1」ではなく「BtnA」、「側面(右)ボタン」は「KEY2」ではなく「BtnB」として使用され、「I/Oエキスパンダー」経由の端子はライブラリで端子番号を指定して制御します。(「本体LED(緑)」なら「E1.P7」のtrue/falseを指定して使用)

ESP32-C6」の限られた端子で複数の機能を実装しているため、複数のICと通信で接続されており、直接外部入出力(GPIO)として使用できる端子は限られています

8x Header」の入出力端子(GPIO 2/6/7)と「GROVE」コネクタの信号端子(GPIO 4/5)は直接外部入出力端子として使用できます。(GPIO 7はアナログ入力不可

QWIIC」コネクタはI2C通信と共用の端子(GPIO8/10)で、6軸加速度センサ、バッテリー、タッチパネルを使用しなければ入出力としても使用できますが、ほとんどの場合はI2C通信専用として使用することになると思います。

赤外線LED」(GPIO 9)と「ブザー」(GPIO 11)は直接外部入出力端子として使用できるため扱いやすいですが、「本体LED(緑)」と「正面ボタン」、「側面右ボタン」は「I2C通信のI/Oエキスパンダー」経由で接続されているため注意が必要です。

I/Oエキスパンダー」とは数本の通信配線だけで、入出力端子数を増やすことができるICですが、これらの入力状態の確認や、端子への出力は通信で指定する必要があり、プログラムは少々複雑になります。
「NESSO N1」ではライブラリを使用することで簡単に使用できるようになってはいますが、どの端子が「I/Oエキスパンダー」経由か最後の方に紹介していますので確認しておきましょう。(こちら→「7.I/Oエキスパンダーについて」)

以下リンクから公式の端子配列のPDFがダウンロードできます。

TPX00227-full-pinout.pdf

上表は個人的にまとめた表になります。実際のご使用には公式の端子配列をご確認ください。

5.開発環境の準備

「NESSO N1」を使用するために必要な開発環境とライブラリ等のインストール、初期設定について詳しく紹介します。

・Arduino IDEのインストール

「Arduino IDE」のインストール方法は、以下のリンクで詳しく紹介しています。

Arduino IDE 2のインストール方法、初期設定、使い方
バージョンアップして使いやすくなったArduino IDE 2のインストールから使い方まで詳しく紹介、便利な機能やM5Stack、ラズパイPicoでの使用方法も紹介します。

・ボードマネージャ、ライブラリのインストールと初期設定

「Arduino IDE」のインストールが完了して起動したら、下画像のように左メニューアイコンから[ボードマネージャ]を選択し、検索窓に「ESP32」と入力すると「esp32 by Espressif」が表示されるため、これをインストールします。

Arduino Nesso N1開発環境の初期設定

次に以下表のライブラリをインストールします。

ライブラリ名用途バージョン検索名
M5GFX液晶画面制御用0.2.17M5G
M5UnifiedM5Stack共通ライブラリ0.2.11M5Unif
Arduino_Nesso_N1Arduino提供の専用ライブラリ1.0.0nesso
M5GFX」ライブラリは液晶画面を制御するためのライブラリです。
M5Unified」は「M5Stackシリーズ」の共通ライブラリで「NESSO N1」にも対応しており、他の「M5Stackシリーズ」と同じように使用できるようになります。
Arduino_Nesso_N1」はArduino提供の専用ライブラリで、ここで紹介するサンプルプログラムの動作には不要ですが「M5Unified」を使用しない場合はこちらを使用することになります。
まだ新しいデバイスのためライブラリの動作は不安定なところがありそうです。
今後修正されていくと思いますので気長に待ちましょう。
バージョンは基本的に最新のものをインストールしてください。
ここで紹介している「サンプルプログラム」が動作しない場合は上表のバージョンで動作確認してみてください。

下画像のように左メニューアイコンから[ライブラリマネージャ]を選択して検索窓に「M5GFX(M 5Gまででも良い)」と入力すると「M5GFX by M5Stack」が表示されるためこれをインストールします。

Arduino Nesso N1開発環境の初期設定

同様に「M5Unified」も検索してインストールしてください。
(ここで公開しているサンプルプログラムの動作確認には表ですが、必要に応じて「Arduino_Nesso_N1」も検索してインストールしてください。)


次に「NESSO N1」とパソコンをUSBケーブルでパソコンと接続します。

接続したら、下写真のようにメニューバーの[ツール]→[ボード:”ESP32 Familly Device”]→[esp32]→[Arduino Nesso N1(最下部)]をクリックしてください。

Arduino Nesso N1開発環境の初期設定

パソコン側で「NESSO N1」の接続が認識されれば、下画像のように画面上部に「Arduino Nesso N1」と表示されます。

Arduino Nesso N1開発環境の初期設定
接続が認識されない場合は本体左側面の電源ボタンを長押し(内部の小さい青色LEDが点滅するまで)してから再度試してみてください。
それでもうまくいかない場合は[ツール]→[ポート:”COM番号は環境によります”]の選択で他のポートを選択して試してみてください。

・シリアルモニタ出力設定

最後に初期設定として、「Arduino IDE」のシリアルモニタ機能で「NESSO N1」からのシリアル出力を表示するための設定を行います。

下画像のように[ツール]→[USB CDC On Boot:”Disabled”]→[Enabled]を選択します。

Arduino Nesso N1開発環境の初期設定
「NESSO N1」は他のArduinoシリーズとは異なり「USBーSerial」変換チップを搭載していません。このためマイコン自身がシリアル通信機器として振る舞う必要があります。
「USB CDC On Boot」が「Disabled」の場合は電源ON時にこの機能が無効になっているため「Enable」にしておかないとシリアル通信機器として認識されずシリアル出力を行なっても何も表示されません。

・公式チュートリアルの紹介

チュートリアルについては「M5Stack」と「Arduino」それぞれのサイトで公開されていますのでリンクを貼っておきます。

「M5Stack」の方が各動作ごとにページが分かれていてわかりやすいです。

M5Stack チュートリアル

「M5Stack」公式サイトのチュートリアルは以下リンク先になります。

m5-docs
The reference docs for M5Stack products. Quick start, get the detailed information or instructions such as IDE,UIFLOW,Arduino. The tutorials for M5Burner, Firmw...

「クイックスタート」で「Arduino IDE」のインストールから初期設定が紹介され、ボタンや液晶表示、IMUセンサ等の各動作ごとに「サンプルプログラム」が公開されています。

「M5Stack」のサンプルプログラムでは「M5Unified」ライブラリを使用して、よりシンプルに記述されています。
「M5Stackシリーズ」を使い慣れた方は、こちらがおすすめです。
公開されているサンプルプラグラムでは「Wire」ライブラリがインクルードされていません。それでも最初は書き込めたのですが、Wireのエラーが出るようになりました。
冒頭に「#include <Wire.h>」を書くとエラーは無くなったので、同様の症状の場合は試してみてください。

Arduino チュートリアル

「Arduino」公式サイトのチュートリアルは以下リンク先になります。

・初級:ユーザーズマニュアル(Arduino IDEの初期設定、サンプルプログラム)

https://docs.arduino.cc/tutorials/nesso-n1/user-manual/

・中級:加速度センサ(IMU)を使用したモーター異常検出(Edge Impulse使用)

https://docs.arduino.cc/tutorials/nesso-n1/anomaly-detection-application-note/
サイトは英文ですが、ブラウザの翻訳機能で日本語に翻訳して進めれば動作確認できると思います。
チュートリアルページのサンプルプログラムの動作確認をするときは「Arduino_Nesso_N1」ライブラリをインストールして、サンプルプログラムの冒頭に
#include <Arduino_Nesso_N1.h>」を追記してから動作確認してください。

6.動作確認

ここで公開している「サンプルプログラム」を実行した時の動作について紹介します。

サンプルプログラムでは基本的な「ボタン操作」と「LED点灯(Lチカ)」、「液晶表示」について確認することができます。

・動作紹介

電源を入れると下画像のように「Hello Nesso N1!」が液晶画面に表示されます。
画面右下には電源を入れた直後のバッテリー容量(%)が表示されます。

Arduino Nesso N1動作確認

正面と右側面のボタンを押すことでLEDの点灯/消灯(Lチカ)と、下画像のように液晶画面の表示が切り換わることが確認できます。

Arduino Nesso N1動作確認

「正面ボタン」を押すと液晶画面の背景色が「青色」になり「Button_A ON!」と表示されます。

Arduino Nesso N1動作確認

「右側面ボタン」を押すと液晶画面の背景色が「赤色」になり「Button_B ON!」と表示されます。

Arduino Nesso N1動作確認

「正面ボタン」を押した時には見えにくいですが、上写真のように、電源ボタン奥の「LED(緑)」が点灯します。

Arduino Nesso N1動作確認

「右側面ボタン」を押すと上写真のように、電源ボタン奥の「LED(緑)」が消灯します。

・サンプルプログラム(コピペ)

サンプルプログラムでは「M5Stack」の「M5Unified」ライブラリを使用して、他の「M5Stackシリーズ」と同じようにボタン操作や液晶表示を行っています。

「M5Stackシリーズ」のボタン操作や液晶表示については、以下のリンクで詳しく紹介しています。

M5Stack 本体ボタンの使い方、ボタン操作関数一覧(Arduinoプログラミング)
M5Stackシリーズの本体ボタンは Arduino のコマンドで簡単に制御できます。「Lチカ」のサンプルプログラムを使用して紹介しますので用途に応じて使い分けられるようになりましょう♪
M5Stack 液晶表示の使い方まとめ - 完全版 -(Arduinoコマンド)
M5Stackの液晶の使い方を初期設定から文字表示(print,draw関数)中央揃えや右揃え,フォント,線,図形,M5GFXのスプライト等わかりやすくまとめました。

サンプルプログラムは以下になります。
コピペで貼り付けて実行してください。コピーは下の黒塗り部右上のアイコンクリックでもできます。

#include <Wire.h> // I2C通信ライブラリ(エラーが出たためインクルード)
#include <M5Unified.h> // M5Stackシリーズ共通ライブラリ

// 初期設定 ***********************************
void setup() {
  auto cfg = M5.config();
  cfg.serial_baudrate = 115200; // シリアル出力初期化(ArduinoIDEでツール → USB CDC On Boot を「Enable」にしておく)
  M5.begin(cfg);

  delay(1000); // シリアル出力安定待ち
  Serial.println("Hello Nesso N1!");

  // バッテリー情報取得
  M5.Power.isCharging(); // バッテリー充電を有効に設定
  float voltage = M5.Power.getBatteryVoltage();      // バッテリー電圧を取得
  Serial.printf("Voltage: %.2fV\n", voltage);
  uint16_t chargeLevel = M5.Power.getBatteryLevel(); // バッテリーの推定充電レベルを%表示(数回充放電しないと精度が出ないクーロンカウント式)
  Serial.printf("Charge Level: %d%%\n", chargeLevel);

  // 液晶画面初期設定
  M5.Display.begin(); // M5.Display初期化
  M5.Display.setRotation(1);                     // 画面向き設定(USB位置基準 0:下/ 1:右/ 2:上/ 3:左)
  M5.Display.setTextDatum(MC_DATUM);             // テキストデータム設定(中央揃え)
  M5.Display.setTextColor(TFT_WHITE, TFT_BLACK); // 文字色と背景色指定
  M5.Display.setFont(&fonts::Font4);             // フォント指定
  M5.Display.setTextSize(1);                     // 文字サイズ(整数倍率)

  // 初期画面表示
  M5.Display.fillScreen(TFT_BLACK); // 画面クリア(黒塗り)
  M5.Display.drawString("Hello Nesso N1!", M5.Display.width() / 2, M5.Display.height() / 2); // 文字表示, 画面サイズを取得して中央に表示
  M5.Display.setCursor(190, 120);         // 表示座標設定(x, y)
  M5.Display.printf("%d%%", chargeLevel); // バッテリーレベル表示
}

// メインループ ********************************
void loop() {
  M5.update(); // ボタン状態更新
  auto& ioe = M5.getIOExpander(1); // I/OエキスパンダーE1のオブジェクトを取得

  if (M5.BtnA.wasPressed()) { // 本体正面ボタンAがONなら
    Serial.println("Button_A ON!");               // ボタンONシリアル出力
    M5.Display.fillScreen(TFT_BLUE);              // 画面青塗り
    M5.Display.setTextColor(TFT_WHITE, TFT_BLUE); // 文字色と背景色指定
    M5.Display.drawString("Button_A ON!", M5.Display.width() / 2, M5.Display.height() / 2); // 文字表示、画面サイズを取得して中央に表示
    ioe.digitalWrite(7, false); // 本体LED点灯(E1.P7)
  }
  if (M5.BtnA.wasReleased()) { // 本体正面ボタンAがOFFなら
    Serial.println("Button_A OFF!"); // ボタンOFFシリアル出力
  }

  if (M5.BtnB.wasPressed()) { // 本体正面ボタンBがONなら
    Serial.println("Button_B ON!");              // ボタンONシリアル出力
    M5.Display.fillScreen(TFT_RED);              // 画面赤塗り
    M5.Display.setTextColor(TFT_WHITE, TFT_RED); // 文字色と背景色指定
    M5.Display.drawString("Button_B ON!", M5.Display.width() / 2, M5.Display.height() / 2); // 文字表示、画面サイズを取得して中央に表示
    ioe.digitalWrite(7, true); // 本体LED消灯(E1.P7)
  }
  if (M5.BtnB.wasReleased()) { // 本体側面ボタンBがOFFなら
    Serial.println("Button_B OFF!"); // ボタンOFFシリアル出力
  }
  delay(100);
}

7.I/Oエキスパンダーについて

「NESSO N1」には限られた入出力端子を拡張するために「I/Oエキスパンダー」が2個使用されています。

これらの端子の入出力の指定は通常の「GPIO」のように直接指定するのではなくI2C通信で「I/Oエキスパンダー」経由で指定する必要があります。

「NESSO N1」で「I/Oエキスパンダー」経由で接続されている入出力端子については以下表のようになります。


・I/Oエキスパンダー E0

Arduino Nesso N1 I/OエキスパンダーE0詳細

・I/Oエキスパンダー E1

Arduino Nesso N1 I/OエキスパンダーE1詳細

上表のように使用頻度の高い操作ボタンやLEDも「I/Oエキスパンダー」経由になっています。
実際にI2C通信でこれらを使用するのは大変ですが「M5Unified」ライブラリを使用することで簡単に使用することができるため、以下サンプルプログラムで使用例を紹介しておきます。

サンプルプログラム(I/Oエキスパンダー)

「M5Unified」ライブラリを使用することで「I/Oエキスパンダー」経由のボタンとLEDを操作する「Lチカ」のサンプルプログラムを紹介します。

このプログラムでは液晶表示は使用しないため画面に変化はありません。
本体正面ボタンONでLED(緑)が点灯、右側面ボタンONで消灯します。
LED(緑)は電源ボタン奥にあり、見えにくいため覗き込みながら動作確認してみてください。

サンプルプログラムは以下になります。
コピペで貼り付けて実行してください。コピーは下の黒塗り部右上のアイコンクリックでもできます。

#include <Wire.h> // I2C通信ライブラリ(エラーが出たためインクルード)
#include <M5Unified.h> // M5Stackシリーズ共通ライブラリ

// 初期設定 ***********************************
void setup() {
  auto cfg = M5.config(); // 設定オブジェクトを取得
  M5.begin(cfg); // デバイス全体を初期化(LCD,I/Oエキスパンダー,ボタン,IMU等)
}

// メインループ ********************************
void loop() {
  // I/Oエキスパンダー更新
  auto& ioe0 = M5.getIOExpander(0); // E0のオブジェクトを取得
  auto& ioe1 = M5.getIOExpander(1); // E1のオブジェクトを取得

  // ボタン処理(Lチカ)
  if (ioe0.digitalRead(0) == false) { // 正面ボタン(E0.P0)がONなら
    ioe1.digitalWrite(7, false); // LED(E1.P7)点灯
  }
  if (ioe0.digitalRead(1) == false) { // 側面右ボタン(E0.P1)がONなら
    ioe1.digitalWrite(7, true);  // LED(E1.P7)消灯
  }
  delay(100); // 遅延時間
}

8.まとめ

「Arduino Nesso N1」の初期設定から使い方まで、サンプルプログラムを使って詳しく紹介しました。

「Arduino Nesso N1」は、「M5Stack」と「Arduino」それぞれの強みを活かした、非常に高機能で拡張性の高いIoT開発ボードです。

小型ながらタッチ液晶・各種センサー・複数の無線規格・バッテリーまで搭載し、さらに「M5StickC Plus/Plus2」との互換性によって既存のHATユニットも活用できます。

一方で、「ESP32-C6」の限られたGPIOを補うために「I/Oエキスパンダー」が多用されており、どの端子が直接GPIOで、どれがエキスパンダー経由なのかを理解しておくことが、Nesso N1を使いこなす上で重要なポイントになると思います。

記事内で紹介した端子一覧やライブラリの扱いを押さえておけば、複雑な構成でも迷わず開発を進められるはずです。

初心者向けというよりは、複数の通信規格を試したい方や、「M5StickCシリーズ」の互換性を活かしてより高度なIoTデバイスを作りたい方に最適なデバイスですね。

この記事が、「Nesso N1」の初期設定から実際のプログラミングまでの理解を深め、あなたのIoT開発の幅を広げるきっかけになれば嬉しいです^^

基本的な使い方がわかったところで、次は前から気になっていた無線通信Lo-Raを試して見ようと思ってますので、また動作確認の様子を紹介したいと思います。

コメント

タイトルとURLをコピーしました