2023年1月22日日曜日

HEVCコーデックを無料でインストールしてみた。

 ゲームマシンを組み立ててOSをクリーンインストールしたらiPhoneで撮影した写真(HEIC形式)やmp4の動画でもコーデックが入っていないので"HEVC ビデオ拡張機能"をインストールしろという画面が。

久しぶりにOSをクリーンインストールしていたが、以前は"デバイス製造元からの HEVC ビデオ拡張機能"と"HEIF 画像拡張機能"をインストールすれば見れていたんだけど"デバイス製造元からの HEVC ビデオ拡張機能"のほうが「コードの使用」と表示されてインストールできなくなっていた。画像を見るだけなら"HEIF 画像拡張機能"だけでも良いと思っちゃうんだけどこれを動かすために"HEVC ビデオ拡張機能"も必要っぽい。

ということで色々調べているとMicrosoft StoreのアプリはオフラインのPCでもインストールできるようになっているようで、オフラインのPCにインストールするやり方でインストールできるらしい。

まずは、オフラインインストール用のファイルをMicrosoft StoreからダウンロードできるURLを生成してくれるサイト"Online link generator for Microsoft Store"を開く。
このサイトではMicrosoft Storeアプリへのリンクを貼り付けると、インストーラーのURLリンクを生成してくれる。

https://www.microsoft.com/ja-jp/store/p/hevc-video-extension/9n4wgh0z6vhq

このサイトに"デバイス製造元からの HEVC ビデオ拡張機能"へのリンクを貼り付けてチェックマークのボタンをクリックする。

そしたらアプリのURLが生成されるので"appx"もしくは"AppxBundle"のリンクを右クリックしてファイルに保存する。このとき、Chromeとかだとセキュリティーの警告が出るけど無視して続行する。(実行ファイルとかの拡張子だと出るっぽい)
ちなみに上記サイトはリンクを生成しているだけで、アプリのダウンロード自体はMicrosoftのサーバから行われるので安心してダウンロードできる。(microsoft.comのサブドメインからダウンロードされた)

あとはダウンロードした"appx"もしくは"AppxBundle"ファイルをダブルクリックして実行。

アプリインストーラーが立ち上がるのでインストールボタンを押せば完了。

あとは"HEIF 画像拡張機能"をストアから普通にインストールすればiPhoneの画像も動画も再生できるようになる。今回はWindows 10を使用したけどWindows 11でも同様に動くと思う。

2023年1月8日日曜日

ゲームマシンのCPUをアップグレードしてみた。

 久しぶりにゲーミングPCをアップグレードしてみた。Ryzen 5700XがAmazonのセールで23,000円になっていたらしいけど一瞬で売り切れたようで…
しかしソフマップでRyzen 5700Xがマザボセットで6000円引きしていたのでポチってみた。
まぁ6000円ぐらい値引きされるのは大きいね。

メモリは一番安いCFDの16GBセットでいいかな?と思って悩んでいたら友人が32GBセットが余っているから譲ってくれるというのでCFDのBallistix Sportを安く譲ってもらった。これはありがたい。

マザボはGigabyteのB550I AORUS PRO AX (rev 1.1)にしてみた。Gigabyteとかあんまり使ったことないんだけどもはやZen3はITXのマザボの選択肢がM.2が2つついてるやつだとこれしかない。あとはBIOSがCPUとメモリなしで更新できるのが良い。(5700Xが動かないBIOSの場合はマザボ単体で更新できるし)
クーラーはDeepcoolのAG300ってやつにしてみた。純正リテンションにそのまま引っ掛けられる92mmファンタイプ。グリスももともと塗ってあった。
純正リテンションが使えるし、バックプレートはもう純正のがついているので。
うまい角度で板バネ自体を両手で押してやれば簡単に装着できる。フックを押そうとすると結構辛いかも。

