ラベル Arduino Core for ESP32 の投稿を表示しています。 すべての投稿を表示
ラベル Arduino Core for ESP32 の投稿を表示しています。 すべての投稿を表示

2019年8月20日火曜日

LinuxでSloeber+Arduino core for ESP32環境で作業していてぶち当たったこと

電光掲示板もどきプロジェクトは一応形になったので、渋々使用していたArduino IDEからSloeberへ移行してみようと思い立ちました。コンパイル時にArduino core for ESP32のファイルでコンパイルエラーが発生したのでひとまずほったらかしにしてたんですよね。

※SloeberとArduino-core-esp32のインストール方法については他所に情報がありますので割愛します。

ところで、windowsのホームディレクトリに日本語が含まれるていることに気が付かず、何気なくgithub経由でArduino core for ESP32をSloeberに適用したところ、日本語を含むパスのおかげでコンパイルエラーになったことに業を煮やし、Linux Mintに移行しました。

というわけで、以下の情報は

OS:Linux mint 19.1 Tessa
Sloeber:ver4.3.1
Arduino core for ESP32:ver1.0.2

であることを念頭に置いてください。


2019年7月18日木曜日

Arduino+74HC595+8×8nマトリクスLED(8.3)

3.RTC(Real Time Clock)がない

単純なうっかりで、ハードウェア的に時刻を保持する仕組みを作っていませんでした。
こういう場合にはRTCモジュールを使って、コイン電池でバックアップすると完璧らしいです。

しかしながら、WiFiを介してインターネットにつながるんだから、NTPで時刻取得しちゃえばいいじゃない、ということで以下のリンクを参考にNTPで取得した時刻を文字列にする関数をこさえました。

Arduinoで遊ぶページ -SimpleTime

数時間使用したときにどれくらいズレがあるのか、ということについては未確認です。基本的に時計的に常時使う感じではなくて、気が向いたときに起動する、外出するときは電源切る、という運用ですので、起動時にNTPから時刻が取得できれば気になるズレは生じません。スクロール表示する以上は必然的に表示時に秒レベルでずれてしまいます(^^;;
time.hをインクルードするとNTP周りの実装が使えるようになるのですが、先に挙げたリンクを読んだ限りでは、getLocalTime()の度にgetConfig()で指定したNTPサーバーにリクエストが飛ぶのか、といったあたりがよくわかりません。


Arduino にしても Arduino Core for ESP32 にしても何かやろうとしていることが明確なら、まず使えそうな標準ライブラリなり外部ライブラリを探すことから始めると効率が良いですね。ライブラリ自体に豊富なサンプルがついてきますし、多分作例もググれば誰か作って公開してくれているとおもいます(笑)

1.データどこから取得する?
2.データの取得と解析はどうする?
3.RTCないけどどうする <--- 今ここ

Arduino+74HC595+8×8nマトリクスLED(8.2)

2.駅別時刻表をHTTP経由で取得・解析する

マイコンのメモリは限られていますので、大規模な文字列解析はやらないほうがよさそうです。

そこで、LAN上にWEBサーバーを立ててCGIを利用することにしました。①公式サイトのデータ取得→時刻表データファイルを作成するスクリプトと、②時刻表データファイル→直近1列車を表示するスクリプトがあれば要件を満たせます。
スクリプトを分割したおかげで、それぞれの機能のみ考えればよいのでコーディングも楽になりました。時刻表のデータそのものの更新頻度はせいぜいダイヤ改正ごと、つまり長期に渡って更新されないので①については、都度手動で取得・整形する形でもなんとかなります。

ESP32からは②直近1列車表示スクリプトからHTTPでゲットする形なので、固定の形式で取得できることが保証され、名鉄公式サイトが大規模改修したとしてもESP32側の解析ロジックを書き直す必要がなくなります。

①・②とも20年くらい前に遊んでいたperlで書くことにしました。当時はperlのcgiでBBS作るの流行りましたね。perlで作る掲示板なんて本まで出版されたような記憶が。
とはいえ、ど忘れしていて別の言語で書いても良かったんではないかと後悔(^^;;
今時の動的htmlってどんな言語を使うのかしら?


Arduino+74HC595+8×8nマトリクスLED(8.0)

電光掲示板もどきプロジェクトの状況です。

さんざん同じネタで引っ張っていますが、行側制御部の方式検討はひとまずおいておくとして、ソフトウェア側を作り込むことにしました。
またLEDマトリクスで遊び始めた頃より、WiFi経由で最寄り駅の直近の列車を表示したいという願望がありましたので、Arduino に追加する WiFiモジュールを検討していたところ、ESP32というマイコンといいますかWiFiチップといいますか、多機能なものがあり、Arduino IDEで開発できることからESP32 DevKitC を 秋月さんから入手して、こちらに移行してしまうことにしました。


ESP32 Devkit C での疑問点

 前回の投稿から放置状態にあった当ブログですが、再び何かしら作ろうということで、スマートコンセントもどきに取り組んでいます。 回路なども一応動作するものができたのですが、ブレッドボードから移行するために基板に用意しておいたピンソケットにESP32を取り付けたところ、なぜか動作しま...