「夜中に目が覚めた時、今何時か知りたい」といわけで、夜中の暗闇でも見えるような自発光式ということで、大型白色マトリックスLEDを使った時計を自作しました。
仕様
・マトリックスLEDによる自発光式
7セグメントLEDでもよかったのですが、60mm角の大型マトリックスLEDを売っていたので、これを採用しました。
・時刻合わせが不要
設置位置を天井近くにするため、時間がずれたりしたら時計合わせが面倒なので、時刻が自動設定されるものに。
自動で時刻合わせといえば「電波時計」が定番ですが私の住んでいる所は電波が弱く室内では時間が合いません。
そこで、XBee という無線モジュールを使って時間を合わせることにしました。
XBee は、ZigBee 規格にそった無線モジュールで、これを使えば簡単に電子機器に無線通信機能が載せられます。(2台のXBee同士が、有線シリアルでクロス接続しているように扱える)
そこで、PC側にもXBeeを繋いで、時計からの時刻要求に対し現在時刻を送り返すようなプログラムを動作させておきます。
回路
部品名 | 単価 | 個数 | 小計 |
---|---|---|---|
白色8×8ドットマトリクスLED | 800 | 3 | 2,400 |
Atmel AVR ATtiny2313 | 100 | 4 | 400 |
Xbee | 2,980 | 1 | 2,980 |
抵抗47Ω | 3 | 48 | 144 |
電解コンデンサ 100μF | 5 | 2 | 10 |
小信号用ダイオード 1N4148 | 2 | 1 | 2 |
DCジャック | 115 | 1 | 115 |
6ピンソケット | 60 | 8 | 480 |
ピンヘッダ | 125 | 1 | 125 |
ユニバーサル基板 50mm×70mm | 26 | 6 | 156 |
100均小物入れ | 105 | 1 | 105 |
アクリル板 | 580 | 1 | 580 |
アクリル三角棒 | 180 | 1 | 180 |
5V ACアダプタ | 300 | 1 | 300 |
合計 | 7,977円 |
表示部
マトリックスLEDの制御といえば、シフトレジスタ(74HC164や74HC595)とトランジスタアレイ(TD62083APGやTD62783APG)を使った回路が定番ですが、今回は「夜間利用がメインなので明るくなくてもいい」「シフトレジスタのICよりマイコンの方が安い」というわけで、制御に組み込み用マイコン・Atmel AVR ATtiny2313 を使うことにしました。
ATtiny2313は17本のI/Oがあるので、そのうち16本をLED駆動に使い、残り一本で表示用データの受け取りに使います。
マトリックスLEDとATtiny2313ピン配置を揃えることで、配線の手間を簡略化しました。
データ受信に使える線が1本しかないのでI2CやSPIは無理。そこで、表示用データ受信はUSARTを使って、9600bps 8bit パリティ無しの、非同期シリアルで受け取ります。
LEDは電流制限用抵抗だけを通した直接駆動です。通常のダイナミック点灯では、8ドット単位での点灯制御を行いますが、今回は明るさが要らないですし、ドライブ能力の点から、1灯単位のダイナミック点灯です。
8MHzを1024分周した7800Hzの割り込みで1灯ずつ点灯させますので、全体では122Hzで点滅になります。
LEDは定格3.2V20mAですので、電流制限抵抗は47Ω×2=94Ω。(5.0V-3.2V)/94Ω=19mAが流れます。
これを、同じものを3つ作ります。各モジュールは個別のIDを持たせており、一つのシリアル信号線で3つの表示モジュールを制御できます。
制御部
時間管理もATtiny2313を使用。ATtiny2313からは、内蔵USARTでXBeeと通信し、表示用モジュールに対してはソフトウェアでシリアル信号を作り出しています。
時間の制御については、自前で計時しつつ時々接続先のPCに時間を問い合わせます。
内蔵RC発信器では精度はあまりよくないです。単体で計時させた場合、1日に2~3分ぐらいずれます。そこで1時間に1回時間問い合わせを行っています。
XBee
XBee は電源3.3Vなので、低ドロップ3端子レギュレータで5Vのメイン電源から3.3Vを作っています。
信号線のレベル変換は、
・XBee→ATtiny2313: 直結(ATtiny2313は3.3VでもH認識)
・ATtiny2313→XBee: 小信号用ダイオードでオープンコレクタ的接続(XBee内部でプルアップされているため、Lだけ伝えればよい)
という非常に単純なものになっています。
組み立て
以上5枚の基板を連結させて回路は完成。
ケース加工
アクリル板と、100均で買ってきた小物入れとを加工してケースを作りました。
完成
[nicodo]sm13724637[/nicodo]
[nicodo display=”player” width=”674″ height=”409″]sm13724637[/nicodo]