SSDも今回はMLCタイプのPHM2-512GBを使いまわし。ヒートシンクが剥がれかけていたのでサーマルパッド貼り直した。PCIe4.0のM.2 SSDを買い足そうと思っているので裏側のPCIe3.0スロットに取り付けた。
今どきはマザボにまでバックプレート付いてるのか。

グラボも今のところGeForce GTX 1080なのでまだ性能を体感できてはいないんだけど起動がめちゃ早くなった。

DeepcoolのAG300なんだけどアイドル時はめっちゃ静か。6700Kのときは120mmファンのクーラーでギリギリ搭載していたんだけどこのぐらいのサイズでもTDP65Wだと問題なさそうな気がする。ゲーム中はグラボやケースファンのほうがうるさいし。

これでWindows 11 Readyになった。まだ更新しないけど。


2022年12月30日金曜日

E220-900T22S(JP)でLoRaを試してみた。

 前にTWELITE REDをテレメトリモジュールに使ったりしてみたけど、やはり2.4Ghz帯だと距離的に200~300mを超えると通信速度が落ちてしまって通信できなくなってしまう。ということでLoRaなら920Mhzでより遠くまで届くんではないかということで試してみることに。

E220-900T22SはAliexpressとかで500円とかで超安く売っていたので前から気になっていたんだけど、技適対応のがCLEALINKから出たっぽいのでE220-900T22S(JP)を試してみた。

CLEALINK E220-900T22S(JP)

さすが920Mhz、アンテナが長い。

まずは設定しないといけないんだけど、M0もM1もどうやら内部プルアップされているようで、TXとRXと電源を繋げば自動的にコンフィグモードに入ってる感じ。

ツールなんだけど、Windowsで設定したかったのでEBYTE純正ツールで設定してみることに。このツール、EBYTEの新しいサイトだと1.1なんだけど、1.0じゃないと設定できなかったので古いサイトから持ってくる必要がある。

E220_V1.0
E220_V1.0を起動するとこんな感じ。とりあえずE220-900T22S(JP)とUSBシリアル変換アダプタを接続すればこのツールで設定できる。ちなみに電源電圧は5V入れてもいいけど、信号は3.3Vまでなので注意かも。今回はESP32用の書き換えアダプタを使ってみた。
EBYTE E220_V1.0
とりあえず2台とも同じ設定にしてSet Paramしてみた。そんでもってM0とM1をGNDに落として電源に接続すればUARTの透過モードとして動くはず。とりあえず上記設定はMAVLink用。ためしにTWELITEが置き換えできるかどうか…

結果的にはArduPilotのMAVLinkでは帯域が足りなそうな感じ…
なんとなく通信できてそうだけど通信エラー出まくってしまうのでやっぱりMAVLinkみたいに結構たくさん通信している場合はTWELITEのほうが良いかも。Air Rateも5倍ぐらいあるし…
もしかしたら外部でマイコンとかでバッファしてフローコントロールしたら行けたりするかな?

もともとLoRaってセンサ類から定期的にデータを取るような通信用だしMAVLinkのようなテレメトリだと連続してデータを送るからあんまり向いてないのかな?
しかしそれにしても見通し良ければ普通に1kmぐらい届くみたいだし、9600bpsぐらいの低速で必要なデータだけ送れるようにすればすごく使えるかも。


2022年12月27日火曜日

ESP32-C3-WROOM-02を使ってみた

 秋月でESP32-C3-WROOM-02モジュールが売っていたので買ってみた。ついでにESP-WROOM-02用のブレーク基板もポチってみた。フットプリント同じだろうし…

ESP32-C3-WROOM-02

ESP32-C3-WROOM-02はESP32からBluetooth ClassicがなくなったかわりにUSBがネイティブ対応している感じで、ESP-WROOM-02と同じサイズ。MPUコアもRISC-Vになったりして色々違うけど。ESP-WROOM-02よりお安い。

AE-ESP-WROOM-02

