こんにちは!はしもとです。
前回は、LEDの抵抗値を適切に計算してインジケータの回路設計を行いました。
普段あまり深く考えずに抵抗値を決めているときがあったので、これを機に理解を深められてよかったです。
今回は、ESP32周りの回路を設計していきます。
ESP32をマイクロマウスで使う理由
理由はWi-Fi通信機能を使いたいからです。エンコーダや赤外線センサの情報をSTM32からESP32に送り、それらの情報をESP32のWi-Fi通信を使ってWEBブラウザ上に表示し、マウスの現在状態を可視化することでデバッグをしやすくできればと考えています。
ESP32とSTM32とのWi-Fi通信の具体的な方法は事前に確認済みです。
下記のブログにまとめています。
ESP32を使ってSTM32のWi-Fi通信① – はしもとの自作マウス研修 Part6
ESP32を使ってSTM32のWi-Fi通信② – はしもとの自作マウス研修 Part7
回路設計
ESP32まわりの回路
実際に設計した回路はこちらです。
今回はESP32をWi-Fiモジュールとして使い、センサ値の送受信やモータ制御などには使わないため、限られたピンしか使用していないです。具体的にどのように使うかというとは、ファームウェアをESP32に書き込んで、UARTピンを使ってSTM32と通信します。このあたりは過去のブログに詳細を書きました。
次に、今回使用したピンと用途についてです。
- UART x 2
- STM32との通信用
- ファームウェア転送用
- VDD/GND
- 電源供給用
- 電源3.3Vに取り付けるパスコンは、ESP32 Module Micro USB 5V&USB-UARTに書かれたESP32 Module(下図)を参考にしました
https://dl.espressif.com/dl/schematics/esp32_devkitc_v4-sch.pdf
- EN
- リセットボタン
このボタンを押すことでESP32を再起動させることができます - 上記のデータシートのESP32 Moduleを参考に、EN端子にプルアップ抵抗を付けます
- リセットボタン
- Boot
- ダウンロードボタン
Bootボタンを押した状態でENを同時に押すと、シリアルポートを介してファームウェアをダウンロードするモードに移行する(参考:ESP32-DevKitC V4 Getting Started – Guide Functional Description)
- ダウンロードボタン
ソフト書き込み回路
ソフト書き込み回路全体
以前のブログでは、ESP-WROOM-32開発ボードと開発用PCを超小型USBシリアル変換モジュールやUSBケーブルを使って接続し、書き込みツールを使って、ESP32にファームウェアの書き込みを行なっていました。
マウス基板に実装するESP32でも同様のことができるように、ソフト書き込み用の回路設計を行いました(下図)。
次に機能ごとに回路の解説を行います。
USB-Serial変換回路
- USB to serial UART
- USBシリアル変換IC FT232RLを使って、USBの信号をシリアル通信に適した形に変換する回路(参考:shotaのマイクロマウス研修17 回路設計⑤:ESP32ソフト書き込み基板と間違い)
- USB Connector
- micro USB Type-Bケーブルを基板に挿すためのコネクタ回路(参考:FT232R データシート 6.1 USB Bus Powered Configuration)
- インジケータ回路
- 前述したUSB to serial UART回路から出力される信号をLEDに接続し、ファームウェアの書き込みが実行されているかどうかを可視化するための回路(参考:FT232R データシート 7.5 LED Interface)
ソフト書き込み用スイッチ回路
shotaさんの回路を参考にしました。
- 手動ソフト書き込み用のスイッチ回路
- ”ESP32まわりの回路”の章で紹介したEN/Bootピンをスイッチを使って手動で切り替えることでソフトの書き込みを行う
- 自動ソフト書き込み用のスイッチ回路
- 先程の手動切り替えの場合、Bootボタンを押した状態でENを押す必要があり、ソフトを書き込むために2つのスイッチを操作しないといけないので、少し手間がかかります
- そこで、USBシリアル変換IC FT232RLから出力されるDTR(Data Terminal Ready)とRTS(Request To Send)を使って、BootとENのON/OFF制御をすることで自動でソフトを書き込めるようにします
- DTR信号は、ESP32が「電源が入ってポートが開かれているかどうか」を通信相手に示すための信号です
RTS信号は、ESP32が「受信バッファに十分な空きがあり、データの受け入れ可能かどうか」を通信相手に示すための信号です - この回路の詳細は、ESP8266にDTRとRTSで自動書き込みをする – プログラミングな日々 – DTRとRTSを使ったリセット回路に詳しく書かれています
まとめ
今回は、ESP32周りの回路設計について書きました。
使用するピン機能が少なかったので、設計する回路はSTM32と比較するとかなり少なく済みました。また、自動ソフト書き込み用のスイッチ回路のところでは、DTRやRTSの存在すら知らなかったので、勉強になりました。
ここまでで、自分が行なった回路設計は以上となります。
次回からは、これらの設計した回路を実際の基板上に配置するための基板設計について書いていけたらと思います。
それではまた〜!