labs
3G Shield & 3GIM Labs
このページでは、3Gシールドや3GIMを使った試作等をご紹介していきます。
Intel Edisonを使った事例 [2015.3.21]
Edisonとブレークアウト基板に3GIMを組み合わせて使ってみました。
Edisonで3GIMを使う方法はいろいろありますが、今回は
Intel XDK IoT Edition (JavaScript + node.js)
を使ってみました。とっても簡単です。
手元にあった温湿度センサAM2321から温度と湿度をI2C経由で読み取り、読み取った温度を1分おきにxively.comサービスへアップロードするサンプルです。

Intel XDK IoT Edisonを使うと、PC上でコーディングしたJavaScriptのプログラムをWifi等でデプロイしてくれて、簡単にクロス開発ができます。

詳しくは下記のサイトを見てみてください。
また、温度をアップしたxivelyの画面は次のような感じです。

回路図は下記の通りです:
- 回路図で1ヶ所訂正します。EdisonのUART1_TXは17_5ではなく19_8ピンが正しいです(2016.02.20)
ソースコードは下記です:
edison_sample.zip
(*) AM2321センサの制御周りは、とりあえずやってみるを参考にさせていただきました。感謝いたします。
3GIMを使った環境モニタ
3GIMを使えば、ミニブレッドボードで簡単なセンサノードを製作できます。
この事例では、温湿度センサ(SHT-21)で温度と湿度を1分おきに計測し、クラウドサービスxively.comにアップロードします。
500mAhのリチウムポリマ電池(3.7V)を使えば、1分ごとの計測とクラウドへのアップロードを行っても6時間以上稼働させることができます。また、計測とアップロードの間隔を広げることで、数日間の稼働も可能です。
ラズベリーパイで3Gシールドを使ってみました [2014.3.1]
ラズベリーパイで3Gシールドを使ってみましたので報告します。
- 試してみたこと
ラズベリーパイに、温度センサと3Gシールドを接続して、温度の計測結果を定期的にIoTクラウドサービスxively.comへアップロードしました:

なお今回の実験では、Linux OSとして最新のraspbian(2014-01-07リリース)を使いました。バージョンによって、以下の設定手順などが異なる場合がありますので、ご注意ください。
Intel Galileoで3Gシールドを使ってみる [2014.1.25]
年が明けて、インテル社のGalileoがやっと入手できるようになりました。
そこで早速、3Gシールドを使ってみましたので報告します。
(1) ソフトウェアの準備
Galileoを使うには、まず、Galileo用の開発環境(Arduino IDE 1.5.3 for Galileo)をここからダウンロードして、ご使用のPCにインストールしてください。
なお、現在、Arduino IDE 1.0.Xをお使いでも、別のフォルダにインストールすることでGalileo用のIDEと同居が可能です。
次に、Arduino Mega用の3Gシールドライブラリa3gs2(R2.2)をダウンロードからダウンローして、先ほどインストールしたArduino IDEのライブラリフォルダにコピーしてください。その後、a3gs2フォルダの下にあるa3gs2.hの91~93行目を下記のように修正して保存してください:
// UART Port with IEM
//#define iemSerial Serial3 //@ for Due, Mega
#define iemSerial Serial1 //@ for Leonardo
(2) ジャンパで2ヶ所を配線
最後に、下記のピンをそれぞれジャンパピンで接続してください:
D4をD0につなぐ。
D5をD1につなぐ。
詳しくは、下記の写真で確認ください:

