Seeeduino Nanoを使用してみる

購入してから長らく使用していなかったSeeeduino Nanoをしようしてみました。購入は昨年の夏なのですが、それ以降全く死蔵していました。 個人的には基板サイズも小さいので割といいものだなとは思っていましたが、ブレッドボードに挿して回路作るのもだるいなと思ってしまい、なかなか使用までには手が出ませんでした。

最近、別の買い物をする際に、同時に購入したGrove Shield for Arduino Nanoを他の買い物と同時に購入したこともあり、触ってみることにしました。 シールド込のサイズでもArduinoサイズより小さいので非常にいいボードだと思います。

【参考】 www.seeedstudio.com

wiki.seeedstudio.com

外観

Seeeduino Nanoの外観は以下のような感じです。

f:id:ueponx:20200412224416j:plain

特徴としてはArduino Nanoとの完全互換で、書き込みと電源はUSB Type C経由、ボード上にI2CGroveコネクタがある点です。 そのままブレッドボードに挿して使用することもできますが、Groveのセンサーとの接続にはGrove Shield for Arduino Nanoというシールドがあるので こちらに乗せて使用すると便利です。

f:id:ueponx:20200412224434j:plain

Seeeduino NanoGrove Shield for Arduino Nanoに乗せると以下のような形状になります。シールドを使用してもかなり小さい(名刺サイズよりも小さい)ので持ち運びには便利です。

f:id:ueponx:20200412224440j:plain

購入は以下から行うこともできますが、スイッチサイエンスさんでの購入が在庫も豊富なので良いかなと思います。

www.switch-science.com

www.switch-science.com

Windows PCとの接続

では接続を行います。PCとの接続はUSB Type CタイプのUSBケーブルを使用します。USBケーブルでWindows10のPCと接続するとトーストが表示されて自動的にドライバーがインストールされます。特にドライバのインストールは必要ないようです。(Seeeduinoの使用していたからかも?)

f:id:ueponx:20200412230802p:plain

インストール後は、デフォルトで書き込まれていたプログラムが起動してボード上のLEDが点滅します。

f:id:ueponx:20200412231137j:plain

無事に動作認識ができました。続いてはArduino IDEを起動して、書き込みを行ってみます。

Arduino IDEの設定を行う

Arduino IDEを起動します。(今回使用したバージョンは1.8.12となります) 起動したらボードマネージャーを起動してパッケージをインストールします。メニューから【ツール】→【ボード:”〇〇”】→【ボードマネージャー】(○○の部分は最後に指定したものが入っていると思います)を選択してボードマネージャーを起動します。

f:id:ueponx:20200414125242p:plain

パッケージを未インストールの場合

ダイアログの中にある検索ボックスに

f:id:ueponx:20200414231002p:plain

Seeeduino AVRと入力して、絞り込みを行います。 すると、パッケージが一つに絞り込まれるので、【インストール】ボタンをクリックします。

f:id:ueponx:20200414231352p:plain

インストールが完了したら【閉じる】ボタンをクリックして、ボードマネージャーを終了させます。

f:id:ueponx:20200414231628p:plain

既にパッケージをインストール済みの場合

すでにインストールしている場合には以下の様な画面になります。その場合には【閉じる】ボタンをクリックして、ボードマネージャーを終了させます。

f:id:ueponx:20200414231459p:plain

ボードとシリアルポートの設定

メニューから【ツール】→【ボード:”〇〇”】→【Seeeduino Nano】を選択します。かなり下の方にあります。

f:id:ueponx:20200414125309p:plain

選択すると、メニュー上のボードがが以下のように変更するので確認をします。

f:id:ueponx:20200414232151p:plain

f:id:ueponx:20200414125314p:plain

続いて、シリアルポートの選択をします。メニューから【ツール】→【シリアルポート】を選択して接続しているCOMポートを選択します。今回はCOM9で認識されていたので、それを選択します。

f:id:ueponx:20200414125317p:plain

選択すると、メニュー上のシリアルポートが以下のように変更するので確認をします。

f:id:ueponx:20200414232246p:plain

あとは標準のBlinkサンプルを読み込ませてみます。メニューから【ファイル】→【スケッチ例】→【01.Basics】→【Blink】を選択すると読み込みできます。

f:id:ueponx:20200414210720p:plain

