LEDマトリックスモジュールで遊ぶ その3 後編
ローカルネットワークの外からメッセージを送る。(後編)
2019年11月8日

ソースコード
参考にさせて頂いたCytron社のtutorialページに基になったソースコードが見れます。
ESP8266用とArduinoUNO用に分かれていたソースコードを統合してWROOM-02単体で動くようにしました。
当初、SoftwareSerialを使わずにBlynkから受け取ったMessageをSerial readで読み取って処理するつもりでしたが、
老人の私には上手く出来ずに諦めました。そこで苦肉の策としてSoftwareSerialを使って一旦GPIO5とGPIO4に出力
した後、RXとTX端子に戻す方法を採りました。
#include "ESP8266WiFi.h"
#include "BlynkSimpleEsp8266.h"
#include "MD_Parola.h"
#include "MD_MAX72xx.h"
#include "SPI.h"
#include "SoftwareSerial.h"
SoftwareSerial blynkSerial(5,4); //GPIO5,GPIO4に出力
char auth[] = "Blynkから通知された「AUTH TOKEN」を記入";
char ssid[] = "ルーターのID";
char pass[] = "ルーターのpassword";
// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW //使用するHWを記入
#define BLYNK_PRINT Serial
#define MAX_DEVICES 8 //MAX_DEVICESを8個使用
#define CLK_PIN 14
#define DATA_PIN 13
#define CS_PIN 15
#define NOTE_G4 392
#define NOTE_B4 494
#define BUZZER 12 //着信音
int melody[] = {NOTE_B4, NOTE_G4};
int noteDurations[] = {8, 8};
//HARDWARE SPI
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
//Scrolling parameters
static uint8_t intensity = MAX_INTENSITY/15; //追加:LEDの輝度を調整0-15、0=MAX
uint8_t scrollSpeed = 25; // default frame delay value
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textPosition_t scrollAlign = PA_LEFT;
uint16_t scrollPause = 2000; // in milliseconds
// Global message buffers shared by Serial and Scrolling functions
#define BUF_SIZE 75
char curMessage[BUF_SIZE] = { "" };
char newMessage[BUF_SIZE] = {"Blynk Message"};
bool newMessageAvailable = true;
BLYNK_WRITE(V0) {
String textIn = param.asStr();
Serial.print(textIn + "\n");
}
void readSerial(void){
static char *cp = newMessage;
while (blynkSerial.available()) {
*cp = (char)blynkSerial.read();
if ((*cp == '\n') || (cp - newMessage >= BUF_SIZE - 2)) { // end of message character or full buffer
*cp = '\0'; // end the string
// restart the index for next filling spree and flag we have a message waiting
cp = newMessage;
newMessageAvailable = true;
}
else // move char pointer to next position
cp++;
}
delay(10);
}
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
Serial.print("Blynk Ready\n");
Serial.print("\n[Parola Scrolling Display]\nType a message for the scrolling display\nEnd message line with a newline");
blynkSerial.begin(9600);
P.begin();
P.setIntensity(intensity); //追加:LEDの輝度をSET
P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
delay(5000);
}
void loop() {
Blynk.run();
if (P.displayAnimate()) {
if (newMessageAvailable) {
beep();
strcpy(curMessage, newMessage);
newMessageAvailable = false;
}
P.displayReset();
}
readSerial();
}
void beep() {
for (int thisNote = 0; thisNote < 2; thisNote++) {
int noteDuration = 1000 / noteDurations[thisNote];
tone(BUZZER, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(BUZZER);
}
}
動画をご覧下さい。
皆様の参考になれば幸いです。
2019年11月8日

ソースコード
参考にさせて頂いたCytron社のtutorialページに基になったソースコードが見れます。
ESP8266用とArduinoUNO用に分かれていたソースコードを統合してWROOM-02単体で動くようにしました。
当初、SoftwareSerialを使わずにBlynkから受け取ったMessageをSerial readで読み取って処理するつもりでしたが、
老人の私には上手く出来ずに諦めました。そこで苦肉の策としてSoftwareSerialを使って一旦GPIO5とGPIO4に出力
した後、RXとTX端子に戻す方法を採りました。
#include "ESP8266WiFi.h"
#include "BlynkSimpleEsp8266.h"
#include "MD_Parola.h"
#include "MD_MAX72xx.h"
#include "SPI.h"
#include "SoftwareSerial.h"
SoftwareSerial blynkSerial(5,4); //GPIO5,GPIO4に出力
char auth[] = "Blynkから通知された「AUTH TOKEN」を記入";
char ssid[] = "ルーターのID";
char pass[] = "ルーターのpassword";
// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW //使用するHWを記入
#define BLYNK_PRINT Serial
#define MAX_DEVICES 8 //MAX_DEVICESを8個使用
#define CLK_PIN 14
#define DATA_PIN 13
#define CS_PIN 15
#define NOTE_G4 392
#define NOTE_B4 494
#define BUZZER 12 //着信音
int melody[] = {NOTE_B4, NOTE_G4};
int noteDurations[] = {8, 8};
//HARDWARE SPI
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
//Scrolling parameters
static uint8_t intensity = MAX_INTENSITY/15; //追加:LEDの輝度を調整0-15、0=MAX
uint8_t scrollSpeed = 25; // default frame delay value
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textPosition_t scrollAlign = PA_LEFT;
uint16_t scrollPause = 2000; // in milliseconds
// Global message buffers shared by Serial and Scrolling functions
#define BUF_SIZE 75
char curMessage[BUF_SIZE] = { "" };
char newMessage[BUF_SIZE] = {"Blynk Message"};
bool newMessageAvailable = true;
BLYNK_WRITE(V0) {
String textIn = param.asStr();
Serial.print(textIn + "\n");
}
void readSerial(void){
static char *cp = newMessage;
while (blynkSerial.available()) {
*cp = (char)blynkSerial.read();
if ((*cp == '\n') || (cp - newMessage >= BUF_SIZE - 2)) { // end of message character or full buffer
*cp = '\0'; // end the string
// restart the index for next filling spree and flag we have a message waiting
cp = newMessage;
newMessageAvailable = true;
}
else // move char pointer to next position
cp++;
}
delay(10);
}
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
Serial.print("Blynk Ready\n");
Serial.print("\n[Parola Scrolling Display]\nType a message for the scrolling display\nEnd message line with a newline");
blynkSerial.begin(9600);
P.begin();
P.setIntensity(intensity); //追加:LEDの輝度をSET
P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
delay(5000);
}
void loop() {
Blynk.run();
if (P.displayAnimate()) {
if (newMessageAvailable) {
beep();
strcpy(curMessage, newMessage);
newMessageAvailable = false;
}
P.displayReset();
}
readSerial();
}
void beep() {
for (int thisNote = 0; thisNote < 2; thisNote++) {
int noteDuration = 1000 / noteDurations[thisNote];
tone(BUZZER, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(BUZZER);
}
}
動画をご覧下さい。
皆様の参考になれば幸いです。
スポンサーサイト
LEDマトリックスモジュールで遊ぶ その3 前編
ローカルネットワークの外からメッセージを送る。
2019年11月3日
先に紹介しましたLEDマトリックスモジュールで遊ぶ その2では、ローカルネットワークの外からメッセージを送ることが
出来ません。 そこで、外部からローカルネットに接続する方法を色々と試した結果、スマホアプリのBlynkを使うのが、
一番簡単で安全にローカルネットに接続出来て、何処からでもメッセージをが送れるようになりました。
LEDマトリックスボードの台座を固定式からチル機構を追加して角度が変えれるように変更しました。

Blynkを使ったLEDマトリックスボードにメッセージを送る例が無いか調べたら、イギリスのCytron社が詳しいtutorialを
公開されていました。tutorialではArduinoUNOとESP8266シールド基板を組み合わせた回路ですが、私は先に作った
LEDマトリックスボードの僅かな回路変更により、ESP8266 WROOM-02単体で実現出来ました。
参考にしたソースコードはArduinoUNO用とESP8266用に分かれてますが、これを統合して使いました。詳細は後編に
記述します。先ずは、参考にさせて頂いたCytron社に感謝いたします。
回路図
その2 回路図の変更部分(朱書き):ESP-WROOM-02のGPIO5とTXD、GPIO4とRXDを接続とブザーの追加。

Blynkのインストールと設定について
スマホアプリのBlynkをインストールしますが、iPhoneとAndroidの両方に対応してます。左上から順番に①・・・
①インストルール初期画面のアカウント作成を選択します。
②メールアドレスとパスワードを登録します。
③この画面の一番下Email allをクリックすると登録したEメールに「AUTH TOKEN」が送られてきます。
注意:この「AUTH TOKEN」が後で作成するソースコードに必要となります。
④プロジェクト名を入力とその下側の使用モジュールを選択、ここではESP8266とし、下のCreateボタンを押す。

⑤プロジェクト画面が開いたら右上の丸✙のを選択するとwidget Boxが開きます。
⑥widget Boxの下の方にText inputを選択し、Text input Setting画面を開きます。
⑦Text input Setting画面ではPINを選択します。
⑧次にSelekut pinのVitualとV0を選択してOKをクリックするとText input Settin画面に戻ります。

⑨この画面下側のCHARACTER LIMIT枠に50から100位を入力し、一番上左端の←をクリックします。
⑩プロジェクトと画面に表示されたText inputボックスを見易い位置に移動と幅の調整をします。
⑪一番上右端の▷マークをクリックするとプロジェクトが完了です。ここにメッセージを入力してエンターキーを押すと
メッセージが送信されます。

動画をご覧下さい。
皆様の参考になれば幸いです。
2019年11月3日
先に紹介しましたLEDマトリックスモジュールで遊ぶ その2では、ローカルネットワークの外からメッセージを送ることが
出来ません。 そこで、外部からローカルネットに接続する方法を色々と試した結果、スマホアプリのBlynkを使うのが、
一番簡単で安全にローカルネットに接続出来て、何処からでもメッセージをが送れるようになりました。
LEDマトリックスボードの台座を固定式からチル機構を追加して角度が変えれるように変更しました。

Blynkを使ったLEDマトリックスボードにメッセージを送る例が無いか調べたら、イギリスのCytron社が詳しいtutorialを
公開されていました。tutorialではArduinoUNOとESP8266シールド基板を組み合わせた回路ですが、私は先に作った
LEDマトリックスボードの僅かな回路変更により、ESP8266 WROOM-02単体で実現出来ました。
参考にしたソースコードはArduinoUNO用とESP8266用に分かれてますが、これを統合して使いました。詳細は後編に
記述します。先ずは、参考にさせて頂いたCytron社に感謝いたします。
回路図
その2 回路図の変更部分(朱書き):ESP-WROOM-02のGPIO5とTXD、GPIO4とRXDを接続とブザーの追加。

Blynkのインストールと設定について
スマホアプリのBlynkをインストールしますが、iPhoneとAndroidの両方に対応してます。左上から順番に①・・・
①インストルール初期画面のアカウント作成を選択します。
②メールアドレスとパスワードを登録します。
③この画面の一番下Email allをクリックすると登録したEメールに「AUTH TOKEN」が送られてきます。
注意:この「AUTH TOKEN」が後で作成するソースコードに必要となります。
④プロジェクト名を入力とその下側の使用モジュールを選択、ここではESP8266とし、下のCreateボタンを押す。




⑤プロジェクト画面が開いたら右上の丸✙のを選択するとwidget Boxが開きます。
⑥widget Boxの下の方にText inputを選択し、Text input Setting画面を開きます。
⑦Text input Setting画面ではPINを選択します。
⑧次にSelekut pinのVitualとV0を選択してOKをクリックするとText input Settin画面に戻ります。




⑨この画面下側のCHARACTER LIMIT枠に50から100位を入力し、一番上左端の←をクリックします。
⑩プロジェクトと画面に表示されたText inputボックスを見易い位置に移動と幅の調整をします。
⑪一番上右端の▷マークをクリックするとプロジェクトが完了です。ここにメッセージを入力してエンターキーを押すと
メッセージが送信されます。



動画をご覧下さい。
皆様の参考になれば幸いです。
LEDマトリックスモジュールで遊ぶ メッセージボード後編
WiFiメッセージボードを試す 後編
WiFiモジュールESP8266 WROOM-02とLED Matrix表示器を組み合せたWiFiメッセージボードを
紹介します。使用させて頂いたライブラリーやソースファイルはGitHubからダウンロードできます。
GitHubのページを開きます。
ソースコードの変更箇所について
先に記したGitHubのMajicDesigns/MD_MAX72XXページを開き、clone or downloadをクリックし、
Download ZIPを選択します。ZIPファイルを解凍した後、AldunoIDEにlibraryをインストールておきます。ここで使わせて頂くソースコードが、3行目のexamplesを開くと1行目の「MD_MAX72XX_Message_ESP8266」です。
「MD_MAX72XX_Message_ESP8266.ino」の変更箇所
ここでは、ESP8266 WROOM-02を使うことを前提にオリジナルの行番号を示し、変更箇所を記します。
13~17行目のESP8266 GPIOの接続先の注釈文を次のように変更します。
13 // Vcc 5V LED基板Vcc (私の場合、3.3Vレギュレータの電流を抑える
ために敢えて5Vを使用)
14 // GND GND
15 // DIN GPIO 13 MOSI
16 // CS GPIO 15 CS
17 // CLK GPIO 14 CLK
45行目の#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HWのDevice名をICSTATION又は
FC16に変更します。
45 #define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW又は
45 #define HARDWARE_TYPE MD_MAX72XX::FC16HWに変更します。(使用する基板に合わす)
48~50行目を次のように変更します。
48 #define CLK_PIN 14 // CLK
49 #define DATA_PIN 13 // MOSI
50 #define CS_PIN 15 // CS
58~59行目" "内に使用するWiFiルーターのIDとpasswordを記入します。
58 const char* ssid = "******";
59 const char* password = "******";
351行目に次の1行を追加しました。これは、LEDの輝度をコントロールするための関数で、
私の場合は最小にセットしています。
(明るくし過ぎると消費電流が増えるために輝度を下げています)
351 mx.control(MD_MAX72XX::INTENSITY, 0x00);
使い方
WiFiモジュール基板のマイクロUSBコネクターにUSB電源を接続すると、LED表示器にIPアドレスが
スクロール表示します。このIPアドレスをPCやスマホ・タブレットのブラウザURL検索窓へ書き込み、
エントリーすると次のような画面が表示されます。
注意:LED表示器にアドレスを192.168.011.027等と表示しますが、
前側の0を省いた192.168.11.27を検索窓へ書き込みます。

