2021年3月14日日曜日

CF-NX4をSSD化してみた

 友人がコスパが良いノパソを欲しがっていたので中古のLet's noteをSSD化してみた。CF-NX4のi5モデル、メモリ8GB、SSD250GBにすればそこそこ使えそうだし。

SSDは変なもたつきがあると嫌なのでDRAMキャシュ付きでそこそこ安いやつを探していたらサムスンの860 Evoがやすかったのでこれの250GBにしてみた。

本当は500GBにしたかったところだったんだけど予算の関係で…

中古のCF-NX4の方はHDDにOSがクリーンインストールされている状態だったので今回はSSDにOSをクリーンインストールする形にした。
このPC、HDDはバッテリーを外したところにネジが一本あってこの蓋をスライドすると出てくる模様。
スライドしたカバーを取るのに少し苦労したけど、カバーを取ると白いテープ的なのがあるのでこれを引っ張り出す。
このテープを引っ張るとHDDが抜けてくる。

あとはSSDにこのテープを張り替えて逆の手順で突っ込むだけ。
突っ込むときはスポンジが邪魔をするのでポイントカードのようなある程度硬いものでスポンジを抑えながら突っ込むと楽だった。

あとは起動してF2連打でBIOSに入ってUEFIを有効にしてWindows 10をクリーンインストールして完成!
ドライバはWindows Updateからほぼ入ったので公式サイトからWindows 8.1用の純正アプリケーションをそこそこ入れて完成。Windows 10でも動いた。

3万円でこのクラスのPCならまあまあコスパ高いんじゃないかなぁ。軽いし。
ちなみにこの個体は4GBのメモリが増設されていたのでもともと8GBでお買い得だった。


2021年3月13日土曜日

XiaomiのBluetooth温湿度計2を買ってみた

 AliexpressでたまたまXiaomi Mijiaの温湿度計2が安かったので買ってみた。BLEに対応しているやつ。品番でいうとLYWSD03MMCで、小さくて安いやつ。送料込み400円ぐらいだった。

レビューに紹介画像より小さいっていうのが書いてあったのでサイズは確認していたんだけど、パッケージからして小さい。
裏面には仕様も書いてある。電池はCR2032っぽい。

付属品は説明書と両面テープ。両面テープでどっかに貼り付けられるぐらいかるい。

電池は裏蓋のにドライバーを突っ込むところがあるのでここにマイナスドライバーをつっこんでパカッと開く感じ。
電池入りだったので透明のシートを抜いたら起動した。

Bluetoothで接続する場合はMi Homeアプリを入れてBluetoothをオンにしておくと勝手に認識するので初期設定を済ませる。
アプリでは1秒ぐらいごとに最新の温湿度が見られる。そんでもってログ機能は1時間に1回ログしてるっぽい?

Pythonでデータを読めるようにしていたり、カスタムファームウェアもあるようなので改造ベースにも面白そう。







2021年3月6日土曜日

UPnPでESP32から自動でルータのポート開放してみた。

 インターネットに繋いだESP32からクラウドにデータを上げたりする分にはルータのポートを開けなくてもデータをサーバに蓄積することができるんだけど、ESP32-CAMのようにESP32自体をサーバにして運用するときはどうしてもルータのポートを開けないとインターネット越しにアクセスできない。

ESP32側から簡単にポートを開けられるようにUPnPでルータのポートを開けてみた。これならいちいちルータの設定画面を開かなくてもいいし、手軽に設置できるはず。

使用させてもらったライブラリはUPnP_Generic Library

これはArduino上のいろんなデバイスに対応しているUPnPライブラリで、ESP32とかESP8266用に開発されたTinyUPnPを改良して対応ボードを増やした形らしい。最近のルーターはだいたい対応していると思うけどポートを開けたい対象のルーターはUPnP対応ルータが必要。あと2重ルータになってたりするとうまくいかないかも。

SimpleServerESP32のサンプルスケッチを動かしてみたがポートがうまく開かない…

