Raspberry Pi Zero 2 Wは、コンパクトながら高い性能を誇るシングルボードコンピュータです。
その小型設計と強力なスペックにより、多種多様なプロジェクトで活用されています。
特に、スペースに制約がある環境や、低コストで柔軟なプロジェクトを実現したい開発者にとって、理想的な選択肢となるでしょう。
本記事では、Raspberry Pi Zero 2 Wの性能や利用アイディア、セットアップ方法、さらにはその活用方法における注意点について詳しく解説します。
Raspberry Pi Zero 2 Wの性能
CPUとメモリ
Raspberry Pi Zero 2 Wは、1GHzのクアッドコアARM Cortex-A53プロセッサを搭載しており、従来のシングルコア ARM v7を試用していたZeroシリーズと比較して約5倍のパフォーマンス向上を実現しています。
このプロセッサの構成は、シングルスレッド性能だけでなく、マルチスレッドタスクにも対応可能で、軽量なOSを使用することでそのパフォーマンスを最大限に引き出すことができます。
また、512MBのRAMは小規模なサーバーやIoTデバイスの構築に最適であり、簡易なプログラミングプロジェクトにも十分対応可能です。
さらに、Zero 2 Wは、軽量かつ効率的な設計を維持しながら、エネルギー消費を最小限に抑えています。
このため、モバイルアプリケーションや長期間稼働するデバイスの構築にも適しています。
ストレージと拡張性
Raspberry Pi Zero 2 WのストレージはmicroSDカードに依存しており、カードの選択がデバイスのパフォーマンスに直接影響します。
特に、読み取りおよび書き込み速度の速いカードを使用することで、OSの起動時間やアプリケーションの応答速度を向上させることができます。
また、GPIOピンやmini HDMIポート、micro USBポートを活用することで、センサー、ディスプレイ、外部デバイスなどとの接続が可能となり、さまざまなプロジェクトに対応する柔軟性を提供します。
特筆すべきは、Zero 2 Wの拡張性の高さです。例えば、OTGケーブルを使用することで、外付けストレージやその他のUSBデバイスを接続し、プロジェクトの幅をさらに広げることができます。
無線通信
Raspberry Pi Zero 2 Wには、Bluetooth 4.2およびWi-Fi(2.4GHz)が内蔵されており、ケーブルを必要としない接続環境を簡単に構築できます。
この無線通信機能は、IoTプロジェクトやネットワーク接続が求められるシナリオにおいて特に有用です。
また、Bluetoothを使用することで、ワイヤレスキーボードやマウス、その他の周辺機器を簡単に接続できます。
無線機能を活用することで、物理的な制約がある環境でも柔軟に運用できるため、Zero 2 Wはモバイルアプリケーションや分散型ネットワークプロジェクトにおいても優れた選択肢です。
Raspberry Pi Zero 2 Wを活用したプロジェクト例
1. メディアサーバーの構築
Zero 2 Wを使用して、動画や音楽のストリーミングサーバーを構築できます。mini HDMIポートを利用してテレビやディスプレイに接続し、Kodiなどのソフトウェアをインストールすることで、手軽に簡易なメディアセンターを実現できます。
これにより、自宅のメディアファイルを統合的に管理し、複数のデバイスでストリーミング再生を楽しむことが可能です。
また、NAS(ネットワークアタッチトストレージ)としても活用でき、家庭内のファイル共有を効率的に行うことができます。
2. ホームオートメーション
GPIOピンを活用し、スマートホームデバイスのコントロールセンターを作ることも可能です。
例えば、温度センサーやモーションセンサーを接続して、照明や暖房を自動制御する仕組みを構築できます。
さらに、ネットワーク経由でスマートフォンからデバイスを管理することで、利便性を向上させることができます。
また、他のスマートホームプラットフォーム(例:Home Assistant)と統合することで、さらなる自動化を実現することも可能です。
3. ポータブルなプログラミング環境
小型設計を活かし、携帯可能なプログラミング環境として活用できます。
microSDカードに軽量なLinuxディストリビューションをインストールし、PythonやC言語での開発を行うことが可能です。
この用途では、キーボードやマウス、モニターを接続するだけで、簡単にコーディング環境をセットアップできます。
教育用途として、子供や初心者にプログラミングを教えるためのモバイル開発環境を提供することも可能です。
4. 簡易なウェブサーバー
Raspberry Pi Zero 2 Wは、NginxやApacheを用いて小型ウェブサーバーとして使用できます。
個人のブログやプロトタイプのウェブアプリケーションのホスティングに最適です。
特に、低コストで稼働可能なため、学習目的やテスト環境としても理想的な選択肢です。
また、独自ドメインを設定し、簡易なウェブサイトを運用する実践的な方法としても利用できます。
5. 小型カメラデバイス
Raspberry Piカメラモジュールを接続し、監視カメラやタイムラプスカメラとして活用できます。
無線LAN機能を利用すれば、撮影データをクラウドに保存することも可能です。
このようなカメラデバイスは、防犯対策や自然観察、プロジェクト記録など、さまざまなシナリオで活用されています。
さらに、顔認識ソフトウェアを組み合わせることで、高度な画像処理アプリケーションにも対応できます。
6. 教育目的の利用
Zero 2 Wは、プログラミングやエレクトロニクスの学習環境としても非常に適しています。
センサーやモジュールを接続することで、学生や初心者が実践的なスキルを身に付ける機会を提供します。
また、低コストで入手可能なため、多人数でのワークショップにも最適です。
特に、STEM教育の場で活用されることが多く、ハードウェアとソフトウェアの両方に触れる貴重な学習体験を提供します。
セットアップにおける注意点
電源供給の重要性
Raspberry Pi Zero 2 Wのセットアップ時には、安定した電源供給が重要です。
信頼性の高い5V 2A対応のUSB電源アダプタを使用することで、デバイスのスムーズな動作を確保できます。
不適切な電源を使用すると、予期しないシャットダウンやデータ破損の原因となる可能性があるため注意が必要です。
OSのインストール
公式のRaspberry Pi Imagerを使用して、最新バージョンのRaspberry Pi OSをmicroSDカードに書き込むことを推奨します。
OSのインストール後は、ネットワーク設定やシステムアップデートを忘れずに行い、最適な環境を整えましょう。
また、必要に応じて、プロジェクトに適した特定のOS(例:Ubuntu Server、DietPiなど)を選択することも検討してください。
周辺機器との互換性
デバイスと接続する周辺機器(例:キーボード、マウス、ディスプレイ)がZero 2 Wに適しているか確認することが重要です。
特に、HDMI変換ケーブルやUSB OTGアダプタを使用する場合、品質の高いアクセサリを選ぶことでトラブルを未然に防ぐことができます。
Raspberry Pi Zero Wを活用するレシピ
Raspberry Pi Zero Wは、手のひらに収まるサイズながら、Wi-FiやBluetoothを搭載し、多彩なプロジェクトに対応できる小型コンピュータであり、Raspberry Pi Zero 2Wのご先祖です。
その低価格と高い拡張性から、電子工作やIoT分野で幅広く活用されていました。
以前、Raspberry Pi Zero W関連の記事を公開していましたが、後継機であるRaspberry Pi Zero 2Wでも使用することができます。
初心者の方でも取り組みやすい内容となっていますので、ぜひ参考にしてみてください。
Node.JSが使える!
一部のファンの間で人気なのが、このNode.JSですが、Raspberry Pi Zero Wで使う場合には、注意が必要です。
Raspberry Pi Zero Wは32ビットらしく、32ビット版のNode.jsをダウンロードしてインストールしなければなりません。
もちろん、クアッドコアのRaspberry Pi Zero 2Wは、64ビット版を使う必要があります。
ただ、2021年4月時点ではバージョンが違っているので、公式のこちらからバージョンを確認する必要があります。
※インストールの手順ですが、ターミナルから、下記を順番に実行してください。
wgetでNode.JS関連のファイルをダウンロードします。現在の最新バージョンはNode.JSの公式サイトから調べてくださいね。
Tarを使って解凍します
解凍されて出てきたディレクトリに移動
sudoで/usr/local/にNode-JS関連のファイルをコピーします。
念のためバージョンを確認する
念のためバージョンを確認する
※Node-JSのバージョンが変わった場合、お作法も変更となる可能性もありますので、ご注意ください。
WebIOPiも動かせる
ネットを使って、ラズパイのIOを制御するための方法ですが、お手軽に操作するものにWebIOPiというものが存在します。
WebIOPiなるものはメンテされていないようで、サイトのリンクは、全く使えない状態というもの。
最新版は2015年2月10日にアップデートされた0.7.1というものが最後のようです。
ホント大丈夫かいな?
導入手順は、次の通りにコマンドを実行します。(ここをタップすると見られます)
WebIOPi関連のファイルをダウンロードします
Tarを使って解凍します。
解凍されて出てきたディレクトリ(WebIOPi-0.7.1)に移動
ディレクトリ(WebIOPi-0.7.1)にあるはずのsetup.shを管理者権限で実行します
Do you want to access WebIOPi over Internet ? [y/n] と表示されるので、「n」+エンターとします。
これはインターネット経由で使えるようにするためのオプションらしく、raspberrypi ZERO WHで「y」+エンターとした場合、「ログインせよ!」(英語で)と煽ってきて止まりません。
他のラズパイだった場合は、「Weaved IoT Kit」なるものがインストールされるようです。
/etc/systemd/system/に移動します
WebIOPi をサービスとして開始するためにのためのファイルをダウンロードします。
wgetが実行できなかった場合は、「sudo wget~」とすると実行できるはずです。
ホームディレクトリに移動します。
サービスを開始します。
これで、raspberrypi ZERO WHがサーバーとなり、WebIOPiが使えるようになります。
上記9番で指示しているコマンドを入力しても、うまく関連ファイルが生成できずサービスが起動しない場合があります。
その場合は、/etc/systemd/system/にあるwebiopi.service.*(「*」は数字)というファイルを全て削除してから、7番の手順をやりなおせばOK
PCのブラウザを開き、raspberrypi ZERO Wをアクセスします。
スマホでもOKですよ!
raspberrypi ZERO Wは、予めネットにつないでおいてくださいね。
ブラウザのURLを入力するところに、
http://{raspberrypi ZERO WのIPアドレス}/8000と入力します。
例)raspberrypi ZERO WのIPアドレスが、192.168.0.10だったばあいは、http://192.168.0.10/8000
※デフォルトでは、8000番ポートを解放するようになっています。
成功すると、下記のような表示が出てきます。
GPIO Headerをタップ(クリック)すると、ラズパイの出力が操作できる画面になります。
画面を見ながら、実機の状態を確認してください。
WebIOPiは、少々不安定なところもあるようなので、実用される方はご注意くださいね。
この状態では、VPNで自宅に接続すれば、宅外からラズパイの操作が可能です。
フレッツ光ではVPNサーバーを簡単に立てることが可能ですが、Nuro光では残念ながらVPNが使えません。
そのため、ポート開放+固定IPでネット接続する方法になりますが、セキュリティ的に非常に問題があるので、ここでは敢えて言及しません。
Raspberry Pi Zero Wオプションについて
拡張ボードでUSB A+イーサネットを拡張
Raspberry Pi Zero Wは小型ゆえに、ポートが少ないのは否めません。
そこで、Raspberry Pi Zero用のUSB Ethernet HUB 拡張ボードが安かったので購入しました。
コイツが優れているのは、USB Aを3ポートだけでなく、イーサネットポートまで付いている所なのだ。
挿すだけでイーサネットが認識してしまうので、非常に便利。
イーサネットポートが付いていないRaspberry Pi Zeroには、ピッタリです。
Raspberry Pi Zero Wもイーサネットポートがないので、便利ですよ。
\ETHERNET&USBポートを増設しよう!/
USB Ethernet HUB 拡張ボードの欠点
シリアルポートを使うモジュールも繋ごうとしていた所、全く反応しないのです。
Raspberry Pi Zero W単体では動いていたのに…。
ピンヘッダーの勘合が少しきつめなのです。
もう一つ、拡張ボードが外れず、一生懸命外そうとしたら、ポキッという感触が。
ラズパイのOSが入ったマイクロSDカードが割れてしまったのです。
こういうことが起こるので、USB Ethernet HUB 拡張ボードを抜き差しする人は、くれぐれもラズパイに入れているマイクロSDカードを外してくださいね。
Raspberry Pi Zero WをUSBドングルにする
Raspberry Pi Zero Wは、そのままの状態だとかなり使い勝手の悪く閉口していました。
ある日、Raspberry Pi Zero Wをドングル化できるボードキットなるものが売られているのに気づきました。
実際使ってみると、PCに直付けすれば、無駄なケーブルが要らなくなるので、非常に使い勝手がよくなりました。
これはおすすめです!
便利オプション紹介
Amazonには、様々なものが販売されていますが、RaspberryPi Zeroシリーズというかなりマニアックなものでもオプションが販売されていることに気づきます。
RaspberryPi Zero用に販売されている便利オプションを紹介します。
電子ペーパー モジュール
RaspberryPi Zeroシリーズ用のHAT(モジュール)で、なんと電子ペーパーが使えます。
液晶やOLEDといった色々な表示部品がありますが、いずれも表示が消えないようプログラムを気を付ける必要があります。
しかし、電子ペーパーだと、電源を消しても、表示したら消去するまでは、ずっと表示されるので、消費電流を抑えたい一部デバイスに搭載されています。
創作意欲が湧きそうな逸品ですね!
LCD ディスプレイ スクリーン モジュール
1.3インチという超小型のIPS LCDカラーディスプレイ+操作系です。
SPIインターフェースを使うもので、メーカーサイトによれば64ビットのラズパイであれば、ドライバーの関係上X windowの画面も出せるようです。
旧型のRaspberryPi Zeroシリーズは32ビットなので無理ですが、RaspberryPi Zero2シリーズは64ビットなので、可能かも?
例え、X windowが出せなくとも、小型カラー液晶が必要な向きもあるでしょうから、こちらも有用と言えますね。
UPS電源モジュール
これは、リチウム電池を利用した外部電源です。
通常の外部電源の場合、SDカードにアクセスしている際に、電源が切れると、最悪はカーネルパニックとなり、起動できなくなることもあります。
このHATには、オンボードRTCが搭載されており、誤操作やシステム不安定によるデータの変動を防ぐため、RTCにはライトプロテクト機能が搭載されているので、安心です。
RTCの恩恵で、電池容量のある限りは、正確な時刻を記憶し続けます。
ヒートシンク
Raspberry Pi Zero 2シリーズ用のヒートシンクですが、たまたま形状が一緒なので、旧型のRaspberry Pi Zeroシリーズでも使用可能。
重い処理をさせた際、CPUがチンチンになってしまった場合は、非常に有効です。
インターフェースが他のラズパイと共通なので、その他のHATも使用できる可能性があります。
カメラモジュールもラズパイ用であれば、使用可能ですよ!
秋月のGPSモジュールを使う!
秋月のGPSモジュールというのをゲットしていたのですが、RaspberryPi Zero Wで使えないか…と思い、他のラズパイで使っている人がいたので、その情報を参考にチャレンジしてみました。
作業手順
作業手順としては、次の通りです。
RaspberryPi Zero Wの4,6,8,10,12ピンに秋月のGPSモジュールの+5V,GND,RXD,TXD,1PPSにそれぞれ繋ぎます。
横並びに接続するので、配線しやすくなっています。
タイプパルスを使わない人は、1PPSへの配線は不要です。
コンソールをserial0からtty1へ変更するため、nanoなどのテキストエディタを使って、bootディレクトリにあるcmdline.txtを編集。
- 「dwc_otg.lpm_enable=0 ~」という記述の箇所の先頭に#を付けて、コメントにします。#dwc~のように。
- 下記のコマンドを追記します。
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
ターミナルに戻り、systemdの設定を変更し、シリアルコンソールを無効化するため、下のsystemctlの呪文を順番に唱えていく。
- sudo systemctl stop serial-getty@ttyS0.service
- sudo systemctl disable serial-getty@ttyS0.service
bootディレクトリにあるconfig.txtをテキストエディタで編集。
下記を一番最後の行に追加し、UARTを有効にする。
enable_uart=1
bootディレクトリにあるconfig.txtへ更に下記を追記します。
これはPPSというものを用いて、GPSの精度を上げるためのものです。
dtoverlay=pps-gpio,gpiopin=18,assert_falling_edge=true
etcディレクトリにあるmodulesをテキストエディタで編集します。
最終行にpps-gpioを追加。
pps-gpio
設定したものを有効にするため、一旦rebootコマンドで再起動させます。
再起動したら、GPS関連のアプリをインストールする。
sudo apt-get install gpsd gpsd-clients pps-tools
(または sudo apt install gpsd gpsd-clients pps-tools)
etc/defaultディレクトリにあるgpsdをテキストエディタで編集し、gpsdの接続デバイスとオプションを修正します。
GPSモジュールにバッテリーを接続、ポーリングは行わないため、3行目にあるGPSD_OPTIONSを「-n」とし、逆にポーリングする場合は、「-y」とします。
START_DAEMON=”true”
DEVICES=”/dev/ttyS0 /dev/pps0″
GPSD_OPTIONS=”-n”
systemctlコマンドでgpsd.socketを有効に。
sudo systemctl enable gpsd.socket
設定したものを有効にするため、rebootコマンドで再起動させます。
8番の手順でpps-toolsをインストールした場合は、pps-toolsが使えます。
起動させれば、GPSがきちんと電波を捉えられているか確認できます。
sudo ppstest /dev/pps0
※電波が捉えられていない場合は、それっぽい数字が出てきませんので、ダメだった場合は配線などもチェックしてください。
12番でGPSモジュールのセットアップは終了なのですが、更に細かい動作を確認するには、下記コマンドで確認できます。
cgps -s
自分の位置情報を始め、補足している衛星のナンバーや衛星位置情報も瞬時に分かるようになります。
サイトによっては、同じ動作確認用にgpsmonというアプリをお勧めしていますが、RaspberryPi Zero Wでは全く動作しなかったので、cgpsでお試しくださいね。
pythonなどでアプリを作って動かそうとすると、データが出てこない事態が発生する場合があります。
先に紹介したcgpsなどがポートを占有してしまうようで、データが全く取れない状態になるのです。
その場合は、再起動すれば解決されますよ!
秋月のGPSモジュールを使えば、RaspberryPi Zero Wと組み合わせることにより、小型のGPSができそうですね。
GPSモジュールを使うためのPythonのコツ
先のGPSモジュールに関するセッティングを行ってから、こちらのサイトの記事にある「Pythonのシリアルモジュールをインストールする」からセッティングすることになります。
作業手順
手順としては、次の通りになります。
下記を実行して、pyserialモジュールをインストールします。
pip install pyserial
キチンとpyserialがインストールされたか確認するため、Python3を起動し、ポチポチと次のようなプログラムを入力していきます。
このプログラムは、シリアルポートに接続し、GPSモジュールから出力されたものを表示(print)するという簡単なものです。
python3
>>> import serial
>>> s = serial.Serial(‘/dev/serial0’, 9600, timeout=10)
>>> print(s.readline())
…すると何か文字が出てくるはず
※赤文字は自分で入力する所
これで問題なければ、Pythonを使ったシリアル通信が可能になりました!
2番までだと、変な文字列が表示されるだけなので、GPS用データ解析ライブラリを入れて、データを見やすくします。
私は、micropyGPSというものを使いました。
インストール方法は、下記のコマンドで可能です。
pip install git+https://github.com/inmcm/micropyGPS.git
Pythonを起動するディレクトリか、自分の作ったプログラム(.py)と同じディレクトリにmicropyGPSをコピーするようにしてください。
先にリンクの貼った記事にある位置情報を確認するアプリを試しに入力してみます。
きちんと緯度経度を始め、補足した衛星の位置情報などが表示されればOKです。
3秒毎に更新されます。
RaspberryPi Zero Wが起動できなくなったら
ある日突然、RaspberryPi Zero Wが起動できなくなる事態が発生しました。
そこには「カーネルパニック」なる文字が。
カーネルパニック (kernel panic; KPとも呼ばれる[1]) とは、コンピュータのオペレーティングシステムのカーネルが内部の致命的なエラー (英語版) を検出したときに取る安全対策である。カーネルパニック – Wikipedia
どうにかできないかググってみたところ、
このメッセージをグーグルで調べてみると、どうやらSDカードが問題を起こしている可能性が高そうです。いくつかのサイトでは、新しくSDカードを購入して新しいOSイメージを入れてraspberry piに接続したら正常に動いたと書いてあります。
ただ、これまでOSに設定してきた内容を無にしたくない!と思い、さらに調べてみると、別OSでmicroSDをマウントしてfsckをかける方法を試している人がいます。raspberry piでend Kernel panic – not syncing: Attempted to kill init! exitcode=0x0000000bというエラーメッセージが表示された時に対応したこと – TORIPIYO DIARY (hatenablog.com)
ネット情報を参考にfsckを掛けて復旧を試みたのですが、結論から言ってしまうとダメでした…。
後になって分かったのですが、SDカードがフォーマットできないくらい、コンディションがダメダメだったのです。
それでは、何をやっても効かないわけです。
無名メーカー製の安いSDカードが動いたからと言っても、永きに渡り動くとは限らないようです。
せめて、データだけでも拾えたらと思ったのですが、すでに手遅れの状態でした。
ラズパイを使っていて、カーネルパニックになったのは、何度かあり、自衛策として、電源を落とす前、きちんとシャットダウンしていたのですが、やっぱり、ダメな時は何やってもダメなのです。
無名メーカーの格安SDカードは、緊急以外はあまり使わない方がよいということなのでしょうね。
まとめ
Raspberry Pi Zero 2 Wは、その小型設計と高性能を活かし、多種多様なプロジェクトで活用できる柔軟性を備えたデバイスです。
初心者からエキスパートまで、幅広いユーザーにとって魅力的な選択肢であり、学習、開発、実験、実用的な用途において非常に効果的です。
独自のプロジェクトアイディアを実現し、このコンパクトなデバイスの可能性を最大限に引き出してみてください!