Raspberry Pi Zero (W) にセルラーネットワークを!
Raspberry Pi Zero (W 含む) ※でセルラーネットワークを使う例を見つけられなかったので試してみました
※以下、RPi Zero と表記します
ちなみに: 試してないのですが Raspberry Pi Zero (Wi-Fi や Bluetooth が無いモデル) でも動くはずですので、 → Raspberry Pi Zero でも動きました! (4/9)
- (2019/12/27 追記) オンデマンド・リモートアクセスサービス SORACOM Napter について追記してあります
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 に刺さっているのはシリアルコンソール用のケーブルです
やり方
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を使ってセットアップする をご覧ください
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
が追加されている
# USB Gadget
dtoverlay=dwc2
GPIO によるシリアルコンソールを有効化
USB OTG を利用すると、USB ポートを占有してしまいます(あたりまえ)
この状態では USB セルラーモデムを使えませんが、逆にモデムを使おうとするとコンソールが使えなくなるという、渋い状況になってしまいます※
そのためシリアルコンソールを使えるようにしておくと便利です
# OnBoard Serial
dtoverlay=pi3-miniuart-bt
※若干お金はかかりますが SORACOM Gate や Public Gate を使えば ssh 等のリモートアクセスは可能です
USB OTG と GPIO シリアルコンソールを有効にした 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 接続も有効な方法です
消費電力について
RaPi Zero WにUSBドングル刺したら電源足りなくて落ちるって聞いたことあるけど普通に動くのか。知見。 https://t.co/0cknHPMrlO
— masato_ka (@masato_ka) 2018年4月9日
ちょっと心配になったので 簡易電力計 で 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
エントリーを書いておいて通知させるのもいいのではないでしょうか(ちょっと弱腰)
設置後のメンテは? / SORACOM Napter
Raspberry Pi Zero は USB ポートが1つしかありません。そのため、セルラーモデムをつなげてしまうと、OTG 経由でログインできないので、メンテナンスどうする?という課題が発生します。
が、2019年7月の新サービス「SORACOM Napter」を利用することで、セルラー通信している Raspberry Pi Zero に SSH 等でログインすることができるようになりました。
利用方法は SORACOM Napter を利用してIoTデバイスにSSHログインする をご覧ください。無料枠があります!
あとがき
Raspberry Pi Zero (無印) が家に転がっててよかった。
EoT