nyabot’s diary

電気猫の夢を見るお話

キューブ型ロボットを作る話/with ニッケル水素電池 & Raspberry Pi Zero

反省)相変わらず前置きが長い。後半でロボットを作るよ。

かわいいネコちゃんを作っていたはずだった。 もう少しでボディが完成する、というところまでは行ったのだけれど、半年ほど進捗がない状態で止まっている。 理由はいくつかあって、中でも大きな理由が二つで、乗り越えるのに気力とか時間とかが足りない感じ。

まず、配線が難しい。
それぞれのセンサやモジュールに何をつなげるとか、電圧や電流はいくらかとか、一つ一つ計算したそれらを効率的に並べたいのだけれど、良い考え方がいまいち掴めていない。同じ電圧の線はまとめたいけれど部品の位置関係が……とか、今までバラバラだった各要素の整合性を保って並列で考えて進めないといけない、というのが個人的にとても大変。
単純になれていないというのも大きい。

そして、完成させたとして動くかわからない。手が止まってしまっている主要因はおそらくこっち。
動かない可能性が大いにある。どこか一箇所、何かが違っていたら動かないわけで。そうなったら当然原因を探って修正すればいいのだけれど、例えばそれが設計から直す必要があるものだったら? 悪ければ数十時間かそれ以上のやり直しになる。これが怖い。今まで散々そういうケースはあったけれど、完成が見えてくると急に余計に不安が大きくなる。
過去に配線を間違えて何度か煙が上がったのも若干トラウマ。
「完成させるまでは壊れていることは確定しない」という、シュレーディンガーの機械猫みたいな話。全然違うかもしれない。

弱音はここまで。いつまでも手を止めていても仕方がないし、遅かれ早かれ何としても完成させることは自分の中で決定しているわけだから、何か別のことをして自信と経験をつけようと思った。

小さいロボットを作りたい欲

ネコちゃんのロボットは全長50cmくらいある。作ってて少し後悔するくらいにはでかい。
しかも見た目が少し独特なので(とてもキュート&クール)、気軽に他人に見せびらかしたりしにくい。
趣味の話を聞かれたとき(もうすっかり電子工作が趣味になってしまった)、電子工作をしているとかロボットを作っているとか口で話して説明するのは結構難しくて、実際に何かを見せたくなる。けれども、気合を入れて作ったものは脚の生えたニキシー管時計とか数年前のプロトタイプネコちゃんくらいしかなく、少し見る人を選ぶ。

ニキシー管時計

↓プロトタイプネコちゃん

仮に友人や同僚が電子工作をしているとして、ニキシー管時計に脚を生やしたりしていたらちょっと心配になる。心配はかけたくない。

ネコちゃんを作るために買って結局使わなくなった部品が結構増えてきていて、それらを使って別のロボットを作ろうと考えた。小さくて持ち歩けるような、無難で心配されないようなロボットを。

立方体のロボットにする

複雑な外観にしたくなかった。球か円柱か直方体で迷った。
本命を作るためのテスト機でもあるので、コンピュータとしてはネコちゃんと同じRaspberry Piを載せることにして、そこから全体の大きさや形を設計し始めた。
コンピュータや基板は長方形なので、本体の形も四角いほうが都合が良く、結果として立方体に落ち着いた。(キューブ型のかわいい自作ロボットをSNSでしばしば見かけ、影響されたのも少しある)
大きさはRaspberry Pi Zeroを載せられるギリギリの一片8cm。
サーボモータが余っているので当初は歩かせようかと思ったのだけれど、歩かせるとなると一回り以上は大きくしないと難しかったので、顔を上下左右に振れるようにだけする。

スペックとか

基本的には、以下を今回の目的とする。

  • 誰にでも見せられるロボットの作成
  • 基板の配線練習
  • Raspberry Piを用いた制御の練習
  • 電圧測定モジュールのテスト
  • ニッケル水素電池の活用

費用も時間もかけていない分、気軽に色々試せるはず。
載せるものは以下。

Raspberry Piは小型で安いZeroで、通信機能のあるW。できたらカメラで動体検知とかしたいけれど、画像解析なんかは性能的に厳しいのかも。とりあえず試してみるつもり。
ニッケル水素電池は、もともと本命の電源に使いたくて買ったものの、電流不足で結局使わずにしまってあったやつ。
スピーカーが圧電スピーカーなのは積載スペースと値段の問題から。やってみたい発話方法もあった。
電圧測定に用いるのは本命のネコちゃんと同じINA219。テストを兼ねる。電流も測れるけれど測る予定は今のところない。 ネコちゃんに使うのはリポバッテリなので、電圧を正しく測定・管理できないと事故につながる危険があり、念のためこちらで先に試しておこうという考え。
そのほかは適当に。

手元にある部品が多かったので、かかった費用は新たに買ったラズパイとmicroSD含めて計4,000円弱くらい。
ラズパイだけ買えばいけるかなーと思っていたのだけど、考えていくうちに載せたいものが増えてしまった。

設計

Fusion360でボディの設計。 なるべくパーツ数を少なく、スタイリッシュな感じ(?)に作る。

f:id:sizohu:20210828141808p:plain

f:id:sizohu:20210828141838p:plain
6パーツになった

単三4本用の電池ケースを最下層にねじ止めし、中層にラズパイとユニバーサル基板、上部にサーボモータとセンサー類を固定します。
ネコちゃんを作りたいがためにFusion3603Dプリンターを学び始めて早2年弱、まだまだだけど、0からここまでできるようになったと思うとちょっと感慨深い。

ボディの印刷

設計したデータを3Dプリンターで出力。 プリンターを購入した時におまけでもらった透明のPLAフィラメントが残っていたので、それを使った。

