押しやすいスイッチでUSB電源を遮断するUSB Switch Adapterを作った

USB Switch Adapterを使っているところ

tl;dr

  • 電子工作でよく使うマイコンボードにはUSBがついていて、よくそこから電源をとって、ブレッドボードの電源としてよく使うよ
  • マイコンボードにリセットボタンはあるけれど、周辺回路を含めてリセットしたいとき、USBを抜き差しして、リセットを行うよ
  • このUSB電源断によるリセットを、メカニカルスイッチで軽い力で行えるUSB Switch Adapterを作ったよ
  • マイコンCH32V003搭載で、ボタン長押しで電源断を継続する機能を付けたよ

USBポート付きマイコンボードを使った開発のリセットに、USB抜き差しが面倒くさい

電子工作では、Raspberry Pi PicoなどのUSBポートの付いたマイコン開発ボードをよく使います。 私自身の設計するマイコン開発ボードにも、USB機能のないマイコンに対しても、必ずUSBポートを付けていて、電源として利用します。

トラックパッドバイスの実験風景

ブレッドボードで繋げたデバイスに対してもリセットしたいことがよくあります。 この場合、USBを抜き差しして行います。 しかし、USBを逐一抜き差しするのは面倒くさいです。

USB Switch Adapterを作った

以前USB電源を定期的にリセットするアダプタUSB Rebooterを、CH217をパワースイッチとして、CH32V003でタイミング制御を行うマイコンとして使って、作成しました。

74th.hateblo.jp

74th.booth.pm

こちらを購入いただいた方に、スイッチで手動でスイッチオフができないか相談が来ました。 確かにそのような使い方も良いと思い、スイッチ基板をCH217に手配線して、可能にできると話していました。

これをちゃんとまとまった作品化できないかと思い、今回USB Switch Adapterを作りました。

USB Switch Adapter

USB Rebooterと同様に、スイッチ機能のあるUSB電源保護ICであるCH217のスイッチピンを操作して、電源の遮断を実現しています。

CH217については過去に記事にしています。

74th.hateblo.jp

回路つなぎ替え時に便利な長押しで電源を切れる機能をつけた

ブレッドボードで実験中、回路をつなぎ替える時には、電源を遮断しておくのが常識です。 この長い時間の電源遮断も、このアダプタでできると良いと思いました。

ボタンとCH217のスイッチピンの操作を、マイコンCH32V003を介して行うことにしました。CH32V003は、本ブログでも何度も登場している、秋月でも40円で買える安価なマイコンです。安価なため簡易な要素にもじゃんじゃん組み込めます。

akizukidenshi.com

通常はボタンを押して通電している間電源を遮断するようになっていますが、ボタンを一定以上長押しした場合、遮断の状態を続けるようにしました。この動きはTwitter上に動画で上げています。

過電流を表示する機能

CH217には過電流が発生すると遮断するポリフューズとして使える機能が含まれています。 CH217は、過電流時による遮断が発生しているとき、FLAG#ピンがLowになります。 これを読んで、LEDを点滅して人間に伝える機能を追加しました。

今のところ、このアダプタを使って、電子工作を行っていて、これが点滅する事態になったことはありません。

USB-Cプラグ

部品に、USB-Cプラグを使っています。 以前USB Rebooterを作ったときには、秋月で売られている 00402-UCAM002-X を使いました。

akizukidenshi.com

これはピンの上に屋根が付いており、はんだごてでは非常に実装が難しい部品となっていました。

今回LCSCで購入した SHOU HAN TYPE-C 24P-GTJB 040 を使いました。 こちらは 00402-UCAM002-X と比べると実装しやすいですが、簡単とは言いがたいとは思います。

www.lcsc.com

実際便利かどうか

実際に、私の電子工作では非常に便利に使っているツールとなります。

直近で使ったのは、販売用モジュールの製作時の、テスト工程です。 StickPointVという自作キーボード用モジュールを作っているのですが、RP2040を積んだテスト基板のGroveポートに接続し、RP2040に書き込まれたQMK Firmware上で動作するかどうかを確認しています。 この接続後にRP2040をリセットする必要があるのですが、このリセットにUSB Switch Adapterを使いました。

Boothにて販売中

USB-Cプラグの実装の難易度が高いため、本ツールはキットではなく完成品ツールとしてBoothで販売することにしました。 以下で販売しています。

74th.booth.pm

販売開始1週間で7つ販売し、わりと好評です!

OSHWとして、回路図、KiCadファイル等は公開中

こちらは、74thのOpen Source Hardwareプロジェクトの1つとしています。 以下のリポジトリで回路図やKiCadファイル、CH32V003のファームウェアを公開しております。

github.com

ご自身で基板を発注して利用も可能です。 日本国内での販売はご遠慮いただけると助かります。

ESP32の自動ダウンロードブート制御をマイコンで行うESP32 Writer Pro CH9102Fを作った

