ESP32をArduino IDEから書き込むためには、USBシリアル変換ICが必要になります。今回USBシリアル変換ICにCH340Kを使った回路を作ってみたいと思います。
NodeMCU方式
書き込み回路
こちらはESP32-DevKitCの書き込み用の回路です。CP2102のUSBシリアル変換ICと、DTR,RTSの信号線を利用した書き込みモードに入るための信号を生成する、トランジスタで構成されたNodeMCU方式の回路となっています。
CP2102は、信頼性が高く高速に通信もできるのですが、パッケージが小さく、部品点数も多いため、もっとチープで簡単な部品がないか調べてみました。
CH340K
安価なArduinoの互換品のUSBシリアル変換によく使われている、CH340シリーズの中に、ESP32で書き込みに使用するDTRとRTS信号が出ているCH340Kという部品を見つけました。
10ピンのESSOPパッケージと聞いたことない1mmピッチのパッケージです。早速購入してみました。
左がよく使われているCH340Cで、右が今回購入したCH340Kです。16ピンSOPの半分くらいのサイズになっていて、小型です。
CH340Kの書き込み回路
とてもシンプルです。SUBシリアル変換にCH340Kを使い、書き込み信号生成の回路はトランジスタではなく低電圧でON-OFFできるMOS-FET、BSS138を使ってみます。MOS-FETにすることで、トランジスタのベースに入っている抵抗を不要になるので、小型化のため試してみることにしました。
これであれば、CH340KとBSS138だけで書き込み回路が実現できます。
はんだ付け
両面ユニバーサル基板に、USBコネクタの基板と、CH340K、BSS138を実装していきます。
程なくして回路が完成しました。
組み込み
ESP32-DevKitCの書き込み回路を、今回作った回路に置き換えます。そのためには、元々ついているCP2102を取り外さないといけません。
そこで、ホットエアーを使ってCP2102にだけ局所的に加熱し、ピンセットで取り外しました。
ホットエアーは、多ピンデバイスを簡単に取り外すことができるので、よく修理されることがある方にはおすすめの工具です。
ESP32-DevKitCの書き込み回路を、CH340Kの回路で置き換えることができました。
問題発生
認識しない
通常、USBを接続するとすぐに認識され、リストに表示されるはずです。macの場合、ターミナルで
を実行すると、認識されているUSBシリアルポートが表示されます。しかし、CH340Kが表示されません。試しに別のESP32-DevKitCを接続すると、
と正常に認識されています。CH340Kだけが認識できません。
ドライバーのインストール
公式のサイトから、ドライバーをダウンロードしてセットアップしてみます。
セットアップが完了し再起動してみました。しかし、症状は同じで全く認識されません。
システム情報のUSBを見てみると接続はされてはいるようです。
Windowsではどうか
Windowsではドライバーを入れなくても、正常に認識しました。Arduino IDEで書き込みを試してみたところ、接続のところでタイムアウトのエラーが発生してしまいます。
テラタームでデータの送受信をしてみたのですが、全くデータが送受されませんでした。認識はされているのですが、正常に動作していないようです。
mac同様、公式サイトからドライバーのインストーラをダウンロードし、セットアップしてみました。しかし、効果はありませんでした。
CH340Kはダメかも
残念ですが、CH340Kはmacでもwindowsでも正常に動作させることができませんでした。仕方がないのでCH340Cで書き込み回路を作ろうかなと思っています。
コメント
CH340Gで試して同じく書き込めない症状で悩んでいました。ESP32のENとGNDの間に3.3uFのコンデンサを入れたところ問題なく書き込めるようになりました。参考になれば幸いです。
教えて頂きありがとうございます。
CH340Gですと1uFでも書き込めました。0.1uFでは書き込めないことが多い印象です。
CH340Kでは試していないので、今度試してみたいと思います。
コメントありがとうございました。
今日になって、成功されたほうのブログも読ませていただきました。
どうやらMOSFETだからというわけでもなさそうですね。
この会社のICは熱に弱いという記事を目にしたことがあります。熱で壊れてしまった可能性もあるかもしれませんね。
これからも記事楽しみにしております。
お返事ありがとうございます。
これからも楽しい記事を書いていきますので、楽しんで頂ければと思います。
どうぞよろしくお願いします。
MOSFETではなく、バイポーラのトランジスタを使えば動くのかもしれません。
ソース電圧が上がりますから、G-S間の電圧に余裕がなくなります。
と言ってみるだけ言ってみます。すみません適当で。
コメントありがとうございます。
ICが壊れていたからなのか、ICから正常に信号が出ていなかったみたいです。
新しいICを買ってはみたのですが、試せていません。
正常に動作した方もいらっしゃるので、組み立て時にICを壊してしまった可能性が高いです。
ブログを読んで頂きありがとうございました。
はじめまして。こちらの記事と同じことを試してみたら、特に問題なく書き込みができました。失敗されていた原因がわからなかったのですが、情報共有させていただきます。
https://note.com/akita11/n/n353c79309ccb
秋田さんコメントありがとうございます。
正常に動作したんですか。それはいい情報ありがとうございます。
私のICが不良だったのかも知れません。
またはドライバーがよくなかったのか...
秋月電子でもICが販売されるようになったので、いつか買って試してみたいと思います。
いい情報ありがとうございました。