デジタル壁時計の組み立て

前回の記事「ESP32と32×8フルカラーLEDでデジタル壁時計をつくる」では配線とプログラムについて説明しました。

ここではESP32とLEDマトリックスをケースに収めて和室の長押(なげし)の上に取り付けた例を紹介します。長押の隙間にACアダプター入れてESP32のUSBに給電しています。

OLYMPUS DIGITAL CAMERA

ケースは2mm厚のボール紙をレーザーカッターで加工して、5枚重ねの中にESP32とLEDマトリックスを埋め込みました。LEDとの配線はESP32に直接ハンダ付けをして最小限の高さにしています。

ESP32をはめ込む場所の周囲は熱を分散させる目的でアルミテープを貼っています(この写真撮影の後でWiFiアンテナの近傍はまずいだろうということでアンテナ付近のアルミテープを除去しました)

LED組み込みフレームの前面にはLED光を拡散させるために和紙を糊付けしました。チューブの先にスポンジキャップが付いた糊で手軽に塗ったらムラになってしまいました。ムラは使っている時にはまったく目立たないので良しとしました。ESP32組み込みフレームを白のマスキングテープで固定して完成です。

OLYMPUS DIGITAL CAMERA

プログラムは少し変更しました。分単位で時刻表示が変わりますので、切り変わる10秒前になると色相が左から右に変化します。0秒になった時にその時点の色で時刻を表示します。表示のためのループを高速で回すために1秒ごとの時刻更新はタイマー機能を使うことにしました。
また、寝ている時にはまぶしくないように23時から6時までは表示を暗くしています。

 

 

 

 

ESP32と32×8フルカラーLEDでデジタル壁時計をつくる

「夜中に目が覚めた時、もう一寝入りするか、そろそろ起きるか、知りたくなりますね。身動きせずにねぼけた目を開けるだけで時刻がわかる大きなデジタル時計が欲しいと思いました。日中は明るくカラフルで楽しい表示でも、暗くなったらまぶしくない明るさで落ち着いた色で表示してくれる時計があったらいいですね。」

2年前に作った「手作りの大型7セグメントフルカラー表示器を使った置き時計」はその後もブレッドボードのまま動作を続けています。壁に掛けられるようにリメークしようかと思いましたが、大きなサイズのフルカラーLEDマトリックスが3699円で売っていたので、これを使った方が楽にできると思って新しく作ることにしました。

OLYMPUS DIGITAL CAMERA

構成
(1) ESP32でWiFi LANに接続し、NTPで時刻を定期的に取得する。
(2) ESP32でTimeライブラリを使い、NTP時刻で定期的に校正しながら1秒ごとに時刻を得る。
(3) ESP32でFastLEDライブラリを使い、32×8 LEDマトリックスを制御する。
(4) 時刻表示用数字フォントはComic San MS Bold Italic 96pointをベースにして8×7のグレースケールフォントを自作する。

部品リスト
(1) ESP32(MH-ET LIVE ESP32 MiniKit):AliExpressで$6ぐらいで購入できます。
(2) フルカラーLEDマトリックス(32×8 10mmピッチ):Quimat Arduino用RGB LED パネル…..

配線
ESP32 MiniKit-J2-6pin(5V) —– LED Matrix 5V
ESP32 MiniKit-J2-8pin(GND) —– LED Matrix GND
ESP32 MiniKit-J2-10pin(IO16) —– LED Matrix Din

OLYMPUS DIGITAL CAMERA

Arduino IDEへの追加
ESP32ボードの追加 「Arduinoで遊ぶページ」などを調べてください。
FastLEDライブラリの追加 「ArduinoでNeopixel操作」などを調べてください。

Arduinoプログラム
青色で1秒ごとに時刻を表示するプログラムです。
– NTPサーバーに300秒ごとにアクセスしますが、loop()関数の if(SecCount>=xxxx)で自由に変更してください。
– FastLEDライブラリは高度な色指定ができますので自由に改造してください。
– フォントデータは、3次元配列 NumFont[10][FontHeight][FontWidth]です。好きなフォントに改造してください。

 

OLYMPUS DIGITAL CAMERA

WiFi LANでのESP32環境センサーノードとESP32データロガー

ESP32 environment sensor node and data logger on WiFi LAN

Overview
In order to investigate the temperature distribution in the indoor space, we created a system that records data from multiple environmental sensor nodes wirelessly to a data logger. The environmental sensor node performs intermittent operation by connecting the BME280 environmental sensor to the ESP32 as a battery drive to facilitate installation. The data logger connects the real-time clock and SD card to the ESP 32 and records the received time and data in a file for each sender. Assign a fixed IP address with the ESP32 MAC address using a dedicated WiFi router. Data is sent from the environmental sensor node to the data logger’s IP address using UDP, and the data logger learns the environmental sensor node number from the sender IP address.

