さんざん同じネタで引っ張っていますが、行側制御部の方式検討はひとまずおいておくとして、ソフトウェア側を作り込むことにしました。
またLEDマトリクスで遊び始めた頃より、WiFi経由で最寄り駅の直近の列車を表示したいという願望がありましたので、Arduino に追加する WiFiモジュールを検討していたところ、ESP32というマイコンといいますかWiFiチップといいますか、多機能なものがあり、Arduino IDEで開発できることからESP32 DevKitC を 秋月さんから入手して、こちらに移行してしまうことにしました。
ESP32は電源周りに気を使う必要がある、とのことで、ESP8266用でちょっと役不足なのかもしれませんが、以下のリンクを参考にして専用電源を作っておきました。
開発準備と専用電源の製作-ESP-WROOM-02
ESP32の情報はmgo-tecさんのブログがオススメで、ESP32関連の記事は全部目を通すつもりでも良いでしょう。環境構築からコーディングまでとにかく充実していて、大変助かりました(^^)
mgo-tec電子工作#ESP32
Arduino IDE で ESP32 をコーディングするためには Espressif ご謹製の Arduino Core for ESP32 を導入しないといけません。導入方法はググれば沢山ヒットするので、ここでは解説しません。
ちなみに、個人的に開発環境を Windows10 から Linux へ環境移行したのですが、 LinuxMint 1.9 でもあっさり導入できたことを報告しておきます。Windows版と比較するとコンパイルが速くて快適です(^^)
あわせて、フォント周りをたま吉さん作成の内部Flash版ライブラリから、mgo-tecさん作成のSPIFFS版ライブラリに差し替えました。たま吉さんのライブラリを修正してフォントファイルをSPIFFSに持っていても大丈夫なはずですが、ライブラリの解析・修正が目的ではなく、あくまである環境で表示できるフォントを導入するのが目的ですので、まずは悩むことが少ない方向で解決しておきました。
あと、こういうケースは稀だと思うんですけど、Arduino IDE + Arduino Core for ESP32 環境でSPIFFSを使用し、ファイルをフラッシュにアップロードしている場合、WindowsからLinuxへ移行すると一発目のビルド→転送でフラッシュにあるファイルが消えてしまうっぽいです。
先に上げたmgo-tecさんのライブラリは内部フラッシュに3つフォント定義ファイルを配置する必要があります。これらのファイルがないと当然フォントが取得できません。そのため、最初マトリクスへの文字列表示が全滅していたものの、まったく原因がわからず途方にくれていました。
起動時に全LED点灯チェックをいれてなければ、全く手がかりがつかめなかったでしょう。これのおかげで、少なくともフォントの取得が失敗していることがわかったので解決までもっていけました。
現時点で個人的には内部フラッシュに配置したファイルの扱い方がよくわかりません。ファイルの読み書きとか存在確認といったファイル関連のお作法ですね。この辺はちょっと突っ込んで勉強しないといけませんね。
LEDマトリクスの駆動回路は、汎用ICによる自作ですので当然対応ライブラリはありません。
しかしながら、Linux Mint 移行記念ということで、関連処理をまとめてクラスにして別ファイル化しました。将来なにかのプロジェクトでLEDマトリクスを使いたくなったときに再利用しやすくなっている・・・と思います(^^;;
ソフトウェア的な課題は以下の通り
①最寄り駅は名鉄なので公式サイト経由で情報を取得するがAPIは存在しない
②①より駅別時刻表をHTTP経由で取得することになるので不要な情報の削除方法をどうしよう
③RTCが無いので現在の時刻をWiFi経由で擬似的に取得する必要がある
最終的にLAN上にwebサーバーを立て名鉄公式サイトの駅時刻表を加工したデータファイルを保持し、直近1列車を返す仕組みをつくり、ESP32はLAN上のwebサーバにアクセスして直近1列車を取得・表示する方式になりました。
参考までに、スケッチおよびサーバ側スクリプトのソースはGitHubにアップしておきました。
expyodo/32x8_LEDmatrix_ESP32
ま、こんな感じで無事列車が表示できました(^^)
それでは、気になるところを個別にみていきましょう。
1.データどこから取得する?
2.データの取得と解析はどうする?
3.RTCないけどどうする
0 件のコメント:
コメントを投稿