(3) 3Gシールドの利用
Galileoでは、スケッチのアップロード兼シリアルモニタ用のシリアルポートとしてSerialがあり、D0/D1にはSerial1があります。(つまり、Leonardoと同じです)
UNOでは、ソフトウェアシリアルしか利用できなかったために、Arduinoと3Gシールドとの間の通信速度を4,800bpsとしていました。しかし、Galileoではハードウェアシリアルが利用できるために、通信速度を速くする(最大57,600bps)ことができます。
ここでは、せっかく速い通信速度が出せるGalileoを使うのですから、最大速度の57,600bpsに設定して利用したいと思います。
まず、サンプルスケッチset_baudrateを使って、3Gシールドの通信速度を57,600bpsに変更してみます。
Galileoを動かす手順は下記の通りです:
(a) Galileoに付属のACアダプタ(または5V2AのACアダプタ)で電源を供給する。
(b) 1分ほどで、Galileo上でLinuxが立ち上がります(Linuxが立ち上がることで、PCからはUSBデバイスとして認識できるようになります)
(c) Galileoの「USB CLIENT」側のマイクロUSBとPCのUSBポートをケーブルで接続します。
(d) Galileo用のArduino IDEを起動して、「ツール」→「シリアルポート」で正しいシリアルポートを選択する。
(e) 動かしたいスケッチを開き、スケッチをアップロードする。
最初は、例えば、「ファイル」→「スケッチの例」→「01.Basic」→「Blink」等が良いと思います。このスケッチをGalileoにアップロードできると、COINと記載されたピンヘッダの脇にあるLED(脇にGPと表記あり)が点滅します。
上記の手順で、ご利用のPCからGalileoへスケッチが正しくアップロードできることを確認してから、以下の手順で3Gシールドの通信速度を変更します。あらかじめ、3GシールドをGalileoへ装着しておきます。
(i) a3gs2のサンプルスケッチset_baudrateを開く。
(ii) 16行目にある#define定義文を下記のように変更する:
#define NEW_BAUDRATE 57600
(iii) a3gs2ライブラリのヘッダファイルa3gs2.hの46行目を下記のように変更する:
#define a3gsBAUDRATE 4800
(iv) スケッチをビルドしてGalileoへアップロードする。
上記の手順が正しく実行できれば、3Gシールドの通信速度は57,600bpsとなっているはずです。これで、a3gs2ライブラリが利用できるようになりました。
a3gs2ライブラリを使う前に、先ほど修正したデフォルトの通信速度a3gsBAUDRATEをもとに戻します。
(v) a3gs2ライブラリのヘッダファイルa3gs2.hの46行目を下記のように変更して元に戻す:
#define a3gsBAUDRATE 57600
正しくa3gs2ライブラリが利用できるかどうか、下記の手順で試してみてください。
(vi) a3gs2のサンプルスケッチget_imeiを動かす
(vii) シリアルモニタに下記のように出力されれば、正しく動作しています。
Ready.
Initializing.. Succeeded.
IMEI: 354563999999999
Shutdown..
これで、a3gs2ライブラリが使用できるようになりました!
あとはあなたの工夫次第です。
ということで、参考までにxively_sampleを動かした例を下記に示します。a3gs2ライブラリのサンプルスケッチxively_sampleを使って、xivelyのサイトに温度をアップロードしてみました:

ハウス向け監視モジュールの試作(その2) [2013.12.23]
その後、いろいろな監視モジュールを試作しました。
現在、試験中の監視モジュールは、ハウス型の植物工場向けのもので、
温度、湿度、水温と画像を計測して、クラウド上のサービスに蓄積します。

今回の試作では、カメラに苦戦しました。
従来から使用しているカメラは、UART経由でJPEG画像が取得できるため、マイコンから制御しやすいものです。また、照度が低い場合は自動的に赤外線LEDを点灯して、赤外線としてモノクロでの撮影が実現できました。(つまり、通常のカメラで内蔵されているIRカットフィルタがないカメラです)
欠点としては、
明るい屋外では赤外線が強すぎて、色合いが出ないことです。
ということで、今回は、赤外線カットフィルタをON/OFFできるカメラを海外から入手して使ってみました。
照度が明るい時は、赤外線カットフィルタをONにして撮影を行います。
一方、照度が暗い時は、赤外線カットフィルタをOFFにして赤外線LEDを点灯し、撮影を行います。(撮影する瞬間だけ、赤外線LEDを点灯します)
この制御がかなり面倒でしたが、何とか試験にこぎつけました。
消費電力は、太陽電池+蓄電池での運用も考慮して、できるだけ小さくする工夫をしています。12Vの給電時で、通常時は50~70mA、通信時は90~110mA、暗闇での撮影時は瞬間で300mA程度をそれぞれ消費します。つまり、消費電力は0.6~1.3W(ピーク時は3.6W)ですので、20Ah程度の車用鉛蓄電池で「7~9日」の稼働が可能です。
カメラ等の詳しい情報が欲しい方は、「問合せ」からその旨ご連絡ください。
情報を提供させていただきます。
ハウス向け監視モジュールの試作 [2013.07.30]
植物プラントの監視に続いて、ハウス栽培の監視モジュールを試作しました。
ハウスは環境条件がかなり厳しく、いろいろと試行錯誤中です。
最初はこんな感じでした(笑)
上記の部品やモジュールを組み立てます。
今回は、センサ類はケーブルで延長できるようにしました。
照度センサはアナログセンサからI2Cのデジタルセンサに変更しました。
写真では素のままのセンサモジュールですが、湿気に耐えるようエポキシ系接着剤でセンサ感光部以外を覆いました。
またI2C(信号線2本)なので、電源とGNDを加えた4ピンのコネクタ、ケーブルを使ってます。
温湿度センサは、植物プラント用と同じ、1線式のデジタルセンサです。
で、結局、こんな感じに仕上がりました:
(正面から見たところ)
(側面から見たところ - 排気口とコネクタ類が見えます)
場所や設置方法によると思いますが、ハウスの場合は夏は温度が40℃を超え、また夜間から朝にかけて湿度が100%近くになります。外気温が(40+α)℃となるため、ケース内の温度は50℃を超えます。これは結構厳しいです。。
現在、某所で評価実験中です。
GR SAKURAでの利用 [2013.04.07]
GR SAKURAで3Gシールドを使ってみました。