f:id:sizohu:20210829160322j:plain
透明といっても裏側の色が少し透けるくらい

そういえば昔のMacとかゲーム機とかのクリアボディってすごく魅力的に感じるのだけど、今どうして少ないんだろう…? スケルトンのスマホとかあったら欲しいよね。みんな欲しくないのかな。でも今は透明にしても背面ほとんどバッテリーで埋まっちゃうか。

電源とか配線とか

ニッケル水素電池4本を電源にする

電源は単三ニッケル水素電池4本で約4.8V。ラズパイゼロは4V以下でも動作したっていう書き込みがSNSで見られたので、それを信じて電池駆動を試みる。ニッケル水素電池は一本あたり1.2Vとされているけれど、満充電の時は1.4Vくらいらしい。手元の充電器だと1.35Vだった。4本だと5.4Vと許容範囲。アルカリ電池だと過電圧になる恐れがある。
ググると3本とか2本+昇圧とかで電池駆動をしている人はいたけれど、4本使っている人は見つけられなかった。ので、内心パイを焼いてしまわないかビビりまくり。
もちろん本数を減らして昇圧することも考えたのだけど、Piとサーボを動かすにあたって昇圧まですると電流不足が懸念されたので4本そのままで挑戦することにしたのだった。昇圧や降圧を組み込むと回路や電圧管理も複雑になるしね。

配線

電源からラズパイとサーボに約4.8Vを給電し、ラズパイの3.3Vから他のセンサー類に電力を供給する。
電流/電圧測定モジュール(今回は電圧の測定にのみ用いる)のINA219は、ラズパイにVCC,SDA,SCL,GNDを繋いで、V+に測定したい電源の+を接続する。
3.3VやGND、I2Cなどの複数のセンサーを並列で接続するものに関しては、ラズパイからユニバーサル基板を挟んで繋いだ。
圧電スピーカーはそのままだとやや音が大きすぎたので、330Ωの抵抗を挟む。
電源とサーボモータの間には220μFのコンデンサを挟む。電圧降下を防ぐ目的でサーボ一個あたり100μFくらいあるといいとどこかで読んだのだけど、数値の根拠は知らない。

f:id:sizohu:20210829155923j:plain
できあがってから写真を撮るともうよくわからない

今回使用したカメラマイクは以前購入したUSB接続のもので、Raspberry Pi Zeroに繋ぐために端子をUSBからmicroUSBに取り替えた。
外装はすでに剥いてあったのだけれど、線も長すぎてボディに収まらないので、適当な長さに切って、各線を剥いて、別途購入したmicroUSB変換端子にはんだ付けしてグルーガンで覆って、なんとか取り付ける。けっこう大変だった。あと綺麗な外装を割ったりしっかりしたシールドケーブルを切ったりでメーカーさんに少し申し訳ない気持ちが芽生える。
ちなみにシールドケーブルというものも初めて見て知った。以前はカメラマイクの基板にわからない太い線が一本ついているなーと思っていたのだけど、実はそれがシールドで、ノイズを除去するために接地させていたのだと思う。製品の設計とかは素人の自分からすると当然レベルが全く違うというか、本当によくできていて感心したりよくわからなかったりばかりだ。

ラズパイや電源と基板、各モジュールを繋ぐ配線は本体内の空いているスペースにちょうど収まった。途中でこれはダメかも、と諦めかけ、よく考えもせず8cm角にした自分を若干恨むくらいギリギリちょうどだった。ワイヤーは思った以上に場所をとる。いい勉強になった。

起動/終了スイッチ

なくてもいいけれど付けたいもの第3位くらいが起動ボタン。電源に繋いだら起動する、でも特段困ることはないのだけれど、やっぱり起動スイッチは欲しい。ついでに安全に電源を落とすためのスイッチも欲しい。Raspberry Piは小さなパソコンなので、いきなり電源を落とすのは良くない。シャットダウンしたい。

Raspberry PiはSCLのピン(GPIOの3番ピン)をGNDに落とすと起動させられるので、起動/シャットダウン用に用意したタクトスイッチに繋ぐ。 通常はこれで起動も終了もできるようになるみたいなのだけれど、I2Cを有効にしていると終了は受け付けないようだった。 そこで、設定で割り当てをGPIO3から空いている他のGPIO(今回は25番を使った)に変更して、そのGPIOもスイッチに繋いだ。 これで、電源OFF時にタクトスイッチを押すとGPIO3がGNDに落ちて起動し、電源ON時にタクトスイッチを押すとGPIO25がGNDに落ちてシャットダウンされるようになる。 もっとスマートな方法がありそうな気もするんだけど、まぁよしとする。

キューブ型ロボット完成(ハードだけ)

できました!じゃーん!

f:id:sizohu:20210829161920j:plain

f:id:sizohu:20210829161901j:plainf:id:sizohu:20210829161945j:plain

名前はHACOT(ハコット)君としました。
「HACKABLE CUBE ROBOT」から名付けました。はい。
箱型だからっていう安直なネーミングじゃないです。キューブ型です。

お気に入りポイント1
半透明で少し基板とかが見える感じがとてもそそる。うわぁ。

お気に入りポイント2
上部外装と下部電池カバーは磁石で止めてあり、簡単に付け外しができる。余力があればいくつかバリエーションを作って着せ替えできる。耳をつけたり、足を生やしたり、色を変えても楽しいと思う。余力はまだない。

f:id:sizohu:20210829161958j:plainf:id:sizohu:20210829162012j:plain
上部外装外したところ。ごちゃごちゃしているのも逆にすき

とりあえず起動・終了は無事できました。電圧の問題はなさそうで一安心。
本格的に動かすためのプログラムはこれから。

つづく。