Plus電子デバイス・電子工作用語集モータドライバ博士のQ&A読者よりいただいたお問い合わせを元に、ロボット製作者、エンジニアのみなさんに役に立つ技術解説を発信していきます。Plus電子デバイス・電子工作用語集モータドライバ博士のQ&A読者よりいただいたお問い合わせを元に、ロボット製作者、エンジニアのみなさんに役に立つ技術解説を発信していきます。AIRのSIMカードを利用して、今回は実際にArduinoで3G通信を試してみます。今回利用する3G通信のためのモジュールはSORACOM認定モジュールにもなっているTABrain社の3GIMを使います。TABrain社の3G通信モジュール3GIM(Ver2.1)前回もSORACOM認定モジュール一覧のところで紹介しましたが、現在Arduinoで3G通信を考えた場合、選択肢があまりないのが現状です。その中でも、技適が通っていて国内で利用が可能なモジュールの一つであるTABrain社の3GIMを今回使ってArduinoで3G通信をしてみます。Air、DTI、So-net(0SIM含む)、BiglobeなどのSIMカードでの利用が可能になっています。3GIMの特徴3GIMの特徴をあげると、サイズが小さい電力消費量が少ないArduinoでのライブラリ・サンプルスケッチなどが充実しているUART通信が可能GPSモジュールも搭載しているという点があげられます。今回利用するArduinoのサンプルやドキュメントはサイト上およびマニュアルでかなり充実しているので、Arduinoで3G通信をするのに最適なモジュールとなっています。機内モード設定機能HL8548-GのATコマンドスルーパスモード切換え機能GPS位置情報(GPS/GGLONASS)の取得と、豊富な機能を利用することが可能です。3GIMをArduinoで使ってみるある程度の概要がわかったところで、さっそく3GIMを使ってArduinoで3G通信をしてみたいと思います。3GIM本体と3G用アンテナ・GPS用アンテナ3GIMは、本体に3G通信用のアンテナと、GPSアンテナ(別売)を接続して利用します。アンテナ接続箇所また、本体には端子が6つあり、それぞれ写真のような役割を持っています。実際に利用する場合は、同封されているピンヘッダをこの6ピンに対してはんだ付けしてブレッドボードなどにさして利用すると便利です。2016年12月5日より3GIMのversion2.1の販売が開始されています。V2.1では、これまでのバージョンでは最低電圧が3.3V~4.2Vではなく3.6V~4.2Vだったため、Arduinoから直接電源を取ることができず電源回路を作成する必要があったのですが、今回のバージョンから下が3.3Vとなったため、Arduinoと直接つなぐことができ(電流は1A程度の確保が必要)、回路がすっきりするようになりました。3GIMはArduinoとUARTによるシリアル通信を行い操作が可能であり、送信のやりとりを行うUARTのインタフェースRX(受信)、TX(送信)はArduinoのD4、D5ピンを利用します。今回1番のPWR_ONは後ほどプログラム側で指定しますがD7ピンを接続しました。これで、Arduinoと3GIMの接続が完了したので、SIMカードとプログラムの準備に移ります。AirのSIMカードを利用できる状態にしておきます。SIMカードの登録などの手順はSORACOMのサイトやラズベリーパイ入門で詳しく取り上げていただいているので、そこを参考に進めてみてください。3GIMで利用できるSIMカードのサイズはmicroSIMのサイズなので、nanoSIMなどの場合は、写真のようにアダプタを装着する必要があります。3GIM本体のSIMソケットとSIMカードプログラム側の準備プログラム側では、3GIMのサイトからライブラリをダウンロードして追加しておく必要があります。最新版のライブラリは下記のページのダウンロード・技術情報の項目からダウンロードが可能です。UNOで利用するライブラリは「a3gim_R4.1.zip」が最新です。UNO用3GIMライブラリダウンロードしたzipをArduinoのIDEの上部メニュー「スケッチ」-「ライブラリをインクルード」-「.zipのライブラリをインストール」を選択して追加してください。Arduino側へのライブラリの追加が完了したら、Arduinoで3GIMを使うための準備が完了です。サンプルスケッチを動かしてみる実際にサンプルスケッチを動かしてみます。IDEの「ファイル」-「スケッチの例」のリストに「a3gim」という項目ができていますので、その中のサンプルを動かして、3GIMを動作させてみます。具体的な関数の役割など関しては、次回以降、実際にプログラムを作成しながら理解していきます。blink_ledまず3GIMが正常に接続できているか確認する意味でも、3GIMモジュール上のLEDをLチカさせるプログラムです。ENDsetup関数内で3GIMの初期化や利用のための設定を行った後、loop関数内a3gs.setLED(true);とa3gs.setLED(false);部分でLEDをオンオフしているプログラムとなっていますね。動作させると動画のようにLEDがチカチカします。次は、3GIMに搭載されているコマンドをシリアルモニターを利用して操作するプログラムです。3GIMのマニュアルに掲載されているコマンド一覧をもとに、SORACOMのSIMカードを3GIMに設定してみます。3GIM(v2)」と表示されますので、その後コマンド入力が可能です。コマンド送信のためシリアルモニターの改行コードを「CRおよびLF」にした上で、$から始まるコマンドを送信してみてください。ここでは、下記のコマンドを入力した結果になります。最初、準備が完了する前に$YTコマンドを送信していますが、準備完了前なので、反応がなく、何も出力は表示されていません。+GET」となっています。これは、SIMカードの3GIMへの設定がまだなので、NGとなっています。AirのAPN設定をします。設定が完了後、改めて$YTコマンドで現在の時刻取得を行うと成功して現在の時刻が表示されていることがわかります。Airの管理画面を確認すると、時刻取得時に発生した、データ通信が計測されていることが確認できました。Airのデータ通信料これで、Arduinoで3GIM使って3G通信、ようやくスタートラインに立つことができましたね!まとめ今回は3GIMの準備から簡単なサンプルスケッチの動作までを学びました。赤川シホロ電子工作や新しいデバイスをこよなく愛するエンジニア。日常生活のちょっとしたことを電子工作で作って試して、おもしろく過ごしたいと日々考えています。