概要

IoTAB(IoT Arduino Board)は、3GIM/4GIMと組み合わせて利用することができるArduino Zero互換の小型マイコンボードです。 MCU(32-bit ARM Cortex-M0+)に加えて、3軸加速度センサ、温度センサ、リチウムポリマ電池の充電回路を搭載しています。低消費電力を考慮した設計であるため、電池で駆動するようなIoTデバイスを簡単に開発することができます。 ボードのフットプリント(占有サイズ)は3GIM/4GIMと同じ25mm*35mmと小型です。3GIM/4GIMと重ね合わせることで、コンパクトなIoTデバイスを作ることができます。

外観

IoTAB(V1)のサイズは 25mm*35mm*7mm(電池コネクタを含む)、重さは約2.6gです。
IoTAB(V1)の外観写真を下記に示します。なお、基板の色やレイアウト・寸法等は、今後変更となる場合がありますのでご注意ください。

表面


裏面


3GIMと組み合わせた場合(1)

IoTABと3GIMを重ね合わせて、6ピンヘッダを半田付けしています。


3GIMと組み合わせた場合(2)

IoTABと3GIMの間には、高さ3mmの白いスペーサを入れて、径2mm/長さ10mmのプラねじとナットで留めています。


3GIMと組み合わせた場合(3)

重ね合わせた時の高さは約11mmとなります。フットプリントがほぼ同一(25mm*35mm)である容量400mAhのリチウムポリマ電池を重ねると、全体の高さは約15mmに収まるサイズとなり、薄手の小型ケースにも収容できます。


機能概要

IoTAB(V1)は、下記の機能を提供します。

  • Arduino Zero/m0 互換のマイコン機能(超低消費電力でRTCを内蔵、Arduino IDEで開発可能)
  • 低消費電力で高精度な3軸MEMS加速度センサを搭載
  • 低消費電力なデジタル温度センサを搭載
  • リチウムポリマ電池の充電機能(マイクロUSBコネクタから充電)
  • 外部インタフェースとして、I2C*1,UART*1,ADC/GPIO*4(うちDAC*1としても利用可)を提供

余分な機能を持たないコンパクトなマイコンボードですので、3GIM/4GIMと組み合わせることで、IoTゲートウェイやセンサノードとして簡単に利用することができます。
搭載している加速度センサや温度センサ等は、別途公開しているArduino用ライブラリ(iotab, 3gim2, mma8451q, stts751)を使えば簡単に利用することができます。

IoTABのスペック

項目 仕様 補足
外形寸法幅25mm * 奥行35mm * 高さ3.5mm3GIM/4GIMと同一サイズ。取付穴は2.6mm径(1ヶ所)
電源電圧3.6~4.2V(リチウムポリマ電池/リチウムイオン電池を推奨) または 4.5~5.5V(USB給電からの充電用)USBからの給電は充電専用。マイコンや3GIMの動作には3.6~4.2Vの電池の使用が必須
消費電流0.4(standby時)~10.3mA(active時/LED消灯)、外部モジュールへの給電分を除く利用状況や外部回路に依存
PCとのインタフェースマイクロUSBコネクタ(USBケーブル経由で接続)仮想COMポートとしてArduino IDEからのスケッチの書き込みやシリアルモニタ等で利用可能
マイコンMicrochip ATSAMD21G18 (CPU: 32-bit, Flash:256KB, SRAM:32KB, Clock:48MHz, UART*1/I2C*1, ADC/GPIO*4 10/12-bit, DAC*1 10-bit) Arduino IDE 1.8以降で開発可能
ロジック電圧3.3V5Vトレラントではないため注意
添付品IoTAB本体1個、10ピンヘッダ1個、電池用2ピンコネクタ1個
  1. 使用できるリチウム二次電池は、標準電圧が3.7Vの単一セルのリチウム二次電池です。3GIM/4GIMと組み合わせて利用する場合は、過放電保護回路を持ち、電池容量が400mAh以上のリチウムポリマ電池またはリチウムイオン電池を推奨します。これらの電池以外の使用は保証しません。
  2. Arduino Zeroと同様に、ADCは最大12-bitの分解能で4チャネルを利用することができます。DACは10-bitの分解能で1チャネルを利用できます。
  3. 1pinあたり、最大7mAまでの電流を流すことができます。