Msg:テキストボックスに英数記号を使って文章を入力し、下側のSend Textボタンをクリックすると
WiFiルーターを経由してLED表示器にその文章がスクロール表示されます。
英数記号以外は使えませんがアイデア次第で面白く利用できると思います。
動画をご覧下さい。
皆様の参考になれば幸いです。
WiFiモジュールESP8266 WROOM-02とLED Matrix表示器を組み合せたWiFiメッセージボードを
紹介します。使用させて頂いたライブラリーやソースファイルはGitHubからダウンロードできます。
GitHubのページを開きます。
ソースコードの変更箇所について
先に記したGitHubのMajicDesigns/MD_MAX72XXページを開き、clone or downloadをクリックし、
Download ZIPを選択します。ZIPファイルを解凍した後、AldunoIDEにlibraryをインストールておきます。ここで使わせて頂くソースコードが、3行目のexamplesを開くと1行目の「MD_MAX72XX_Message_ESP8266」です。
「MD_MAX72XX_Message_ESP8266.ino」の変更箇所
ここでは、ESP8266 WROOM-02を使うことを前提にオリジナルの行番号を示し、変更箇所を記します。
13~17行目のESP8266 GPIOの接続先の注釈文を次のように変更します。
13 // Vcc 5V LED基板Vcc (私の場合、3.3Vレギュレータの電流を抑える
ために敢えて5Vを使用)
14 // GND GND
15 // DIN GPIO 13 MOSI
16 // CS GPIO 15 CS
17 // CLK GPIO 14 CLK
45行目の#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HWのDevice名をICSTATION又は
FC16に変更します。
45 #define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW又は
45 #define HARDWARE_TYPE MD_MAX72XX::FC16HWに変更します。(使用する基板に合わす)
48~50行目を次のように変更します。
48 #define CLK_PIN 14 // CLK
49 #define DATA_PIN 13 // MOSI
50 #define CS_PIN 15 // CS
58~59行目" "内に使用するWiFiルーターのIDとpasswordを記入します。
58 const char* ssid = "******";
59 const char* password = "******";
351行目に次の1行を追加しました。これは、LEDの輝度をコントロールするための関数で、
私の場合は最小にセットしています。
(明るくし過ぎると消費電流が増えるために輝度を下げています)
351 mx.control(MD_MAX72XX::INTENSITY, 0x00);
使い方
WiFiモジュール基板のマイクロUSBコネクターにUSB電源を接続すると、LED表示器にIPアドレスが
スクロール表示します。このIPアドレスをPCやスマホ・タブレットのブラウザURL検索窓へ書き込み、
エントリーすると次のような画面が表示されます。
注意:LED表示器にアドレスを192.168.011.027等と表示しますが、
前側の0を省いた192.168.11.27を検索窓へ書き込みます。

