Raspberry Pi Zero (W) + USB セルラーモデムで SORACOM に接続する

Raspberry Pi Zero (W) にセルラーネットワークを!

Raspberry Pi Zero (W 含む) ※でセルラーネットワークを使う例を見つけられなかったので試してみました

※以下、RPi Zero と表記します

ちなみに: 試してないのですが Raspberry Pi Zero (Wi-Fi や Bluetooth が無いモデル) でも動くはずですので、 → Raspberry Pi Zero でも動きました! (4/9)

TL;DR

下記の組み合わせで動きました

Raspberry Pi OS USB セルラーモデム SIM
RPi Zero Raspbian Stretch Lite (March 2018) AK-020 日本向け SORACOM Air SIM
RPi Zero Raspbian Stretch Lite (March 2018) MS2131i-8 日本向け SORACOM Air SIM
RPi Zero Raspbian Stretch Lite (March 2018) MS2131i-8 グローバル向け SORACOM Air SIM
  • 実は「グローバル向け SIM」は、日本国内でも使うことができるんです

図は一番最初の組み合わせ (RPi Zero + AK-020) の接続の様子です。ちなみに GPIO に刺さっているのはシリアルコンソール用のケーブルです

IMG_0617.JPG

やり方

SORACOM のサイトに掲載されている Raspberry Pi + USB モデム で動かす の手順で動きます(あっさり)

TIPS

RPi Zero を利用する際には USB OTG によるネットワークアクセスの有効化GPIO によるシリアルコンソールの有効化 をしておくと非常に便利です

USB OTG によるネットワークアクセスの有効化

RPi Zero は USB OTG (On-The-Go) に対応しています
※なぜか 3 とかは対応していない...

細かい話は Windows10でRaspberry Pi Zero (W) をOTGを使ってセットアップする をご覧ください

bootパーティション/cmdline.txtを変更
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=a8fe70f4-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init=/usr/lib/raspi-config/init_resize.sh

modules-load=dwc2,g_ether が追加されている

bootパーティション/config.txtへ追記
# USB Gadget
dtoverlay=dwc2

GPIO によるシリアルコンソールを有効化

USB OTG を利用すると、USB ポートを占有してしまいます(あたりまえ)
この状態では USB セルラーモデムを使えませんが、逆にモデムを使おうとするとコンソールが使えなくなるという、渋い状況になってしまいます※

そのためシリアルコンソールを使えるようにしておくと便利です

bootパーティション/config.txtへ追記
# OnBoard Serial
dtoverlay=pi3-miniuart-bt

※若干お金はかかりますが SORACOM GatePublic Gate を使えば ssh 等のリモートアクセスは可能です

USB OTG と GPIO シリアルコンソールを有効にした config.txt の末尾は以下の通りになってるはずです

bootパーティション/config.txtの末尾
# USB Gadget
dtoverlay=dwc2
# OnBoard Serial
dtoverlay=pi3-miniuart-bt

setup_air.sh の実行について

手順では USB セルラーモデムを接続してから setup_air.sh を実行する となっていますが、実はどんな状態でも setup_air.sh は実行可能ですので、 USB OTG で接続した状態 (= USB セルラーモデムは接続していなくても) setup_air.sh を実行しても大丈夫です

ただし必要なソフトウェア (wvdial などの deb パッケージ) をダウンロードしますので PRi Zero からインターネットに接続できるようにはしておいてください

たとえば USB OTG で接続した状態でPCやMacのインターネット共有を利用すればインターネットに出られます

Raspberry Pi Zero W であれば wpa_supplicant.conf による Wi-Fi 接続も有効な方法です

消費電力について

ちょっと心配になったので 簡易電力計 で RPi Zero の消費電力を計ってみました

計測環境 (AK-020);

Raspberry Pi Zero W + Raspbian Stretch Lite (March 2018) + AK-020

操作 max avg
apt update 0.41 A 0.32 A
curl -o /dev/null ubuntu.iso 0.36 A 0.32 A

計測環境 (MS2131i-8);

Raspberry Pi Zero W + Raspbian Stretch Lite (March 2018) + MS2131i-8

操作 max avg
apt update 0.36 A 0.30 A
curl -o /dev/null ubuntu.iso 0.36 A 0.30 A
  • max や avg はそれぞれ、目視してた時の最大とそこそこの平均になります

AL-020 の方がちょっと高めでしょうか。通信側の負荷と共に OS やディスクに対するアクセスもありますので高めですね
とはいえ、このくらいなら連続運用や負荷が高くなっても大丈夫そうです
加えて setup_air.sh を使ってセットアップしたのならば、再起動時に接続してくれるようになるので、 crontab あたりに @reboot エントリーを書いておいて通知させるのもいいのではないでしょうか(ちょっと弱腰)

あとがき

Raspberry Pi Zero (無印) が家に転がっててよかった。

EoT

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.