本マニュアルは、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
© Copyright 2024