Msg:テキストボックスに英数記号を使って文章を入力し、下側のSend Textボタンをクリックすると
WiFiルーターを経由してLED表示器にその文章がスクロール表示されます。
英数記号以外は使えませんがアイデア次第で面白く利用できると思います。
動画をご覧下さい。
皆様の参考になれば幸いです。
LEDマトリックスモジュールで遊ぶ メッセージボード前編
WiFiメッセージボードを試す 前編
WiFiモジュールESP8266 WROOM-02とLED Matrix表示器を組み合せたWiFiメッセージボードを紹介します。
使用させて頂いたライブラリーやソースファイルはGitHubからダウンロードできます。GitHubのページを開きます。
今回は4×8×8LED Matrix表示器を2個連結してアクリル板をCNC加工したフレームに収めまてみました。

WiFiモジュール基板の回路図
LEDMatrix基板とWiFiモジュール基板を繋ぐだけの簡単な回路です。
今回はソースコードを書き換えて他にも使えるように、書き込みスイッチやUSBシリアル用のコネクターを設けました。

小さなユニバーサル基板に組み込んだ回路
ユニバーサル基板を適当な大きさにカットして上記の回路を組み込みました。WROOM-02は両面テープで裏向けに接着。
アドバイス:今回使ったマイクロUSBコネクターは表面実装のため、プラグの抜き差し時に大きな力が掛かると剥がれる
事が有ったので、スズメッキ線で基盤に固定して補強しています。

