
IoT デバイスプログラミングの世界へようこそ
〜 ChatGPT と ESP32 を活用したエンジニア養成 Workshop 〜
ChatGPT と共に学ぶプログラム開発
最先端のテクノロジーとして注目されるChatGPTを使いこなすスキルは、現代のビジネスパーソンにとっても重要になりつつあります。
本Workshopでは、参加者が ChatGPT を自身のアシスタントとして活用し、IoT デバイスプログラミングの基礎から応用までを学びました。Workshop中は、ChatGPT を参加者のアシスタントとしてプログラム開発の学習を行うというアプローチをとりました。
ChatGPTは、自然言語処理の分野で革新的な進展を遂げており、その応用はプログラミング初学者がプログラム開発を行う敷居を大きく下げるという意味でも重要になっています。本Workshopでは、参加者がこの最先端技術を実際に手を動かしながら学び、自身のプログラミングスキルを向上させる機会を提供しました。
特に、ESP32 というハードウェアを使用したハンズオンでは、ChatGPT へのプロンプトによる指示を基にプログラムを設計・作成し、それを実際にデバイスに組み込む実践的なワークショップを行いました。このアプローチにより、参加者はプログラミングの理論だけでなく、実際のデバイスへの応用という点においても深い理解を得ることができたと思います。また、このプロセスを通じて、プログラミング言語やツール、ライブラリの選択、コードのデバッグといった複雑なプロセスにも触れることができ、実際の開発現場で求められる多岐にわたるスキルを身に付けることが可能となりました。
IoT デバイス製作の醍醐味
IoT デバイス製作では、参加者が ESP32 という汎用マイコンを用いて、実際のデバイス製作に挑戦しました。このプロセスでは、電子工学の基本から始まり、デバイスの物理的な組み立て、プログラミング、そして最終的な動作確認に至るまでの全工程をカバーしました。
ESP32 は、その処理能力と多様な機能で、初学者である参加者にとって理想的な学習ツールとなったのでは!?と思っています。WiFiとBluetooth機能を内蔵しているため、無線接続が可能な様々な IoT アプリケーションの開発に対応できます。
さらに、この本講座では、参加者が ESP32 を用いて実際に温湿度センサを操作し、リアルタイムでデータを収集し分析する方法を学びました。これにより、IoT デバイスが現実世界の問題解決にどのように応用されうるかを直感的に理解することができ、参加者の技術的な知識の獲得と IoT の魅力を深く理解する貴重な機会となりました。
ESP32

ESP32 は WiFi と Bluetooth を内蔵している SoC(System on Chip)で今回のような要件に適する IoT デバイスになります。また、Arduino 互換であるため、マイコン・プログラムを開発する際に Arduino IDE を使用可能であることもメリットの1つだと思います。
Arduino
Arduino はオープンソースなハードウェア、ソフトウェアのプラットフォームとして初心者にも使いやすく設計されていて、多くのセンサやモジュールが利用できることが特徴です。ESP32 は数多くある Arduino 互換ボードの中の1つで、Arduino エコシステムの一部として機能することで高度なプログラミング等が行える拡張性もあります。
ただ、オープンソースのプラットフォームとして普及していることも影響して、多種多様なハードウェアモジュールやソフトウェアライブラリが提供されていますが、開発を行う上で特に商用利用等においてはライセンスを事前にチェックする必要がありますのでご注意下さい。
ChatGPT との「Lチカ」プログラミング
まず始めのハンズオンとして、ESP32 を使用して LED を点灯させる通称「Lチカ(LED をチカチカ点灯させる)」を行いました。ハンズオンを行うために必要となる基本的な電子回路の概念を理解してもらい、参加者は手順に沿って実際に LED 点灯のプログラムを作成しました。
ハードウェアのセットアップ

参加者はおそらく初めて目にした方が多かったと思いますが、「結線図」を見て自分自身で試行錯誤しながらブレッドボードにデバイスやジャンパー線を接合して回路を完成させてもらいました。

プログラム開発
プログラム開発は本Workshopの特徴の1つでもある ChatGPT をアシスタントとして使ったプログラミングを参加者に行ってもらいました。
具体的には下記のようなキーワードを組み合わせたプロンプト(ChatGPT への指示文)を参加者それぞれに考えてもらい、ChatGPT が作成したプログラムを ESP32 上で実行すると言う工程を繰り返して試行錯誤するというアプローチをとりました。
-
ESP32-WROVER-E
-
Lチカ
-
Arduino IDE
-
PIN 番号
参加者が考えた具体的なプロンプトの一例は下記のようなものです。
(プロンプト例)
あなたは ESP32 に精通した優秀なマイコン・プログラマとして振る舞ってください。
下記の要件を満たすプログラムを作成してください。
# 要件:
- 使用するマイコンは ESP32-WROVER-E とします
- LED をチカチカ点滅させます
- PIN 番号は 32番を使用します
ChatGPT が作成したプログラムで要件を満たすプログラムが作成できて、実際に ESP32 にロード&実行して LED が点滅する様子を見た参加者からはちょっとした達成感のような歓声が上がっていたのが印象的でした。
また、ハンズオンが上手くいった方にはプロンプトを変更して「LED の点灯スピードをランダムに変更して点滅させてください」のような”ちょっとした”味付けをしてもらい、ChatGPT によるプログラミングの拡張性や様々な要件への応用が可能であることを実感してもらいました。
温湿度センサからのデータ取得
次に Lチカのハンズオンの流れをそのまま利用するようなアプローチで「温湿度センサからデータを取得する」という要件を加えてハンズオンを行ってもらいました。
ハードウェアのセットアップ