他のライブラリを使ってみたりとかはしてみたんだけども、どうにもルータのUPnPには到達できてるのにうまくポートが開かない。ルータ側で見ていると一瞬開いてるようにも見えるんだけどすぐ消えてしまう状態…

フォーラムを読んでいると同じようにハマっている人がいるようで、最終的にはLEASE_DURATIONを0にすることでうまく動かすことができた。サンプルスケッチのデフォルトでは36000(秒)に設定されていた。ルータとの相性もあるのかもしれないけど、DD-WRT環境化ではこれを0にすることでうまくポートが開けられるようになった。LEASE_DURATIONは有効期限なので、0にすると有効期限無しの設定になってしまうが、ESP32側から不要になったら消すようにすればいいかもしれない。

ルータ側で設定を削除した場合は、一旦UPnPを無効にして有効にし直すか再起動しないともう一回追加できなかった。これはDD-WRTの仕様かも。

あとはDDNSとかでIPアドレス変わったのに対応できればサーバとして一通りの機能が搭載できるんじゃないかな…

DDNS自体は定期的にURL読み込めば良さそうだし。

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の中身を見ればブートローダーのバージョンとかが見れる。ブートローダは32.768kHzの外付けクリスタルを付けなくても動いた。

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


2021年1月23日土曜日

BluepillをBlack Magic Probeにしてみた

 nRF52840にどうやってファームウェアを焼くか探していたら、Black Magic ProbeというオープンソースのSWDデバッガがあるらしいということがわかった。
STLink V2の互換品やSTM32F103搭載のマイコンボードの通称Bluepillにファームウェアを焼くだけで使えるらしい。
Black Magic Probeのファームが焼かれている製品も売っていてSegger J-linkより安いのでこうやってArduinoのブートローダーを焼くだけの目的にはいいかも?

というわけで早速手持ちのBluepillをBlack Magic Probe化してみることに。

ファームウェアはgithubからStable release v1.7.1をダウンロードしてきて使用することに。

このファームウェアを解答すると複数のbinファイルが入っているけど、今回はBluepillを使用するのでswlinkを使用することに。swlink用ファームはBluepillに最初からはんだ付けされているSWDポートをそのまま利用できるので、Bluepillにピンヘッダをハンダしなくてもこのファームを書くだけでそのままBlack Magic Probeとして使える。

というわけでまずはBluepillにblackmagic_dfu-swlink.binを書き込む。書き込み手順は過去にBluepillにArduino用のブートローダーを書き込んだときと同じなのでそちらを参照。
ピンヘッダを実装していないBluepillにICクリップでUSB TTL変換基板をつないで書き込んだ。

DFUファームウェアを書き込んだBluepillのジャンパピンをどちらも0に戻してUSBでPCBに接続するとDFUモードで認識されるので今度はZadigを使用してドライバをインストールする。

ちなみにBluepillの緑色LEDが点滅しているときがDFUモード。

Zadigを起動したらOptionsを開いてList All Devicesを選択。
するとリストにBlack Magic (Upgrade), SWLINKがでるのでそれを選択して、ドライバの種類はlibusbKを選択してReplace Driverボタンを押す。
するとドライバがインストールされてDFUモードでファームウェアを書き込めるようになる。

次にDFUモードでBlack Magic Probeのファームウェアを書き込むためにdfu-utilをダウンロードしてくる。今回はdfu-util-0.9-win64を使用した。
コマンドが面倒なのでblackmagic-swlink.binをdfu-util.exeと同じディレクトリに突っ込んでコマンドプロンプトでdfu-util.exeのディレクトリに移動。

dfu-util -d 1d50:6018,:6017 -s 0x08002000:leave -D blackmagic-swlink.bin

を実行するとBlack Magic Probeのファームウェアが書き込まれる。

書き込まれたあとはBluepillのLEDが薄く点灯するはず。これでBlack Magic Probeの準備は完了。USBで接続するとCDC COMポートが2ポート認識し、BluepillのSWDピンヘッダ(GND、CLK、DIO、3.3V)をSWDデバッガとして使用することが可能になった。
GNU Arm Embedded Toolchainから使用できる。