芸身輔

高専でいろいろやってみます。

ESP32にTypeC+CH340Kでプログラム書き込み

ESP32の自作ボード記事を見ているとFT232の使用例を見かけますが,ESP32の書き込みに使用するには大きく無駄なピンがあり,量産に使うとなかなかに高価なので代替品としてCH340Kを使用して書き込みをしてみました.

ついでに持ち運ぶケーブルを減らすために,DevKitCではMicroBが使用されているのをTypeCに変更しています.

最低限書き込みに必要なもの

回路図を参照しながら揃えてください.

CH340K
ESP32
TypeC (見た目同じで,使えるピンが違うコネクタが売ってるので注意!)
小信号用トランジスタ (DIPなら2SC1815がほぼ同じ特性らしい)
抵抗5.1kΩ (チップ抵抗の5.1kは秋月では取り扱っていない...)
抵抗10kΩ
スイッチ (モーメンタリSWならなんでもいい)
パスコン0.1μF
レギュレーター (降圧型3.3v出力)

回路図

回路解説

TypeCのコネクタ規格はややっこくてすべてを説明するのが面倒だし自分自身もすべてを理解していないなので省きながら説明します.
TypeCでVbusから5Vを得るにはCCを5.1kΩの抵抗でプルダウンさせてあげねばなりません.そのためCC1, CC1(オモテウラ)に5.1kΩのプルダウン抵抗を付けます.
この方法で5Vの電圧は取り出せますがESP32のロジックと電源電圧は3.3Vが基準ですのでレギュレータで3.3vに降圧します.
導通チェック用にLEDを嚙ませてますがなくても大丈夫です。

CH340KのVccはVbus(5v)に繋げます。3.3vでも電源は引けるのでそちらが良ければデータシートを参考にしてみてください。どちらにしてもパスコン(電源とGNDの間のコンデンサ)を忘れないように!

TypeCから出てるDN,DP(表記によってはD-,D+)をそのままCH340Kの同じ端子に接続します。
ここではあまり関係がないですがDN,DPのロジック電圧は3.3vですのでESP32C3等の直接書き込めるタイプのマイコンにロジックレベル変換機などを挟まなくていいです。
結局マイコン電源は3.3vだけど。

RTSをLowにするとENがLowになりDTRをLowにするとGPIO0がLowになりますが両方LowにするとENとGPIO0はHighになります。

RTS DTR EN GPIO0
Low Low High High
High High High High
Low High High Low
High Low Low High

これで書き込みの[Connecting...]の時にBootに接続したスイッチを押下することで書き込みが始まります。RSTボタンはプログラムの再起動です。

これで最低限書き込みに必要な回路が完成しました。ArduinoIDEから書き込むときは秋月等で売ってるDevKitCと同様に[ESP32 Dev Module]を選択します。

あとはお好きなようにピンを引き出してください。

おわり.

参考リンク