2022 年度 組込システム (J5)
はじめに
本科目では ESP32 マイコンを用いて以下を目的とした演習を行う.
- 比較的低級な C 言語から, 高級言語 (python, ruby) までの各種言語を用いたプログラミングを修得する.
- ESP32 の公式な開発環境は C 言語.
- 高級言語でのマイコンプログラミングの実際を理解する.
- 呼び出し元の言語に応じたラッパーを作成し, ラッパーを経由して C 言語ライブラリを使用する.
- マイコン周辺機器 (peripheral) のデータシートを (多少なりとも) 読み, それをプログラミングできるようになる.
解説
教材
教育ボード
本ドキュメントでは ESP32 マイコンを搭載した教育ボードを対象とする.
|
|
2 代目の基板は GPS と RTC の電源を切れるようになっている. GPS と RTC の電源を入れる時は以下のような命令が必要となる.
# GPS の電源を入れる gps_pw = GPIO.new(5, GPIO::OUT) gps_pw.write(0) sleep 1 # RTC の電源を入れる gps_pw = GPIO.new(4, GPIO::OUT) gps_pw.write(0) sleep 1
USB-Linux
USB ブートの Linux (Debian 10) を利用する. 演習ではイメージファイル (<URL:j5_es2022.img> 29GB) の書き込まれた USB メモリ (SanDisk SDCZ73-032G-G46 [32GB]) を用いる.
USB メモリから Linux をブートするためには, 利用する PC の BIOS で以下を設定を行う必要がある.
- BIOS のタイプ: UEFI (legacy では起動しない)
- SecureBoot: 無効
- Boot: USB メモリの優先順位を上げる.
ログインするための情報は以下の通りである.
- user, live
演習
各種開発環境を用いたプログラミングの基礎
[1] MicroPython
|
[2] Arduino IDE + ESP32ボードマネージャ
| |
[3] ESP-IDF 環境 + C 言語
|
[4] mruby/c
|
mruby/c で IoT (1)
課題:温度の計測を行い,その結果を1分間隔 (毎 0 秒) でサーバに送信するプログラムを作成せよ. 送信した温度データがサーバ上 (grafana) でデータを可視化せよ.
<URL:https://pluto.epi.it.matsue-ct.jp/grafana/d/ag33FKu7k/j5_es_2022?orgId=1>
mruby/c で IoT (2)
課題:定期的に GPS による位置計測を行い,結果を地図上にプロットせよ. wifi に接続できる場所 (演習室) に戻ってから蓄積した位置データをサーバへ送信すること.
mruby/c でクラス定義 (C と Ruby の連携)
I2C センサのデータシートを読む
演習の進め方.
- 数名でチームを組み,利用するセンサを選ぶ.選択後,試しに Arduino からセンサを使ってみよ.
- mruby/c のサンプルコードを読み,それぞれのメソッド (or 各行) とデータシートの内容とを対応づけする.(注: サンプルコードにバグが含まれている可能性あり.全ての機能が実装されているわけでない.また,昨年度と今年度で I2C のメソッドが変更されていることに注意).
- 対応づけができたら,プログラムに註釈を入れ,データシートからプログラム作成に必要な部分を抜き出す.必要に応じてデバッグ・機能追加すること.
- mruby/c のセンサ用ソースコードを用いて,実際にセンサを動かしてみる.
- mruby/c のコードを GitHub に commit する.
- チーム毎に,理解したこと/デバッグ・機能追加の結果,を発表する.
資料:
- 演習で使える I2C センサ
- mrubyc-esp32 ライブラリへのコードの追加 [準備中]
[参考] mruby/c
[参考] 教材準備
ブート可能な USB-Linux のセットアップや, 各開発環境のセットアップ方法を以下にまとめる.
- USB メモリへの Debian 11 のインストール
- ESP-IDF + mrubyc 環境のセットアップ
- Arduino + ESP32 環境のセットアップ
- MicroPython 環境のセットアップ
- 補足: Windows 11: ESP-IDF + mrubyc 環境のセットアップ (WSL2)
演習で使う Live-USB の img ファイルは <URL:j5_es2022.img> (29GB) である. これを USB に焼き, しかるべく PC の bios (UEFI) を設定すれば演習環境を再現できる. なお, img ファイルを USB メモリに焼くには Linux の dd コマンドや Etcher など使うと良い.
謝辞
- しまねソフト研究開発センター からの研究費を受けた (2019 年度〜)