UMEHOSHI ITA TOP PAGE    COMPUTER SHIEN LAB

「UMEHOSHI ITA」にESP32-WROOM-32E-N16を、「UMEHOSHI ITA」へ取り付ける例を示しています。
(「UMEHOSHI ITA」は一部の端子だけをCN11とCN12を介して引き出し、そこに別途の自作基板を取り付けて、少しだけ利用することを想定しています。)

ESP32-WROOM-32E-N16を付けての実験

ESP32をプログラム書き込みの「UART Download Mode」にするためには起動時にIO0端子をLOWにするため切り替えが必要です。
([UMEHOSHI ITA]において、ESP32のIO0端子はどこにも繋がっていません。DTR/RTS制御は対応していません)
そのためには、 「IO0」を引き出して空いているCN12-5とジャンパーで配線し、ここに繋がるスイッチを付けたボードを別途に作成する必要があります。
そのため[UMEHOSHI ITA]基板の裏で「IO0:(U19-25)に繋がっているT6スルーホール」からジャンパー線で引き出して、
コネクタCN12-5と接続させるため、次のように半田付けしました。


上記は半田面です。
下記がレーザー測距センサー「VL53L1X」と9軸センサー「BNO055」とと別途のSW3(黄色)を付けた拡張ボードと、 その回路図 兼 配置図です。

両面スルーホール2.54mm×2mmピッチ基板に
CN11とCN12の2mmピッチソケットを付けています。
このCN11とCN12の繋がりの関係を以下に表で示します。(この部分的な回路図
CN12ESP32-WROOM-32D端子名PIC32MX端子No:名-CN11ESP32-WROOM-32D端子名PIC32MX端子No:名
CN12-12: 3V313: VDD CN11-1011: IO26
CN12-235:TXD0 出力12: RX (RA4) 入力 CN11-910: IO25
CN12-334:RXD0 入力11: TX (RB4) 出力 CN11-837: IO23
CN12-46: IO34 CN11-736: IO22(SCL)(RTS)
CN12-5ジャンパー配線でSW3へ   CN11-6JMP10-OPEN-U19-23: IO1518: RTS (RB9) 出力
CN12-67: IO35 CN11-533:IO21 (SDA)
CN12-78: IO32 CN11-4 5: SENSOR_VN
CN12-89: IO33 CN11-3 4: SENSER_VP
CN12-912: IO27 CN11-2JUM11-OPEN-16: IO1317: CTS (RB8) 入力
CN12-10GND19: Vss CN11-131: IO19(CTS)
このCN11とCN12のI2C端子(SCLとSDA)で、
「VL53L1X使用 レーザー測距センサーモジュール(ToF)モジュール」と、
「BNO055使用 9軸センサーフュージョンモジュール」をESP32と繋げています。
下記がUMEHOSHI ITAに、上記拡張ボードを取り付けたイメージです。(センサー情報の基準も示しています。)

また、ESP32のIO0端子とSW3(黄)を繋げて、
起動時にSW3(黄)を押すことで、ESP32にファームウェアを書き込むダウンロードモードにすることを可能にしています。

MicroPythonファームウェアの書き込み
MicroPython公式サイトのESP32専用ダウンロードページから、
Releases版(ESP32_GENERIC-20260406-v1.28.0.bin)を取得してesptoolツールでインストールしました。
esptoolツールを使ったMicroPythonファームウェア書き込みの方法は、 このリンクページを参照してください。
(pipでesptoolやmpremoteをインストールして使っています。)

以下は、 ESP32の36PinのIO22(SCL)と、33PinのIO21(SDA)を使って、
「I2C」インターフェイスが正しく動作しているかを確認するMicro Pythonのプログラム(scanI2C.py)を示します。
from machine import Pin, I2C

i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
print("--- I2C Bus Scan Start ---")
# I2Cバス上のデバイスをスキャン
devices = i2c.scan()

if len(devices) == 0:
    print("No I2C devices were found.")
else:
    for device in devices:
        print(f"device address: {hex(device)}")
    print("That is all.")
上記をmpremoteを使って実行する例を下記に示します。
PCとUMEHOSHI ITAをUSBケーブルで接続し、 SW1(赤)リセットと、 SW2(白)を押して、
SW1(赤)だけ離した後に3秒待ってLEDが消えた後に、残りスイッチSW2(白)を離します。
これで、UMEHOSHI ITA をスルーモード(USB CDCのブリッジモード)になり、次のように動作できます。
R:\drone>mpremote connect COM3 run scanI2C.py
--- I2C Bus Scan Start ---
device address: 0x28
device address: 0x29
That is all.

R:\drone>
0x28番地のアドレスを持つデバイスが、VL53L1X使用の距離センサーで、
0x28番地のアドレスを持つデバイスが、BNO055使用の9軸センサーです。


MicroPythonで、距離センサーと9軸センサーを使う。

ここで使うVL53L1X使用の距離センサーのドライバライブラリは、 このリンク先で示すvl53l1x_uld.pyを利用しています。
BNO055使用の距離センサーのドライバライブラリは、 このリンク先で示すBNO055_uld.pyを利用しています。


PCとUMEHOSHI ITAをUSBケーブルで接続し、 SW1(赤)リセットと、 SW2(白)を押して、 SW1(赤)だけ離した後に3秒待ってLEDが消えた後に、SW2(白)スイッチを離します。
(この操作で、そしてUMEHOSHI ITAはスルーモード(UART CDCブリッジ)になります。 SW3(黄)の基板は付けなくても動作します。)

ここでPC側で「Tera Term」を起動すると、会話モードのMicroPython実行ができます。
以下では、リセットを実行させている例です。