2021年2月28日日曜日

USB PD対応充電器から12Vを取るケーブルを作ってみた

 AliexpressでUSB PDの充電器から任意の電圧が取れるアダプタが売っていたので買ってみた。USB PD Decoyとかいうやつ。

メスタイプのものは安くたくさん出てるんだけど、メスタイプだとUSB PDケーブルが必要なので充電器に直接させるようにオスタイプのものを購入してみた。
電源を取り出すためのパッドは裏側に用意されている。

抵抗を取り外したりジャンパーしたりするだけで5V,9V,12V,20Vが取り出せる模様。
まぁ充電器側もほしい電圧に対応してる必要があるけど…

デフォルトで20Vだったので抵抗を一個取り外して12Vにしてみた。
1005の抵抗だったので斜めカットC2.0の小手先でサクッと取れた。

あとは余っていた5.5/2.1なDCジャック付きのケーブルをハンダして完成。これでUSB PDの充電器から12Vが取れる!
この前作った3.5インチHDDをつなぐアダプタとかもこれで使えるから便利だな。USB PD充電器は65Wのものをもっているので12Vだと3A取り出せるので便利だなぁ。



2021年2月17日水曜日

USB Type Cなメス端子基板を購入してみた

 Aliexpressを見ていたらUSB2.0デバイスをUSB Type C端子化できそうなメス端子が乗った基板が出ていたのでつい購入してしまった。
まぁ最近そこそこ見かけるUSB 2.0に必要な端子だけが結線されたType C端子が乗った小基板である。

JRC-B008
基板にはJRC-B008って言う刻印があって反対側には5VとD- D+ GNDのパッドがある。
R1って書かれた1005用のパッドがあるけどCC1とCC2が繋がれていてもう一方はGNDになっている。
今回はデバイス側にこの端子を使用するのを想定しているのでCC1とCC2はどっちも5.1kΩでプルダウンするのがUSB Type Cの規格的に良いんだけれども、CC1とCC2がまとめられているのはホスト側によってはラズパイ4の初期型で問題になったようにオーディオモードと誤認識してしまう場合がありそう…

USB Type A→USB Type Cのケーブルを使って使用する場合は特に問題が出ないけど、USB Type C同士のケーブルを使用する際はこのままだとうまく動かない場合もありそうなので改造することにした。
改造内容としてはCC1とCC2を切り離して、どっちも5.1kΩの抵抗でプルダウンすれば良いことになる。この基盤の場合はJRC-B008っていうシルクがある面(プルダウン抵抗をつけられる面)のCC1がR1につながっているところのパターンをカットすれば簡単に対応できそうということでそれで対応することにした。抵抗は1608のほうがGNDパターンにわたすにはいい感じ。

片方1608でもう片方を既存の1005のパッドにハンダすると抵抗が二種類必要なので無理やり1608を2つ実装してみた。
とりあえずこれでUSB Type Cのケーブルでつないでもデバイス側として認識するはず…

ひと手間改造が必要だけど1個30円っていう価格ならいい感じな気がする。

2021年2月6日土曜日

nRF52840にブートローダーを書き込んでみた

 というわけで先月購入したnRF52840モジュールにこの前作ったBlack Magic ProbeでArduinoで使用するためのブートローダーを書き込んでみた。

今回はnRF52をArduinoで使用するためのAdafruit_nRF52_Bootloaderをした。このブートローダを書き込むとnRF52をUSBに接続するとUSB CDCのCOMポートとマスストレージデバイス(UF2)として認識されるので色々便利。

まずはnRF52840モジュールに直接ケーブルをはんだ付けしてUSBに接続できるようにした。

とりあえずUSBにつながればいいので、VBUS、D+、D-、GND、VDDにケーブルをはんだ付け。VBUSはUSBの5Vに直結してるけど、VDDはレギュレータ(ADP151AUJZ-3.3)を介して3.3Vを供給してる。

ちなみにこのままUSBにつないでもUSBデバイスとしてちゃんと認識されない。
ブートローダーを書き込むためにさらにBlack Magic ProbeをSWCとSWDに接続する。とりあえずブートローダ書き込んだらデバッグ端子は使わないだろうということで今回はグラバークリップで接続した。

そんでもってnRF52モジュールに電源を入れつつBlack Magic ProbeをUSBに接続。
GNU Arm Embedded Toolchainをインストールしてコマンドプロンプトでインストールしたディレクトリまで移動してarm-none-eabi-gdb.exeを起動。
Black Magic ProbeはCDCのCOMポートとして2ポート認識してるはずなのでどちらか片方がGDPでもう片方がデバッグ用のUARTのはずなんだけど、この環境では若いCOM番号がGDPでCOM11だった。環境によって変わるはず。
target extended-remote \\.\COM11
でCOM11に接続。\\.\はCOMポート番号が2桁以上に対応するために必要…
monitor swdp_scan
でSWDに接続されたマイコン一覧が出るはず。ここで一覧に出なかったら接続が間違ってるかも?
とりあえずNordic nRF52 M4が出ていたので
attach 1
で接続する。
あとはファームウェアを書き込むだけなので、パス入れるのが面倒なのでarm-none-eabi-gdb.exeと同じディレクトリにAdafruit_nRF52_BootloaderからAdafruit Feather nRF52840 Express用のファームウェアをダウンロードして入れてロードしてみた。
load feather_nrf52840_express_bootloader-0.4.0_s140_6.1.1.hex
のように指定するとファームを書き込める。
あとはquitでyを押して終了してUSBに指し直すとCOMポートとUSBマスストレージデバイスとして認識するはず。USBマスストレージデバイスとして認識したらINFO_UF2.TXTの中身を見ればブートローダーのバージョンとかが見れる。

とりあえずこれでArduinoで開発する準備ができた。
ちなみにVBUSをちゃんと繋がないとUSBデバイスとしてちゃんと認識しないのね…(ちょっとはまった。)
ブートローダ書き込むだけならやっぱりBlack Magic Probe安く作れていいな。