はじめに
インターフェース誌2018年10月号でESP32とマトリクスLEDを使ってYahoo!のRSSからデータを取得してマトリクスLEDへ文字情報を表示するデモプログラムを紹介しました。
記事を執筆後に放置状態でしたが、Shigezoneから販売されたフルカラーLEDパネル用ESP32制御ボードキットを入手したので、せっかくESP32を使っていることから、このキットを使ってYahoo!のRSSを表示するプログラムを作成してみました。
・Interface誌 2018年10月号「定番IoTマイコンESP実験コーナ」
https://interface.cqpub.co.jp/wp-content/uploads/if10_156.pdf
・フルカラーLEDパネル用ESP32制御ボードキット(基板+部品)
https://www.shigezone.com/product/hub75eboard/
・秋葉原ラジオデパートShigezone(シゲゾーン)
https://www.shigezone.com/
また、フルカラーLEDパネル用ESP32制御ボードキットを使った他のQiitaの記事のリンクも記しておきます。
・Qiitaの記事「ShigezoneフルカラーLEDパネルを使う(令和)」
https://qiita.com/Yukiya_Ishioka/items/9984a42072edc950b4a4
・Qiitaの記事「ShigezoneフルカラーLEDパネルを使う(令和2)」
https://qiita.com/Yukiya_Ishioka/items/b26cd1eae5f5c37470d5
プログラムの取得
プログラムが少し大きくなるため、プログラムはこの記事内には貼らず、GithubのURLを記しておきます。
以下のmain.zipをダウンロードして復元することで必要なソースプログラム一式を入手できます。
ディレクトリ matled_6464_rss を作成し、main.zip内のソースファイルをこのディレクトリへ復元してください。
謝辞
今回のRSSの文字データをドットフォントへ変換する際に Mgo-tecさんが作成したUTF-8 文字列から Shift_JIS へ変換するプログラムを使用させてもらっています。
matled_6464_rss.ino内のUTF8_To_SJIS_cnv()、utf8_to_sjis()、Utf8Sjis_tbl.cが流用させてもらったプログラムやデータになります。
以下に流用元のプログラムは以下になります・・・多分。
https://www.mgo-tec.com/blog-entry-utf8-sjis-wroom-arduino-lib.html
Yahoo! RSSの注意点
「Yahoo! RSS」のデータを使う場合の注意事項が以下のページに記されています。
このRSS表示プログラムを使う場合には、この注意事項を守ってください。
Arduino IDEの設定
このRSS表示を行うプログラムはフォントデータや文字コード変更テーブルが大きいため、Flash領域を十分に確保する必要があります。
ESP32のOTA機能を有効にすると自由に使えるFlash領域が少なくなり、プログラムの書き込みができません。
このため、以下の設定のように「Partition Scheme: "Huge APP (3MB No OTA/1MB SPIFFS)"」を選択してください。
プログラムの修正
Wi-Fiの設定
このRSS表示を行うプログラムはWi-Fiを経由してインターネットからYahoo!のRSSから情報を取得します。
このため利用者の自宅などのWi-FiのSSIDやパスコードをプログラム内に設定し、Wi-Fiと接続できるようにする必要があります。
SSIDやパスコードはソースプログラム matled_6464_rss.ino の24行目付近にある以下の内容を修正してください。
ssidがアクセスする Wi-FiのSSID、passwordがパスコードです。
/******************************************************/
/* Wi-Fiアクセスポイントの SSID とパスフレーズ */
/* 利用する環境のSSIDとパスフレーズを設定してください */
/******************************************************/
const char* ssid = "xxxxxxxxxx";
const char* password = "xxxxxxxxxx";
スライドスピードの変更
インターフェース誌で紹介したハードウェアやプログラムではAD変換につないだ可変抵抗の抵抗値を変更することで表示される文字のスライドスピードを変更できるようにしていました。
今回は可変抵抗器が付いていないため、プログラム内で定数でスライドスピードを設定しています。
利用する際にスライドスピードが遅い、速いなどで変更したくなると思います。そのような場合、プログラムの350行目付近の以下場所の「vol = 1000」部分の値を変更してスピードを調整してみてください。
なお、値が小さいほどスライドスピードが速くなります。
/*************************************************
* LED_SLIDタスクの入り口関数
*************************************************/
void led_slide( void *param )
{
int vol;
Serial.println( "call slideTask()" );
vol = 1000;
while( 1 ) {
vTaskDelay( vol>>6 );
/* ボリューム値が2000未満ならスライド実行 */
/* ボリューム値が2000以上ならスライドを停止 */
プログラムの実行
プログラムを変更後、Arduino IDEの「マイコンボードへ書き込む」でキットのESP32へプログラムを書き込みます。
プログラムの実行には、自宅などのWi-Fiの用意と、プログラム上のSSIDとパスコードを修正するだけでそれ以外の準備は必要ありません。
プログラムが起動するとYahoo! RSSの各分野のトピックスが表示されると思います。
最後に
プログラムは読み取ったRSSの情報から
とで囲まれた領域を電光掲示板として右から左へ流れるように文字が出力されます。表示位置は16ドットフォントでの3行目を使って表示するようにしてあります。色もトピックスの変更時に表示色を変える程度です。
マトリクスLEDの表示領域が余っているのと、カラー表示も十分に使いきれていないので、表示方法を工夫することでもっと実用的であったり、面白い表示が可能だと思います。
新しい表示パターンを開発したらお知らせいただければと思います。
-以上-