温湿度センサとして AE-SHT31 を使用した回路を作成しました。

プログラム開発
プログラム開発も先ほどのハンズオンと同様の流れで ChatGPT に指示することで作成してもらいましたが、1つだけ”敢えて”ちょっとしたトラップを仕込んで参加者にはトライしてもらいました。
トラップの内容というのは温湿度センサが結線によってアドレスが変わる仕様を伝えずにプログラムを作成してもらい、試行錯誤で発生したエラーのトラブルシュートも ChatGPT へ情報提供することでデバッグを行うという試みを行いました。結果的には少々難易度が高くなってしまったものの、実際のデバイス仕様書を読むことで判明した内容を ChatGPT へのプロンプトへ具体的に反映させることで解消できるという体験をしてもらえたため、効果的なハンズオンとなりました。
(プロンプト例)
あなたは ESP32 に精通した優秀なマイコン・プログラマとして振る舞ってください。
下記の要件を満たすプログラムを作成してください。
# 要件:
- 使用するマイコンは ESP32-WROVER-E とします
- 温湿度センサは AE-SHT31 とします
- 温湿度センサのアドレスは 0x45 とします
- シリアルモニタに取得した値を表示します
必要なライブラリがあれば導入・設定方法を指示してください。
クラウドへの接続によるデバイス IoT 化
前のハンズオンで作成した温湿度センサからのデータ取得が無事に行えたので、最後のステップとして、この取得した温湿度データをクラウドへ転送する仕組みを要件に加えて、IoT デバイスとして機能させるハンズオンを行いました。
プログラム開発
ハードウェアへの変更は行わず、ESP32 に内蔵されている WiFi 機能を利用してクラウドへ接続・データ転送を行う部分をプログラムを拡張する方式をとりました。
(プロンプト例)
あなたは ESP32 に精通した優秀なマイコン・プログラマとして振る舞ってください。
下記の要件を満たすプログラムを作成してください。
# 要件:
- 使用するマイコンは ESP32-WROVER-E とします
- 温湿度センサは AE-SHT31 とします
- 温湿度センサのアドレスは 0x45 とします
- シリアルモニタに取得した値を表示します
- WiFi 接続を行います
- 温湿度センサから取得したデータを HTTPS 通信で送信します
- 送信間隔を5秒以上に設定します
- POST メソッドを使用します
- Basic 認証を使用します
- メッセージは JSON 形式として以下のフォーマットに従って下さい
- フォーマット:
{
"msgId": "P00000001",
"deviceId": "デバイスID",
"data": {
"1000": "温度",
"1001": "湿度"
}
}
必要なライブラリがあれば導入・設定方法を指示してください。
このように少々複雑なプログラムになると ChatGPT への具体的な指示文の重要性が高くなってくるため、参加者も悪戦苦闘している様子でした。特に通信方式の部分などは専門的な単語での指示が必要になるなど、非エンジニアではなかなか指示が出しにくい面もあり、今後へ向けた課題もあると認識することができました。
ちょっと未来の IoT デバイスプログラミング
本Workshopでは、最先端の AI 技術である ChatGPT と汎用デバイス ESP32 を活用して、プログラム開発の基礎から応用までを網羅的に学びました。講座は、ChatGPT との対話を通じたプログラミングの学習から始まり、ESP32を用いた実践的なデバイス製作、Arduino エコシステムとの統合、そしてデータ収集と分析に至るまでの一連のプロセスをカバーしました。
参加者は、ChatGPT を用いたプログラミングの概念を形成し、ESP32 で実際に動作させることで、理論と実践の間のギャップを埋めました。ESP32 の製作では、デバイスの物理的な組み立てからプログラミング、動作確認までの一連の工程を体験することで、IoT デバイスの実際の応用とそのポテンシャルを理解することができたと思います。
また、Arduino エコシステムと ESP32 の組み合わせは、初心者にも親しみやすいプログラミング環境と高性能なハードウェアの利点が活かされていて、参加者は Arduino IDE を使って ESP32 をプログラミングし、IoTアプリケーション開発のための技術的な基礎を習得できたと思っています。
最終的に本Workshopでは、IoT デバイスと AI 技術の統合によってたとえ初学者であっても創造的なアイデアがあれば自らの課題を解決するために試行錯誤ができるという可能性を間接的かもしれませんが参加者に示せたのではないかと考えています。