GR SAKURAではSoftwareSerial機能がないため、D0/D1のハードウェアシリアル(SCI_SCI0P2x)をSerail3として、3GシールドのD4/D5に接続して使用しました。
ポイントは、SCI_SCI0P2xの初期化処理です。SAKURAのシリアルドライバでは、CR/LFの扱いが特殊なので、この特殊扱い処理を無効にする必要があります。
詳しくは、添付のソースコードのbegin()の処理(下記)を参照ください。
sci_str *hsci;
Serial3.begin(57600, SCI_SCI0P2x);
hsci = Serial3.get_handle();
sci_convert_crlf_ex(hsci, CRLF_NONE, CRLF_NONE);
GR SAKURAを使えば、UNOサイズで、
- 動作電圧:3.3V
- 動作周波数:96MHz(FPU内蔵)
- Flashメモリ:1MB
- RAM: 128KB
- デジタルI/Oピン:51
- アナログ入力ピン:6
- イーサネットコントローラ内蔵
- マイクロSDカードソケット
- XBeeソケット
- USBホスト/ファンクション内蔵
が利用できます。RAMサイズが大きい(Megaの16倍)のは大変うれしいです。
SAKURA用のソースコード一式は下記からどうぞ:
a3gs_sakura.zip
簡易監視装置の試作 [2013.03.17]
カメラや環境センサを使って、温度、湿度、照度、画像を一定時間おきに計測・撮影してクラウドサービスにアップロードする装置を試作しました。
クラウドサービスとしてAmazon EC2を使い、スマホやタブレットから簡単にアクセスするアプリも作りました。
データの可視化(日付や表示時間幅等を指定してグラフ表示する機能)や画像を表示することができます。
また、任意のタイミングでメールをこの装置へ送ることで、その時の環境データおよび画像を返信してくれます。
この装置は下記の構成で製作しました:
- マイコン Mega Pro(3.3V)
- 3Gシールド
- LinkSpriteシリアル接続JPEGカラーカメラ
- 自作シールド(マイクロSDカード、8桁2行小型LCD付き)
メール読み上げ機の試作 [2013.02.11]
3Gシールド、Arduino(Leonardo)、音声合成IC等を使って、自分宛てに届いたメールを読み上げてくれるものを試作しました。
ダウンロードからダウンロードできるa3gsmailライブラリを使って自分宛てのメールを時々チェックして、届いていれば取得して音声合成ICに流し込んで本文を読ませます。
安価な音声合成ICを使っていますので、ローマ字しか発声できないところがネックですが(笑)、十分聞き取れる音声でしゃべってくれます。
音声合成ICには、これを使いました:
実売で千円程度の製品ですが、桁読み(「いち万さん千よん百なな十ご」というような読み方)等も可能です。また、5Vでも3.3Vでも区別なく使える点も便利です。
3Gシールドを使ったセンサネットワークの試作 [2012.12.16]
3GシールドとArduinoを使って、温度・照度を計測するセンサネットワークを作成してみました。
複数のセンサの情報をZigBeeを使って親機に集約し、親機に集まったセンサ情報を3Gシールドを使ってクラウドサービスへアップロードします。

上の写真が、親機(Arduino Leonardo+3Gシールド+ZigBeeモジュール)と子機(センサ+ZigBeeモジュール)です。親機は、006Pタイプのニッケル水素電池で稼働させています。
- 最終更新:2016-02-20 13:05:19