TOYOTA HackCars Day2014 インターバルの1週間 ハードウェア
■秋葉原で部品購入しハード製作へ |
やっぱり、デモはインパクトが重要です。少しお金はかかりますが、本当に車に搭載するイメージで大きいサイズで作ることにしました。
購入を予定しているお店(最近店舗を移動した)は月曜が定休日で、本日は祝日の月曜です。なんか嫌な予感がしてきました。
やっぱり・・・ orz
通販で購入している時間もありません。
通販で購入している時間もありません。
仕方ないので、いつもお世話になっている秋月通商さんで揃えることにします。
なんだかんだで10Kぐらいになってしまった。まあ、楽しんでもらえれば安い買い物です。
一応以下のモジュールを購入しました。
・超大型4桁LED表示キット×2
・RGBフルカラードットマトリックスLEDパネル 16x32ドット
・SPI(3線式)LED Module 8 Digital (※)
なんだかんだで10Kぐらいになってしまった。まあ、楽しんでもらえれば安い買い物です。
一応以下のモジュールを購入しました。
・超大型4桁LED表示キット×2
・RGBフルカラードットマトリックスLEDパネル 16x32ドット
・SPI(3線式)LED Module 8 Digital (※)
※時間都合でできなかった場合も考えて抑えでコンパクトサイズも合わせて購入しました。
■超大型4桁LEDを組み立てる |
帰宅後に、早速超大型LEDを組み立てます。
でかいね。
あるのは知っていたのですが、こんなの誰が買うんだよっておもっていましたが、自分が買ってましたね。(笑) しかも2つも。
これ、16セグのモジュールなので、ちょっと制御大変だな~と思って購入したのですが、基板上で7セグに変換されています。逆に16セグを使うことができません。(改造が必要)
16セグで面白い演出なんかも考えられますが、時間が無いので7セグで少し安心しました。
ここはArduinoでサクッと制限電流抵抗100Ωで表示してみました。
16セグで面白い演出なんかも考えられますが、時間が無いので7セグで少し安心しました。
ここはArduinoでサクッと制限電流抵抗100Ωで表示してみました。
■Arduino1台じゃ足りない! |
朝の電車で考えていると、Arduino1台ではPin数が足りないことに気づきました。7セグを表示するのに7本+ダイナミック用に8桁分で15本必要になります。
利用しようと思っているRGBフルカラードットマトリックスLEDも同程度必要になります。これでは、Arduino1台じゃPinが足りません。他のマイコンを利用することも考えましたが、Web系コンパイラを利用するともし接続できなくなった場合のリスクが怖いのでArduinoで開発します。(今回はそんな理由でArduinoです。)
ということで朝イチネットでArduino Uno(Amazonリンク)をポチットな。
■RGBフルカラードットマトリックスLEDを使う |
会社より帰宅後にRGBフルカラードットマトリックスLEDを使ってみます。
このモジュールがあるのは知っていましたが、特に使い道がなかったので放置していました。ああ、購入する日が来てしまったか。果たして、うまく制御できるのだろうか?
制御の方は、Arduino用のライブラリがあったのであまり苦労せずに使えそうです。
ただし、すべて点灯するとかなりの電流を消費するようで、5V2Aの電源を要求します。
いやいやそんな厳しいですよ。今回は車に載せて走行やデモしたいので、ACアダプターはチョットな感じです。なんとか、赤だけ、緑だけ、青だけで表示させる感じでモバイルブースターで頑張ってみることにします。
定格に届きませんが、無理させなければなんとか動くと安易な発想です。
ただし、すべて点灯するとかなりの電流を消費するようで、5V2Aの電源を要求します。
いやいやそんな厳しいですよ。今回は車に載せて走行やデモしたいので、ACアダプターはチョットな感じです。なんとか、赤だけ、緑だけ、青だけで表示させる感じでモバイルブースターで頑張ってみることにします。
定格に届きませんが、無理させなければなんとか動くと安易な発想です。
■自作キャラクターエディター(Excel方眼紙) |
このRGBフルカラードットマトリックスLEDに表示したいのは、「空車」「賃走」の漢字を最低限表示したいと考えていました。もちろん漢字フォントなんてArduinoに入っていないので、自作する必要があります。そこで!Excel方眼紙の出番です。
16x32ピクセルなので方眼紙に黒白で塗りつぶすとビットマップを吐き出すようなツール(VBAで)を自作し表示データを作れるようにしました。
■空車は表示できるのだが・・・ |
実際にビットマップをプログラムに入れ込み表示してみると、“空車”だけは表示できるのですが、2つ目の“賃走”を表示させようとすると画面が崩れます。あれ?やばいな~なんだなんだ。
プログラムが暴走する感じなんだな~。
こんな時は、時間が解決する場合が多いので別作業をしながら考えることにします。
■8桁表示を実際にやってみよう |
7セグは8桁表示あるので、ダイナミック駆動すると明るさが気になります。4桁が表示できそうなのは確認済みなので、8桁表示を行い明るさとちらつきを確認します。C言語でもくもくとプログラミングし、ちらつきの少ない1msにすることにしました。写真で撮影しても1msなら数字でちゃんと読めますし、他の処理を行うこともないのでOKでしょう。
(ああ、なんか久しぶりの7セグのプログラム書いた気がする。ちょっと楽しい。)
やっぱり、この7セグ(16セグ)デカいな。置き場所に困る。
とりあえず、7セグ側は、約1億まで数値表現ができるようになりました。
とりあえず、7セグ側は、約1億まで数値表現ができるようになりました。
■漢字が表示できた! |
漢字2文字はOKで4文字が暴走するので、領域問題な感じだな~。プログラムサイズは問題ないので、RAM不足な気がします。少し改良してみると表示できました。RAM不足でスタック壊していたらしい。ライブラリがRAMを結構消費しているらしい。詳しく解析している時間は無いので、RAM不足に注意しながらプログラムを少し見直しました。
■空車ノブにはサーボモータを利用することに・・・ |
やっぱり80’sのタクシーメーターに搭載されていた、倒せるタイプの空車ノブがあるとギミックとしてインパクトあるはず。くるくる回転したり、金額が上がるたびに面白い演出があると絶対楽しい。そこで、利用しようと思ったのが小型のステッピングモータ。角度が自由に制御できるので、くるくる回したり、指定位置に停止させたり面白演出が可能です。後続車になんじゃこりゃ感を大いに伝えることができます。
手持ちの小型ステッピングモータで試したところ、トルクが足りないので空転する場合があります。空転すると位置がズレてしまうので、位置検出の仕組みが必要になります。ちょっと大変になりそうです。
ここでまた方針転換。やっぱり手持ちのサーボモータでいきましょう。あれならば、トルクがありますし、音もなんとなく動いたって感じがあるのでデモにはいいかもしれません。180度程度曲げることができますが、直角に曲がれば十分動きは伝えられそうです。
■情報を伝達する |
ハードウェアに金額を通知して表示させるためには、なんらかの通知手段が必要です。いろいろやり方はありますが、候補としてはWi-Fi/Bluetooth/USB/RS-232C等が考えられます。
Wi-Fiはデモには向きません。会場の人数にもよりますが使えなくなる可能性が高いので除外しました。
まあ、無難に手持ちのBluetoothモジュールとPCを接続して通信しようと思います。
これまた方針転換して、XBeeでやることにする。802.15.4ならあんまり使われないだろうから、デモで通信できないことも無いでしょうし・・・
PC側にデバイスが必要になってしまいますが、まあデモですからね。そこは今後いくらでも改良できますから。
PC側にデバイスが必要になってしまいますが、まあデモですからね。そこは今後いくらでも改良できますから。
■ハード構成が決定 |
試行錯誤の結果以下の構成となりました。いろいろ遠回りしてきたような順調のような・・・
やってみないと上手くいかないこともありますね。時間との駆け引きもあります。
■余談ですが・・・ |
今回ブレッドボードを活用し回路設計して動作させました。
最初の動作検証だけに活用し、その後はユニバーサル基板で作ろうと考えていました。
ブレッドボードの顔をもったユニバーサル基板もありますので、それで作れば・・・と考えていたのですが、時間が無いので途中で諦めてしまいました。残骸がこちらです。(笑)
ゴミを作ってしまいました。
ゴミを作ってしまいました。
※写真では、ブレッドボードに見えますが、その顔をしたユニバーサル基板ではんだ付けが必要なものです。