こんにちは。
この前、VAQSOについてちょっとしたディス記事を書きましたが、それを修正してみてどのPCでも動作できました。そこで本記事では、修正方法について簡単にまとめようと思います。
色々と紆余曲折しながらデバッグしたので私は時間がかかりましたが、おそらく、紹介する手順で最短に修正できると思います。
問題
- ファンを動作させるコマンドを送信した瞬間に、ファンが動作せずコマンドも受け付けなくなる
- 一部のPCでは動作が不安定(ファンが1つも回転しない)
- 複数のファンを同時に動作させられない
電源の強化
まずは電源の強化です。VAQSOでは、一部のPCにおいてファンを1つでも回した際にマイコンにおいて電源不足が生じ、リセットされる問題があります。 この問題の解決には電源にコンデンサを噛ますことが有効でした。
私が使用したのは秋月電子通商で販売されている電解コンデンサです。それを画像のようにハンダ付けするだけです。短いほうの足がGND側になります。ケースに収まるように足の長さは調節してくださいね。
プログラムの変更
現状でファンが1つも回らないという問題はなくなりました。しかし、複数のファンを同時に動作させることは現状ではできません。そのため、1つずつファンを動作させ、そのファンを高速に切り替えることで複数のファンを同時に動作させるようにしています。
ということで、プログラムを書き換えていきます。下記のリポジトリにコードがあるので、適当に自身のPCに持ってきてください。
VAQSOはマイコンにPololu A-star 32U4が使用されており、そいつにプログラムを書き込みます。 Arduino IDEで書き込みを行いますが、そのためにドライバの準備やボードマネージャの設定をする必要があります。
これに関しては下記のサイトが参考になります。
VAQSOの操作コマンドについて
文字列の処理に自由度を持たせためんどうな実装をしたくなかったので、公式のものから勝手にコマンドを変えました。全部5文字のコマンドです。通信速度は115200bpsとしています。
まず、ファンは1つずつ起動させていきます。そのコマンドは下記の様になります。
fan01 // ファン0 を 起動 fan00 // ファン0 を 停止 fan21 // ファン2 を 起動
次に、すべてのファンをON/OFFするコマンドです。使う機会はありませんが下記の様なコマンドです。
allf1 // ファンをすべて起動 allf0 // ファンをすべて停止 = resetコマンド
最後に、状態をリセットするコマンドです。
reset // ファンをすべて停止 = allf0コマンド
外部電源での補助
ここまでの修正内容で基本的な動作はできるようになりますが、複数のファンを同時に動作させた場合、回転が貧弱な問題は残っています。複数の香りをパワフルに出力したい場面では外部電源が有効かもしれません。
方法としては、GNDと5Vの間に5V電源を挟むことです。VINとGND間に色々な電源を接続しても無意味でした。。。
私はamazonで購入したばかりの電源装置を用いて実験したのですが、複数のファンを擬似的に同時開店してもパワーは安定します。
ただ、外部電源の有無は制御マイコンの電源不足問題を全く解決しません。また、5つのファンを電気的に同時に動かすこともできませんでした(2・3個ならいけるのかも)。
おわりに
なんかいろいろあって、マイコンに書き込みができない状態になった場合は、RSTピンとGNDを短絡させてマイコンのリセットを行なうと解決できると思います。私は、起動時に5つのファンを同時に回転させるプログラムを書いていたとき、そのような現象に陥り、RESETしまくって問題が生じないように直していました。
速度調節に需要があれば実装します。その際はf0100とかf3045みたいなコマンドにします。まだ実装してないけど。