2020年6月10日水曜日

Raspberry pi 2とFreeBSDで7セグLED時計を作る - はじめに

今まで自分の部屋では、青色7セグメントLEDの電波時計を使っていたのですが、最近近所に高い建物が建ったためか、電波を受信しなくなり、時間が狂うようになってしまいました。
幸いにも、我が家には以前購入したままになっていたRaspberry pi 2があったので、NTPで正確な時刻を取得するのは容易です。
これを使って、電波が届かなくても狂わない時計を作ることにしました。


■表示部分に何を使うか?

アナログ時計はハードルが高そうなので、電子部品を使ってなんとかしてみたいと思います。
  • 7セグメントLED
  • ドットマトリクスLED
あたりがぱっと思いつきますが、ドットマトリクスLEDは制御が難しいし、ほぼダイナミック点灯(高速で点滅を繰り返す表示方法、人間の目には、残像により常時点灯しているように見える)しかできないので、7セグメントLEDをスタティック点灯駆動させて作ってみたいと思います。

■利用できそうな汎用ロジックIC

Raspberry pi 2にはGPIOが豊富にありますが、後先考えずにたくさん使ってしまうのももったいないので、汎用ロジックICを使って、使用するGPIOポートをなるべく節約してみたいと思います。
7セグメントLEDを駆動させるのに使えそうな汎用ロジックICをざっと洗い出してみました。

74HC4511

4bitの数値入力を7セグLEDの8出力に変換してくれる優れものです。
しかも、ラッチ回路があるので、一度入力した値を記憶してくれ、保持している間はRaspberry pi 2本体は他の処理をすることができます。
ただ、フォントは製造元によりまちまちで、「6」および「9」が5セグメントで点灯するものがあるので、意図した表示にするにはデータシートの確認が必要です。
また、「.」や、ABCDEFなどのアルファベット表示に対応していないのがイマイチです。
加えて、値段が他の汎用ロジックICよりやや高めです。

74HC137/74HC138

3入力→8出力のデコーダで、3bitの数値出力を8bit出力に変換してくれるICです。
74HC137はラッチ回路あり、74HC138はラッチなしの違いです。
7セグLEDの出力を保持する為に使うのではなく、ドライバICのセレクタに使う感じです。
これ1つで、3bit入力で8個の7セグメントLEDをセレクトすることができます。

74HC4514

4入力→16出力デコーダーで、4bitの数値出力を16bit出力に変換してくれるICです。
あまり生産されておらず、入手が難しいです。
74HC137/74HC138 2つで代用可能です。
74HC137/74HC138同様に、7セグLEDのドライバICのセレクタに使うのが良いかもしれません。

74HC595

ストレージ機能付きのシフトレジスタで、シリアル入力をパラレル出力に変換してくれるICです。
シリアル出力端子もあるため、連結して複数つなげることが可能です。
Raspberry pi 2からはSPIなどで比較的容易に駆動できます。

SPIが使えるなら、汎用ロジックICの総数を少なく済ませられる74HC595を7セグメントLED分直接に接続するのが一番リーズナブルです。

■便利な既製品

実は、74HC595と7セグメントLEDを駆動する為の抵抗やキャパシタがセットになった商品があります。


さすが秋月電子です、心得ていらっしゃいます。
今回は手っ取り早くこれを使いたいと思います。

0 件のコメント:

コメントを投稿