Raspberry Pi用のソフトウェア電源スイッチ

IMG_1157

RepRap系の3Dプリンタは、2つの方法でプリンタを動作させています。

  • USBでPCやMacと接続して、USBのシリアル通信でG-Codeを送る。
  • SDカードにG-Codeを保存して3Dプリンタに読み込ませる

プリント時間は結構かかりますので、その間、PCはほぼ送信専用にしなければならず、夜中にWindowsアップデートが始まって自動再起動すると、その時点でプリントが止まってしまうということが起きます。後者の場合はその問題はありませんが、毎回SDカードを抜き差ししなければならない手間があること、回数が増えると、読み込みエラーが出てきてしまいます。

そこで、去年設計したFoldarapは、RaspberryPi 2 Model Bを使ってPCやMacでやっていた通信を代替し、独立させています。RaspberryPiにはOctoPrintをインストールし、Webカメラ、WiFiを付けることで、WiFi経由でリモート制御ができます。

ここで悩んだのはRaspberryPiの電源です。RaspberryPiにはPCのような電源制御部はなく、シャットダウンしても電源は入ったままになります。また、電源コネクタはマイクロUSBになっているので、プリンタから電源ケーブルが2つ出てしまいます。

設計したFoldarapは、100Vの電源ケーブルだけが出ている状態にしたかったので、5V/2Aを供給するのにATX電源を採用しました。Foldarapのサイズ制限から、電源規格はFlexATXとしました。しかし、この電源にはメインスイッチがないため、Foldarapに別途電源スイッチを設けることにしました。

電源スイッチをATXのPS_ONとGNDに付ければ電源のON/OFFは可能ですが、それではRaspberryPiのシャットダウンはOctoPrintかリモートデスクトップでやらなければなりません。利便性を考えると、ATXの電源ON/OFFもRaspberryPiに集約し、PCのようにモーメンタリスイッチでON/OFFできるようにした方がよいと考えました。

そこで、RaspberryPi用のソフト電源スイッチを作成しました。動作はPCと同じようになるようにしています。

  • 電源OFFの時にスイッチを押すと電源が入ります。
  • もう一回押すとシャットダウン後電源が落ちます。
  • OctoPrintやコンソールでシャットダウンしたのを検知して電源を落とします
  • 電源ボタンを5秒以上押すと強制的に電源を落とします。

基本的にはこれだけの機能ですが、ハードウェアロジックではなく、Attiny85というAtmelの小さなマイコンを使いました。設計情報はGithubにアップしてあります。また、基板は何個かまとめて作りましたので、欲しい方はお問合せからご連絡ください。