B)で3GIMを簡単に利用できるようにするための拡張ボードです。HATを利用することで、3G回線(FOMAサービス)を使って、簡単にどこからでもインターネットに接続することができます。Zeroと同サイズであるため、全体を非常にコンパクトなサイズに収容することができます。HATの外観(3GIMを装着していない状態)は下記のようになっています。左の画像がボードの表側、右の画像がボードの裏面です。3GIMを装着した状態では、下記のようになります。画像は試作品のものであり、基板の色やレイアウト・寸法等は、今後変更となる場合がありますのでご注意ください。HATは、下記の5つの機能を提供します:3GIMを使ったインターネット通信機能(USBまたはUART接続)3GIMの電源のON/OFF制御(GPIO23で制御)3GIMの電源供給機能(ラズパイの5V入力から3.7Vの電源を供給)4チャンネル/12bitのADC機能(SPIで制御)HATボード上にLEDを配置(GPIO22で制御)余分な機能を持たないため、IoTゲートウェイやセンサノードとして簡単に利用することができます。機能詳細3GIMを使ったインターネット通信機能USBまたはUART経由でラズベリーパイと接続することで、インターネット接続を行うことができます。HATとをUSBケーブルで接続します。3Gドングルと同様に、Linuxのwvdialコマンドを実行することで、WiFiやLANと同様にインターネットに接続することができます。UART経由の場合は、3GIMをArduinoで使用する時と同様に、簡易な$コマンド1)を使ってHTTP/HTTPS通信やTCP/IP通信を行うことができます。3GIMにGPSアンテナを装着することで、位置情報を取得することもできます。HATに添付されている2つのジャンパを使用します。UARTを使用する場合には、/dev/ttyAMA0を利用するためにシリアルコンソールは利用できなくなります。ジャンパは、下記の写真のようにボードの長手方向に向かって垂直方向に2つ装着してください。3GIMの電源のON/OFF制御3GIMの電源は、GPIO23の信号をLOW/HIGHにすることでON/OFFすることができます(LOWでON、HIGHでOFF)。GPIO23を操作しない場合(デフォルト状態)は、通常、3GIMはOFF状態となります。通信機能を利用する頻度が少ない場合や通信間隔が長い場合には、3GIMを使用しない時にOFFにすることで消費電力を抑えることができます。3GIMへの電源供給機能3GIMの電源(VCC)は、ラズベリーパイの5Vピンから提供される電圧を3.7Vに降圧したものが利用されます。降圧には、変換効率の高いDC-DCコンバータを利用しているため、少ない発熱で電力を無駄なく利用することができます。HATは、最大で600mA程度の電流を消費します。ラズベリーパイ自体の消費電流に加えて、600mAの電流を供給できる安定した電源を利用してください。4チャンネル/12bitのADC機能ラズベリーパイにはADCがありません。HATを利用することで、4チャネル/12bitのADC入力を取り扱うことができます。HATボード上にLEDを配置GPIO22の信号をHIGH/LOWにすることでボード上の緑LEDを点灯/消灯することができます(HIGHで点灯、LOWで消灯)。GPIO22を操作しない場合(デフォルト状態)は、LEDは消灯状態となります。HATの使い方について説明します。以下の説明では、ラズベリーパイにはすでにLinux(Raspbian等)が正しく導入されていることを前提とします。3GIMの電源の制御3GIMの電源を制御するには、GPIO23ピンをデジタル出力として、LOWを出力することでON、HIGHを出力することでOFFにすることができます。GPIOを制御するには様々な方法がありますが、ここではシェルから操作する例を説明します。GPIO23ピンをLOW(0)にして3GIMの電源をONにするには、piユーザで下記のコマンドを実行します。/sys/class/gpio/gpio23/value同様に、3GIMの電源をOFFにするには下記のコマンドを実行します。/sys/class/gpio/gpio23/value3GIMを使ったインターネット接続(USB接続の場合)3GIMのUSBコネクタとラズベリーパイのUSBコネクタをケーブルで接続することにより、USB経由で3GIMを利用することができます。HAT上のピンをジャンパで接続することにより、UART経由で3GIMを利用することができます。UARTは実際にはLinux上のデバイスファイル“/dev/ttyAMA0”と接続されますので、このデバイスファイルに対してコマンドを書き込んで結果を読み込むことで、すべての$コマンドを実行することができます。/dev/ttyAMA0“デバイスファイルに対してコマンドを送ったり、レスポンスを受け取ったりするには、例えばminicomコマンド(ターミナルエミュレータ)を使用します。minicom」を実行してインストールする必要があります。minicom等のターミナルエミュレータを使って3GIMを利用する場合、一つ注意すべき点があります。3GIMがサポートする$コマンドは、コマンドの終了文字としてLF(0x0a)を最後に送る必要があります。minicomの場合は改行文字として0x0aを設定することができないため、$コマンドに続けてEnterキーを押下しても実行されず、何のレスポンスも返ってきません。このような場合は、Enterキーを押下する代わりに、Ctrl-Jを押下して明示的にLF(0x0a)コードで終端させる必要があります。HATに搭載されているADCチップ(MCP3204)を使って、0~3.3Vの範囲の入力電圧を12bitのデジタル値として読み取ることができます。MCP3204をラズベリーパイで使用する方法はたくさんありますが、以下ではPythonを使ってCH0の入力電圧を定期的に読み取り、コンソールへ出力するサンプルを示します。下記の内容のファイルを、例えばadc.pyという名前で作成して、このファイルを次のようにroot権限で実行します。sys.exit(0)上記のpythonプログラムを実行すると、0.5秒おきにCH0の入力電圧を読み取り、コンソール(標準出力)へ出力します。プログラムを実行する際に指定するパラメータを1~3で指定することで、CH1~3ピンの入力電圧を調べることもできます。LEDの点灯・消灯3GIMの電源の制御と同様にして、GPIO22ピンを制御することでLEDを点灯・消灯させることがだきます。GPIO22ピンをHIGHにするとLEDは点灯し、LOWにするとLEDは消灯します。GPIO22に対して特に操作を行わないデフォルト状態では、LEDは消灯しています。Pythonを使ったプログラミングが電子工作例としてしっかり学べる良書です。HAT+3GIM+アナログ温度センサ(LM61CIZ)で、温度を30秒おきにクラウドサービスM2XにアップロードするIoTサービスを作ってみました。いうなれば、「IoTのLチカ」みたいなモノです。M2Xは米AT&Tが提供しているIoT向けクラウドサービスで、使いやすく豊富な機能が特長です。簡単な登録を行うだけで、若干の制約があるものの、10デバイス分の無料利用枠を試用できます。ラズパイでよく利用されるPythonのライブラリなども提供されており、簡単に利用することができます。アクセスして、ユーザ登録を行います。KEY」の文字列をコピーします。Key>の位置にペーストします。sys.exit(0)※このスクリプトは起動するたびに一つのデバイスをM2Xサービスに登録します。そのため何度も実行すると多数のデバイスができてしますので、そのような時にはM2XのDevices画面で余計なデバイスを削除してください。次にハードウェアを組み立てます。HATのアナログ入力コネクタに、3本足の温度センサを差し込みます。HATに装着して、USBケーブルでラズパイと接続しておきます。3GIMを使ってインターネット接続を行います。HATの使い方」にある方法でONにしておいてください。Pythonスクリプト”upM2X.py“を動かします。インターネット接続している状態で、root権限でupM2X.pyを動かします。./upM2X.pyアップロードした温度データを折れ線グラフで見てみる。「temperature」というStreamで温度の折れ線グラフを見ることができます。詳細は3GIM(V2/V2.1)のマニュアルを参照のこと。International。