こちら - 株式会社タブレイン

本マニュアルは、3G IoT Module のご利用に当たっての説
明資料となります。
一部の機能詳細においては、既に販売していますIEM版3G
シールドの資料等をご参照お願いいたします。
3GIM(3G IoT Module)
利用マニュアル
株式会社 タブレイン
3GIM-V1.0R02
20141210
もくじ
1.はじめに
2.3GIMの外観
3.3GIMの機能概要
4.3GIMの仕様概要
5.3GIMのピン配置
6.ご利用上の注意点
【ご参考】Arduinoで動かす配線
第1章
3GIM(3G IoT Module)の概要
2
1.はじめに

3GIMは、様々なマイコンを使って、簡単にインターネット接続することができるSDカードサイ
ズの超小型3Gモジュールです。

従来の3GシールドはArduinoでの利用をターゲットとしていましたが、3GIMでは様々なマイコ
ン(mbed,GR-Sakura,PIC,Raspberry Pi等)からUART経由またはUSB経由で簡単に利用すること
ができます。

「IEM版3GシールドV1.2」の関連ドキュメント類も参考にしながら開発を進められることをお
薦め致します。

本製品の技術サポートおよび今後のマニュアル更新につきましては、Wikiページをご覧ください。
http://a3gs.wiki.fc2.com/
本製品購入時には、①3GIM本体、② 3G(GPS併用)アンテナ+コネクタ・ケーブル、③ 本説
明書含む資料のダウンロードサイトURL (PW)が提供されます。

3
2.3GIMの外観
3GIMの外観写真を示します:

技適取得済
コネクタケーブル
(3G&GPS)
6ピン
コネクタ
USB
コネクタ
GPS
アンテナ
コネクタ
3G
アンテナ
コネクタ
電源
コネクタ



【表側】
取付穴
【裏側】
マイクロSIM
ソケット
【アンテナと3GIM】
技適取得済
アンテナ
(3G&GPS)
表側には、IEM、マイクロUSBコネクタ、電源LED、シリアル番号シール等が配置されています。
またシール上の脇には、6ピンコネクタがあります。
裏側には、マイクロSIM(ミニSIM)ソケットがあります。(挿し込む時、裏表・上下を間違わないように)
アンテナ・コネクタは、専用の3GおよびGPSのアンテナ・ケーブルをご利用ください。
(アンテナとケーブル部分は、特に扱いに注意が必要となります)
※アンテナ+コネクタ・ケーブルは、ご購入時に3G(GPS併用)用1組が提供されます。GPSをご利用の場合には、別途ご
購入する必要があります。
4
3.3GIMの機能概要
3GIMは、下記の機能(3GシールドV2.0と同じ)を提供します。

1. 3Gを介したインターネット接続(TCP/IPおよびHTTP、HTTPS※1)
2. 3Gネットワークからの時刻取得
3. GPSを使った位置情報の取得
4. SMSの送受信(※2)
5. 小容量のストレージ機能(通信モジュール上のメモリを利用)
6. その他機能(電波強度の取得、ボーレートの変更、APN※3の切り替え等)
※1:対応できるSSL証明書には一部制約があります。すべてのサーバに対してHTTPS通信ができる
ことを保証する訳ではありません。
※2:SMSの送受信はSMS不達の時の再受信動作に問題があり、受信機能の利用はお勧めしません。
送信機能は特に問題なく利用いただけます。
※3:利用可能なSIMカードについては、「利用上の留意点」をご覧ください。
5
4.3GIMの仕様概要
項目
仕様
補足
外形寸法
幅25mm * 奥行35mm * 高さ8mm
取付穴はø2.6(1ヶ所)
電源電圧
電源コネクタ部 3.6~4.2V
(3.3Vおよび5Vは使用不可)
安定したDC電源または3.7Vリチウムポ
リマ電池※2を推奨
消費電流
50~800mA
利用状況や電波状態に依存
通信規格・対応周波数
3Gシールドと同じ
マイコンとのインタフェース
UARTを介したコマンド・レスポンス方
式 またはUSBモデム
仕様書は別途公開予定(ただし、USBモデ
ムは規格のみ公開※1)
使用アンテナ
同梱するポール型アンテナ
取付用コネクタおよび基板を標準で添付
ロジック電圧
任意のロジック電圧で利用可能(3GIMに
IO電圧を供給)
UART
9600~57600bps/8データビット/パリ
ティなし/1ストップビット
ボーレートは変更可
※1:USBモデムとしてのご利用に関しては、技術サポートは行っていません。
※2:USBコネクタ経由で充電は可能ですが、製品機能としてはサポート外・保証外とさせていただきます。
6
5.3GIMのピン配置
ピン番号
名称
機能など
#1
PWR_ON
電源のON/OFF制御(開放または0でON、1でOFF)
#2
RX
UARTインタフェース(RX)
#3
TX
UARTインタフェース(TX)
#4
IOREF
ロジック電圧(任意)
#5
VCC
電源電圧(3.6~4.2V)
#6
GND
グラウンド
【補足説明】
 #1ピンは、「3GIM V1」とシルク印刷されている側のピンです。