概要
屋内空間の温度分布を調べるために、複数の環境センサーノードから無線でデータロガーに記録するシステムを作りました。環境センサーノードは設置を容易にするために電池駆動としてESP32にBME280環境センサーを接続して、電池の交換頻度を減らすために間欠動作を行います。データロガーはESP32にリアルタイムクロックとSDカードを接続して、受け取った時刻とデータを送信元ごとのファイルに記録します。専用のWiFi ルーターを使って使用するESP32のMACアドレスで固定IPアドレスを割り当てます。環境センサーノードからデータロガーのIPアドレスに向けてUDPでデータを送り、データロガーは送信元IPアドレスから環境センサーノードの番号を知ります。

使用した機材

ESP32: MH-ET LIVE ESP-32 Mini kit

10ピン4列のピンソケットには分割ロングピンソケット 1x42 [FHU-1x42SG] (秋月電子通商)を使用しました。
http://mh.nodebb.com/topic/5/mh-et-live-esp-32-devkit-mini-kit-user-guide-updating

環境センサー: BME280 GYBMEP

ライブラリ:BlueDot BME280 Library

BME280 : ESP32
VIN           : 3.3V
GND         :GND
SCL           :IO22
SDA          :IO21

マイクロSDモジュール:

ライブラリ: ESP32標準 SD(esp32)

配線
SD             : ESP32
CS             : IO5
SCK          : IO18
MOSI       : IO23
MISO       : IO19
VCC          : VCC
GND         : GND

リアルタイムクロック: DS3231 ZS-042モジュール


充電できないCR2032を使用するため充電用パターンをカットしました。

ライブラリ:DS3231FS

配線
DS3231      : ESP32
32K             : NC
SQW           : NC
SCL             : IO22
SDA            : IO21
VCC            : VCC
GND          : GND

無線LANポータブルルーター: エレコムWRH-300BK3-S

ESP32のMACアドレスを調べて、MACアドレスとIPアドレスを紐付けにします。SSIDのスティルス機能を使い、登録されたMACアドレス以外は接続を拒否しています。

電池ケース: マルツGB-BHS-3X4C-LW(単3×4本 スイッチ・フタ・リード線付き)
ESP32のVDDに+6V、ESP32のGNDに0Vを接続します。

 

動作の安定性について
ESP32環境センサーノードは送信時に毎回起動するような動作のため安定して動作します。ESP32データロガーは連続動作のためWiFi LANへの接続不良の場合やSDへの記録が正常に行えない場合はESP32をリスタートすることにしました。

 

ESP32環境センサーノードのスケッチ

 

 

ESP32データロガーのスケッチ

 

 

 

「スクエア&キューブパズル」地産材でのクラフト製作の勧め

“Square & cube puzzle” :Recommendation for crafting with local wood

この記事はMFTokyo2019 (Maker Faire Tokyo 2019 )エントリーシートの予稿です。

「メイカーフェア東京2019での計測・解析ラボのプロフィール」
計測・解析ラボは盛岡市を拠点に個人事業としてLabVIEWプログラムの受託開発とArduinoなどオープンなハード・ソフトの講習会を行っています。プログラムとレーザーカッターを使った木工パズルデザインは3年目となり、地域の木材活用と木工クラフト作家との連携を模索しています。MFTokyo2019ではパズル作品を通しての交流やメイカー向けLabVIEW Home版の情報共有を行いたいと思います。

「メイカーフェア東京2019での出展内容の紹介」
正方形から立方体を組むことのできる幾何学的な美しさが特徴のスクエア&キューブパズルです。立方体4個を平面に並べた5種類のピースを16個使ったパズルで、PCやスマホで疲れた目を休めて指先を使い立体図形に親しむことができます。レーザーカッターで作ったプロトタイプを見本に岩手県内の木工家に地域材を使ったクラフト製作を勧めています。もちろん3Dプリンターでの自作も可能です。

12cm Cube(Left) and 6cm Cubes(Right)
15mmのアカマツ材をレーザー加工

 

デモビデオ@ユーチューブ

パズルのデモビデオ(ユーチューブ)

 

