wassup?

プログラミング、ボドゲ、ボカロ

mRubyの動くLED時計をESP32で作る [前編]

マトリックスLEDでスマート時計を作る - Google スライド

作ったもの

  • LEDmatrixの時計
  • NTP時刻取得
  • HTTP GETで情報を受けられる
  • mRubyのプログラムをGETで入力できる

概要

LED matrix

f:id:wass80:20190430144912p:plain

  • KP-3232D
  • 32x32の3色LED
  • 合計3072個のLED
  • 4860円 つまり大体1LEDにつき1.5円

この16pinで入力する。

f:id:wass80:20190430145027p:plain

  • 横1列の点灯状態+点灯させる列を入力にとり光る。
  • 一度に1列しか光らないので,順次点灯させる。

これの制御にESP32をつないだ.

f:id:wass80:20190430145248p:plain

届いたその日に動いた。

f:id:wass80:20190430145310p:plain

木枠を作った。

f:id:wass80:20190430145540p:plain

きれい。

f:id:wass80:20190430145554p:plain

カラフルに光らせるために,高速で点滅するラインの中で何回光らせるかで制御している。

現在は8階調。人間の目で見える実態は4階調ぐらい?

フルカラーで光らせるためにはFPGAでゴリゴリ実装する必要がありますね…。

時計実装

ESP32のプログラムはこれ:

github.com

C言語をLinterも入れずに書いてしまったので,おそらく脆弱性が多量に含まれている. HTTPサーバーの部分が特に脆弱である可能性が高い.

NTP時刻取得

時計なのでsntpで時刻を取ってくるようにした。 wifiのサンプルコードとsntpのサンプルコードを持ってこれば動く。

ただ時々時刻がずれるので自動修正のコードを入れている。 はずだがまだ時々突然1時間以上ずれる。

HTTP GET

外からメッセージやプログラムを書き込むために使用。

slack botから文字列を入れると時計に表示される。

f:id:wass80:20190430150222p:plain

「八木までの各駅と、田原本新祝園、新田辺、大久保、桃山御陵前丹波橋に止まります。」みたいな文字列も流せて楽しい。

mRuby編

→ 後編: 楽しい時計プログラム編。

wass80.hateblo.jp