アクリル板をCNC加工してフレームを作りました。
次のページからDXFファイルをダウンロード出来ます
3㎜厚アクリル板を使ってLEDMatrix基板が入るフレームを作ります。(切削イメージ)

出来上がった前側パネルと後ろ枠をアクリル接着剤で張り合わせます。

後ろ枠側から基板を差し込み、パネル前側からLEDモジュールを差し込むだけです。

2㎜厚アクリル板を使ってフレームの裏蓋とWiFiモジュール基板が入るケースを作ります。(切削イメージ)

5㎜厚アクリル板を加工したスペーサーを介して裏蓋にWiFiモジュール基板を取り付けました。

アクリル板で作ったWiFiモジュール基板のカバーを組み立てて接着します。裏蓋及びカバーはビス止めです。

動画をご覧下さい。
次回はその2、ソースコードの説明と使い方を掲載の予定です。
WiFiモジュールESP8266 WROOM-02とLED Matrix表示器を組み合せたWiFiメッセージボードを紹介します。
使用させて頂いたライブラリーやソースファイルはGitHubからダウンロードできます。GitHubのページを開きます。
今回は4×8×8LED Matrix表示器を2個連結してアクリル板をCNC加工したフレームに収めまてみました。

WiFiモジュール基板の回路図
LEDMatrix基板とWiFiモジュール基板を繋ぐだけの簡単な回路です。
今回はソースコードを書き換えて他にも使えるように、書き込みスイッチやUSBシリアル用のコネクターを設けました。

