mRubyの動くLED時計をESP32で作る [前編]
マトリックスLEDでスマート時計を作る - Google スライド
作ったもの
- LEDmatrixの時計
- NTP時刻取得
- HTTP GETで情報を受けられる
- mRubyのプログラムをGETで入力できる
概要
- ESP32 ー 安いマイコン
- LED matrix 32×32 RGB LEDマトリックス/KP-3232D/4900474023047/共立プロダクツ事業所
LED matrix
- KP-3232D
- 32x32の3色LED
- 合計3072個のLED
- 4860円 つまり大体1LEDにつき1.5円
この16pinで入力する。
- 横1列の点灯状態+点灯させる列を入力にとり光る。
- 一度に1列しか光らないので,順次点灯させる。
これの制御にESP32をつないだ.
届いたその日に動いた。
木枠を作った。
きれい。
カラフルに光らせるために,高速で点滅するラインの中で何回光らせるかで制御している。
現在は8階調。人間の目で見える実態は4階調ぐらい?
フルカラーで光らせるためにはFPGAでゴリゴリ実装する必要がありますね…。
時計実装
ESP32のプログラムはこれ:
C言語をLinterも入れずに書いてしまったので,おそらく脆弱性が多量に含まれている. HTTPサーバーの部分が特に脆弱である可能性が高い.
NTP時刻取得
時計なのでsntpで時刻を取ってくるようにした。 wifiのサンプルコードとsntpのサンプルコードを持ってこれば動く。
ただ時々時刻がずれるので自動修正のコードを入れている。 はずだがまだ時々突然1時間以上ずれる。
HTTP GET
外からメッセージやプログラムを書き込むために使用。
slack botから文字列を入れると時計に表示される。
「八木までの各駅と、田原本、新祝園、新田辺、大久保、桃山御陵前、丹波橋に止まります。」みたいな文字列も流せて楽しい。
mRuby編
→ 後編: 楽しい時計プログラム編。