ESP32 と 有機EL SSD1331 で Yahoo News 、 天気予報 、 NTP 時計 Wi-FI ガジェットを作ってみた

ESP32,OLED,ニュース、天気予報写真 ESP32 ( ESP-WROOM-32 )

自作ライブラリのダウンロード

Arduino core for ESP32 が大幅アップデートされたため、自作ライブラリもアップデートしました。
最新版をダウンロードしてください。
(2017/8/2)

Arduino core for the ESP32 用に私が自作したライブラリ群です。
今回のガジェットを作るにあたり、旧ライブラリも少々修正したり、関数を追加していますのでお気を付けください。
以下のGitHub リンクから、ZIP ファイルをダウンロードしてください。
後で述べますが、インストールする前に、必ず旧ライブラリをフォルダごと削除してインストールしてください

ESP32_SD_UTF8toSJIS Beta ver 1.21

今回 Beta ver 1.21にバージョンアップしました

GitHub の以下のページにあります。

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

これは、UTF-8 文字コードから Shift_JIS へ変換するライブラリです。
以下の私の自作テーブルファイルが必要です。

Utf8Sjis.tbl

これは後で述べるリンクからダウンロードできます。

ESP32_SD_ShinonomeFNT Beta ver 1.21

今回 Beta ver 1.21にバージョンアップしました

GitHub の以下のページにあります。

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

UTF-8コードのString 文字列から直接東雲フォントをSDカードから読み込むライブラリです。

ESP32_SSD1331 Beta ver1.3

今回 Beta ver 1.3とバージョンアップしました
GitHub の以下のページにあります。

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

文字フォントを右から左へスクロールする関数をできるだけ簡素化してみました。

ESP32_WebGet Beta ver 1.1

GitHub の以下のページにあります。

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

今回新たに作ったライブラリです。
要するに、Web から情報を取得する関数があります。

また、NTP サーバーから時刻をGET する関数も盛り込みました。

因みに、Yahoo! RSS サイトから記事を取得するには個人利用のみ無料です。
それ以外の利用および商用ライセンス等はそれぞれの記事取得サイトにお問い合わせください。

ESP32_SD_SSD1331_Gadgets Beta ver 1.1

GitHub の以下のページにあります。

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

今回新たに作ったライブラリです。
上記のライブラリを全てまとめて、ガジェット的に関数化したものが入っています。

TimeLib ライブラリのダウンロード

Arduino 標準 Time ライブラリは 2017/6/8 時点で ver 1.5 です。
これのインストール方法は以下のページを参照してください。

https://www.mgo-tec.com/blog-entry-1616shinonome-ws-oled-news.html

ダウンロードしたZIP形式ライブラリのインストール

GitHub からダウンロードしたライブラリは以下のページを参照して、 Arduino IDE にインストールしてください。
ただ、インストールする前に、以前インストールした古いライブラリはフォルダごと削除してからインストールしてください
Windows 10 の場合は以下のフォルダにあります。

C:\Users\ご自分のユーザー名\Documents\Arduino\libraries

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

日本語漢字フォントおよびテーブルファイルのダウンロード

前回と同様ですが、念のために説明しておきます。
フォント類はGitHub の以下のページにあります。

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

ZIPファイルをダウンロードして、解凍してください。
font フォルダの中の以下の3つのファイルが必要です。

これらを micro SDHC カードのルートに /font というフォルダを作成し、そこにコピーしておいてください。

Utf8Sjis.tbl

UTF-8 から Shift_JIS へ変換するためのテーブルファイルです。
私の自作のバイナリファイルです。
ライセンスは MIT です。
著作権表記してあれば、自由に使うことができます。

shnmk16.bdf

16×16 東雲フォント(全角)

shnm8x16.bdf

8×16 東雲フォント(半角)
上記でも述べましたが、ファイル名の ”r” を削除して、8文字に収めたものです。

天気予報ロゴ自作フォントファイルのダウンロード

以下の記事で自作した天気予報ロゴや、数値、曜日のフォントファイルを使います。

天気予報を自作フォントで表示してみた

エクセル で 16 x 16 ドットフォントを自作して、フルカラー 有機EL ( OLED ) 時計を作ってみた

MyFont.fnt

これは記事を見ながら作成しても良いのですが、面倒な人は GitHub の以下のページにありますので、ダウンロードして使ってみてください。

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

micro SDHC カードにフォントをコピーしておく

micro SDHC カードに上記のフォントファイルをコピーします。

micro SDHC カードのルートに /font フォルダを作成して、以下の4つのファイルをコピーしておいてください。