tl;dr

  • ESP32はBOOTピンとENピンを制御して、ダウンロードブートモードで起動し、UART経由で書き込みを行うよ
  • この制御に、USBシリアル変換のDTRとRTSMOSFETを使って行う方法が公式から出ているよ。しかし、タイミングを制御するためにキャパシタを追加したりするけど、作りによってはうまくいかないようだよ
  • タイミングの問題でしかないので、タイミング制御をCH32V003マイコンで行えば良いと思い、ESP32 Writer Pro CH9102を作ったよ

ESP32の書き込み機

ESP32はUART経由でファームウェアの書き換えをサポートしており、USBシリアル変換があれば可能なため、非常に手軽に使えます。 ただし、これが可能になるダウンロードブートモードにするために、BOOTピン(ESP32/ESP32-S3であればGPIO0、ESP32-C3であればGPIO9)をLにしたまま、ENピンをH→L→Hにしてリセットを制御する必要があります。

ESP32-C3-WROOM-02のデータシートより

ESP32-C3-WROOM-02 Datasheet

https://www.espressif.com/sites/default/files/documentation/esp32-c3-wroom-02_datasheet_en.pdf

この制御をMOSFETを使ってUARTのDTR、RTSから自動で行う回路を、Espressif公式が紹介しています。Espressif公式の開発ボードや、公式の書き込みツールESP-Progにも搭載されています。

ESP-Progの紹介ページより

docs.espressif.com

私自身もESP32 Writerというアイテムにこの回路を組み込み、利用していました。

しかし、この回路を期待通り動作させるために、ENピンにキャパシタを追加する必要があります。キャパシタで信号を遅らせることで実現すると言うことです。公式が提案するキャパシタの容量も0.1uF→1uFにいつの間にか変更されていたり、うまくいかないことがあるのが知られていたように思います。

この辺りは「タイミング制御の問題」でしかないと思っており、なんとかならないかと思っていました。

CH32V003マイコンで余裕を持って制御する

タイミングの制御であればマイコンで余裕を持った制御をやれば良いと思いました。 そこで格安マイコンであるCH32V003J4M6を組み込むことにしました。

マイコンプログラムとしては以下のことしかやっていません。以下の処理だけで実現できました。 なお、各制御は100msの余裕を持って行わせています。

  • DTRのH→Lを検出し、EN、BOOTを使ってダウンロードブートモードに入れる(書き込み開始時に行われる)
  • RTSのH→Lを検出し、ENを使ってリセットする(書き込み後のリセットに使われる)
  • SWが操作を検出し、EN、BOOTを使ってブートモードに入れる

このファームウェアのプログラムは以下で公開しています。

github.com

さらに今までUSBシリアル変換ICにCH340Cを使っていたのですが、より高速なCH9102Fに置き換えました。 実際に使ってみると、特に不便なく使えています。

他の機能

私自身の作るESP32を使った開発ボード、製品には、必ずESP-Progに搭載のものと同仕様の1.27mmピッチ2x3ボックスピンヘッダを用意しています。

ESP-Prog搭載の書き込みポート仕様

これでリボンケーブルで簡単に接続して書き込みができるようになりました。

現在BOOTHにて販売中

こちらをBOOTHにて現在販売中です。キットではなく、完成品として販売しています。 製品名は『ESP32 Write Pro CH9102』です。

74th.booth.pm

名称の"Pro"は以前作成していたバージョンより良くなったため付けました。 本製品はアマチュアによる作品であり、プロユースを意味しません。 良ければ手に取ってみてください。

こちらの商品の回路図は以下となります。

KiCad設計ファイル等は公開しています。

github.com

製作の感想

LED、ボタンの制御を含めるとSOP8のピン数でギリギリになりました。 LEDピンとSWDIOピンを同一にし、ボタンを押しながら電源が入った場合のみ、SWDIOが有効になる(LEDとしてピンを使わない)ようにしてピンの数をカバーしました。

天下一キーボードわいわい会Vol.7に参加しました

天下一キーボードわいわい会とは

自作キーボードの作品を、見たり見せたりするイベントです。 見るだけでも良く、参加の敷居が低いイベントです。 数多くの自慢の作品が並べられ、自作キーボード製作の熱が感じられる面白いイベントとなっています。

tenkey.connpass.com

私としては、自作キーボードは「創作・デザイン」と「実用」と「技術」のバランスの良いムーブメントと感じていて、自作キーボードの世界に入って5年経ちましたがまだ新しい面白さを見つけられています。

今回のコロナ後に開催されたVol4からの4回目の参加となりました。 キーボード熱を感じられる非常に充実したイベントに思っております。

私が展示したもの

今回は、新しいキーボードはありませんが、以下の2つを展示しました。

黒いSparrowDial

M5Dialを黒色に塗装し、キーキャップと合わせてシックな配色にしたSparrowDialを展示しました。 今回初めて触る方もいるだろうと、操作感を体験できるタブレットと一緒に展示しました。

こちらのキットは、BOOTHにて販売中です。

74th.booth.pm

Shadow SwitchなSparrow62v2 + MagicTrackpad

SparrowDialを通じてトラックパッドを研究はしているのですが、MagicTrackpadの操作感の良さは別世界のレベルです。 なのでSparrow62ではMagicTrackpadといかに組み合わせられるかも研究対象になっていました。