読み込みが終わったら、IDEの【→】ボタンで書き込みを行います。設定が正常であれば無事に書き込みができます。ボード上のLEDが点滅するだけなので、デフォルトと変化がないので微妙かもしれません。

f:id:ueponx:20200414125324p:plain

Grove - Chainable RGB LEDで少し違ったLチカしてみる

いつもはLEDをブレッドボード挿して、IOピンと接続してLチカを行うことが多いのですが、せっかくGroveシールドもあることなので、手元にあったGrove - Chainable RGB LEDを使用してみることにします。

f:id:ueponx:20200413225946j:plain

このGrove - Chainable RGB LEDはI2Cを使って、ユニット間で接続しチェーン上つなげていくことができるようになっているのが特徴です。

詳細は以下のページを確認してください。

www.seeedstudio.com

Note: This product will EOL soon, please click here for Grove - Chainable RGB LED V2.0.

となっているので、今後入手を考えられる方は以下を購入することになると思います。こちらのほうがコンパクトで奥行きが小さいのでいいかもしれません。(V2.0のほうがコネクタの向きが良いです)

www.seeedstudio.com

こちらのモジュールはI2C接続ですが、ライブラリがあるので導入は容易です。以下のサイトに導入方法が書いてあります。(SeeedさんのWikiにも記載されています)

github.com

基本的には最新版のリリースのZIPファイルを取得して、Arduino IDEでライブラリインストールをしていくことになります。以下のリンクで最新バージョンを取得することができます。現在のバージョンはv1.3

github.com

ここにあるZIPファイルをダウンロードしたら次に進みます。

f:id:ueponx:20200414232559p:plain

Arduino IDEをメニューから【スケッチ】→【ライブラリをインクルード】→【.ZIP形式のライブラリをインストール…】をクリックします。インストールに使用するファイルダイアログが開くので、先程のZIPファイルを選択します。

f:id:ueponx:20200414125332p:plain

インストールが終わると先ほどのメニューにChainableLEDが追加されています。

f:id:ueponx:20200414125336p:plain

これを選択するとソースファイルにインクルード行が追加されます。

f:id:ueponx:20200414125339p:plain

ここまできたらGithubにあるサンプルファイルを使用すれば実験ができます。サンプルページは以下になります。

【サンプルページ】

github.com

ただ、公式のサンプルはI2Cで接続されたチェーン接続された状態を想定した点灯になるので、1つのモジュールを接続した状態ではあまりテスト的な意味合いはありません。そこで公式のサンプルを少し手をいれて以下の様にしてみました。

LEDをRGBで順番にレベルを変化させて色を変える感じのものです。

#include <ChainableLED.h>

#define NUM_LEDS  1

ChainableLED leds(SCL, SDA, NUM_LEDS);

void setup()
{
  leds.init();
}

byte pos = 0;

void loop()
{
  for (int r = 0 ; r < 256 ; r+=16) {
    for (int g = 0 ; g < 256 ; g+=16) {
      for (int b = 0 ; b < 256 ; b+=16) {
        leds.setColorRGB(pos, r, g, b);
      }
    }
  }
}

Classのメソッドは以下の通りです。I2Cのクロックピンとデータピンのを知っていれば、使用は難しくない感じです。

class ChainableLED {
public:
  ChainableLED(byte clk_pin, byte data_pin, byte number_of_leds);

  void init();
  void setColorRGB(byte led, byte red, byte green, byte blue);
  void setColorHSL(byte led, float hue, float saturation, float lightness);
}

Seeeduino Nanoの場合には以下のように指定しています。引数NUM_LEDSには接続したモジュールの個数を与えます。接続が1つの場合には1となります。

ChainableLED leds(SCL, SDA, NUM_LEDS);

点灯はRGBかHSLで指定することになります。今回はRGBで設定します。引数のposは接続したモジュールの何番目かを示しています。接続が1つの場合には0となります。

leds.setColorRGB(pos, r, g, b);

実行すると以下のようになります。

f:id:ueponx:20200414224353j:plain

輝度が高いので、色の変化が細かいとパット見た感じでは変化はよくわからないかもしれません。

おわりに

ようやく死蔵していたSeeeduino Nanoを使用できるようになりました。シールドを使用するとコンパクトなサイズでいろいろな接続ができるようになるのでかなり便利です。電源がUSB Type Cなのも今っぽいのでいい感じですね。