Utf8Sjis.tbl
shnmk16.bdf
shnm8x16.bdf
Myfont.fnt

Micro SDHC カードは、殆どが予め FAT32 で初期化されていますが、フォーマットされていない場合は以下のページを参照してください。

micro SD 、micro SDHC カードの初期化(フォーマット)方法

コメント

  1. 太田 耕正 より:

    フリーズとは関係有りませんが、IDE1.8.2 起動中にスケッチのソースコードを変更して、(rss等 4410 を 5010 「静岡」)に変更して、書き込みを行うと 75行の ”ESP32  日本語”の表示が ”ESP {“ と表示され 天気予報アイコンが表示されません。
    シリアルモニターの表示が
    WEB HTTP Response
    Client Stop
    Weathen forecast =
    Weathen Today =
    Weathen Tomorrow =
    = が空白です。
    スケッチのソースコードを変更した状態で、保存 終了して。
    IDEを再起動して書き込むと 75行や天気予報アイコンも正常に表示されます。シリアルモニターにも状況が表示されます。
    Arduino core for the ESP32 は最新版を使用、ライブラリも最新版です。
    ESP32 – DevKitC ( ESP-WROOM-32 開発ボード )やESP32 単体で行っても同じ結果が出ました。
    書き込み速度は 921600 と 115200ともエラー無く書き込み出来ます。
    文字のスクロールの早さに感激です。

    • mgo-tec mgo-tec より:

      太田さん

      いつも当ブログにお越しいただき、そしてコメントいただき、ありがとうございます。
      m(_ _)m

      私の環境ではそういう現象が起こらないので、あくまで予想ですが、ブラウザからソースコードをクリップボードへコピーした時には Shift_JIS 等の文字コードになっていて、Arduino IDE のスケッチを保存しないままコンパイルした場合は、日本語漢字や全角の”】” などの文字コードが正しく変換されなかったと思われます。
      ですから、一旦、Arduino IDE でスケッチを保存すると、UTF-8 コードで保存されるので、正しい文字コードになると思われます。

      MAC は使ったことが無いので分かりませんが、古い Windows を使っていたり、ブラウザが Google Chrome 以外を使うとそういう現象が起こる可能性があります。
      私の場合は、Windows10 で、ブラウザは Google Chrome を使っています。
      文字変換は Microsoft IME を使っています。
      日本語変換ソフトが ATOK だったりした場合はまた違う結果になるかもしれません。
      申し訳ないのですが、Windows の文字コード設定はどこでやるのか良く分かりません。

      いずれにしても、ブラウザからスケッチをコピーした場合は、必ず Arduino IDE で一旦保存して、再起動するということが確実そうですね。
      この件はトラブルシューティングに掲載させていただこうと思います。
      他の方が違う環境で実行してくださると、バグ等の解明が速いですね。
      いつも当ブログのスケッチを実行していただき、ほんとに感謝いたします。
      ありがとうございました。
      m(_ _)m

    • mgo-tec mgo-tec より:

      太田さん、すみません。

      たった今、同じ現象が私の環境でも起こりました。
      失礼しました。

      おそらく、ブラウザからクリップボードへコピーしただけでは、日本語全角文字 “◆” や “】” が正しく変換されないようです。
      一旦スケッチを保存することによって、正しい文字コードに変換されるようです。
      Arduino IDE 1.8.2 からそういうモードになったのかもしれません。

      ただ、Arduino IDE を再起動しなくても、保存するだけ、その後コンパイルすれば良いことは分かりました。

      ご指摘いただかないと分かりませんでした。
      今まで、他の方も同じ症状でうまく動かなかった可能性がありますね。

      たいへん貴重な情報ありがとうございました。
      重ねてお礼申し上げます。
      m(_ _)m

  2. 太田 耕正 より:

    スケッチを保存してから書き込みを行うとOKでした。
    IDE1.8.3 でのテストも同じ状態ですね。

    • mgo-tec mgo-tec より:

      そうですね。
      スケッチを保存してから書き込みですね。
      それぞれの記事に追加コメント入れました。
      ありがとうございます。

      それと、1.8.3 がリリースされていたんですね。
      知らなかった・・・。

      重ね重ね、情報ありがとうございます。
      m(_ _)m

  3. KATO より:

    こんにちわ
    いつも参考にさせていただいています。
    今回も参考にさせていただき、ブログの通りにコンパイル書き込みまで終えたのですが、OLED1331に何も表示されません、
    考えられる原因があれば教えてください。

    • mgo-tec mgo-tec より:

      KATOさん

      記事をご覧いただき、ありがとうございます。

      この記事は随分昔に書いたもので、現在はいろいろと環境も変わってしまいました。
      動作しない原因を追究するにはあまりにも情報が少なすぎるので、以下の動作環境を教えてください。

      1.ESP32開発ボードは何を使っていますでしょうか?
      2.シリアルモニターにはどのように表示されている内容をできるだけ詳しく教えてください。
      その場合、SSID 等の情報は洩れないように隠してください。
      3.「ツール」の「Core Debug Level」を「Verbose」にしてコンパイルし直して、シリアルモニターに表示される情報も教えてください。
      4.Arduino core for the ESP32 のバージョンを教えてください。
      5.USBハブは使っていませんでしょうか?
      6.良質で太く短いUSBケーブルを使っていますでしょうか?
      7.micro SDHC カードは大手メーカー製を使っていますでしょうか?

      • KATO より:

        せっかくのご返信に対して、大変失礼ですが、いろいろ調整した結果無事表示されました。

        しかし、HOSTに接続できませんと表示が出ます。

        • mgo-tec mgo-tec より:

          KATO さん

          表示されたのは良かったですね。
          あとはシリアルモニターの表示をできるだけ詳しく、できれば丸ごと教えていただけると助かります。

  4. ramboo より:

    10KΩの抵抗を2つ回路に組み込まないと不都合がありますか?教えてください。

    • mgo-tec mgo-tec より:

      rambooさん

      かなり古い記事ですが、ご覧いただきありがとうございます。
      GPIO #19, #23 のプルアップ抵抗は、私の自作ライブラリを使った場合は必要かも知れません。
      ライブラリ内でINPUT_PULLUPなどのレジスタ設定をしていないからです。

      因みに、ESP32については、らびやんさん作成のLovyan GFXライブラリを使った方が確実です。
      今はみんなそれを使っています。
      様々なディスプレイに対応していますので、そちらの使用をお勧めします。

  5. kazu.w より:

    2年前には使えていたのですが、昨年、ADSL回線から光回線に変えたので、SSIDとPASSWORDを変更して書き込んだところ、2行目の「日付」と「曜日」、3行目の「時刻」は正常に表示されますが、1行目には、「◆00:00」に続き「※Host に接続できません。」と表示され、4行目には、何も表示されません。
    解決策がありましたら、ご教示ください。

    • mgo-tec mgo-tec より:

      kazu.wさん

      以前、コメント頂いた方でしょうか?

      実はこちらの記事でも述べましたが、Yahoo! Japan RSS 天気予報が2022/03/31で配信終了してしまいました。
      よって、気象庁から天気予報データを取得する方法に変えなければなりません。
      また、Yahooニュースの方は、おそらくルートCA証明書をプログラミングでセットしなければいけなくなりました。
      M5Stack版のYahooニュース電光掲示板は修正済みですが、こちらの記事のプログラムは修正していません。
      しばらくお時間ください。
      修正ができたら、このコメント投稿欄でお知らせしたいと思います。

      • mgo-tec mgo-tec より:

        kazu.wさん

        大変おまたせいたしました。
        この記事の最後の方に気象庁ホームページから天気予報を取得するプログラムを掲載しました。
        これで動くとおもうのですが…。

  6. kazu.w より:

    改定プログラムの掲載ありがとうございます。
    正常に動作しております。
    ただ、GoogleChromeのバージョンアップのためと思われますが、ご案内いただいた方法では「Yahooニュース」と「気象庁」のルート証明書を入手することができず、次のような方法で入手しました。
    指定のURLに移動し、「設定」→「その他のツール」→「デベロッパーツール」→「Security」と進み、「View certificate」を押すと、「証明書ビューア」が表示され、「全般」タブと「詳細」タブは表示されますが、ご案内の方法にある「証明のパス」タブは表示されなかったので、「詳細」タブにある「選択した証明書をエクスポート」ボタンを押すことにより証明書ファイルを取得しました。正しいやり方かどうかは分かりませんが、正常に動作しております。
    なお、Edgeの場合もバージョンアップによるものか、画面右上の「・・・」(設定など)を押しても「Internet Explorer で開く」の選択肢が出てきませんでした。
    この度は、大変お手数をおかけしました。
    今後とも、よろしくお願いします。

    • mgo-tec mgo-tec より:

      kazu.wさん

      修正がかなり大変だったので、無事動いて良かったです。

      証明書の取得方法はかなり変わってしまいましたね。
      なかなか時間が無いのですが、徐々にその記事も修正していきたいと思います。
      ご指摘、ありがとうございました。

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