M5Stackと NeoPixel で Art-Net DMX を使った LED エフェクト実験

M5Stack

使ったもの

M5Stack

Espressif Systems社の ESP32 を搭載した、技適取得済み2.4GHz帯 Wi-Fi マイコンモジュールです。
LCD、microSDカードスロット、バッテリー、スピーカー、ボタンスイッチ、Groveコネクタなど、よく使うもの全部入りモジュールです。
(追記)
M5Stack Basicは、この記事を書いた当時より格段にバージョンアップしております。
以下のスイッチサイエンスさんの公式サイトをご参照ください。
https://www.switch-science.com/collections/%E5%85%A8%E5%95%86%E5%93%81/products/9010

※M5Stack Gray(9軸IMU搭載)現在は販売終了しております

 

micro SDHC カード

日本語フォントを保存するために使います。
できるだけ大手メーカー製を使用した方が良いと思います。
私が動作確認したものは以下の物です。



NeoPixel Ring – 12連フルカラーシリアルLED

Adafruit 製の NeoPixel Ring 12連のものを使います。
後で注意点を述べていますが、本来 5V 用で使うものです。
ですから、3.3V ロジックレベルの M5Stack や ESP32 で使う場合は、ロジックレベル変換を使った方が良いと思います。
でも、ここでは反則的に、3.3Vロジックで使っています。

2.54mm ピッチ ピンヘッダ

NeoPixel にピンヘッダをハンダ付けして使います。

小型ブレッドボード

とりあえず、これを使いました。

硬いジャンパーワイヤー

Wi-Fi 環境

2.4GHz 帯の Wi-Fi 環境が必要です。
事前に ESP32 や M5Stack が通信できるように、ファイアウォール設定を見直しておいてください。
MACアドレスフィルタリングをかけている場合、ESP32 や M5Stack の MACアドレスを調べる方法は以下の記事を参照してください。

ESP-WROOM-32 ( ESP32 ) チップ・メモリ・MACアドレス情報取得方法

Windows パソコン

Art-Net 対応のソフトがあれば、Mac でも良いのですが、今回紹介するソフトは Windows 用しかありませんでしたので、Windows パソコンをご用意ください。

Arduino core for the ESP32 のインストール

Arduino IDE はver 1.8.7 で使いました。
Arduino core for the ESP32 は stable 1.0.0 で動作確認しています。
インストール方法は以下の記事を参照してください。

Arduino core for the ESP32 のインストール方法

ArtnetWifi ライブラリのインストール

rstephan さんが作成した、ESP32 用の素晴らしいライブラリは、以下のリンクにあります。
これは、ソースコードを拝見すると、UDP を使った驚くほどシンプルなものです。
Art-Net って、意外と簡単なプロトコルなんだなぁと思いました。

https://github.com/rstephan/ArtnetWifi

ZIP ファイルをダウンロードしていただき、Arduino IDE にインストールしてください。
ZIP ファイルのライブラリインストール方法は以下の記事を参照してください。

GitHubにある ZIP形式ライブラリ のインストール方法 ( Arduino IDE )

FastLED ライブラリのインストール

最初の方で紹介したように、Adafruit ライブラリを使ってしまうと、ESP32 や M5Stack を WiFi で使う時にフリッカーしてしまうので、これを使った方が良いと思います。

https://github.com/FastLED/FastLED

同じようにZIPファイルをダウンロードして、Arduino IDE にインストールしてください。
ZIP ファイルのライブラリインストール方法は以下の記事を参照してください。

GitHubにある ZIP形式ライブラリ のインストール方法 ( Arduino IDE )

自作ライブラリのインストール

四角形を表示させるだけならば、M5Stackライブラリでも良いのですが、今回は独自に日本語ひらがな表示をさせるので、私の自作ライブラリを使います。
以下のリンクにありますので、
beta ver 1.0.67 以降の最新版を使用してください。

https://github.com/mgo-tec/ESP32_mgo_tec

ZIP ファイルのライブラリインストール方法は以下の記事を参照してください。
GitHubにある ZIP形式ライブラリ のインストール方法 ( Arduino IDE )

古いバージョンはかならずフォルダごと削除してから再インストールしてください
そして、BOSCH製ドライバ BME280 および BME680 ライブラリをインストールされていない場合、そのライブラリ内の/Sensor/フォルダを削除してください。
そうしないと、コンパイルエラーが出ますので注意してください

また、Arduino標準のTimeライブラリをインストールする必要があります
GitHubの以下のリンクからZIPファイルをダウンロードして、Arduino IDEにインストールしておいてください。

https://github.com/PaulStoffregen/Time

日本語東雲フォントを micro SDHC カードに保存しておく

日本語表示させたくない場合はここを読み飛ばしてください。

M5Stack に日本語ひらがな表示させるために、日本語フリービットマップフォントの東雲フォントUTF8→Shift_JIS 変換テーブルファイルを micro SDHC カード に保存しておきます。
以下の記事を参照して、micro SDHC カードに /font/ フォルダを作成して、そこに以下の3つのファイルを保存しておいてください。

Arduino – ESP32 ( SPIFFS または micro SD ) 自作Fontライブラリインストール方法
(※この記事のfontファイルのみ使います。ライブラリインストールは不要です)

Utf8Sjis.tbl (私の自作 UTF8→Shift_JIS 変換テーブル)
shnmk16.bdf (16×16 全角フォント)
shnm8x16.bdf  ( shnm8x16r.bdf のファイル名中の ’r’ 文字を削除しておく)

NeoPixel Ring にピンヘッダをハンダ付けしておく

私の場合は、NeoPixel をブレッドボードに挿す方式にしています。
ですから、下図のようにピンヘッダをハンダ付けしました。

このハンダ付けについては、以下の記事も参照してみてください。

NeoPixel と紙で フルカラー LED イルミネーション オブジェを作ってみた

NeoPixel Ring と M5Stack を接続する

NeoPixel は、WS2812B という素子を使っていて、ネットで検索したデータシートを見ると、以下の感じです。

●VDD   +3.5~5.3V
●VIH  0.7 × VDD

とすると、ESP32 や M5Stack の 3.3V 駆動では保証されておらず、5V駆動用のようです。
そう思って、Sparkfun のロジックレベルコンバータを使って下図のように接続してみました。

ただし、オシロスコープで波形を見ると、なぜが 5V 側のロジックが 3.3V のままです。
私のやり方が何か間違えているんでしょうかね???
うっかりミスのような気もするのですが、原因不明だったので、今回はロジックレベル変換は諦めて、M5Stack の GPIO から直に NeoPixel Ring の Input に接続してみました。

この接続は動作保証外かも知れません

写真ではこんな感じになります。

これでもとりあえず、普通に問題無く動作しました。
あまりお勧めしませんが・・・。

では、次ではプログラムを入力していきます。

コメント

タイトルとURLをコピーしました