ブロック図

IoTAB(V1)の内部ブロック図を下記に示す:


ピンアサイン

EXT-CNのピンアサインを下表に示します。

ピン番号 名称 機能説明 補足
1A0/DACADC(10/12-bit) or DAC(10-bit)GPIOとしても利用可能
2A1ADC(10/12-bit)GPIOとしても利用可能
3A2ADC(10/12-bit)GPIOとしても利用可能
4A3ADC(10/12-bit)GPIOとしても利用可能
5SDAI2CのSDAボード上に搭載しているセンサでも利用
6SCLI2CのSCL同上
7D1/TX0D1 or TX0ArduinoではSerialとして利用可能、GPIOとしても利用可能
8D0/RX0D0 or RX0同上
93.3V3.3Vの電源出力最大800mAまで供給可能(ただし、使用するリチウム電池の最大放電電流に依存)
10GNDGND
  • ADCの分解能を標準の10bitから12bitに変更するには、analogReadResolution()関数を使用します。
  • DACを利用するには、A0ピンに対してanalogWrite()を使用します。


3GIM-CNのピンアサインを下表に示します。ピンの並びは3GIM/4GIMと一致しているので、直接3GIM/4GIMを向かい合わせに接続することができます。

ピン番号 機能 3GIMとの対応 説明
1D9PWR_ON3GIM/4GIMの電源を制御する(LOW:ON/HIGH:OFF)
2TX1RXSerial1で読み書きする
3RX1TX同上
43V3IOREF3.3Vが供給される
5VBATVCCリチウム電池と直接接続される
6GNDGND


機能一覧

分類 機能名 機能概要 補足
マイコンマイコンArduino Zero互換のATSAMD21G18を採用
加速度センサ加速度計測等最大分解能14-bit, 最大サンプリング周波数800Hz, FIFO(32サンプル), モーション・フリーフォール検知機能, タップ・ダブルタップ検知機能等NXPセミコンダクタ社MMA8451Q搭載
温度センサ温度計測デジタル温度センサ。分解能は9~12-bit、測定精度は±1.0°C(typ) @0°C~+85°CSTMicroelectronics社STTS751
Li-poli充電リチウムポリマ電池充電リチウムポリマ電池を、USBからの電源を使って最大500mAの電流で充電する。充電中はLED1が点灯、消灯したら充電完了
リセットSWMCUリセットスイッチMCUをリセットする
その他LED2MCUから点灯/消灯を制御する


IoTABの特長と利用例

  1. IoTABを使った試作・開発では、Arduino IDEを利用できます。お使いのPCとマイクロUSBケーブルでIoTABを接続するだけで簡単に開発できます。
  2. 3GIM/4GIMと組み合わせて、コンパクトなIoTゲートウェイとして利用できます。外部インタフェースコネクタ(EXT-CN)にUARTが一つありますので、そこにBLEモジュールや独自の小型無線モジュール(モノワイヤレス社のTWELITE等)を接続することができます。これらの近距離通信モジュールで収集したデータを、3GIM/4GIM経由でクラウドサーバに上げることができます。
  3. IoTABに搭載しているMCU(ATSAMD21G18)は、Arduino Zeroやm0と同じ製品を使っていますので、Zero/m0用として公開されている様々なライブラリやスケッチをそのまま使用することができます。
  4. ATSAMD21G18の持つRTC(Real Time Clock)機能を使ってMCU自身をスリープさせることにより、消費電力を非常に少なく抑えることが可能です。スリープ状態からは、RTCのアラーム機能(指定した時刻、毎時15分等の指定が可能)や加速度センサからの割り込み(一定以上の加速度を検知した時など)により瞬時にウェイクアップさせることができます。このような機能を利用すれば、橋梁等の構造物のモニタリング装置、3GIMのGPS機能を使って移動時のみ位置を収集・アップロードする省電力な動態管理端末などを実現することができます。


IoTABの利用手順

