3GPi(メカトラックス社)を使用してネットワークにつないでみました。3GPiは、メカトラックス社が開発したRaspberry Pi専用の3G通信モジュールで、今回はRaspberry Pi 3上で動作させました。また、SIMカードには、IoT向きの従量課金のSORACOM Airを利用しました。
ここで設定したメカトラックス3GPiで、Microsoft Azure IoThubに接続してみました。Microsoft Azureの登録から、Azure IoThub接続ソフトの作り方までをまとめて、Qiita「3GPIを 用いたAzure IoT Hub への環境データの送信」に投稿しました。よろしければ見てください。
3GPiとRaspberry Pi 3の接続
3GPiとRaspberry Pi 3の接続は、40ピンのピンヘッダで接続され、3GPiからも同様のピンが出ており、3GPi上にスタックすることができます。また、電源は12VのACアダプタが同梱されており、このACアダプタからRaspberry Piの本体にも電源が供給されます。次に、3GPiをスタックしたRaspberry Pi 3を示します。右側には、ナノSIMタイプのSORACOM Airと3GPiに挿入するためのSIM変換アダプターを示します。
Raspberry Pi 3に3GPiを接続して、同梱されている接続設定済Raspbian入microSDカードを、Raspberry Pi 3のSDカードスロットに挿入して電源を投入すると、Raspbianが起動し、ログインのプロンプトが表示され、ここでユーザIDとパスワードを設定して、Raspberry Piのログインが完了します。
SORACOMの登録
SORACOMのSIMカードはAmazonから購入しました。このSIMカードはそのまま3GPiに設定しても通信を開始しません。SORACOM のユーザーコンソールを利用して、管理対象の Air SIM を登録する必要があります。
まず、SORACOM アカウントを作成し、SORACOM アカウントにログインからログインすます。次に、メイン画面上部のユーザー名から[お支払い方法設定]を開き 、料金を支払うクレジットカードを登録します。次に、SIM登録ボタンを押して、Air SIM の台紙の裏面に貼ってある IMSI と PASSCODE を入力します。各情報を設定すると、次のような画面が表示され、SORACOM Airが利用できる環境が整います。
状態が「準備完了」となっているので、画面トップに表示された「操作」ボタンを押して「使用開始」を選択します。状態が「使用中」になり、データ通信できる状態になります。
画面トップに表示された「操作」ボタンを押して「休止」を選択すると、状態が「休止中」になり、データ通信できなくなります。nmcliコマンドあるいはifconfigコマンドの表示には、ppp接続が表示されません。この状態では、通信料金は基本料金のみになります。
Network Managerコマンドを用いた3GPiからSORACOM Airへの接続
次のようにNetwork Managerコマンド「nmcli 」で3GPiからSORACOM Airへ接続します。
$ sudo nmcli con add type gsm ifname “*” con-name soracom3g apn soracom.io user sora password sora
nmcliコマンドを用いると、次のように接続を確認できます。3GPiでppp接続されていることが確認できます。
$ nmcli c NAME UUID TYPE DEVICE gsm-3gpi-iij 38298e50-ec1f-4ebf-81cf-dd1d35e3acf0 gsm -- gsm-3gpi-soracom 9c14b0aa-0cb8-4b08-8c02-08c73b95cabd gsm ttyUSB3 soracom3g 6a3d9e17-e66e-427e-9050-752d3b54283c gsm -- ppp0 ca1bd9d6-87b7-44ad-9672-6b0869f532d3 generic ppp0 soracom3g 7498c543-444b-451d-b66d-d636311476f3 gsm --
「DEVICE」に「ttyUSB3」が表示されない場合は、3GPiとRaspberry PiがUSBケーブルで接続されているか、SIMソケットにSIMカードが挿入されていいるかを確認してください。
「DEVICE」に「ppp0」が表示されない場合は、SORACOMへの登録が正常に行われているかを確認してください。
次のifconfigコマンドでppp0にIPアドレスが割り当てられているかを確認します。inet addrにIPアドレスが割り当てられていることが確認できます。
$ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:84:4a:ba inet addr:192.168.0.50 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::ba27:ebff:fe84:4aba/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:163 errors:0 dropped:0 overruns:0 frame:0 TX packets:190 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:16946 (16.5 KiB) TX bytes:21569 (21.0 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) ppp0 Link encap:Point-to-Point Protocol inet addr:10.180.248.128 P-t-P:10.64.64.64 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:7 errors:0 dropped:0 overruns:0 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:130 (130.0 B) TX bytes:321 (321.0 B) wlan0 Link encap:Ethernet HWaddr b8:27:eb:d1:1f:ef UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:56 errors:0 dropped:56 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:23548 (22.9 KiB) TX bytes:0 (0.0 B)
パソコンからSSHでログインしてソフトウェア開発がしやすいように、パソコンとeth0で接続しています。3GPiでの接続時には、LANケーブルを外して動作を確認する必要があります。
pingコマンドによりppp接続が正常に行われているかを確認します。
$ ping 10.180.248.128 PING 10.180.248.128 (10.180.248.128) 56(84) bytes of data. 64 bytes from 10.180.248.128: icmp_seq=1 ttl=64 time=0.135 ms 64 bytes from 10.180.248.128: icmp_seq=2 ttl=64 time=0.101 ms 64 bytes from 10.180.248.128: icmp_seq=3 ttl=64 time=0.048 ms 64 bytes from 10.180.248.128: icmp_seq=4 ttl=64 time=0.053 ms 64 bytes from 10.180.248.128: icmp_seq=5 ttl=64 time=0.066 ms 64 bytes from 10.180.248.128: icmp_seq=6 ttl=64 time=0.045 ms 64 bytes from 10.180.248.128: icmp_seq=7 ttl=64 time=0.049 ms 64 bytes from 10.180.248.128: icmp_seq=8 ttl=64 time=0.042 ms 64 bytes from 10.180.248.128: icmp_seq=9 ttl=64 time=0.037 ms 64 bytes from 10.180.248.128: icmp_seq=10 ttl=64 time=0.053 ms ^Z [1]+ Stopped ping 10.180.248.128