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の繋がりの関係を以下に表で示します。(この部分的な回路図)
| CN12 | ESP32-WROOM-32D端子名 | PIC32MX端子No:名 | - | CN11 | ESP32-WROOM-32D端子名 | PIC32MX端子No:名 |
| CN12-1 | 2: 3V3 | 13: VDD | | CN11-10 | 11: IO26 | |
| CN12-2 | 35:TXD0 出力 | 12: RX (RA4) 入力 | | CN11-9 | 10: IO25 | |
| CN12-3 | 34:RXD0 入力 | 11: TX (RB4) 出力 | | CN11-8 | 37: IO23 | |
| CN12-4 | 6: IO34 | | | CN11-7 | 36: IO22(SCL)(RTS) | |
| CN12-5 | ジャンパー配線でSW3へ | | | CN11-6 | JMP10-OPEN-U19-23: IO15 | 18: RTS (RB9) 出力 |
| CN12-6 | 7: IO35 | | | CN11-5 | 33:IO21 (SDA) | |
| CN12-7 | 8: IO32 | | | CN11-4 | 5: SENSOR_VN | |
| CN12-8 | 9: IO33 | | | CN11-3 | 4: SENSER_VP | |
| CN12-9 | 12: IO27 | | | CN11-2 | JUM11-OPEN-16: IO13 | 17: CTS (RB8) 入力 |
| CN12-10 | GND | 19: Vss | | CN11-1 | 31: 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実行ができます。
以下では、リセットを実行させている例です。