TODO list
方針
- mrubyc libs for ESP32 リポジトリを増強する.
- 作成するクラス・メソッドおよびそれらの引数は基本的に micropython ESP32 Quick Reference に合わせる.
- 作成対象のクラス・メソッドを決めたら, ESP-IDF 環境の esp-idf/example ディレクトリ以下のサンプルから類似のものを探す. ESP-IDF のサンプルを元にラッパーを作る.
ラッパーの書き方
- まとまった資料は, ITOC のチュートリアル くらい?
リポジトリの説明
- mrubyc libs for ESP32 は, モンラボさんから納品されたリポジトリ を元にし, mruby/c 教育ボードを使うために必要なクラス・ライブラリを追加したものである.
- 書いたラッパーは main/main.c から呼んでいる. main/main.c の中身を参照のこと.
- main/ 以下の .c, .h ファイルは, モンラボ製と杉山がやっつけで書いたものが混ざっている.
- モンラボ製
- mrbc_esp32_gpio.[c,h]
- mrbc_esp32_i2c.[c,h]
- mrbc_esp32_http_client.[c,h]
- mrbc_esp32_wifi.[c,h]
- wifi まわりは最新の ESP-IDF では動かなかったので, 杉山が適当に修正している. WPA2 Enterprise はテストが終わってない.
- 杉山が書いたもの.
- mrbc_esp32_adc.[c,h]
- mrbc_esp32_ledc.[c,h]
- mrbc_esp32_sntp.[c,h]
- モンラボ製
- mrblib/model 以下は, モンラボ製を以下のようにリネームして適宜バグフィックスしている (それ以外は杉山が適当に書いたものである).
- i2c.rb : そのまま
- rtc.rb => rc8035sa.rb
- lcd.rb => aqm0802a.rb
- gpio_test.rb => sht75.rb
ライブラリ開発の手順
- [step0] mrubyc の演習資料 を見ながら, mruby/c 教育ボードをとりあえず動かしてみる.
- [step1] 現時点のリポジトリに含まれるソースコードを整理する. 以下に関連するクラス・メソッドを MicroPython に揃える (完璧に合わせる必要はない. あくまで「同程度」に). 特に杉山が書いたものは完成度が低い. モンラボさんのソースを教科書にソースの修正を行うと良い.
- GPIO
- I2C
- wifi 接続
- ADC
- LEDC (PWM)
- NTP
- http_client
- [step2] MicroPython にあって mrubyc libs for ESP32 に無いものを列挙し, それを 1 つづつ潰していく.
- mruby/c 教育ボードに存在しない SPI (センサ, SD カード), 1 wire (センサ), PWM (サーボモータ), NeoPixel については, 夏休み前を目処にライブラリ開発用の拡張基板を用意する予定.
懸案事項
- main/main.c で全てのラッパーを include すると, コンパイルに時間がかかるよう になる & マイコンへの書き込みに時間がかかるようになる. include するものを制限したり自在に変更できるようにする仕組みが必要かもしれない. make menuconfig を上手く使うのがよいかも.