温度をLEDの色で表示する

部屋の温度をLEDの色で表示する機器を作ってみたくなった(*´ェ`)

使用した部品は
・マイコン内蔵RGBLED WS2812B 7つ
・温湿度センサー モジュール AHT25 7つ
・TCA9548A I2C Multiplexer 2717 1つ

温度の取得や色の設定は Arduino UNO R4 Minima で行う(*´ェ`)

温度と色の関係は色相環の赤(0°)を40℃上限として、青(255°)を下限(0℃)で表すことにした(*゚ェ゚*)

25℃くらいなので緑色になっている(*´ェ`)

温湿度センサーを手で覆って温めると黄色く変化した(*´ェ`)

12桁の7セグメントLEDでIPv4を表示

3桁の7セグメントLEDを見た時に真っ先に思いついたのがIPv4を表示させること(*´ェ`)

というわけで早速3桁7セグメントLEDを4つ買ってIPv4を表示させてみた(*゚ェ゚*)

まずは1つだけで表示させてみる、これがダイナミック点灯と呼ばれる目の残像を利用した表示方法か(*゚ェ゚*)

目で見ると確かに高速で切り替えているように見えない∑(*゚ェ゚*)

なんとなくわかってきたところで4つの3桁7セグメントLEDを繋げてIPv4を表示させてみる(*´ェ`)
シフトレジスタを使ってArduinoとの配線は3本の信号線で済んだ(*´ェ`)
IPの表示はシフトレジスタにIPアドレス1桁の数字と4つのオクテット(3桁7セグメントLED)のうちどれかという位置と、どの桁かという情報を1byteで送っている
例えば1つ目のオクテット(一番左の3桁7セグメントLED)の2桁目は9という数字の場合
00011001 という8bit 1byte分のデータを送る
左から 2bit は 4つのオクテットのうちどれかという位置(1つ目)
次の 2bit は 3桁のうち何桁目か(2桁目)
次の 4bit は 表示したい数字(9)
00 01 1001
となっている(*´ェ`)

7セグメントLED周りの配線が悲しいけれども表示はできた(*゚ェ゚*)
今回は指定したIPを表示させている(*´ェ`)
いずれネットワークからグローバルIPなどを取得させたい(*゚ェ゚*)

最初はチラついていたのでバイパスコンデンサをICの近くに設置したらチラつかなくなって感動した(*゚ェ゚*)
12桁だとちょっと発色が弱いような色が薄い..(*´ェ`)

別の電源からトランジスタを使って増幅させる必要がある?
と思っていたけれど一旦今の回路で使用しているICを減らせそうと気がついたので減らしてみた(*゚ェ゚*)
2to4デコーダとインバータ(NOT)x2、NANDx3を1つのIC 4to16デコーダ(74xx154)でできそうだ∑(*゚ェ゚*)
だがしかし74xx154のDIPが売り切れ..(*´ェ`)生産終了..(*´ェ`)悲しい
SOICの74HC154はあるのでDIPに変換するアダプターと共に注文(*゚ェ゚*)
届くまで4to16デコーダを3to8デコーダ(74xx138)2つ使って置き換えてみることにした(*゚ェ゚*)機能的には同じ(*´ェ`)
だいぶスッキリした∑(*゚ェ゚*)

あら少し色が濃くなった∑(*゚ェ゚*)

SONY SPRESENSE で取得したNMEAセンテンスをシリアル通信で他の端末へ流す

やってみたかった事ができた(*゚ェ゚*)

先日作った SONY SPRESENSE で取得したNMEAセンテンスのデータをシリアル通信で Arduino に繋いだディスプレイに表示させるから発展させて複数のArduino端末へデータを送り各端末でデータを加工し表示させたかったのだ(*´ェ`)

SONY SPRESENSE はNMEAセンテンスをシリアル接続で送るだけ(*゚ェ゚*)
受け取る側のArduinoはそれぞれ表示に必要NMEAセンテンスを取捨選択する(*´ェ`)

一つ目のArduinoは$xxGSV をフォーマットして衛星の位置を表示させて、二つ目のArduinoは$xxZDA をフォーマットして日時の表示をさせている(*´ェ`)

Arduino と LCD の M96-16-SSD1306

昨日は Arduino と LCD(AE-AQM1602A) の接続&文字表示が思っていたより簡単に出来ることがわかったので今日は別のLCD(M96-16-SSD1306)を使って文字を表示させてみた(*´ェ`)

昨日のLCDは16文字の2行を表示できたけれど今日のLCDは16文字4行表示できる(*゚ェ゚*)

読みやすさは置いておいて、文字が小さくて文字間が詰まっていてカッコいい(*´ェ`)白文字も良い(*´ェ`)

サンプルのスケッチでビットマップ画像や線や図形などを表示させることもできた(*゚ェ゚*)ドットの描画も出来ていたので文字以外で何か描画させてみたいな(*´ェ`)

Arduino 買ったーの

SONY SPRESENSE で作ったGNSSロガーで取得したデータをLCDで表示させたいと思い、どう実現させようか調べていたところ Arduino で色んなLCDに文字や図表示させて試してから考えることにした(*´ェ`)

そこで Arduino UNO R4 Minima と Arduino UNO R4 WiFi を一個ずつと3種類のLCD(AE-AQM1602A、AE-ATM0130B3、M96-16-SSD1306)を買ったみた(*゚ェ゚*)

まずは Arduino UNO R4 Minima と AE-AQM1602A の組み合わせで文字を表示させてみた(*゚ェ゚*)