トップ>つぶやきを電光掲示板に表示させてみる

つぶやきを電光掲示板に表示させてみる




やっぱりたくさん光らせたいじゃない

jksoft氏のつぶやきからArduinoを知りました
早速Arduino Duemilanoveを購入してLEDをチカチカさせたりセンサーから情報を取得したりしてました
でもLEDを2,3個光らせてもあまり面白くありません、電光掲示板みたいにたくさん光らせたいなぁ
なら電光掲示板を作ってみるか、それでつぶやきを表示したら面白いかな?
そんな訳で出来たのがこれです
なお、つぶやきを取得するにはArduinoでは力不足な感じなので、データの取得・変換にはパソコンを使い、シリアル通信にてArduinoへ転送して表示させてます

ソースファイルについて

パソコン側のプログラムは「Visual Basic 2008 Express Edition」にて作成しました
twitter_disp_con.lzh
解凍して「twitter_disp_con.sln」をVisualStuidoで開けばビルド出来ます

Arduino側のプログラムはこれです
led_disp.lzh
こちらも解凍してArduinoIDEのスケッチブックの場所(Sketchbook location)へディレクトリごとコピーすればIDEで簡単に開けます

ソースファイルの権利云々ですが、商用非商用利用問わずご自由にお使い下さい
でも「利用したよ〜」って連絡が来ると嬉しがります(笑)

電光掲示板を作る

今回作った電光掲示板は8×8のドットマトリクスLEDを表示させるモジュールを4個繋げてます
モジュール1つ分の部品は以下の通りです
部品名型番購入場所
赤色LEDドットマトリクス(8×8)TOM-1588BH秋月電子
LEDドライバーMAX7219CNG+マルツ
抵抗15kΩ千石電商
電解コンデンサ10μF千石電商
コンデンサ0.1μF千石電商
MAX7219CNG+のデータシートを参考にしました

回路自体もデータシートのそれと変わりません、というかオリジナルで組める程の能力は私にはありません(苦笑)
基板への配置・配線はこんな感じにしてみました
LED-IC間の配線は見づらいので表にしました
LEDピンICピン
1
23
2
16
3
5
4
10
5
14
6
7
7
20
8
15
9
22
10
3
11
6
12
21
13
8
14
17
15
11
16
2

次のモジュールへの配線が楽なように、モジュール間の配線の位置を合わせてあります
モジュール1つ分で基板を作れば、連結させる事で表示エリアを増やせられます
今回は基板の加工が面倒だったので4つのモジュールを1つの基板に配置してます

Arduinoとの配線はこんな感じです
電光掲示板の端子は上から順になってます(LEDと反対側から)
Arduino端子電光掲示板端子
GND
GND
D3
LOAD
D2
DIN
D4
CLK
+5V
+5V
 

フォントを準備するの

文字を表示させるにはフォントが必要です
しかし今回の電光掲示板は縦が8ドットしかないので通常のフォントで表示させると読めたものではありません
8ドットのテストです abcABC012
英数字やひらがな・カタカナは何とかなりますが、漢字を使うと大変な事になります(苦笑)
そこで8ドット表示に最適化された「恵梨沙フォント」を使います
しかし、Windows上で使うフォント形式であるTTF形式では公開されていません
なので今回はX Window Systemのフォント形式であるBDF形式のファイルからTTF形式へ変換してみます
別ページにしましたのでご覧下さい
TTF版恵梨沙フォントの作り方
出来た「elisa.ttf」ファイルはパソコン側のプログラムの実行ファイルのある場所に置いておきます
VisualStudio上でのデバッグ動作時は
\twitter_disp_con\twitter_disp_con\bin\Debug\ に実行ファイルが作成されるのでここに置きます

電光掲示板とArduinoの準備

ここまで準備が出来たら動作テストです
まずArduinoとパソコンを接続します
先に電光掲示板とArduinoを接続してもいいのですが、元々どんなプログラムがArduinoに入っているのか分からないので電光掲示板は後で繋ぎます
ArduinoIDEからArduino側のプログラムを転送します
転送が終わったら一度パソコンからArduinoを抜きます(念の為)
電光掲示板とArduinoを接続して再度パソコンとArduinoを接続します
すると電光掲示板に「OK」と表示されていると思います、これはArduino側のプログラムが起動した事を表す為に表示させています

これで電光掲示板とArduinoの準備が出来ました

つぶやきを表示するよ

そして遂につぶやきを表示させる時が来ました
パソコン側のプログラムは2種類の動作モードを実装してあります
・指定IDのユーザーのつぶやきを表示させる(-i)
・指定キーワードの検索結果を表示させる(-s)
()内が動作モードを指示するコマンドです
2つの動作モードについての例は下記の通りです

ユーザーmulsysのつぶやきを表示させる
twitter_disp_con.exe -i mulsys

キーワード#c78の検索結果を表示させる
twitter_disp_con.exe -s #c78
VisualStudio上で実行するなら「コマンドライン引数」へ「-s #c78」等入れればOKです

特に問題がなければ電光掲示板に「twitter_disp_con」と表示された後、指定した動作で取得したつぶやきが次々に表示されます
また、プロンプトの画面には電光掲示板に表示される内容が出ます
先頭の()内は現在取得されているつぶやきの総数です、60000ミリ秒(=1分)ごとにつぶやきを再取得しているので更新があれば追加されます

表示の最初にノイズが一瞬表示されるのですが今は気にしない事にします(苦笑)

電光掲示板わふたー

電光掲示板の今後について考えてみる
やはり縦8ドットでは「恵梨沙フォント」をもってしてでもきついですね
次は文字縦10ドットにしたいです、モジュールを上下逆にして繋げれば8×2で16ドット分になるので余裕です
横は現在8×4で32ドットですが、4文字分は同時に表示させたいのでもう1つモジュールを追加して40ドットが理想です
今回の基板で1つ分のスペースを確保してあるのはこの為だったりします

それとパソコン側のプログラムは本来「玄柴」で動かそうと思っていました
.NETで作成したプログラムをMonoを通して動かそうとしてたのですが、思うように動かなかったのでそのままパソコンで動かす事にしました
いずれは「mbed」等もっと高性能なマイコンを使ってパソコンが無くても全ての処理が出来るようにしたいですね

2010年8月14日 JBA-soft まるしす
2010年11月12日 誤字修正