一緒に購入したESP-WROOM-02用のブレークアウト基板、ピン配置だいたい同じだろうと思ってとりあえず購入しておいた。ESP-WROOM-02のピン配置のままブレッドボードにさせるようになっているので少し改造すれば使えそう。ちなみにESP32-C3-WROOM-02とESP-WROOM-02のGPIOのピン配置がぜんぜん違うので、シルクは電源とTX、RX以外当てにならない。ESP-WROOM-02ではGNDだった部分が、ESP32-C3-WROOM-02ではIO0とIO18になっていたのでGNDのパターンをカットしてジャンパすることにした。

AE-ESP-WROOM-02
ちなみに裏側はこんな感じ。裏側からみて左側の2箇所のGNDのパターンをカットして、表面のESP32-C8-WROOM-02をハンダするところの右上の18番と13番のVIAでGNDに繋がってるところ(IO0とIO18)をパターンカットしてからESP32を実装。
ESP32-C3-WROOM-02
そんでもってESP32-C3-WROOM-02を実装したあとにそれぞれIO0とIO18の場所をジャンパー。このブレークアウト基板は通常のブレッドボードでもじゃまにならないので便利。IOピンのシルクがぜんぜん違うので上からシールを作成して貼ったりすると便利かも。
ESP32-C3

ESP32-C3はUSBにネイティブ対応していてブートローダもUSB対応になってるので今までのようなUART用書込機も不要である。USBのピンはIO18がD-でIO19がD+になっている。しかしUSBは5Vなので3.3Vの電源も作る必要がある。
ESP32-C3を起動するためにはENを3.3Vに接続する必要がある。この状態でUSBにつなぐと何も書かれていないのでリセットを繰り返していた。書き込みモードに変更するためにIO8を3.3Vに、IO9をGNDに接続して起動するとUSBで認識されてUSB JTAG/serial debug unitとUSBシリアルデバイスとして自動的にドライバがインストールされた。

あとはArduinoからESP32C3 Dev Moduleで書き込みができるようになった。
USB接続を使ってシリアルモニタしたい場合はUSB CDC on BootをEnableにするのを忘れずに。
一旦Arduinoから書き込みしたらあとはそのまま書き込めるし、うまく書き込めないときはIO9をGNDに落とすだけで書き込めるようになった。

USB CDCだとリセットするたびにシリアルコンソール開き直すのが少し面倒。そしてWifiが切断されるたびにUSB CDCが切断される気が…
とりあえずTXとRXにUSBシリアル変換アダプタを付けてUSB CDC on BootをDisableにしてデバッグしたほうが楽かも。

2022年11月19日土曜日

SX1308昇圧DC-DCコンバータを試してみた。

 ESP32とDCモータの電源を一つのバッテリから取るときは、電圧が足りたとしてもESP32側に昇圧DC-DCコンバータを挟むと良いことがわかったのでもっと低い電圧から対応している昇圧コンバータも試してみた。

今回購入してみたのはSX1308というICを搭載したモジュール。2V-24V入力対応らしい。出力は28Vまで。この小ささで2Aまで対応しているとか。データシート的にも行けそうな気はするけどそこまで電流流したら効率は下がりそう。今回はそんなに電流流さない用途なので効率も良さそうでちょうどいいと思った。MT3608とピンコンパチだしスペックもほぼ一緒じゃないか…
入力と出力のシルクは後ろに入っていた。MT3608搭載モジュールよりも結構小さい。
ちなみに半固定抵抗は反時計周りに回すと電圧が上昇する。大抵の場合は時計回りで電圧が増えていく物が多いので、ここでハマる人多そう。レビューで不良品と書いてある事が多くて不安だったけど、実はみんな時計回りに回しても電圧が上がらないから壊れてると思っていたのかも?
3Vぐらい入れた状態だと結構回さないと電圧がでなかったので、初期状態から10回ぐらい反時計回しにまわしてから電源を接続してテスターで確認しながら調整するといいかも。
とりあえず4.5Vぐらい出るように調整してから、半固定抵抗を外して抵抗値を測定した。小型化のために固定抵抗に置き換えて3.3Vレギュレータも実装してみた。3.3Vレギュレータの両端には1uFつけてる。
1Sリポから常に3.3Vをひねり出すモジュール完成。
前回使ったモジュールと比べると少し小さい。というわけでメカナムラジコンに搭載してテストしてみる。
ラジコン受信機をESP32に置き換えたメカナムラジコンに乗せて走らせてみたところ、ガシガシ走らせてもESP32がリセットして止まることはなかった。ESP32が落ちるまで走らせてみるとバッテリが2.98Vぐらいだった。このバッテリの仕様かも。SX1308モジュールのほうが発熱が少なかったのでESP32を1Sリポで使うときはこの仕様でいいかも。
2Vまで行けるはずなのでNi-MH2本でもこの仕様でいいかもしれない。