IoTABをArduino IDE(バージョン1.8以上)で開発するようにするには、以下の手順で設定してください。

 1. Arduino IDEのファイル/環境設定のダイアログで、「追加のボードマネージャのURL」に、下記の行を追加します。


 2. Arduino IDEのツール/ボードで「ボードマネージャ..」を選択します。リストの中にある「IoTAB ARM Board by TABrain」を選択します。
 3. 「IoTAB ARM Board by TABrain」の「インストール」ボタンを押して、IoTABのスケッチのビルドに必要なファイル群をインストールします。
 4. 次に、Arduino Zeroのビルドに必要な「Arduino SAMD Boards (32-bits ARM Cortex-M0+) by Arduino」ボードを同様にインストールします。
 5. 途中でエラー等が発生せず、上記の手順が正しく実行できたことを確認します。正しくインストールできた場合は、ボード名の横に「INSTALLED」と表示されます。
 6. Arduino IDEの「ツール」メニューの「ボード」サブメニューを選択して、ボードの選択肢の中から「IoTAB (V1)」を選択します。
 7. IoTABをUSBケーブルでPCと接続すると、USBドライバのインストールが始まります。USBドライバのインストールが完了したら、デバイスマネージャを開いてデバイスの状態を確認します。USBドライバが正しくインストールできている場合は、「Arduino Zero (COM*)」という名前のCOMデバイスとして認識されます。


IoTABを利用するためのリチウム電池について

IoTAB(V1)で利用可能なリチウム電池は、単一セルのリチウムポリマ電池またはリチウムイオン電池です。これら以外のリチウム電池は使用できませんので、十分ご注意ください。
具体的には、下記のURLにある製品を利用することができます(実際に利用実績もあります)。

リチウムイオンポリマー電池400mAh

リチウムイオン電池900mAh

電池の選択の目安として、3GIMを併せて利用するケースでは最大連続出力電流が600mA以上のものを推奨します。

IoTABの消費電流について

いくつかの利用ケースにおけるIoTABの消費電流の実測値を、下表に示します。
この計測は比較的高精度なマルチテスタを用いて行った数値ですが、あくまでも参考情報としてお取り扱いください。

# 測定条件 消費電流[mA] 補足
1delay()関数を実行しているとき10.02iotabライブラリのblink_led2でLED2が消灯しているとき
2LED2を点灯しているとき11.29iotabライブラリのblink_led2でLED2が点灯しているとき
3RTCでスリープしているとき1.05RTCZeroライブラリのstandby()関数を呼んでスリープしているとき
4加速度センサだけをサンプリング周波数12.5Hzで動かし、MCUはスリープしているとき1.07一定以上の加速度があればMCUをすぐに起こせる状態
5#4とおなじだが、加速度の精度を8bitに落としているとき0.91同上
6I2Cを使わないとき0.81
7I2Cを使わないときで、3.3Vの電源を3.3Vピンに直接接続したとき0.43IoTAB搭載のレギュレータを使用しない
8No.7の条件に加えて、GPIOをすべてINPUT_PULLUPにしたとき0.38IoTAB搭載のレギュレータを使用しない場合で、おそらく最も消費電流の少ないケース
  • 測定環境は、IoTA(V1)、リチウムポリマ電池(400mAh、Sparkfun製)を使用して、室温25℃程度の屋内で測定しました。
  • 電流値の測定は、LILIPUT OWON社のデジタルマルチメータB35を使用しました。スペック上の測定精度は +/-1% 程度です。
  • 3GIM/4GIMをIoTABに接続している場合、D9(PWR_ON)をHIGHにして電源OFFとした状態でも、3GIM/4GIM側で200~300uA程度の電流が消費されますのでご注意ください。
  • MCUに内蔵しているRTCを使ってスリープする例を以下に示します:
#include <RTCZero.h>
#include <iotab.h>

RTCZero rtc;

void setup() {
  iotab.begin();
  rtc.begin();

  rtc.setTime(0, 0, 0);
  rtc.setDate(1, 1, 2020);  // 2020年の元旦になったら起きる
  rtc.setAlarmTime(0, 0, 0);
  rtc.enableAlarm(rtc.MATCH_HHMMSS);

  rtc.attachInterrupt(alarmMatch);
  rtc.standbyMode();
}

void loop() {
}

void wakeUp() {
  // 起きた時にすること
}


ダウンロード

  • IoTAB(V1) 用Arduinoライブラリ


事例