小さなユニバーサル基板に組み込んだ回路
ユニバーサル基板を適当な大きさにカットして上記の回路を組み込みました。WROOM-02は両面テープで裏向けに接着。
アドバイス:今回使ったマイクロUSBコネクターは表面実装のため、プラグの抜き差し時に大きな力が掛かると剥がれる
事が有ったので、スズメッキ線で基盤に固定して補強しています。

アクリル板をCNC加工してフレームを作りました。
次のページからDXFファイルをダウンロード出来ます
3㎜厚アクリル板を使ってLEDMatrix基板が入るフレームを作ります。(切削イメージ)

出来上がった前側パネルと後ろ枠をアクリル接着剤で張り合わせます。

後ろ枠側から基板を差し込み、パネル前側からLEDモジュールを差し込むだけです。

2㎜厚アクリル板を使ってフレームの裏蓋とWiFiモジュール基板が入るケースを作ります。(切削イメージ)

5㎜厚アクリル板を加工したスペーサーを介して裏蓋にWiFiモジュール基板を取り付けました。

アクリル板で作ったWiFiモジュール基板のカバーを組み立てて接着します。裏蓋及びカバーはビス止めです。

動画をご覧下さい。
次回はその2、ソースコードの説明と使い方を掲載の予定です。
LEDマトリックスモジュールで遊ぶ WiFi時計後編
WiFi時計を試す 後編