「スクエア&キューブパズル」の製作の経緯
MFTokyo 2018では「チーム岩手」から「プログラミングとレーザーカッターの素敵な関係」というタイトルで参加しました。2次元の図案をレーザーカッターで加工すると厚みのある2.5次元のパズルに成ります。次回のMFTokyo 2019ではレーザーカッターで3次元のパズルを作成したいと考えていました。

ちょうどFusion 360を使い始めて立体的な箱物を作る時のはめ込み設計に便利なことに気がついて操作の練習をしていたのですが、レーザーカッターで作ったピースを組み立てて立方体にするアイデアが浮かびました。正方形から切り出したピースが立方体になるパズルは幾何的に美しい構成です。単位立方体の個数で表現すれば次のような関係に成ります。

(正方形)  (立方体)  (単位立方体の個数)

8 x 8 = 4 x 4 x 4 =64

27 x 27 = 9 x 9 x 9 = 729

128 x 128= 16 x 16 x 16 = 4096

とりあえず、一番小さな組み合わせの4 x 4 x 4の立方体で考えることにしました。テトロミノというテトリスで有名な形状は正方形4個の組み合わせで5種類できるので、Fusion 360で4 x 4 x 4の立方体のモデルを作って4個づつ”結合”して全てテトロミノにすることができるか実験してみました。何度か試行錯誤して16個のテトロミノに分割できました。次はその16個で正方形ができるかやってみました。正方形になりました。

平面パズルに使っている厚さ6mmのアカマツ板では2.4cmのキューブにしかならないので、厚さ10mmを注文して作成しました。できることはできるのですが、まだ小さいので、レーザーカッターの限界と言われる15mmの板を注文して作りました。正方形のサイズは12cm、立方体のサイズは6cmになります。正方形の外枠を14cm角にすると持ち運びを考えるて手頃な大きさだろうと思います。外箱は一関の金森紙器さんに作ってもらいました。

一関市の金森紙器さんの外箱

テトロミノについて知っておこう
正方形を2個つなぎ合わせた形状をドミノ と言います。3個つなぎ合わせたのがトロ ミノ、4個つなぎ合わせたのがテトロミノ です。5個つなぎ合わせるとペントミノで すが、このようにN個つなぎ合わせた図形 の総称をポリオミノと言います。テトロミノは5種類ありますが、図形の特 徴からI、L、T、Z、Oと呼ばれています。 I、L、Tは見た目通りですが、正方形をO、 残った1個がZです。
スクエア&キューブパズルには4個の単位立方体で作 ったテトロミノが16個入っています。5種類のテトロミノから16 個選ぶ方法はたくさんありますが、I型が3個、L型が4個、T型が2 個、Z型が3個、O型が4個の組み合わせに しました。

地産材でのクラフト製作の勧め
岩手に旅行で来た時に地元のクラフトマン が作ったスクエア&キューブパズルを目にする日が来 るかもしれません。地域の木材を使ったパ ズルは、木の種類によって色や木目、重さ や手触りが違うことを発見して自然を身近 なものとして考え、豊かな森林への関心を 高めることができるでしょう。西和賀町に 広がる国内有数のブナ林、北限のツバキが 咲く大船渡、遠野地方の広葉樹、久慈の南 部赤松、平庭高原の白樺など広い岩手県に は地域を代表する木が多くあります。天然 木の手触りの良さとともに地域性が感じら れるスクエア&キューブパズルが各地で購入できたら 嬉しいことです。もちろん秋田の杉、青森 のヒバなどを使って各地のクラフトマンが 作ってくれたらもっと面白いだろうなと思 います。

スクエア&キューブパズルに関連する特許
独自の発想で作ったパズルですが、幾何的にきれいなパズルなので誰か他の人も考えていただろうと思って、スクエア&キューブパズルに関係する特許について調 べてみました。古い特許ですが1988年にアメリカで登録され た「BLOCK PUZZLE」という特許があり ました。テトロミノ16個を正方形に詰める パズルとテトロキューブ(立方体を立体的に4個つないだ図形)16個を立方体に組むパズ ルを併記しています。正方形に詰めるパズルの厚みを変えるだけで立方体ができるのですが、念頭にはなかったようです。

サイコロでスクエア&キューブパズルを作ろう
とりあえずパズルが欲しい人はサイコロを瞬間接着剤で接着してパズルピースを作ってみましょう。16mmのサイコロが50個入りで1100円ぐらいで購入できます。

OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA

 

メイカーフェア東京2018

メイカーフェア東京2018に出展します。
木目のパズル「プログラミングとレーザーカッターの素敵な関係」というタイトルで「チームいわて」のメンバーとして参加します。
ブースはC/02-02です。
「LabVIEW Home版をメイカーな人たちに広めよう」ということで、FM音源モジュールを接続したArduinoに、LabVIEWから音源パラメータを送り込むプログラムをデモします。

OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA

タッチディスプレイでLabVIEWのUIをクリックすると、
パラメータがArduinoに送られて、音源モジュールのレジスタが書き換えられ、
音源もジュールからPCのマイク端子に音声信号が送られ、
LabVIEWで信号を受け取って波形とパワースペクトルが表示され、
PCのイヤホン端子から外部スピーカーで音が出る、
というものです。

今回のデモ用にたまたまHPの安いノートPCを購入したのですが、タッチディスプレイの便利さを実感しました。
ブースレイアウトを確認してパッキングしました。

OLYMPUS DIGITAL CAMERA

(180803)

LabVIEWで画像処理、便利?

LabVIEWで画像処理するのは便利ですかと聞かれたのでデモプログラムを作成しました。NI Visionは所有していないので無料評価版を使いましたが、あと数日で期限が切れるので、期限があるうちにアップロードすることにしました。

「ビー玉を並べる作業のAVIファイルを開いてビー玉の個数と位置を表示するNI Visionのデモプログラム」

AVIファイルのフレーム取得、斜めから撮影した画像の台形補正、差分画像の生成、登録画像の検出などが使われています。

作業者が盤の上にビー玉を4個順番に置く作業をしています。作業をビデオに録画してビー玉を置いた場所や置いた順番を自動的にチェックするプログラムです。デモプログラムはAVIファイルに記録されている作業を順次再生しながらビー玉を検知して位置と個数を表示します。デモプログラムでは判定は行いません。

ファイルはNIのCommunity「北東北LabVIEWユーザー会」からダウンロードしてください。

LabVIEW2017の”評価版”で作ったものですが、LabVIEW2009版にバージョンダウンしたものもアップしています。Visionを持っていない方は最新の評価版で試してみてください。

AVIで保存するプログラムとAVIファイルのフレームをjpgで保存するプログラムもアップしています。

木目のパズル「プログラミングとレーザーカッターの素敵な関係」

Wood grain puzzle “Lovely relationship between Processing programming and laser cutter”

この記事はMFT2018 (Maker Faire Tokyo 2018 )エントリーシートの予稿です。

出展者のプロフィール
レーザー加工といえばイラストレーターで図案を描いてMDFを切り抜くものという風潮に抗って、Processingプログラムでパズル図案を描いて、地元の木材をレーザーカッターで切り抜いて木目のパズルを作っています。本業は計測の自動化と解析処理用のLabVIEWプログラムを提供していますので、LabVIEWホーム版を使ったArduino+FM音源YMF825の音作りツールも紹介する予定です。

出展内容
プログラムで描いた画像をレーザー光線がたどって切り取ってくれる。画面の中の五角形が厚みを持った五角形の木片になる。ジグソーパズルの無限の組み合わせをプログラムで描いて、地元の木材でパズルを作ってみよう。絵はいらない、木目が元の場所を教えてくれるから。久慈の南部アカマツ、遠野の桜、浄法寺のウルシ、木目は木の物語。プログラミングとレーザーカッターの素敵な関係を提案します。木目のパズルを見に来てね。

ジグソーパズルの製作
(1)Processingでピースの形状をランダムに作画します。
(2)レーザーカッターで切断します。
(3)パズルの完成です。
(4)画面の図形が厚みを持ってさわれる!!!

デモビデオ「プログラミングとレーザーカッターの素敵な関係」
https://www.facebook.com/koji.ohashi.12/videos/1696150310460940/

五角形のパズル

OLYMPUS DIGITAL CAMERA

Processingでレーザー加工用図形をプログラムしよう!!

Processingって何?

たくさんあるプログラムツールの中でProcessingを選ぶ理由は四つ。
(1) オープンソースなので無料で使うことができる。
(2)図形をPDFで出力できる。
(3)グラフィック関連の関数が一通り揃っている。
(4)プログラムサンプルが豊富で使いやすい。

 

タングラムという古典的な図形パズルを例にプログラム方法を紹介します。

タングラムって何?

プログラムで作成するタングラムの図案。
図案が少し違いますが、タングラムを切断加工している様子です。
プログラムサンプル

processingでのプログラムはディスプレイに表示することを主眼に作られているのでピクセルが基本単位です。72ピクセルが1インチ(25.4mm)ですから、1mmは72/25.4ピクセルとなります。長さ100mmは100*72/25.4ピクセルとなります。つまり、欲しい寸法(mm)とプログラムで使うピクセルの変換は72/25.4を掛ければ良いだけです。