7
#6ピン
#1ピン
6.ご利用上の留意点
1.
docomoのFOMA回線を利用します。そのため、docomoあるいはそのネッ
トワークを利用するMVNOが提供するマイクロSIMが利用できます(ただ
し、これらの条件を満たす全てのSIMカードでの利用を保証する訳ではあ
りません。利用できるSIMカードはWikiサイトのSIMカード情報ページを参
照ください)http://a3gs.wiki.fc2.com/
2.
日本国内での利用をお願いします。海外では、各国の法律により現状では
ご利用いただけません。詳細はタブレインまでご相談ください。
3.
USBモデムとして利用する場合でも、電源供給は必要です。
4.
回路図は、オープンソースとして公開します。
8
【ご参考】Arduinoで動かす配線
外部電源

マイコンとの接続方法の例を以下に示します:

Arduinoの場合
3.3V / 5V
Arduino
Dn
外部電源
VCC
IOREF#6
PWR_ON #4
TXn
RX#2
RXn
TX#3
3.6~4.2V
3GIM
GND
【補足説明】
 デジタル出力DnをHIGHにすることで、3GIMの電源をONにします。なお、3GIM
の立ち上げには約40秒かかります。
 IOREFピンには、使用するArduinoのロジック電圧(3.3V or 5V)を接続します。
(Arduino から直接 電源を取る事ができます)
 UARTはクロスで接続します(TX/RXを交差させて接続します)
9
もくじ
1.UARTコマンドインタフェースの概要
2.3GIMコマンド一覧
3.3GIMのインタフェース形式(共通事項)
第2章
UARTコマンドインタフェース
10
1.UARTコマンドインタフェースの概要


3GIMは、UART経由で外部(マイコン側)からコマンドを送受信することで
利用できます。
すべてのコマンドは、マイコン側を契機としてコマンドを送信します。結
果はレスポンスとして、3GIMからマイコン側へ送信されます。


コマンドおよびレスポンスは、改行コード('¥n')で終端します。
すべてのコマンドは、一つのシーケンス(送信と受信のやり取り)で完結
します。
① コマンド
マイコン
11
② レスポンス
3GIM
2.3GIMコマンド一覧
3GIMのUART経由で利用できるコマンドインタフェース(3GシールドV2と同一イン
タフェース)を下表に示します:

No
1
2
3
4
5
6
7
8
9
10
11
12
20
30
31
40
41
42
43
44
45
50
51
52
60
61
分類
System
SMS
GPS
Web
TCP/IP
Profile
Storage
12
機能
Version
RSSI
Serice
IMEI
LED
Baudrate
Reset
Airplane mode
Do Command
Send
Receive
Check
GPS
Get
Post
Connect
Disconnect
Read
Write
Status
Get sockname
Set
Read
Reset
Read
Write
コマン
ド名
YV
YR
YS
YI
YL
YB
YE
YP
YD
SS
SR
SC
LG
WG
WP
TC
TD
TR
TW
TS
TN
PS
PR
PE
RR
RW
機能概要
gw3gアプリのバージョン情報の取得
電波受信強度(RSSI)の取得
利用可能サービスの取得
IMEIの取得
LED3の状態の取得、設定
UARTの通信速度の変更
IEMのリセット
IEMのエアプレーンモードの切り替え
暗号化されたコマンドを実行する
SMSの送信
SMSの受信
SMS着信の有無チェック
位置情報の取得
GETリクエストの送出、レスポンスの取得
POSTリクエストの送出、レスポンスの取得
TCP/IPコネクションの接続
TCP/IPコネクションの切断
TCP/IPコネクションからのデータからの読み出し
TCP/IPコネクションへのデータの書き込み
TCP/IPコネクションの状態の取得、設定
ソケットのIPアドレスとポート番号を取得
デフォルトプロファイル番号の設定
デフォルトプロファイル番号の取得、指定プロファイルの取得
指定プロファイルのリセット(クリア)
IEM内のストレージからデータを読み出す
IEM内のストレージへデータを書き込む
補足
gw3gアプリのリセット後に有効
R1.3で追加
R2.0で追加、プロファイル設定のみ
GPSを利用
ヘッダ指定可(R2.0から)
R2.0からバイナリデータも取扱可
同上
接続時のみ有効
R2.0で追加
同上
3.3GIMのインタフェース形式(共通事項)
【コマンドの指定形式】
$XX 引数1 引数2 …¥n
引数は1つ以上の半角スペースで区切る。引数には制御コードは含まないこと。
(制御文字を含む引数の指定では、$文字エスケープシーケンスを使用してダブルクォートで囲む)
【結果形式】
$XX=OK 【結果】¥n
結果が複数行になる場合は結果部分全体を"で囲む。
$XX=NG エラーコード 【付加情報】¥n
エラーコードは別途定義する1~3桁の数字
【その他の出力形式】
'$'文字に引き続く文字を使って、特殊な文字コードを表現する。具体的には下記の通り:
$t:TAB(0x09)
$r:CR(0x0d)
$n:NL(0x0a)
$":"そのもの
$$:$そのもの
$xhh または $Xhh:16進数hh(スケッチにおける"0xhh"と同義)
例えば、下記のように使用する:
HTTPヘッダの例
"Content-Type: text/csv$r$n"
13
コマンド仕様(1)System関連
14
1.SYSTEM VERSION
項目
機能分類
機能名
コマンド形式
引数
返却値
値など
System
VERSION
【正常時】
version
【エラー時】
前提条件
補足事項
15
説明
補足
gw3gアプリケーションのバージョンを取得する
$YV¥n
$YV=OK version¥n
"9.9"形式のバージョン(整数桁がメジャ番号、小数
必ず正常終了する
以下がマイナ番号)
2.SYSTEM RSSI
項目
機能分類
機能名
コマンド形式
引数
返却値
前提条件
補足事項
16
値など
System
RSSI
【正常時】
rssi
【エラー時】
errno
説明
補足
現在のRSSI値を取得する
$YR¥n
$YR=OK rssi¥n
電波強度[dBm]
$YR=NG errno¥n
101:電波強度が取得できない
rssiは0未満のマイナス値
3.SYSTEM SERVICE
項目
機能分類
機能名
コマンド形式
引数
値など
System
SERVICE
【正常時】
service
返却値
【エラー時】
前提条件
補足事項
17
①
説明
補足
現在利用できる通信サービスを取得する
$YS¥n
$YS=OK serice¥n
0:サービス利用不可
1:パケット通信(PS)のみ利用可
2:音声通信(CS)のみ利用可
3:パケット通信(PS)および音声通信(CS)の両方が利用可
-
あらかじめSIMカードが装着されていること
必ず成功する
SIMカードがないと常に
結果として0が返る
4.SYSTEM IMEI
項目
機能分類
機能名
コマンド形式
引数
返却値
前提条件
補足事項
18
値など
System
IMEI
【正常時】
imei
【エラー時】
errno
説明
IEMのIMEIを取得する
$YI¥n
$YI=OK imei¥n
15桁の数字
$YI=NG errno¥n
ISHELL_GetDeviceInfoEx()の戻り値
補足
5.SYSTEM LED
項目
機能分類
機能名
コマンド形式
引数
返却値
値など
System
LED
状態取得
設定
status
【正常時】
説明
IEMのLED3ピンの状態取得・設定を行う
$YL¥n
$YL status¥n
ONにするか(1の時)、OFFにするか(0の時)
$YL=OK status¥n
status
本コマンド実行後のLED状態(0:OFF/1:ON)
【エラー時】
errno
$YL=NG errno¥n
191:status引数の値がおかしい
前提条件
①
補足事項
②
19
本関数で扱うLEDは、IEM版3Gシールド上では
「LED1」と表記されている。
3GIMでは、LEDはIEM脇に配置されている(点
灯時でも暗いので注意)
補足
6.SYSTEM BAUDRATE
項目
機能分類
機能名
コマンド形式
値など
System
BAUDRATE
取得
設定
引数
baudrate
返却値
前提条件
【正常時】
UARTの通信速度(ボーレート)の取得・設定を行う
$YB¥n
$YB baudrate¥n
設定するボーレート
(1200/2400/4800/9600/19200/38400/57600/115200)
$YB=OK baudrate¥n
baudrate
本コマンド実行後のボーレート
【エラー時】
errno
$YB=NG errno¥n
111:引数baudrateがおかしい
112:内部エラー
①
①
補足事項
②
③
20
説明
補足
取得時のみbaudrateが出
力される
ボーレートの目安を参照
のこと
本コマンドで設定したボーレートは、IEMをリセットした後に有効と RESETコマンド($YE)を
なる。
実行する
(リセットするまでは、現在のボーレートは変更されない)
本コマンドの実行には十分留意すること。設定したボーレートが不適
切な場合は、gw3gアプリがUART経由で利用できなくなる。
内部処理としては、gw3g設定ファイル(gw3g.dat)を書き換える。
指定するボーレートで正しく動作することを確認しておくこと
7.SYSTEM RESET
項目
機能分類
機能名
コマンド形式
引数
返却値
値など
System
RESET
ソフトリセット
指定リセット
level
【正常時】
level
【エラー時】
errno
説明
IEMをリセットする
$YE¥n
$YE level¥n
リセットのレベル(0: ソフトリセット、1:ハードリセット)
$YE=OK level¥n
引数と同じ
$YE=NG errno¥n
ISHELL_Reset()の戻り値
前提条件
①
補足事項
②
③
21
リセットには40秒程度の時間が掛かる。再起動するまでIEM
は利用できない。
IEMがハングアップした時は、3Gシールド基板による電源
OFF/ONを使い、強制的にリセットを行うこと
実装上の理由で、ハードリセットはソフトリセットと同じ動
作となっている。
補足
8.AIRPLANE MODE
項目
機能分類
値など
System
機能名
Airplane mode
IEMのエアプレーンモードを切り替える
コマンド形式
モード取得
モード切替
引数
mode
$YP¥n
$YP mode¥n
設定するモード(0: 通常モード、1:エアプレーンモー
ド)
$YP=OK mode¥n
設定後のモードを返す
$YP=NG errno¥n
未定
gw3gのバージョンがR1.3以降のみで利用できる
エアプレーンモードの時は、SMSを含めて通信操作は一
切行えないが、消費電力はやや少なくなる。
返却値
前提条件
補足事項
22
【正常時】
mode
【エラー時】
errno
①
①
説明
補足
9.DO COMMAND
項目
機能分類
値など
SYSTEM
機能名
Do command
コマンド形式
実行
password
引数
encrypted-data
【正常時】
返却値
前提条件
補足事項
23
【エラー時】
errno
①
①
説明
補足
暗号化された引数(APN情報)で$PWコマンドを
実行する
$YD password "encrypted-data"¥n
パスワード(英数字または空白・ダブルクォート
最大16バイト、ASCII文字のみ
を除く記号からなる文字列)
暗号化されたコマンド文字列
最大256バイト、ASCII文字のみ
正常にコマンドを復号し、実行でき
$YD=OK¥n
た時
$YD=NG errno..¥n
コマンドを実行できなかった時
151:パスワードエラー
152:コマンド文字列エラー
153:内部エラー
gw3g R2.0以降のみで利用できる
暗号・復号方式は、「MD5+ARC4」を採用する。
コマンド仕様(2)SMS関連
24
1.SMS SEND
項目
機能分類
機能名
値など
SMS
SEND
コマンド形式
msn
引数
message
返却値
encode
【正常時】
【エラー時】
errno
前提条件
errtype
errcode
①
補足事項
①
25
説明
補足
SMSを送信する
$SS msn ”message” encode¥n
$SS msn ”message”¥n
encode=ASCII と同じ
送信先の電話番号(ハイフォン無しの数字のみで指定)
送信するメッセージ(制御文字は使用不可、日本語はUNICDE "は¥"として記述、最大100
で記述)
バイトまで
"ASCII" または "UNICODE"のいずれか
$SS=OK¥n
$SS=NG errno ..¥n または $SS=NG errtype errcode¥n
401:引数指定エラー
402:BUSYエラー(すでにSMSを送信中)
AEESMS_GETERRORTYPE()の返却値
AEESMS_GETERROR()の返却値
音声サービス(SMS含む)が利用できる状態であること。
文字コードがASCIIの場合でも、SMSとして利用できない文字
が存在する。
2.SMS RECEIVE
項目
機能分類
機能名
コマンド形式
引数
返却値
前提条件
補足事項
26
値など
SMS
RECEIVE
説明
受信したSMSを読み出す
$SR¥n
-
【正常時】
msn
$SR=OK msn "message"¥n
受信したSMSの送信元の電話番号(ハイフォン無し)
message
受信したSMSのメッセージ
【エラー時】
errno
$SR=NG errno¥n
412:SMSを受信していない
①
①
補足
最大11バイト
ASCIIまたはUNICODE、最
大100バイト
音声サービス(SMS含む)が利用できる状態であること。
本関数の実行により、IEMのLED4ピンはHIGHに変更される。 D2(INT0)はHIGHとなる
3.SMS CHECK
項目
機能分類
機能名
コマンド形式
引数
値など
SMS
CHECK
-
【正常時】
返却値
説明
SMSを受信しているかどうかをチェックする
$SC¥n
$SC=OK 0¥n
SMSを受信していない時
$SR=OK 1¥n
SMSを受信している時
前提条件
補足事項
27
①
本関数の実行により、IEMのLED4ピンの状態は
維持される。
補足
コマンド仕様(3)GPS関連
28
1.LOCATION GPS
項目
機能分類
機能名
コマンド形式
値など
GPS
GPS START
method
引数
【正常時】
latitude
返却値
longitude
【エラー時】
errno
前提条件
補足事項
29
①
①
②
説明
測位を行う。
$LG method¥n
測位の方法(下記のいずれかを指定)
MSBASED: GPSで測位、GPSが利用できない時は3Gネッ
トワークを利用
MSASSISTED: 3Gネットワークを利用して測位
STANDALONE: GPS単体で測位
$LG=OK latitude longitude¥n
緯度(北緯、9.99999形式、ただし桁数は場合により可
変)
経度(東経、9.99999形式、ただし桁数は場合により可
変)
$LG=NG errno¥n
501:引数指定エラー
508:GPS測位エラー
509:BUSYエラー(すでに測位中)
GPSアンテナが正しく装着されてること
測位には、最大3分程度かかる場合がある。
AGPSサーバとして、Googleのロケーションサーバを利
用する。
補足
コマンド仕様(4)Web関連
30
1.HTTP GET
項目
機能分類
値など
Web
機能名
GET
コマンド形式
url
引数
header
返却値
【正常時】
nbytes
response
【エラー時】
errno
①
前提条件
②
①
補足事項
②
31
説明
補足
HTTP/GETを指定されたURLへ送信して、レスポンス
を取得する
$WG url ["header"]¥n
GETリクエストを送信するURL(例えば、
URLエンコードされていること
"http://www.google.co.jp/"等)
先頭に"http://"または"https://"を含
むこと
ヘッダ部の末尾に改行付きで付与され
ヘッダ情報(例えば、"Authorization: Basic
る
QWxhZGRpblc2FtZQ==)"等)
$エンコードされていること
$WG=OK nbytes¥nresponse¥n
レスポンス文字列のバイト数(デコード前のサイズ) 最大1024
レスポンスの文字列(エンコードされた文字列)
$WG=NG errno ..¥n
301:引数指定エラー
309:BUSYエラー(Web機能を実行中)
パケット通信サービスが利用できる状態であること。
ヘッダ情報の指定は、gw3g R2.0以降のみで利用でき
る
レスポンスにはヘッダ情報は含まれず、ボディ情報の
みが含まれる。
レスポンスの文字コードは、urlで指定されたサーバに
依存する。
2.HTTP POST
項目
機能分類
値など
Web
機能名
POST
返却値
前提条件
最大256バイト($エンコードされて
いること)
最大1024バイト(〃)
最大256バイト(〃)、省略可
url
POSTリクエストを送信するURL
body
header
【正常時】
nbytes
response
【エラー時】
errno
POSTするボディ
ヘッダ情報
$WP=OK nbytes¥nresponse¥n
レスポンス文字列のバイト数(デコード前のサイズ) 最大1024バイト
レスポンスの文字列(エンコードされた文字列)
$WP=NG errno ..¥n
301:引数指定エラー
309:BUSYエラー(Web機能を実行中)
パケット通信サービスが利用できる状態であること。
レスポンスにはヘッダ情報は含まれず、ボディ情報の
みが含まれる。
レスポンスの文字コードは、urlで指定されたサーバ
に依存する。
①
①
補足事項
②
32
補足
HTTP/POSTを指定されたURLへ送信して、レスポン
スを取得する
$WP url "body" ["header"]¥n
コマンド形式
引数
説明
コマンド仕様(5)TCP/IP関連
33
1.TCP/IP READ
項目
機能分類
機能名
コマンド形式
引数
値など
TCP/IP
READ
maxbytes
【正常時】
nbytes
現在のコネクションからデータを読み出す
$TR maxbytes¥n
読み出すデータの最大長(バイト)
$TR=OK nbytes¥ndata¥n
読み出したデータのバイト数
返却値
data
読み出したデータ
【エラー時】
errno
①
①
$TR=NG errno ..¥n
401:引数指定エラー
TCP/IPコネクションが確立されていること
相手から受信した生のデータをそのまま取得する
呼び出された時にIEMに届いているデータを、最大
msxbytes分まで読み出す。
R2.0から常にノンブロッキング
常にブロッキングせず、データがない時は nbytes=0 で動作
で直ちに戻る。
前提条件
補足事項
34
②
説明
補足
ノンブロッキングで動作する
最大1024
gw3g R2.0からバイナリデータ
も取扱可
2.TCP/IP WRITE
項目
機能分類
機能名
コマンド形式
値など
TCP/IP
WRITE
引数
data
書き出すデータ
【正常時】
$TW=OK nbytes¥n
書き出したデータのバイト数(デコード後の生
最大1024バイト
データのサイズ)
$TW=NG errno ..¥n
301:引数指定エラー
TCP/IPコネクションが確立されていること
dataとして指定できるデータは$エスケープシー
ケンスにてエンコードされている必要がある。
dataとして指定できるデータは、エンコード前の
生データのサイズが1024バイト以下であること。
返却値
前提条件
nbytes
【エラー時】
errno
①
①
補足事項
②
35
説明
補足
現在のコネクションへデータを書き出す
$TW "data"¥n
最大1024バイト、$エンコードさ
れていること
3.TCP/IP CONNECT
項目
機能分類
機能名
コマンド形式
引数
値など
TCP/IP
CONNECT
host_or_ip
port
【正常時】
【エラー時】
errno
返却値
前提条件
補足事項
36
①
①
説明
TCP/IPコネクションを接続する
$TC host_or_ip port¥n
接続するホスト名またはIPアドレス
接続するポート番号
$TC=OK¥n
$TC=NG errno ..¥n
601:引数がおかしい
603:すでに接続済み
604:コネクション失敗
605:内部エラー(Open)
606:内部エラー(Create)
607:内部エラー(SockPort)
609:タイムアウトエラー
TCP/IPコネクションが確立されていないこと
TCP/IPコネクションは一度に一つだけ使用できる。コネ
クションはWeb機能とは独立している。
補足
4.TCP/IP DISCONNECT
項目
機能分類
値など
TCP/IP
機能名
DISCONNECT
コマンド形式
引数
返却値
前提条件
補足事項
37
説明
現在のTCP/IPコネクションを切断する
$TD¥n
【正常時】
【エラー時】
errno
①
②
$TD=OK¥n
$TD=NG errno ..¥n
614:内部エラー(Close)
615:接続されていない
616:内部エラー(Shutdown)
TCP/IPコネクションが確立されていること
read中あるいはwrite中ではないこと
補足
5.TCP/IP STATUS
項目
機能分類
機能名
コマンド形式
値など
TCP/IP
STATUS
取得
設定
status
引数
返却値
【正常時】
【エラー時】
errno
説明
現在の状態を取得する、指定した状態に設定する
$TS¥n
$TS status¥n
0:CLOSED(接続なし)
1:DISCONNECTING
2:DISCONNECTED(接続待ち)
3:CONNECTING
4:CONNECTED(送受信待ち)
5:READING
6:WRITING
$TS=OK status¥n
$TS=NG errno ..¥n
641:引数がおかしい
前提条件
補足事項
38
①
状態の設定は、問題を引き起こす可能性があるため使
用しないこと。
(状態を変更しても、自動的に接続・切断等が実行さ
れる訳ではない)
補足
現在の状態を取得する
状態を強制的に設定する
6.TCP/IP GETSOCKNAME
項目
機能分類
値など
TCP/IP
機能名
Get Sockname
自分のIPアドレスおよびポート番号を取得する
コマンド形式
引数
取得
$TN¥n
【正常時】
返却値
【エラー時】
errno
前提条件
補足事項
39
①
①
説明
$TN=OK ipAddr portNo¥n
ipAddr: 自分のIPアドレス(IP v4のみサポー
ト)
portNo: 自分のポート番号
$TN=NG errno ..¥n
662:接続していない
661:内部エラー
相手に接続していること
補足
コマンド仕様(6)Profile関連
40
1.PROFILE SET
項目
機能分類
機能名
コマンド形式
引数
返却値
値など
PROFILE
SET
profileNum
【正常時】
【エラー時】
errno
説明
デフォルトのプロファイル番号を設定する
$PS profileNum¥n
プロファイル番号(1~16)
$PS=OK¥n
$PS=NG errno¥n
211:引数エラー
前提条件
補足事項
41
①
あらかじめIEMに登録されているプロファイル情報について
は、下記のサイトを参照のこと:
http://a3gs.wiki.fc2.com/wiki/SIM%E3%82%AB%E3%
83%BC%E3%83%89%E6%83%85%E5%A0%B1
補足
2.PROFILE READ
項目
機能分類
機能名
コマンド形式
引数
値など
PROFILE
READ
指定したプロファイル情報を読み出す
取得
$PR¥n
デフォルトのプロファイル番号を取得する
読み出し
pfileNum
【正常時】
profileNum
$PR profileNum¥n
プロファイル番号(1~16)
$PR=OK profileNum¥n
デフォルトのプロファイル番号
$PR=OK apn auth authtype pwd usr dns dns1
dns2¥n
APN名
認証情報
認証タイプ(AUTH_NONE、AUTH_PAP または
AUTH_CHAP のいずれか)
パスワード
ユーザ名
DNS情報(dns1とdns2をセミコロンで連結した
値)
プライマリDNS
セカンダリDNS
$PR=NG errno¥n
201:引数エラー
指定したプロファイル情報を読み出す
【正常時】
apn
auth
authtype
返却値
pwd
usr
dns
dns1
dns2
【エラー時】
errno
前提条件
補足事項
42
説明
補足
引数なしの時
引数指定の時
設定なしの場合は「-」を出力
同上
同上
同上
3.PROFILE RESET
項目
機能分類
機能名
コマンド形式
引数
返却値
値など
PROFILE
RESET
profileNum
【正常時】
【エラー時】
errno
説明
指定したプロファイル情報をクリアする
$PE profileNum¥n
プロファイル番号(1~16)
$PE=OK¥n
$PE=NG errno¥n
231:引数エラー
232:内部エラー(リセットエラー)
前提条件
①
補足事項
②
43
現在の実装では、常にエラー(232)となるが、リセット処理は正常
である。
本機能は工場出荷時の設定に戻す機能であるため、指定プロファイ
ルにAPN情報がプリセットされている場合は、プリセットされてい
るAPN情報は残る。
補足
コマンド仕様(7)Storage関連
44
1.STORAGE READ
項目
機能分類
機能名
コマンド形式
引数
返却値
値など
Storage
READ
no
【正常時】
ストレージからデータを読み出す
$RR no¥n
ストレージ番号(1~10)
$RR=OK nbytes¥ndata¥n
data
読み出したデータ
【エラー時】
$RR=NG errno ..¥n
701:引数指定エラー
702:データ無し(指定されたストレージにはデー
タがない)
gw3g R2.0以降のみで利用できる
errno
前提条件
補足事項
45
説明
①
補足
最大1023バイト、バイナリ
データも取扱可
2.STORAGE WRITE
項目
値など
機能分類
Storage
機能名
WRITE
コマンド形式
no
引数
data
返却値
説明
ストレージへデータを書き込む
$RW no "data"¥n
ストレージ番号(1~10)
ストレージへ書き込むデータ($エスケープされた文字列)
【正常時】
$RW=OK¥n
【エラー時】
errno
$RW=NG errno ..¥n
711:引数指定エラー
712:内部エラー
前提条件
補足事項
46
補足
gw3g R2.0以降のみで利用できる
$エスケープ前で最大1023バイ
ト
3GIMのArduino使用例
47
1.温度を測って定期的にxively.comへアップ


