下林明正のブログ

個人的かつ雑多なブログです。

Arduinoでミラーボールを回してみた

たった7000円で余ったIS-01や中華パッドとArduinoでセンサーネットワークを構築する方法 - 下林明正のブログ でつくったガジェットにミラーボールを追加してみました。 意味が分からないと思うので、動画をどうぞ。


Pip-Boy 2020 Mirror Ball(1)


Pip-Boy 2020 Mirror Ball(2)

経緯としては、とある方が誕生日プレゼントとして、

こんなような卓上USBミラーボールをウィッシュリスト経由で4つほど送りつけられたらしく、 完全なゴミなのでどうしようもなく放置しているとのことだったので、 1ついただいてリサイクルをしたという次第です。

当初は「こんな雑なもん適当にArduinoのAnalog Outputとかに繋げば回せるだろ」くらいの気持ちでいたけど、実際にやってみるとそんなに簡単な話ではなくて、案外大変だった。 電子工作初心者の足あとみたいなのはあんまりネットに無いと思っているので、せっかくだからやったことを書いておく。

先ず、分解してモーターから導線を引いた。 ArduinoのDC5Vに接続すると回転したので、いけると思った。

そして、Analog Outputに接続して出力しただけではモーターは回らなかった。なぜかというと、電圧ではなく電流が足りていなかったからで、Analog Outputの電流は50mA〜ほどだった。乾電池ですら150mAあるので、これでは回らない。 冷静に考えてみれば当たり前のことなんだけど、そういう当たり前のことすら頭から抜けてしまっていたので、なんというかマヌケである。

となると、電源はモーター用に何かしら用意しつつ、電気的にスイッチできるような仕組みが欲しくなるという話になるわけで、

という助言をいただいたので自転車でパーツ屋にダッシュしてTA7291Pを購入してきた。200円だったし。

次に、 建築発明工作ゼミ2008: Arduino 小型DCモータ/TA7291P にあるような方法でArduinoに組み込んでみたが、うまくいかなかった。

1つ目の理由として、

TA7291Pのデータシートには、外部電源のプラス端子をつなぐための8番ピンの電圧は、PWMに使うための4番ピンの電圧以上なければいけないと書いてあります。これに従えば、今回の場合の外部電源は、5V以上必要となります。

というのを完全に無視していたというものがあるような気がしていたけど、VrefとVSを同一の電源から引いても普通に動作した(以上、とちゃんと書いてあるので元記事には何の間違いもない…)。 データシート を確認してみたら、

  • VCC、VS はどのような大小条件でも誤 動作しません。 ただし、Vref≦VS となるように使用して ください。

となっていたので、とにかく電源が同一でも動作するらしい。 というわけで、1つ目の理由だと思っていたものは、完全に気のせいだった。

2つ目の理由として、冷静に考えてみれば7番〜13番ピンはAndroidとの接続に利用しているUSBホストシールドが通信に利用しており、想定通りに操作できる状態ではなかった。 また、1番ピンもシリアル通信に利用しているようだったので、結果として2〜6番ピンで何とかするしか無いみたいな現実だった。

その上で回路を組んでみたら、ちゃんと思ったとおりに制御できた。

その次に、適当にLEDを回路に接続して点灯できるようにした。これは何も難しくなかったが、ミラーボールを良い感じに照らす角度みたいなのが難しかった。

あとは普通にArduinoAndroidのコードを書いて、やりたいことができた。

ソースコードは前回に引き続き、 shimobayashi/Pip-Boy_2020 · GitHub にpushしておきました。

今回はミラーボールということで完全に無駄なんだけど、何かの通知デバイスとして利用するとか、別のモーターを接続するとか、何かしら使い道はあると考えています。


こうやって文章にしたためると全然時間がかかっていないように見えるけど、実際はミラーボールを回すためだけに日曜日をまるごと潰した。 その原因は主に僕の無知にあるので、

わかる!電子工作の基本100

わかる!電子工作の基本100

を当日注文して、先程自宅に届いていた。内容を簡単に眺めてみたけれど、ハンダ付けの上手なやり方からオームの法則などといった内容をカバーしており、まさに僕が求めているような内容の本だという様子だった。

本来であれば僕は一応高専卒ということでこの辺りの知識はひと通り抑えているはずなのだけど、やはり使わない知識というものは簡単に頭から抜け落ちてしまうもので、こうして勉強し直すこととなった。

色々なセンサーを積んでみたくてArduinoで遊びはじめたのだけど、注文していたセンサー類がなかなか届かなかったばかりに早速あさっての方向に全力疾走してしまった。 今週末にはセンサー類も手元にあるはずなので、この経験を活かしてサクッと実装してみたい。