今回は、薄型の Lofree x Kailh Ghost Switch と組み合わせたバージョンを展示しました。 底面にクッション素材を敷いており、薄型ながら自分としては満足感の高い打鍵感になっていたと思っています。

気になった自作キーボード

ここからは私の気になった作品を紹介していきます。 全ての作品を紹介しているわけではなく、私が特に気になった作品のみを紹介します。 他の作品も素敵なものはたくさんありましたが、あくまで私が気になったものであるという点であるところを留意ください。

これらは私ではなく、他の方の作品の紹介です。 気になるようでしたら削除したり、変更したり、お受けします。

写真の品質については、あまり追求していないスマホの撮影であり、高くありません。 ご了承ください。

-

とてもコンパクトな格子配列。すごくかわいらしく思いました!

-

ボール含めてロープロファイルで小ぶりなKeyBall、コンパクトで素敵に思いました。 このシックな配色のタイプのロープロファイルキーキャップも気になりました。

-

この中央の親指をちょっと伸ばした位置にトラックポールあるのが、キーを邪魔しない感じと、ロープロファイルが相まって素敵に思いました。 キー入力と、ポインター操作を邪魔しない感じが。

-

パープルアクリルで、3Dプリント部品も組み合わせて、丸みを帯びたケースを実現されたものです。 3Dプリンタとの組み合わせも違和感なく、優しい形になってて素敵に思いました。

-

アクリルケースで、つながってるけどテントした形、前後も左右も傾斜が付いていてよさそうでした。 ポップなカラーで完成されていて素敵に思いました。

-

かわいいキーキャップに木材ケースアームレストがマッチしていて、かわいく惹かれました。

-

アームレストにタッチセンサーが仕込まれていて、レイヤーキーを変えるように操作を変えれるアイディア面白く思いました。

-

既存のキーボードにタッチセンサーを追加して、レイヤーとして働かせるアイディアの話を聞かせていただきました。 日本語配列なのに、タッチセンサで場所によってEnterがBackspaceになったり面白いです。

-

中のTHの素子を魅せる格子配列、Pointに記載の通り無骨な雰囲気が素敵でした。 素子が見えることに驚くのですが、ケース、キーキャップもその組み合わされていて、SFの世界から出てきたようなキーボードに感じました。

-

動画があるのでツイート埋め込み。トラックパッドの質感の完成度もさることながら、キーボードとあわせて、上質なデバイスとして世界がまとまっているのが本当に素敵でした。

-

激しくテントされたトラックボール。腕を曲げなくて使える概念良さそうに思いました。

-

トラックポイントモジュールを組み込んだもの。操作可能な形で展示されており、気になっていた操作感を試させていただいたところ、予想以上に高精度に操作できて良いものでした!

-

薄いX-Switchを使われているもの。押した感じも、堅い感じを好むならすごくよさそうでした。そして横から見てみると本当に薄いのが分かります。

-

トラックボールを2つもった一体型。私自身トラックボールは大きくないと使いづらいと思っている人なのですが、スクロール操作に小さいトラックボールを使ったとしてもスクロール操作自体は細かい操作にはならないのでよさそうに思いました。

-

曲げ加工で作られた無骨なケース。レトロフューチャーな世界観を出していて、本当に格好いいものでした。

-

重厚感のある分割キーボード。よく触ってみると、手前、横のバーの部分も押せたり、小ぶりなスティクデバイスも付いていて、面白く感じました。

-

赤外線通信で左右分割を行う挑戦的な展示でした。

-

狭キースイッチを 自作されたもの。ステムを既存のもの借用しているのは賢くよさそうに思いました。そして、本当に小さい。

-

金属キーキャップ、冷ややかで硬質な感じが新しい質感でした。セラミックとはまた違う感じで。

-

USBをカスケード接続するキーボード。USBケーブルはありふれているので、接続に使うのは良さそうでした。 中の通信はどうなっているのか気になっているとツイートしたところ、制作者から中身はI2C流していますと教えていただきました。 わかって使う分にはUSBケーブルでUSB以外の通信を流すのは良いですね。

-

親指にキーが多い3Dキーボード。手を置いてみると、手がキーボードに包まれてる感じになりました。完全に自分の手の形に作ったら吸い付くように操作できるに違いないと夢見てしまいます。

-

小ぶりな3Dキーボード。手前の凸型、かつ親指も向き調整されていて、とてもしっくりきそうで、素敵に思いました。

他の方のレポート

他にも多くの作品があり、Daihukuさんの上げられている写真集や動画が、多くの魅力が詰まった作品を収めておられます。

こちら方も動画を撮られています。サムネイルにSparrowDialを採用いただいていました。

河村亮介さんの記事中でもSparrowDialを紹介いただきました。

green-keys.info

他にも記事いくつか記事が上がっています。他の方の気になるポイントを知ると世界が広がります。

ima.hatenablog.jp

次回も楽しみ

作品の展示以外にも、スポンサーブースや抽選会、トークセッションなどのイベントも楽しめました。イベント運営を本当にありがとうございます。

次回のイベントをまた楽しみにしています。