各libraryの準備
先ずは、下記のlibraryをダウンロードしてAruduino IDEにインストールしておきます。
Adafruit-GFX-Library:ここをクリックしてAdafruit-GFX-Libraryをダウンロード
arduino-Max72xxPanel:ここをクリックしてarduino-Max72xxPanelをダウンロード
ソースファイルの準備
ソースコードはG6EJD氏のGitHub/G6EJD/ESP8266-MAX7219-LED-4x8x8-Matrix-Clockを利用させて頂きました。
G6EJD氏のオリジナルソースファイルは次のURLからダウンロードできます。GitHubのページを開きます。
「ESP_MAX7219_Specific_Format_Time.ino」の変更箇所について
ここでは、ESP8266 WROOM-02を使うことを前提にオリジナルコードの行番号を示し、変更箇所のみを記します。
//LED表示器基板の入力端子Vcc,GND,DIN,CS,CLKとWROOM-02の接続先
11行目:int pinCS = D4; をint pinCS = 15;に変更。
20行目:// DIN -> D7 (Same Pin for WEMOS)を// DIN -> GPIO 13 (MOSI)に変更。
21行目:// CS -> D4 (Same Pin for WEMOS)を// CS -> GPIO 15 (CS0)に変更。
22行目:// CLK -> D5 (Same Pin for WEMOS)を// CLK -> GPIO 14 (CLK)に変更。
30行目:const char *ssid = "your_SSID"; 使用するWiFiルーターのIDを記入。
31行目:const char *password = "your_PASSWORD"; 使用するWiFiルーターのパスワードを記入。
38行目:setenv("TZ", "JST-9,M3.5.0/01,M10.5.0/02",1);をGMTからJST-9の日本時間に変更します。
「ICSTATION」基板の場合、39行目と40行目の間に次の4行を追加し、表示器の表示順序を変更します。
matrix.setPosition( 0, 3, 0) ;
matrix.setPosition( 1, 2, 0) ;
matrix.setPosition( 2, 1, 0) ;
matrix.setPosition( 3, 0, 0) ;
「FC16」基板の場合、上記に加えて40行目からのを下記のように変更すると表示文字が180度回転して
「FC16」基板が使えるようになります。
matrix.setRotation(0, 3);
matrix.setRotation(1, 3);
matrix.setRotation(2, 3);
matrix.setRotation(3, 3);
次に48行目~54行目を削除して下記の5行を追加します。
time_t now = time(nullptr);
String time = String(ctime(&now));
time.trim();
Serial.println(time);
time.substring(11, 19).toCharArray(time_value, 10);
オリジナルのコードでは時刻表示の間に忙しく年月日や曜日の更新情報がスクロールするので、
61行目のdelay(2000);をdelay(30000);に変更すると30秒余しで1回のスクロールとなります。
以上の変更により、「ICSTATION」基板や「FC16」基板の表示が正常となり、日本時間が表示されます。
LED表示基板には他のメーカー品が有るようですが、私は「ICSTATION」基板と「FC16」基板のみ確認しました。
動画をご覧下さい。
次回は4×8×8LED Matrixを2枚連結したWiFiメッセージボードの紹介予定です。

