ESP32-WROOM-32Eで学べるソフト開発と標準ライブラリの使い方

組み込みエンジニア

こんにちは、ENGかぴです。

ESP32-WROOM-32EはArduino環境でソフト開発ができるため標準のライブラリで各種センサーの動作確認ができます。ソフト開発に対して苦手意識があり敷居が高く感じていた方でも簡単に動作確認ができるためお勧めのモジュールです。

私が動作確認しているライブラリなどのプログラムを動作させてみたり改造したりと有効利用していただき少しでも興味を持っていただけたのなら幸いです。

ソフト開発と標準ライブラリの使い方

ESP32-WROOM-32Eは各種センサーの情報を取得するためのSPI通信やI2C通信機能を備えています。一番の特徴はWiFi通信やBluetooth通信ができることです。

ESP32 ArduinoCoreのドキュメントのサイト

各種ライブラリの説明やボードタイプによるピン配置などの説明のドキュメントがまとめられています。

タイマ機能を使用する

ESP32-WROOM-32Eの開発環境ではタイマに関するライブラリが標準で搭載されています。スケッチ例である「RepeatTimer」を引用しながらタイマ割り込みを使用する方法を説明しています。

タイマの応用例としてDIのチャタリング防止のためのDIフィルタを実装する方法について説明しています。

SPI通信を行う

Arduino環境ではSPI通信を行うために標準ライブラリとしてSPIライブラリがあります。BME280の製作メーカが提供しているAPIを使用して温度・気圧・湿度の計算を行いSPI通信でセンサー情報を取得する方法をまとめました。

BME280の製作メーカーが提供しているBME280用のAPIを組み込んで動作させる方法とライブラリマネージャからインストールした「Adafruit BME280」を使用する方法を紹介しています。

Wire(I2C)通信を行う

Wireライブラリを使ってI2C通信を行い温湿度センサーであるSHT35-DISから温湿度データを取得してシリアルモニタに計測値を表示する方法を説明しています。またSHT35-DISの測定データの整合性チェックを行うためCRC-8の計算方法についてまとめています。

WiFiのアクセスポイントを実装する

WiFiライブラリを使用することでアクセスポイントとして使用することができます。同時にサーバーとして動作させることでクライアント(スマホ等)からの接続に対して応答することができます。

Wireを使ってSHT35-DISから取得したデータをスマホなどのブラウザに表示して動作確認しました。

ESP32-WROOM-32Eの最大の特徴であるWiFi通信でスマホ上にデータを表示できるため応用範囲が広がりそうです。

Webサーバーを実装する

Webサーバーを実装するとクライアント(スマホなど)のリクエストに対応したレスポンスを返信する事ができるため複数のURLを切り替えながら表示することができます。

温湿度情報をブラウザー上にグラフ表示する

Webサーバーとグラフ表示用のライブラリであるChart.jsを組み込むことでSHT35-DISから取得した温湿度情報をブラウザー上にグラフ表示しています。Chart.jsを組み込むためにSPIFFSをArduino IDEに追加する方法についてまとめています。

グラフ表示すると時間経過による状態の変化が視覚的に分かるため応用範囲が広がりそうです他のセンサーの情報もグラフ化して表示してみたいと考えています。

WiFiサーバーを実装してレスポンスする

WiFiサーバーを実装してアクセスポイントに接続してクライアントからのリクエストにレスポンスする方法をまとめています。mDNSで機器の名前を登録してIPアドレスを設定しなくても良い方法についてもまとめています。

mDNSはAndroidでは実装されていないためAndroidで使用する場合は別途アプリ(.Local Finderなど)が必要です。

ホールセンサーとタッチセンサーの使い方

ホールセンサーとタッチセンサーはESP32-WROOM-32Eに初期搭載されているセンサーです。モジュールの金属モールドに磁石を当てるとセンサーの値が変化します。タッチセンサーに対応したピンをGPIOピンとして使用しない場合に使用することができます。指でタッチするとセンサー値が変化します。

ホールセンサーはドアの開閉部のセンサーなどに応用でき、タッチセンサーは照明のスイッチなどに応用することができます。

PWM波形を生成する

ESP32シリーズは通常のArduinoライブラリとは別にPWM用のライブラリが実装されています。PWMの設定の仕方から応用例としてブザーを鳴らしたりモーターを駆動されて動作確認しました。

