ESP32 micropython一覧

マイコンセンサー設置日和

 準備中だったソーラーパネルとリポバッテリーで外部電源不要なバージョンの環境センサをベランダに設置した。しばらく既設の外部電源版と併設です。太陽電池とはいうものの直射日光はあたらない場所。どれくらいもちますかね。事前の室内でのバッテリーでの稼働テストでは1週間は動いてた。

 あと、室内で温度と明るさを取得するだけのをESP32で作ってみたほう。こちらも稼働させてみた。微妙にmachine.配下のデバイス固有関数の使い勝手がXBee3とは違うので習得も兼ねてだね。


ESP32でmicropython

Xbee3でベランダでやってるのと同じのを室内に設置します。ESP32がいっぱいあるのでコイツにmicropythonを入れてですね。Arduinoでもいいんですが、Xbeeとコードの共有化が出来そうだし、デバッグ簡単だし。micropythonは入れました。Firmware built with ESP-IDF v4.x, with support for BLE, but no LAN or PPPを。BLE advertiseできれば良いので。


micro:bitで microPython

 昨晩、翌朝雪が積もっていない事を祈りつつ、ESP32にGallimOSからesptool.pyでmicroPythonを焼いてて思った。「そういえばmicro:bitでもmicroPython使えたような。」と。micro:bitはESP32と違ってwifiは使えないがbluetoothはあったりする。Web Bluetooth APIなんつうものでchromeと通信できるらしい。だが、microPython上ではメモリが足りなくてBT使えないそうだ。
 でもとりあえず、ちょっとあそんで見ます。


ESP32開発環境はできた

 昨日の夜、chromeboxのGalliumOS上でESP32を焼くべくテストしてたが、ttyUSB0が出てこない。lsusbでも気配がない。つなげるデバイスを変えてみてもだめ。Kabylakeカーネルがサポートしてないのだろうかと、異なる環境を試して見るべく眠ってる asus chromebook C223(こっちはApollo Lake)にGalliumOSを入れたとこで寝た。
 本日起きてきて試すがC223でも同様にだめ。1点、自分のユーザーをdialoutグループに入れるのを忘れてたが、これはttyUSB0が出てこないのとは関係ない。googleりつつ redditを読んで、「ケーブルを変えたらいけた」という例をみつけた。半信半疑で以前接続実績のあるケーブルに変えたら/dev/ttyUSB0が出て来ました。いわゆる充電用だけのケーブルだった模様。昨夜は4本くらいケーブル変えてたが全て外れだったのか。
 chromeboxで行けたのでC223でもやってみて、OKだねというとこでクラムシェルを閉じてしまった。C223をGalliumOS化したときに、この開閉に難ありの記事はみたが。閉じたクラムシェルを開けたらOSが壊れてると言いやがってGalliumOSを起動出来ない。CTRL-UはdisableされててCTRL-Lもきかず。仕方なしに別のchromebookでリカバリーUSBを焼いてchromeosとしてのリカバリーまではやった。またC223 にGalliumOSいれても、蓋閉じてまた壊れたらやなのでこちらでやりなおすのはひとまず封印。余裕あるときにLinuxMintのMATE版でも入れてみるかな。Xfceはデザインは好きだがWindowの枠が細すぎて掴みにくいんだよ。
 その後もchromeboxのGalliumOSでmicroPythonのIDEであるuPyCraftを動かそうと四苦八苦。uPyCraftは古いアプリで、使ってるフレームワークやらライブラリがもう時代遅れで導入が難しい。結局諦めた。
 chromeboxでESP32を書き込むのは出来たのでよし。今は有料になってしまったFritzingもインストール出来たさ。microPythonは以前使ってたampyでなんとかするさ。あとはarduino系の開発をこっちですべく、ソースやライブラリを移して、NASにrsyncしたりGitLabに同期する設定いれたら本稼働できる。このタイミングでGitHubも入れるかね、GitHubは以前はフリーだと制限が多くて使えなかったのでGitLabを使ってただけです。


ベランダセンサーを入れ替え

 連休前半はベランダのセンサーの作り替え。
 明るさ(CDS)、気圧、温度、湿度(BMP280)だけにした。データは今まではプルだったのを5分おきのプッシュに変更。この変更を入れたので、google home&ifttt&raspberry piでやってた外の気温レポートを修正した。いままではベランダセンサーに気温を聞いていたところをambientから取得するように切り替えでOK。リアルタイムのデータは取れないけど、5分毎だからまぁ良いだろう。多少データにスパイクがあるものの動作はしている。
 あ、あとOTAでのプログラムコード書き込みに対応させたので「ベランダに出てボードを外して来て書き換えてまた戻す」といった作業が基本的には要らなくなった。部屋の中からプログラムコード書き換えができる。バグってループさせたりしなければ大丈夫な筈。


今日の電子工作作戦0407

1) 水槽水温計をmbedからmicropython on ESP32に移行した。ココだけでなくabmientへのデータアップロードも対応。水温センサー部分はmbed版のを流用。ブレッドボード作成なので、ジップロックで埃よけとした。

2) ここへのデータアップロードが正しく動作してるかの確認用にスクリプトを入れた。3時間毎に起動して、直近1時間に1件もアップがないモノをリストアップして自分メール。だたこのサーバ入れてるgoogle cloud platformのgoogle compute engineでは、port25,465,58でsmtpが通りません。こないだ宅内liva用にsendgridのアカウントを作ったのでそれを利用。postfixをインスコして設定。無事メール送信できるようになった。

3) micropython on ESP32でWi-SUNのテスト。
ネット上のいくつかのコードをサンプルに移植をしてたが、
・通常pythonからmicro系への変換
・不要機能のコードの削除、変更
・python2系からpython3系の変換
と変える部分が多くて、一番やっかいなのがpython2系からの変換。まとめてやってたら疲れちゃったのでこの件は一旦放置とする。
Linux上でpython2で動作確認した上で、python3への変更と動作確認・不要機能の削除を実施。そのうえでmicropythonへの移植 と段階をおかないと駄目だ。