見出し画像

Raspberry Pi の小ネタ集

こんにちは,のぶです.業務でRaspberry Pi(ラズパイ)使いまくっているので小ネタをつらつら書いていきます.

Raspberry Piってなに

Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。日本語では略称としてラズパイとも呼ばれる[2]。教育で利用されることを想定して制作された。IoTが隆盛した2010年代後半以降は、安価に入手できるシングルボードコンピュータとして趣味や業務(試作品の開発)等としても用いられるようになった。
引用:Wikipedia (https://ja.wikipedia.org/wiki/Raspberry_Pi)

元々は教育用のシングルボードコンピュータ(SBC)です.比較される(?)マイクロコンピュータ(マイコン)と大きく違う点はオペレーションシステム(OS)がのることです.WindowsとかMac OSとかとは違うLinux OSがのります.Raspberry Pi OS,Ubuntuなどですね.

ラズパイでシステムをつくることは組み込みか?

ハードウェアの分野からみたら組み込みではありませんが,IT分野からみたら組み込みにあたるようです.ラズパイを組み込みと言っている人がいたらIT系かなと思いましょう.あんなの組み込みじゃねぇ,と目くじらを立てないように

なんか最近よく聞くけどなんで

ラズパイは格安でOSが動くシングルボードコンピュータ(SBC)なのでIoT分野で頻繁に使われ始めてきています.教育用に作らていたのですが,メイカー達に目が止まり,サードパーティの拡張ボードなどが作られ,ラズパイ自体もどんどん高性能になっていき,現在では企業も使うようになってきました.

bluetoothとWi-Fi通信ができるのならESP32とかマイコンもいろいろあるのになんでラズパイ?と思いますが,拡張ボードの流用で回路の開発が必要ないのと,カメラが簡単に接続できることや,pythonなどのスクリプト言語が動き,開発がしやすいという理由があると思います.開発するハードルが低いんですね.

ラズパイの電源の話

ラズパイ付属のACアダプタはあまりよくありません.あの値段で同梱されているので当たり前です.製品にラズパイを使うのであれば別途購入しましょう.オススメは
スイッチサイエンス:https://www.switch-science.com/catalog/5683/
Anker: https://www.amazon.co.jp/gp/product/B078RQ4FDC/

電プチ対策をしましょう

ラズパイはマイコンと違い,SDカードが必要です.SDカードに情報を格納するので,ノートPCのようにファイルを作成したり,プログラムを書くことができます.電源を切るとき,ノートPCはシャットダウンをしますよね.ラズパイでも同じです.シャットダウンをしないで電源を引き抜くと,SDカードのファイルシステムが破損することがあります.なのでシャットダウンが必要なのです.

でも,ラズパイを製品に使うケースはなにかをずっと計測したりする場合ですよね.当然,マウスもキーボードもディスプレイも繋いでないかもしれません.しかも,ラズパイは電源投入前からディスプレイに繋いでいないと,画面を表示してくれません.このときに停電が起きたら?誤って電源コードを抜いてしまったら?いわゆる電プチです.SDカードが破損します.

対策は3つあり,Overlay・バッテリーを乗せる・ローカル永続化ストレージの利用です.

Overlayについてはこちらの記事がオススメです
https://qiita.com/ma2shita/items/45818f0872472ecacac1
Overlayのメリットは,電プチされても壊れない
デメリットは,記録をデバイスに残す際に一度再起動をする必要がある
です.逐次サーバーにデータを残す場合はデメリットはないかもしれません.

バッテリーの場合は,電解二重コンデンサやLiPoバッテリーを乗せる方法が考えられます.電プチされたときに電源の低下を検知し,シャットダウンコマンドを叩けばいいのです.
メリットは,記録を残す際に再起動などが必要ない
デメリットは,バッテリーの値段がかかる
です.デバイスにデータを残す必要がある場合はこちらになるかと思います.オススメのバッテリーはPiJuice HATボードです.
https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-5BMF

PiJuiceというpythonパッケージが用意されており,電源情報がpythonスクリプトで読むことができます.バッテリーはmotolora社のOEM製品であり,信頼性も高いと思われます.

ローカル永続化ストレージの利用については以下の記事を参照です
https://qiita.com/ma2shita/items/45818f0872472ecacac1

あとは,SDカードは産業用にしましょう.電プチされたときの生存率を上げます.上書き回数に関しても重要です.

USB3.0には気をつけろ

ラズパイ4からUSB3.0が使えるようになりました.しかし,USB3.0はWi-Fi 2.4Ghzと干渉します.
Intelの実験レポート

ラズパイはUSB3.0のポートとWi-Fiモジュールの間が近く,そのうえ十分なシールドがされていないので,USB3.0を使う必要がある場合はWi-Fi 2.4GHzは使えないと思ったほうがよいです.Wi-Fiルーターが強力な場合は問題ないかもしれませんが,一般家庭に製品を置く場合はあきらめましょう.
あくまで教育用なのでここは仕方ないですね.
ただし,USB3.0のポートにUSB2.0の端子を挿す場合は問題ありません.

静電気には気をつけろ

特に静電気対策はされていないのでアルミ筐体で包むなど,シールドしましょう.壊れます.雷サージは未検証ですが,なにかしら対策が必要でしょう

ネオピクを使うとき

GPIO18はPCM_CLCに割り当てられおり,音を再生する場合に使われます.最近のImageでは,デフォルトでは音声再生にここを使わないように,configファイルはコメントアウトされていました.

高性能なPWMを得られるため,多くの記事やチュートリアルではGPIO18を例に解説されていますが,ネオピクを使う際はGPIO18は避けましょう.というのも,筆者がここを使った際,なぜか最後のピクセル色が正常に出力されませんでした.しかも緑色のパイロットLEDに合わせて色が変わる始末.

結局,GPIO12などの他のピンを使うと解決したので,GPIO18は内部のクロックシステムに競合している可能性が高く,あまり使わないようにしています.

コーディングについて

ラズパイはVSCodeが簡単に動きます.
https://code.visualstudio.com/docs/setup/raspberry-pi
ただ,拡張機能を入れていくと処理が重くなるので注意が必要です.
またSSH接続でPCのVSCodeから編集できるのでこちらのほうが楽です.
https://qiita.com/c60evaporator/items/26ab9cfb9cd36facc8fd

ちなみに,VSCodeが簡単に動きますが,管理者の承諾なしにマイクロソフト社のサーバーにアクセスする仕様があるようで,軽く炎上したことがあるようです.
https://www.gizmodo.jp/2021/02/raspberyypi-microsoft-vscode.html

ROS使うとき

ラズパイでROSを動かしたい人もいるでしょう.ROSはバージョンごとに環境がまったく違うため,複数バージョンを扱うことが難しいです.オススメはDockerを使うことです.
各バージョンごとにDocker imageが作成されていますのでとてもインストールが楽だし,python・gcc環境の汚染を回避できます.

pythonパッケージに注意する

pythonパッケージに限ったことではないですが,ラズパイのCPUはARMです.一般的なPCのCPUはAMDなどです.そのため,用意されているwheelがARMに対応していない場合があります.例えば,Microsoftのspeech SDKはARMに対応しておらず,pythonパッケージは利用することができません.pipインストールでコケます.参考
なので,REST APIを利用する必要があります.
また,pandasやnumpyはパッケージをビルドする必要があり,インストールにとても時間がかかります.ちなみにpandasはバージョン1.1.5が比較的に入りやすいです(45分くらい?).

おわりに

ラズパイの耐久性について検証している記事を紹介します.
https://zenn.dev/su_/articles/97b9e25d0ae41c

ラズパイは元々教育用なので製品で使う場合はそれ相応の対策が必要になります.それを考慮しても安くなる場合が多いのがラズパイの魅力なのかもしれません.

この記事が気に入ったらサポートをしてみませんか?