ESP32専用のライブラリでは音色が定数として定義されているためド~シまでの音程の調整が簡単にできるのが便利な点だと感じました。

割り込みを使って加速度センサーの情報を取得する

ESP32シリーズのDIに割り込みを使用する設定を行い加速度センサーであるADXL345のイベント情報を取得する方法をまとめています。ADXL345用のライブラリを追加して加速度情報を取得しています。加速度のイベントをグラフ表示して動作確認したことについて下記にまとめています。

FLASH(EEP)にデータを読み書きする

ESP32シリーズ用に実装されているSPIFFSライブラリを使用してFLASHからデータを読み書きする方法をまとめました。FLASHの一部をデータ用のストレージとして使用しArduino環境でSDカードにアクセスするイメージでデータを管理することができます。

ブラウザーで設定値を変更しSPIFFSを使って保存した設定情報を使ってアクセスポイントを動作させる方法をまとめています。

ESP32シリーズではEEPROMライブラリがArduino環境で開発できるように下位互換として実装されています。電源OFFしてもデータを管理することができますが、FLASHを使用することが推奨されています。EEPROMライブラリを使った方法は他のArduino環境で開発したソフトを流用する際の参考としてまとめています。

Arduinoライブラリに関する書籍

ESP32シリーズでソフト開発する際に参考になる書籍を紹介しています。Arudinoライブラリの使い方が説明されているためArduinoライブラリに慣れていない初心者からお勧めできる書籍です。

Arduino IDEによるソフト開発環境の作り方からArudinoライブラリの使い方までを説明しておりESPだけでなくArduino UNOを使った例が説明されているため基礎知識ない状態からArduino環境に慣れていきたい方にお勧めできる一冊です。

ESP32を中心に電子回路に関する省エネの考え方やI2CやSPI通信の構成の説明など回路からソフト開発の例が豊富なのが良いです。

まとめ:まずは感覚を掴むことが大切です。

Arduinoはライブラリを使用することでSPIやI2C通信などが簡単に実現できるためマイコンの動作を勉強するには最適な環境です。ソフト開発に対して苦手意識があり敷居が高く感じていた方でも簡単に動作確認ができるため苦手意識をなくせることがメリットと言えます。

Arduinoはライブラリを使って各種機能を実現するためライブラリにない動作を組み込みたい場合は自作する必要があります。ライブラリは有志が作成したものであるためバグがある可能性もあり動作の保証はないのがデメリットです。

実際にセンサー情報を取得したりシリアルモニタに表示したりと動作確認しながら1つ1つの技術の成功を積み重ねていけばできることが増えていき自信がつくことでソフト開発に対する苦手意識がなくなっていくことは間違いありません。

自信がつきマイコンの機能をフル活用してみようとレジスタの操作についてデータシートを見てみようと興味が湧いてくれば、あっという間に脱初心者となるでしょう。

私は業務に追われながらも独学していたためソフト開発に慣れるまでに10年程度かかってしまいました。ArduinoだけでなくPICマイコンやRXマイコン最近はIoTモジュールのソフト開発などをしていますが、早い段階でプログラミングを教養として身に着けておけば10年もかからなかったと感じています。

TECH::CAMPプログラミング教養【無料体験会】

最近では無料体験できるプログラミングスクールも増えてきており、あなたに合った学習プランによって短期集中してプログラミングに親しめる環境があります。無料体験でもプログラミングに対する感覚を掴めておけばソフト開発に対するハードルが下がることは間違いありません。

関連リンク

Arduinoのライブラリを使って動作確認を行ったことを下記リンクにまとめています。

Arduinoで学べるマイコンのソフト開発と標準ライブラリの使い方

Seeeduino XIAOで学べるソフト開発と標準ライブラリの使い方

ESP32-WROOM-32Eで学べるソフト開発と標準ライブラリの使い方

Arduinoのようにソフト開発したり周辺回路と組み合わせてデータを取得させたりして電子製品を開発するエンジニアは組み込みエンジニアといいます。IoT社会実現と組み込みエンジニアの職種との関係についてまとめています。

組み込みエンジニアはIoT社会実現のために需要が高い職種

ZigBeeモジュールであるトワイライトでソフト開発と無線通信を行い動作確認したことについてリンクをまとめています。

トワイライト(TWELITE)のソフト開発と無線通信でできること

最後まで、読んでいただきありがとうございました。

タイトルとURLをコピーしました