ShigezoneフルカラーLEDパネルでRSS表示

![RSS_02_Panel.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/370759/1a025fa5-8b02-66d8-19c3-a411d50a1e71.jpeg)

# はじめに
インターフェース誌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パネルを使う（令和２）」
　https://qiita.com/Yukiya_Ishioka/items/b26cd1eae5f5c37470d5

# プログラムの取得
プログラムが少し大きくなるため、プログラムはこの記事内には貼らず、GithubのURLを記しておきます。
以下の**main.zip**をダウンロードして復元することで必要なソースプログラム一式を入手できます。

https://github.com/Y-Ishioka/matled_6464_rss/archive/refs/heads/main.zip

参考
https://github.com/Y-Ishioka/matled_6464_rss

ディレクトリ **matled_6464_rss** を作成し、main.zip内のソースファイルをこのディレクトリへ復元してください。
![RSS_01_FileList.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/370759/5fa2e122-6c88-b639-f12e-a636b1448680.jpeg)

## 謝辞
今回の**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表示プログラムを使う場合には、この注意事項を守ってください。

　https://news.yahoo.co.jp/rss


# Arduino IDEの設定
このRSS表示を行うプログラムはフォントデータや文字コード変更テーブルが大きいため、Flash領域を十分に確保する必要があります。
**ESP32**の**OTA**機能を有効にすると自由に使えるFlash領域が少なくなり、プログラムの書き込みができません。
このため、以下の設定のように「**Partition Scheme: "Huge APP (3MB No OTA/1MB SPIFFS)"**」を選択してください。
![ESP32_Arduino_Set2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/370759/5635e7d2-6fdd-3f9e-d32f-461b6eb58865.jpeg)

# プログラムの修正

## Wi-Fiの設定

このRSS表示を行うプログラムは**Wi-Fi**を経由してインターネットからYahoo!のRSSから情報を取得します。
このため利用者の自宅などの**Wi-Fi**の**SSID**やパスコードをプログラム内に設定し、Wi-Fiと接続できるようにする必要があります。

**SSID**やパスコードはソースプログラム **matled_6464_rss.ino** の２４行目付近にある以下の内容を修正してください。
**ssid**がアクセスする Wi-Fiの**SSID**、**password**がパスコードです。

```matled_6464_rss.ino

/******************************************************/
/* Wi-Fiアクセスポイントの SSID とパスフレーズ        */
/* 利用する環境のSSIDとパスフレーズを設定してください */
/******************************************************/
const char* ssid     = "xxxxxxxxxx";
const char* password = "xxxxxxxxxx";
```  

## スライドスピードの変更
インターフェース誌で紹介したハードウェアやプログラムではAD変換につないだ可変抵抗の抵抗値を変更することで表示される文字のスライドスピードを変更できるようにしていました。
今回は可変抵抗器が付いていないため、プログラム内で定数でスライドスピードを設定しています。
利用する際にスライドスピードが遅い、速いなどで変更したくなると思います。そのような場合、プログラムの350行目付近の以下場所の「**vol = 1000**」部分の値を変更してスピードを調整してみてください。
なお、値が小さいほどスライドスピードが速くなります。

```matled_6464_rss.ino
/*************************************************
 *  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の情報から<TITLE>と</TITLE>で囲まれた領域を電光掲示板として右から左へ流れるように文字が出力されます。
表示位置は１６ドットフォントでの３行目を使って表示するようにしてあります。色もトピックスの変更時に表示色を変える程度です。
マトリクスLEDの表示領域が余っているのと、カラー表示も十分に使いきれていないので、表示方法を工夫することでもっと実用的であったり、面白い表示が可能だと思います。
新しい表示パターンを開発したらお知らせいただければと思います。

－以上－