すこし前のことですが、秋月電子に行ってきました。といっても秋葉原の店舗ではなく埼玉県八潮市の方です。電車だと秋葉原からつくばエクスプレスで20分ほどの八潮駅が最寄り駅になります。ここの店舗は駅から10分くらいは歩かなければなりませんが、秋葉原点より広いのでゆっくりじっくり部品選びが行えます。特売品なども沢山あり、うまくすれば部品が安く手に入ります。
今回ここに行った主な目的は、これを購入したかったからです。
赤外線LEDと受信モジュールです。
一度Arduinoで使ってみたかったのもありますが、テレビ兼用のPCモニターの操作に必要最小限の機能を持ったリモコンがほしかったのです。テレビのリモコンはデカくて長いので机に置くのは邪魔なんですよね。今はテレビ本体の押しにくいボタンを直接操作しています。
Arduinoで赤外線を扱う場合、IRremoteという便利なライブラリがあります。このライブラリで簡単に赤外線リモコンを作ることが出来るようです。IRremoteの情報はネットに沢山ありましたが、こちらのサイトで分かりやすく説明してくださっているので参考にしました。
ところでリモコン本体をどうするかですが、当初小型AVRのATtiny13aで実現しようと考えていました。しかしIRremoteが対応していないので諦めてATmega328Pを使うことに。
操作ボタンはタクトスイッチでとも思いましたが、ATmega328Pを赤外線リモコンだけで使用するのはもったいない気がして、きちんとしたボタンと液晶ディスプレイなんかもつけて電卓やらなんやら汎用的に使えるデバイスを作ったらいいんじゃないかと欲張りな考えが湧いてきてしまいました。そこで最終的に選んだのがこれです。
普段使うのは昔にArduinoでMacのテンキーをPCのテンキーにしたものなので、ずっと利用されずにほったらかしになっていた普通のテンキーです。リモコンにするには少し大きめですが、机上で利用する赤外線付きの汎用デバイスにはちょうどいいのではないでしょうか。
そこでATmega328Pで利用するためにテンキーのマトリックス回路が引き出せるのかどうか分解してみました。
残念ながらフレキシブルな基板なので直にハンダ付けするのは無理ですが、接続コネクタを取り出せばATmega328Pで利用できそうです。コネクタをテスターで調べてみると4×5のマトリックスになっていました。
(8) (7) (6) (5)
1 2 3 4
(9) | | | |
5 - * - Num - - - / -
(10) | | | |
6 - 9 - 7 - + - 8 -
(11) | | | |
7 - 6 - 4 - BS - 5 -
(12) | | | |
8 - 3 - 1 - Ent - 2 -
(13) | | | |
9 - 000 - 0 - . - -
| | | |
()内の数字はATmega328Pとの接続ピン番号
()下の番号は上面左から割り振った端子番号
空白部分は配線なし
ここまで分かればもう使うことのないテンキーですから、躊躇なく部品を剥がします。
コネクタは破損しないように半田ごてで丁寧に剥がします。それ以外のパーツも再利用出来そうなものは取り外しました。
次にテンキーとATmega328Pを載せた基板を接続するために、コネクタに線をハンダ付けします。端子が細かいのでエナメル線を使います。エナメル線をハンダ付けするときは絶縁皮膜を溶剤などで溶かすのですが、今回使用したものは十分に温めた半田ごてでこすると皮膜がぼろぼろ剥がれるものでした。(剥がせないものもあるようです)
細かい作業なのでゆっくり慎重に作業していきます。フレキシブル基板のパターンを元に9本の線を引き出しました。
目視やテスターなどで結線に問題がないことを確認したら、接点が取れないようにグルーガンで固定してしまいます。こうしておけば基板に配線するときも安心です。
後はユニバーサル基板にATmega328Pや赤外線LEDなどを配置してテンキーに固定するだけです。(かなり面倒ですが)
もう一つ電源をどうするのか考えなければなりませんね。最初はダイソーの500円モバイルバッテリーをそのまま利用しようとしたのですが、充電用のバッテリー装置なので消費電力の少ないAVRでは充電終了とみなされて直ぐに電力供給が止まってしまいます。
そこで内部のバッテリーを取り出し、3.3Vの三端子レギュレータにつないで利用することにしました。
方針は決まったので、ひたすら組み上げていくだけです。最終的にこんなふうになりました。
ATmega328Pは3.3V出力の三端子レギュレータにつなぐので8MHzのクリスタルを使います。電源には0.1μFのパスコンをつけ、リセット端子は10KΩの抵抗でプルアップし、リセットスイッチも付けました。このサイトの基本的な配線とほぼ同じです。
100Ωの抵抗と赤外線LEDはIRremoteデフォルトの3番ピンにつなげました。3.3Vで100Ωだと赤外線LEDの光は強くないので普通のリモコンの様に離れた位置から使うのは無理ですが、机上でテレビモニターから数10センチの距離で光が届くのは確認できているのでそのまま使うことにしました。
それから三端子レギュレータの下に電源スイッチを付け、基板右にはスケッチ書き込み用のピンソケットを、基板下にはI2Cディスプレイをつなぐピンソケットも配置しました。テンキーから取り出した配線は上記マトリックスの表に記述した端子につなぎました。
テンキーの裏には500円モバイルバッテリーから取り出したバッテリーを貼り付け、むき出しだと危険なのでモバイルバッテリーのケースをかぶせました。ただし、テンキーのサイズの都合でケースの上部は切り取りました。
基板とテンキーとバッテリーケースはダイソーのグルーガンで固定しています。グルーガンだと仕上がりがキレイにならないのですが、裏面なのでまあいいでしょう。
モバイルバッテリーの充電回路部分も利用するので、丁寧に切り離して充電用のコードも配線しました。
I2Cのディスプレイは秋月電子で購入した16x2行の液晶ディスプレイをつなぎたかったのですが、突然画面が消えたり電源を落とすと次回起動時に画面表示が行われなくなるなど動作が安定しないので、しかたなくArduinoではお馴染みの128x64ドットの有機ELディスプレイを使うことにしました。
LCDの方が見た目にしっくりきてよかったのですが、どうにも安定動作せず残念です。これのために配線し直したりプルアップ抵抗をATmega328P内部や外部にして動作させたり、かなり時間をかけたのですがなんともなりませんでした。
ブレッドボードでテストしたときは問題なかったのですが、いざ回路を組んでみると色々問題が発生します。難しいものです。
OLEDならば全く問題なく動作しました。
なんとかハードが完成し、赤外線・ディスプレイ・テンキー入力の簡単なスケッチで動作確認は取れました。次は本格的なスケッチ作成に移りたいのですが、時間がかかりそうなのでまた次回に。
※コメント投稿者のブログIDはブログ作成者のみに通知されます