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時計

動画をご覧下さい。
次回はソースコードの注意点などを記す予定です。
第2作アクリルボディのOtto 後編
Otto DIYの2足歩行ロボット第2作を紹介します。
先ずOttoについては、Otto DIYのページにて詳細をご覧下さい。
2019.09.04 by Paradise
アクリル板の組み立て
その1で切削加工したアクリル板をHead部、Body部、Leg部、Foot部毎に組み立て、アクリル接着剤で固定します。
接着剤が乾いたら、やすり等で角やバリを取り仕上げます。
最終組み立て前の全パーツ
Head部の天板は透明アクリル板を使いました。超音波センサーは穴に差し込むだけです。
Body内にLEDマトリックスモジュールとノイズアンプ基板を両面テープで張り付けました。
このため、電池を置くスペースが狭くなったので単4型充電池4本に変更しました。

Foot部とLeg部の組み立て
この作品では、Body底板に外側からLeg用サーボモーターを取り付けるようにしました。
Foot部3㎜厚アクリル板の底部に前後のフランジを差し込み、アクリル接着剤で固定します。
先ず、Legカバー上部にLeg用サーボモーターのホーンを取り付けますが、固定する前に90度のサーボ信号を入力し、
LegカバーとBodyが平行になるように微調整してから固定用ネジ穴をあけてビス止めします。
Legカバー内に下の画像を参考にFoot用サーボモーターを組み込みますが、ここでも90度のサーボ信号を入力して
Foot部底板とLegケースが直角になるように、フランジとサーボホーンの角度調整が必要です。
何れも大きく角度にズレが無い場合は、コントロールソフトで±の微調整が可能です。

Legケースに組み上がった状態
2号機ではサーボモーターを金属ギアのMG90Sタイプを使いましたが、0~180度の信号を与えても0~170度ほど
しか角度が出ない事や通常のSG90を使った1号機に比べサーボモーターの動きが遅いなどの欠点がありました。

全ての組み立てが終わって完成した2号機

動画をご覧下さい。
2019.09.04 by Paradise
先ずOttoについては、Otto DIYのページにて詳細をご覧下さい。
2019.09.04 by Paradise
アクリル板の組み立て
その1で切削加工したアクリル板をHead部、Body部、Leg部、Foot部毎に組み立て、アクリル接着剤で固定します。
接着剤が乾いたら、やすり等で角やバリを取り仕上げます。
最終組み立て前の全パーツ
Head部の天板は透明アクリル板を使いました。超音波センサーは穴に差し込むだけです。
Body内にLEDマトリックスモジュールとノイズアンプ基板を両面テープで張り付けました。
このため、電池を置くスペースが狭くなったので単4型充電池4本に変更しました。

Foot部とLeg部の組み立て
この作品では、Body底板に外側からLeg用サーボモーターを取り付けるようにしました。
Foot部3㎜厚アクリル板の底部に前後のフランジを差し込み、アクリル接着剤で固定します。
先ず、Legカバー上部にLeg用サーボモーターのホーンを取り付けますが、固定する前に90度のサーボ信号を入力し、
LegカバーとBodyが平行になるように微調整してから固定用ネジ穴をあけてビス止めします。
Legカバー内に下の画像を参考にFoot用サーボモーターを組み込みますが、ここでも90度のサーボ信号を入力して
Foot部底板とLegケースが直角になるように、フランジとサーボホーンの角度調整が必要です。
何れも大きく角度にズレが無い場合は、コントロールソフトで±の微調整が可能です。

Legケースに組み上がった状態
2号機ではサーボモーターを金属ギアのMG90Sタイプを使いましたが、0~180度の信号を与えても0~170度ほど
しか角度が出ない事や通常のSG90を使った1号機に比べサーボモーターの動きが遅いなどの欠点がありました。

全ての組み立てが終わって完成した2号機

動画をご覧下さい。
2019.09.04 by Paradise