2022年11月12日土曜日

ESP32搭載ラジコンのDCモータノイズ対策

 前回ようやくメカナムホイールのラジコンが完成したので仲間内で遊んでいたんだけど、どうしてもESP32が途中でリセットして止まってしまう。電源ラインにDCモータのノイズが乗ってるのかな?バッテリの電圧を測定しても3.9Vある。リポなので3.3Vぐらいまでは使えると思うんだけど…

一応モータのパワーを切り替えられるようにしてテストしてみてたんだけどフルパワーで激しい動きをするとリセットされるので電圧降下しているのか、電源ラインに思いっきりノイズがのっているのか?ESP32はシールドついてるからなのか意外と放射ノイズに強いし、初期のテストではDCモータは付属のリポから電源をっていたけど、ESP32はモバイルバッテリから電源を取っていた。

ということでESP32の電源部分に昇圧回路を入れてみた。モータドライバはこれまで通りリポ直結。これで電圧降下したり大きなノイズが入っても昇圧回路で吸収してくれないかな。
もともとLipoの1セルにESP32用の電源として3.3Vのレギュレータを繋いでる時点でバッテリ電圧が3.3Vを下回るパターンがあるはずだと思っていたのでここらへんはどうしようか悩んでいたんだけど…(3Vぐらいまで使いたい気が)

効率が悪いような気がするけど、とりあえず安定させるために5Vを生成できる昇圧DCコンバータを使用してみることに。これに3.3Vのレギュレータをのっけて、リポから一旦5Vに昇圧して3.3Vを生成する。

8年前ぐらいに180円で購入していたやつで、3~5Vの入力で5V 1A出力のモジュール。一応2.6Vぐらいから動いた。昇圧チップはAL491っていう刻印があるが詳細分からず。
まずはUSB端子とかUSBラインの充電認識用の抵抗とかLEDとかいらないものを取り外した。
そんでもってこの前メイン基板にハンダした3.3Vレギュレータ類を移植。これで4.2Vのリポが2.5Vになっても3.3Vを生成できる。
とりあえずこれをメイン基板に合体させてみた。これで問題ないようだったら基板全体を熱収縮チューブで絶縁してやろうかな。
とりあえずテストなので適当なところにおいてるだけ。

ついでにスケッチもアップデートして、ESP32のADCでバッテリ電圧を測定できるので、PS3のコントローラのLEDをバッテリ残量に応じて光らせるようにしてみた。これでやっぱり走行中はバッテリ電圧下がってることがわかった。消費電力増えてしまうけどWiFiで電圧見れるようにしてみようかな。

早速テストしてみると、激しい動きをしても落ちない!20~30分ぐらいは遊べる感じになった。ちゃんとモータの出力が弱くなって来ても動き続けられるような感じ。これだとESP32が落ちる前にパワーが落ちてきたからバッテリ充電ってな具合。
ESP32が落ちるぐらいまで遊んでから蓋を開けたらDCコンバータはESP32より温かいぐらいだった。そんでもってバッテリ電圧を測定すると1.1V。最低電圧下回ってるじゃん!とおもって電源を切って測ってみると3.05V。ちょうどいいぐらい使い切れた。おそらく昇圧回路の負荷でかなり電圧降下していたんだな…。