使用するもの

Arduino UNO

温度センサ(LM61BIZ)

ブレッドボード

ジャンパ線(やわらかい線)

3GIM(あらかじめピンヘッダを半田付けしておく)

マイクロSIMカード(3GIMで使えるもの)

3.7Vリチウムポリマ電池(充電してあるもの)、または3.7V出力可能なDC電源
xively.com は、広く利用されているIoT向
け無償のクラウドサービスです。
無償で利用する場合には、アップロード頻度等
に制約が掛かる場合があります。
接続方法

3GIMにマイクロSIMを挿入して、ブレッドボードにピンヘッダを刺す。

#6(GND)を電源(リチウムポリマ電池またはDC電源)の-とArduinoのGND、
#5(VCC)を電源の+、#4(IOREF)をArduinoの5V、#3(TX)をArduinoのD4、
#2(RX)をArduinoのD5、#1(PWR_ON)をD6に、それぞれジャンパ線で接続する。

温度センサをブレッドボードに刺して、センサのGNDをArduinoのGND、Vddを
Arduinoの5V、VoutをArduinoのA0に、それぞれジャンパ線で接続する。
48
1.温度を測って定期的にxively.comへアップ

スケッチ
赤文字の箇所は、実際のxively.comの登
録内容に沿って修正すること!
// Sample sketch for 3GIM
#include <SoftwareSerial.h>
const int PowerPin = 6; // D6
const int tmpPin = 0; // A0
const char *PostCmd = "$WP
https://api.xively.com/v2/feeds/FEED_ID/datastreams/
temperature?_method=put ";
const char *Header = "¥"X-ApiKey: API-KEY$r$nContentType: text/csv$r$n¥"";
// Global variables
uint32_t interval = 60000; // Interval time [mS]
SoftwareSerial iemSerial(4, 5);
char body[20];
// setup() -- set up device
void setup() {
pinMode(PowerPin, OUTPUT);
digitalWrite(PowerPin, LOW); // 3GIM on
iemSerial.begin(9600);
delay(40000); // wait for start up 3gim
}
49
void loop() {
// Sense temperature
int tX10 = getTemperature() * 10;
// upload sensing data to the xively.com
uploadToCloud(tX10);
// sleep a while
delay(interval);
}
float getTemperature() {
int mV = analogRead(tmpPin) * 4.88;
return ((float)(mV - 600) / 10.0);
}
void uploadCloud(int tX10) {
// upload temperature
iemSerial.print(PostCmd);
sprintf(body, "¥"%d.%d¥" ", (t / 10), abs(t % 10));
iemSerial.print(body);
iemSerial.println(Header);
iemSerial.flush();
}
2.3Gシールドのライブラリを利用する方法


