横浜ロボット勉強会にて発表
Raspberry Pi ZeroをCD-‐ROMドライブに埋め込む狂気Ejectコマンドユーザー会あっきぃ ( id:Akkiesoft )2016/07/17 横浜ロボット勉強会
View Slide
自己紹介• あっきぃ (@Akkiesoft) です• Ejectコマンドユーザー会主宰• Japanese Raspberry Pi Users Group– リードの太田さんのお手伝いとか
Japanese Raspberry Pi Users Group• raspi.jpの運営(Raspberry Pi情報の発信)• MLの運営• イベント– 現在はおもにOSCに展示・セミナー出展– Raspberry JAM(Raspberry Piユーザーの集まり)を不定期開催
本日の展示物↑今日発表するやつSuicaとかPASMOとかnanacoとかのIC残高チェッカーPimoroni製BLINKT!ボードスイッチサイエンス製RPi3向けACアダプター(5V3A)
本日の展示物• タイムラプス用カメラ• PiZero+Pi Camera• 20秒に1度撮影してサーバーにアップロード• 最新の10枚は8639.tk/cameraで見られます
金魚タイムラプス(びみょう)
本日のお題• Raspberry Pi Zeroのサイズを活かして• Raspberry Pi Zeroを活かせているのかわからない謎の工作を作って• 謎の使い方をするお話です• Raspberry Pi Zero自体の話についても色々触れていきます
Ejectコマンドユーザー会のご紹介
Ejectコマンドユーザー会とは• CD-‐ROMドライブのトレイ開閉と• Raspberry Pi等の小型Linuxマシンと• ダンボール等の簡単な工作を組み合わせて• ホームオートメーションを実現する• IoT系工作を作るユーザーの集いです
ハムスターにエサをあげる• 初めて作った作品• 外出先からハムスターの餌をあげられる• ドライブを積めば複数日の給餌に対応• いまはハムスターがいないので未使用
エアコンの電源を操作する• 2010年ごろ開発• トレイでボタンを直接押す→リモコンから電源回路をハックして外付けボタンをトレイで押す→Raspberry Piで、予めハックしたリモコンを操作するように進化
AC電源リモート操作• AC電源をEjectでON/OFFする• ホームセンターで買えるスイッチと電線で作れる• プログラムタイマーとしても使える
除夜の鐘• 通称「除夜のEject」• 毎年12月31日にUSTREAMで中継• だれでもEjectで鐘をつくことができる• Eject結果はUSTで確認
Ejectカーテン• 朝になったらカーテンを開く装置• カーテンにヒモを通し、おもりを落とすとカーテンが開く装置を開発• おもりを落とすのがCD-‐ROMドライブ• このためだけにRasPiを1台消費
CD-‐ROMドライブを使う意義• Ejectコマンド工作の大半は電子工作で解決• 電子工作を勉強したら楽しいはず• しかし、電子工作に抵抗がある人はいる• 電子工作ができない人は諦めなければいけないか?→NO• CD-‐ROMドライブを使って工作したら少しカンタンにできないだろうか?
Ejectコマンド工作のメリット• カンタン(電子工作ができなくても大丈夫)• 手軽(物品調達は難しくなく、比較的安価)• わりと安全(ハンダ付けとかほとんど無い)• Linuxの知識が身につく(かも知れない)– atd, cron, udevなど、ふだんあまりさわる機会がない部分も色々触れる
Ejectコマンド工作のデメリット• 工作の実行成功率にムラがある– 正直、工作による• 場所を取る• サーバー構築の知識はある程度必要• Ejectコマンド工作は万能ではない– 可能性は無限大とは言いつつ、できることは実はあまりない– 出来る範囲のことをやろう
Ejectである必要はない• 自分で実現可能な方法で自由に実装しよう• 電子工作ができる人はそれでやれば良い– 私のエアコンリモートはRasPiに移行した• 市販品が良いならそれを使えば良い– 普通の人が注目するソリューションなので、ブログに書くとブクマとかアクセス数とか稼げる• Ejectで良いと思ったらそうすれば良い– すぐできるし工作する時間は楽しいしネタになる
Ejectコマンド工作は手段• 当時飼っていたハムスターの世話をOSCで遠征していてもできるようにしたいという課題解決の必要に迫られて作った– 数週間くらいしかなくて悩んでいた– OSCなどのイベントのネタにしたかった、というのも…あるよ( ;`ω´)• 単にEjectをしたくて作ったわけではない– Ejectだけで喜んでいるのはちょっとやばい
Raspberry Pi Zeroについて
Raspberry Pi Zeroの登場• 2015年11月26日にリリース• 今までで1番薄くて小さい普通のRaspberry Pi• そして安い($5/4£)• RPi A+とCompute Moduleを足して2で割ったような見た目・スペック感+ = ?
リリース当日• すかさずキャッチ
リリースの予兆• Eben Uptonが奥さん(広報)の様子を伺う(11/26 15:58)
なかなか買えなかったPiZero• イギリスではMagPi40号に付録としてZeroをつけて販売→瞬殺– 空港のセキュリティチェックを通過した後の売店に残っていたよ!(無理ゲー)とか言うレベル• 入荷時期も不定期で瞬殺続き– たまごっちブームっぽい感じだ!w• Raspberry Pi 3リリースでしばらく入荷なし• Raspberry Pi ファンが怒りはじめる
現在のPiZero• 5月にマイナーアップデート– CSIカメラポートが追加– 価格は変わらず$5/4£• 日本は3.33£• 毎日1000台を製造して需要に応える– 毎週水曜日にPimoroniに入荷– 最近は売り切れの日数が減ってきている– ポンド安もあるので今が買い• https://shop.pimoroni.com/products/raspberry-‐pi-‐zero
PiZeroの向き・不向き• 向いてる– 小型のカメラ装置– 狭いところに組み込んで小型システムを作る• 向いてない– デスクトップ環境– Raspberry Pi入門機
向かないトコ• デスクトップにするには色々なアダプタが必要になる• アダプタを挿した後のPiZeroのなにこれ感• アダプタを用意するなら通常モデルを買った方がはやい
OTGと言う選択肢?• 2016年5月リリースのRaspbianでOTGサポート• OTG対応USBケーブルでPCにつなぐと、PCと1:1でネットワーク接続できる– PCからインターネット共有すれば外にも出られる• SSHとかVNCでリモート作業OK• http://www.raspi.jp/2016/07/pizero-‐usb-‐otg/
向いてるトコ• カメラとの相性はなかなかよい• 小さいので持ち運びに便利
そして組み込み
EjectZero• Raspberry Pi ZeroをCD-‐ROMドライブに内蔵• USBポート数の都合上トレイ開閉はGPIO– さよならEjectコマンド……?• トレイにRPiを固定しているので、Ejectすると† †コア† †を吐く
EjectZeroのつくりかた
ざっくり• ドライブの中身を撤去• トレイに穴を開けてPiZeroをネジ固定• ドライブから5V電源を取ってPiZeroに接続• GPIOとフォトカプラでドライブのEjectボタンに接続• 無線LANを接続• OSなどの環境構築
ドライブの中身を撤去• レーザーユニットを外すと170gくらい軽くなって、スペースを確保できて、Ejectも変わらずに実行できる
トレイの加工• 穴を開けてネジで固定する• ネジはM2〜M2.6で短めのものを
電源の確保• 5Vをドライブから取って、PiZeroのGPIO 5VとGNDに接続
フォトカプラの用意• TLP785(GB)と1KΩ抵抗を千石で購入• 図のようなイメージで配線
固定と配線• 配線はヘッダピンを使って着脱可能にした
無線LANの接続• 小型OTGアダプターを使用• アキバとかでも買えるようだけど多分高い• dx.comがおすすめ– bit.ly/dxcom-‐otg
完成
電源も手軽にしたい• USB給電ケーブルを作成– 5V: そのままUSBケーブル化– 12V: 12V昇圧モジュールを使用• USB電源があればひととおり動く– モバイルバッテリーも、もちろんOK
EjectZeroのソフトの実装
EjectZeroの役割• 現在は「除夜のEject」用ドライブとして運用• OSCで展示してます• 操作方法– PiZero内のWebサーバーにアクセスして操作– PiZeroに用意したAPI(接続元IP制限付き)経由で操作
大晦日:除夜のEject図解Port:8000(EjectZero)自宅ツイのオタク煩悩映像・生活音(Ustream)ConoHaに置いてる特設ページ
API経由はデモしにくい• イベント会場でテザリング接続するとPort8000を開けるとかができない• これの対応はだるいのでやりたくないPort:8000(EjectZero)イベント会場ツイのオタク煩悩ConoHaのページ
Node.js+Socket.ioで実装• ConoHa VPS上にサーバーを建てる• EjectZeroがサーバーに接続してbotのように待機• ユーザーがConoHa VPSのサーバーに接続してEjectボタンをクリック• サーバーからEject指示が来て、EjectZeroのトレイが開閉される
こんなかんじNode.js+Websocket.ioサーバー@ConoHabotとして接続ボタンが押されたらサーバーから指示が来るのでEjectするサーバーからHTMLページを提供Ejectボタンを押せる
アクセスしてみよう• http://d250g2.com:3980• Optical drive statusがReadyだったらEjectできる• ダメなときはNot readyになる
スクリプト公開中• サンプルコードをいじっただけなのでセキュリティ的にはマズい、気がする• https://github.com/Akkiesoft/Eject-‐Command-‐Users-‐Group/tree/master/EjectZero
どこでもEject• 安SIMと組合わせて野外Ejectもできそう• Ejectの農業IoT業界進出もあるで(ない)
※通常モデルも入ります• トレイには入らないので、ドライブ内に配置• 写真はRPi 1 Model A• 配線を簡略化できる• 見た目がすっきり• カーテンEject用に使用中
RPi内蔵ドライブはゴールではない• 「Ejectコマンド工作は手段」なので、内蔵ドライブを作って終わりではなく、むしろスタート• 実験が済んで常設フェーズに移ったEjectコマンド工作をスマートに置くための手段など• 個人的にはイベント展示の準備・片付けが楽(代わりに説明が大変)
まとめ
まとめ• EjectZeroでスマートなEjectコマンド工作環境を実現しよう• Ejectコマンド工作で簡単にホームオートメーションを始めてみよう(?)• Raspberry Pi Zeroは安価な入門機ではなく、物理的な小ささをうまく調理できる人向けのアイテムだとおもう
告知• コミックマーケット90にてEjectコマンド工作の同人誌「Ejectコマンド工作クックブック」を頒布• EjectZeroの作り方も掲載!• 1部500円• >> 3日目(8/14)西g-‐17a <<
おわり