各libraryの準備
先ずは、下記のlibraryをダウンロードしてAruduino IDEにインストールしておきます。
Adafruit-GFX-Library:ここをクリックしてAdafruit-GFX-Libraryをダウンロード
arduino-Max72xxPanel:ここをクリックしてarduino-Max72xxPanelをダウンロード
ソースファイルの準備
ソースコードはG6EJD氏のGitHub/G6EJD/ESP8266-MAX7219-LED-4x8x8-Matrix-Clockを利用させて頂きました。
G6EJD氏のオリジナルソースファイルは次のURLからダウンロードできます。GitHubのページを開きます。
「ESP_MAX7219_Specific_Format_Time.ino」の変更箇所について
ここでは、ESP8266 WROOM-02を使うことを前提にオリジナルコードの行番号を示し、変更箇所のみを記します。
//LED表示器基板の入力端子Vcc,GND,DIN,CS,CLKとWROOM-02の接続先
11行目:int pinCS = D4; をint pinCS = 15;に変更。
20行目:// DIN -> D7 (Same Pin for WEMOS)を// DIN -> GPIO 13 (MOSI)に変更。
21行目:// CS -> D4 (Same Pin for WEMOS)を// CS -> GPIO 15 (CS0)に変更。
22行目:// CLK -> D5 (Same Pin for WEMOS)を// CLK -> GPIO 14 (CLK)に変更。
30行目:const char *ssid = "your_SSID"; 使用するWiFiルーターのIDを記入。
31行目:const char *password = "your_PASSWORD"; 使用するWiFiルーターのパスワードを記入。
38行目:setenv("TZ", "JST-9,M3.5.0/01,M10.5.0/02",1);をGMTからJST-9の日本時間に変更します。
「ICSTATION」基板の場合、39行目と40行目の間に次の4行を追加し、表示器の表示順序を変更します。
matrix.setPosition( 0, 3, 0) ;
matrix.setPosition( 1, 2, 0) ;
matrix.setPosition( 2, 1, 0) ;
matrix.setPosition( 3, 0, 0) ;
「FC16」基板の場合、上記に加えて40行目からのを下記のように変更すると表示文字が180度回転して
「FC16」基板が使えるようになります。
matrix.setRotation(0, 3);
matrix.setRotation(1, 3);
matrix.setRotation(2, 3);
matrix.setRotation(3, 3);
次に48行目~54行目を削除して下記の5行を追加します。
time_t now = time(nullptr);
String time = String(ctime(&now));
time.trim();
Serial.println(time);
time.substring(11, 19).toCharArray(time_value, 10);
オリジナルのコードでは時刻表示の間に忙しく年月日や曜日の更新情報がスクロールするので、
61行目のdelay(2000);をdelay(30000);に変更すると30秒余しで1回のスクロールとなります。
以上の変更により、「ICSTATION」基板や「FC16」基板の表示が正常となり、日本時間が表示されます。
LED表示基板には他のメーカー品が有るようですが、私は「ICSTATION」基板と「FC16」基板のみ確認しました。
動画をご覧下さい。
次回は4×8×8LED Matrixを2枚連結したWiFiメッセージボードの紹介予定です。
LEDマトリックスモジュールで遊ぶ WiFi時計前編
先に作ったOttoDIY2足歩行ロボットに8X8LEDマトリックスモジュールを使ったのが切っ掛けとなり、
このLEDモジュールを使って遊んでみました。
WiFi時計を試す 前編
試作にバラックで組んだWiFi時計:テスト用にモバイルバッテリーを使ってますが、実際に使う場合はACアダプターを使用。
ソースコードはG6EJDさんのGitHub/G6EJD/ESP8266-MAX7219-LED-4x8x8-Matrix-Clockを利用させて頂きました。