ちなみにモータのノイズ対策は純正状態から何も改造していないので104がモータと並列に入ってるだけ。ログも見ていないのでわからないけどESP32用の昇圧回路がない状態では、モータを動かして電圧降下したときにBrownout detectorで落ちていたんだろう。効率あんまり良さげじゃないけどとりあえずこれで対策できたのでいいかなぁ。
もうちょっと昇圧電圧下げても良さそうだけど(差が小さいほど効率がいい気がする)

ESP32で1セルリポを使ってモータを動かすときに安定しないときは一旦昇圧してみるといいかもしれない。
別な種類の昇圧DCコンバータモジュールもポチってみたのでどこまで昇圧する電圧を下げても大丈夫か確認してみたい。多分VinとVoutの差が小さい方が効率が良いだろうし、3.3Vに降圧するLDOもそのほうが効率いいと思うし。5Vまで昇圧しなくてもいいような気がしているんだよなぁ


2022年11月6日日曜日

メカナムホイールのラジコンをPS3コンで動かす

 もう3ヶ月ぐらい立ってしまったけど改造を勧めていたメカナムホイールのラジコンは結局ESP32-WROOM-32Eを載せることに。RoverCみたいにRaspberry Pi Picoとかを使ってI2CスレーブデバイスにすべくテストもしてみたけどESP32をそのまま乗せるのが手っ取り早そうだったので。ポート数も多いし。

というわけで早速基板の改造。もうアナログスティックの操作感を知ってしまったらもとに戻すワケがないので残っていたレシーバーの部品もろとも全て外してしまった。
テスト用に出していたケーブルも一旦撤去。

SOT-23の3.3Vレギュレータとか3.3Vラインのコンデンサとかも全て取り外してMX1616だけにした。LEDの抵抗とコネクタも取り外し。LEDは電源入れたときにずっと光ってるだけだし、後でESP32から制御できるように変更してステータス表示に使おうかな。
ESP32用にSOT-89サイズの3.3Vレギュレータを搭載。LEDの抵抗があったところがちょうどいい感じだった。今回はAP7215なのでESP32でも行けそう。
最初からついていた3.3Vじゃ全然足りないだろうしな…
ESP32-WROOM-32Eは基板に垂直に置くと入りそうだったので使わないところはショートしないようにカプトンテープで保護。

ESP32とモータードライバはポリウレタン銅線を使用して接続。ESP32はGPIO マトリックスがついているので便利だなぁ。
モータドライブICのMX1616が2つ乗ってるのでモータ駆動用に8本(今回は12,13,14,27,16,17,18,19を使用)、あとはバッテリ残量を見るために10kΩ2つでバッテリ電圧を分圧してADCに(33を使用)。ボタンとLEDもつけたいな。
一応書込み端子もつけておいた。(IO0とENも出してある)
隙間にESP32がピッタリ入る感じ。
前に作ったESP-WROOM-02用の自動書込みアダプタをとりあえず装着してスケッチを書き込んで見る。とりあえずは前にESP32をのっけてみたときに作ったXboxコントローラ用のスケッチをPS3用に直して、モータドライバもSlow Decayのほうがコントロール性が良かったのでそちらに変更。あとはPWMの周波数を14kHzぐらいにして低速時でも静かになった。

とりあえずPS3コントローラで動くようになったけどたまにESP32がリセットして接続が切れたりするのでノイズ対策しないとだめかな…
あとはESP32の電源かリセット周りをちょっと見直してみるか…
Xboxコントローラで遊んでいたときはESP32の開発ボードをモバイルバッテリで動かしていたし、ESP32がここまでモータの近くになかったためか、特に問題なく遊べていた。
あとスケッチもまだバグってて、ある特定の動作をすると突然モータの回転が反転して変な動きをする。どっか値がオーバーフローしてそうなのでそこも直さないと。

しかしこのメカナムホイールなラジコン、メカナムロボットキットより安いのにモータドライバとバッテリまでついてコスパ高いなぁ