概要
詳しくは、a3gs.wiki.fc2.com にて
随時情報を公開していく予定です。

3GIMが提供する機能は、3Gシールドとほぼ同等です。

そのため、Arduinoと3GIMとの接続を工夫することで、3Gシールド用の下記のライブ
ラリを使用することができます:

a3gs
UNO/Pro用(SoftwreSerialを使用)

a3gs2
Mega/Due/Leonardo用(Serial1または3を使用)
使い方

ヘッダファイルの書き換え(デフォルトのボーレートの変更)

UNOの場合


Mega/Due/ Leonardoの場合


a3gs2.hのシンボルa3gsBAUDRATEの定義を「57600」から「9600」に変更する
3GIMとArduinoとの接続方法

UNOの場合



#6をGND、#4を5V、#3をD4、#2をD5、#1を開放(何も接続しない)、に接続する
Mega/Dueの場合

#6をGND、#4を5V、#3をRX3、#2をTX3、#1を開放(何も接続しない)、に接続する
Leonardoの場合

50
a3gs.hのシンボルa3gsBAUDRATEの定義を「4800」から「9600」に変更する
#6をGND、#4を5V、#3をRX1、#2をTX1、#1を開放(何も接続しない)、に接続する
3.Arduino UNO との接続例
3.7V(PW) とGND
間違わないように
Arduino D04 → 3GIM #3
Arduino D05 → 3GIM #4
※リチウムバッテリーは長時間利用は、爆発する恐
れもありますので、充分に気を付けて利用するよう
にしてください。
【注意】ここでは特殊なジャンパワイヤを用いて
います。
51
Arduino 5V → 3GIM #4
Arduino GND → 3GIM #6
4.Arduino上での簡単な利用例

3Gシールドで紹介しているサンプルスケッチは、すべて3GIMで動かすことができます。
以下が3Gシールド用の環境とArduinoサンプルスケッチです。
解説書: IEM製品版3Gシールドライブラリ仕様書(Ver2.0)
■必要な部品:
① スルーホール用テストワイヤ
② 3.7V リチウムイオン電池
③ SIMカード(利用できるSIMはWikiページ参照)
52