マトリックス基板の見分け方
今回使ったのは8X8LEDマトリックスモジュールが4個並んだ基板ですが、LED側から見た目は同じですがMax7219
ドライバーICとLEDモジュールの接続方法が異なり、プログラムを変更しないと文字が逆向きになるなど不都合があります。
下の画像上側がデバイスネーム「ICSTATION」、下側がデバイスネーム「FC16」でプリントパターンが異なります。
入手した基板には、表記が無いので画像とプリントパターンを比較するしか方法が無く、他にも別の基板が有るようです。

今回作ったWiFiモジュール基板の回路図

ユニバーサル基板に組み込んだ回路
WiFiモジュールに技術適合品のESP8266 WROOM-02を使い、ユニバーサル基板に裏向きに取り付けています。
あとはマイクロUSBのソケットと5Vを3.3Vに変換するレギュレータモジュールを載せています。

木製フレームに組み込む
3㎜厚シナベニヤをCNC加工してフレームを作りました。
①裏側からマトリックスボードを嵌め込みます。

②8X8LEDをソケットに差し込みますが、上下を間違わないようにします。

③裏側にWiFiモジュール基板を取り付けます。

④裏蓋を取り付けUSBコネクターを差し込み電源と接続します。

⑤木製フレームに組み込んで完成したWiFi時計

動画をご覧下さい。
次回はソースコードの注意点などを記す予定です。
このLEDモジュールを使って遊んでみました。
WiFi時計を試す 前編
試作にバラックで組んだWiFi時計:テスト用にモバイルバッテリーを使ってますが、実際に使う場合はACアダプターを使用。
ソースコードはG6EJDさんのGitHub/G6EJD/ESP8266-MAX7219-LED-4x8x8-Matrix-Clockを利用させて頂きました。

マトリックス基板の見分け方
今回使ったのは8X8LEDマトリックスモジュールが4個並んだ基板ですが、LED側から見た目は同じですがMax7219
ドライバーICとLEDモジュールの接続方法が異なり、プログラムを変更しないと文字が逆向きになるなど不都合があります。
下の画像上側がデバイスネーム「ICSTATION」、下側がデバイスネーム「FC16」でプリントパターンが異なります。
入手した基板には、表記が無いので画像とプリントパターンを比較するしか方法が無く、他にも別の基板が有るようです。

今回作ったWiFiモジュール基板の回路図

ユニバーサル基板に組み込んだ回路
WiFiモジュールに技術適合品のESP8266 WROOM-02を使い、ユニバーサル基板に裏向きに取り付けています。
あとはマイクロUSBのソケットと5Vを3.3Vに変換するレギュレータモジュールを載せています。

木製フレームに組み込む
3㎜厚シナベニヤをCNC加工してフレームを作りました。
①裏側からマトリックスボードを嵌め込みます。

②8X8LEDをソケットに差し込みますが、上下を間違わないようにします。

③裏側にWiFiモジュール基板を取り付けます。

④裏蓋を取り付けUSBコネクターを差し込み電源と接続します。

⑤木製フレームに組み込んで完成したWiFi時計

動画をご覧下さい。
次回はソースコードの注意点などを記す予定です。