また、ドキュメントサイズを変数で指定することとPDFライブラリを使用していることに注目してください。

 

 

ESP32でYMF825音源のデモ(音色データ、音階、和音)

ヤマハのFM音源YMF825をArduino UNOで制御できましたので、ESP32に移植しました。
ESP32で使うと何がうれしいか !! —- >> タッチセンサーとBLEが使えます。

Arduino UNOの例は下記の記事を参照してください。
http://keisoku-lab.mond.jp/2018/02/09/ヤマハfm音源lsi-ymf825搭載モジュールのデモプログラム/

ESP32は3.3V系ですから、5V系のUNOで使っていたYMF825モジュールを接続するのはちょっと注意が必要です。ウダ電子の公式ページでは5Vと3.3V電源を接続し、抵抗を外し、ハンダを盛ってジャンパーする旨書かれています。3.3V単独電源になるなら頑張れますが、5Vも供給しなければいけないのは面倒ですから、YMF825モジュールは5Vのままで、SPIの信号を調整する方向で考えます。信号線はSCK, MISO, MOSI, SSとリセット信号の5本です。ESP32から出力する信号は3.3VなのでそのままでもYMF825に伝わりますので気にしないことにします。ESP32に5V信号が入ってくると壊れてしまいますが、入力はMISOだけです。MISOはレジスタの値を読み取る時に使われますが、読まないと決めればつなぐ必要がないことに気がつきました。SPIライブラリの中ではMISOも指定しないとエラーになりますのでMISOも割り当てますが、配線はしません。

OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA

但し、後日何か問題が起こった時に配線チェックをして、抜けている線を発見すると反射的に結線してしまう可能性がありますので注意が必要です。何気なくMISOを結線するとESP32を壊してしまいます。Vfが2VぐらいのLEDの+側をYMF825のMISO、-側をESP32のMISO入力端子に接続しておけば、思い出すきっかけにもなりますし、破壊する心配も無くなります。

ESP32のSPIでYMF825を使う方法は
ywabikoさんの記事がたいへん参考になりました。

YMF825モジュール <<—->> ESP32
RST_N <<—->> IO32
5V <<—->> USB 5V
GND <<—->> USB GNDとESP32 GND
SCK <<—->> IO18
MISO <<—->> 接続しない (IO19)
MOSI <<—->> IO23
SS <<—->> IO5

(180213)

 

ESP32(MH-ET LIVE ESP32 MiniKIT)のタッチセンサー

ESP32には10本ものタッチセンサーがあります。しかも、インタラプト関数が用意されているので便利に使えそうです。

OLYMPUS DIGITAL CAMERA

ESP32の安価でコンパクトなボードを購入したので試しに使ってみようと思います。特にアフィリエイトが得られるわけではありませんが、購入先は下記URLです。

https://ja.aliexpress.com/item/MH-ET-LIVE-D1-mini-ESP32-ESP-32-WiFi-Bluetooth-Internet-of-Things-development-board-based/32816658883.html?spm=a2g0s.9042311.0.0.u50SMy

このボードはLチカ用LEDが付いているのが原因だと思いますが、T2は使えません。また、T8とT9が入れ替わっているようです。

T0–IO04
T1–IO0
T3–TDO
T4–TCK
T5–TDI
T6–TMS
T7–IO27
T8–IO32
T9–IO33

フラットケーブルを使ったら60ぐらいあったタッチセンサーの出力が20ぐらいまで低下して、検知できるギリギリですがなんとか使えています。

(18.02.11)

 

ヤマハFM音源LSI YMF825搭載モジュールのデモプログラム

Arduino UNO互換機でYMF825を動作させてみました。

複数の音色パラメータから音色データを生成して、西洋音階で和音を鳴らします。ヘッドフォンアンプが付いていますが、スピーカーにつないでいます。

購入先はスイッチサイエンスです。
https://www.switch-science.com/catalog/3399/

OLYMPUS DIGITAL CAMERA

音の雰囲気が伝わるように動画を作りました。
https://www.facebook.com/koji.ohashi.12/videos/1635981226477849/

音色パラメータが4種類入っているのでプログラムが長くなっていますが、実際に使えるものを作ろうとするとこのぐらいの機能は必要になるのでまとめてみました。

lineNo.304-307にバグがありましたので修正しました。(180213)

(18.02.09)

参考にさせてもらったサイト

https://kanpapa.com/today/2017/08/ymf825-fm-board.html

https://sites.google.com/site/himagine201206/home/arduino/ymf825/030