ラズパイをUSB-C以外で充電する(GPIO経由)

以前、ラズパイをTVの録画用HDDにエミュレートする、という記事を書きました。

▼Raspberry Pi 4をTVの録画用HDDとしてエミュレートする

その中で致命的な欠陥が見つかったので、修正していきたい。

前提・背景

致命的な欠陥とは、ラズパイの充電をTVのバスパワーに頼ることになったため、TVの電源を落としてしばらくするとラズパイの電源も落ちてしまうことである。

ラズパイのUSB-CポートにUSBハブを差してOTG(On The Go)すればいいじゃないか、と思われるかもしれないが、どうもUSBハブをかましてOTGはできないようである。

実際にラズパイのUSB-CポートにUSBハブを差して、そのUSBハブに対して充電ケーブル(USB-C)とTVとの接続用のケーブル(USB-C)をさすと、OTGとして動作させたいTVとの接続は認識されず、充電用ケーブルを通して充電だけが行われた。

本当に録画用のHDDとしてラズパイを運用するのであれば、この仕様でも問題はない。むしろ電気代が節約されるのでウェルカムだ。(もっともラズパイを録画用のHDDとしてのみ運用するのであれば、本物の"録画用HDD"を差したほうが合理的だろうな)

僕の場合、ラズパイ上でVPNサーバやファイルサーバが稼働しているため、ラズパイが落ちていることがあっては困る。

そこでUSB-C以外の充電の方法を検討してみた。

USB-C以外の充電の方法

ラズパイの充電の方法には大きく3種類ある。

  • USB-C:もっとも一般的な充電の方法
  • GPIOを使用:GPIO経由で充電する方法
  • PoEを使用:PoEで充電する方法

今回は、GPIO経由で充電を行うことにする。

ちなみにPoEとはPower over Ethernetの略で有線LANケーブル経由で電力を供給することができる仕組みである。

このPoEができればものすごく便利かつ配線もスッキリするのだが、PoEに対応したスイッチ・LANケーブル・ラズパイの変換用基盤などが必要になる。

それに対してGPIOでの電力の供給は、GPIOのピンにケーブルを差すだけで実現できる。

手間や財力の関係で今回はGPIOを選んだ。

準備

必要なものは2つ。

USB-TTLシリアルの変換ケーブル

Amazonで数百円程度であり、非常に安い。

開けてみるとこんな感じであり、片方はUSB、もう片方はTTLシリアルとなっている。

20200829-1.jpg

20200829-2.jpg

USBのACアダプタ

これは自宅のACアダプタで代用できるからいいや、と思う人もいるかもしれない。

ただ、思い出して欲しいのはラズパイの充電の要件は最低でも5V、3Aである。

自宅に転がっているACアダプタを片っ端から調べた(Amazonで購入しているので商品詳細ページを確認した)のだが、1Aや2Aのものしかなかった。

そこで3Aに対応しているものを購入した。

別に2個はいらないが、単品よりも一個当たりが安くなるマジックで、2個購入した。なんという貧乏人根性。てか高いわ。

しかもこの製品めちゃくちゃでかい。3Aに対応しているから仕方ない部分もあるのだろう。(あのAppleですらMac Bookの充電器はクソでかい)

そしてチープな作りである。レゴのような素材感。

持ちはこばず、給電さえしてくれればいいから、許容できるダサさである。

▼大きさを伝える画像ではタバコの箱を添えるのが古のマナーと聞いた

20200829-3.jpg

実装

準備ができたら、やることはいたって簡単。

まずUSB-TTLシリアル変換ケーブルの端っこを確認しておこう。

4本に分かれており、今回使用するのは赤(VCC)と黒(GND)である。

20200829-2.jpg

どのピンに差すかだが、赤色は+5Vへ黒色はGNDへ差す。

僕の場合、②の5Vはすでに使用してたので、

  • 赤色:④の5V
  • 黒色:14のGround

を利用することにする。

20200829-4.png

▼GPIOの詳細は以下参照。

▼わかりずらいがピンに差してみた図

20200829-5.jpg

あとはUSBをACアダプタに挿入し、ACアダプタをコンセントに差すだけ。

▼起動させてみた図。よくよくみるとUSB-Cに何もささっていないのにラズパイが起動していることがわかる。

20200829-6.jpg

あとがき

この充電のやり方だと安定してラズパイが稼働している。

USB-CにTVと接続するケーブルを接続しても問題ない。

GPIOがどんどん足りなくなっているんだけど、もはや2個目のラズパイを買ったほうが良いのではないかという気持ちがおっきくなってきた。

おしまい。