2019年4月29日月曜日

2.5インチ用のSATA→USB変換アダプタを3.5インチドライブでも使う

SATA→USB変換は結局何種類か持っているんだけど友人が3.5インチでも使えて安いやつがほしかったみたいなので、安い2.5インチ用のやつを改造してみた。

結局2.5インチドライブしか使えないというのは、2.5インチのSSDやHDDは5V電源のみで動くのに対して、3.5インチドライブは12Vが必要なのでUSBから直結するタイプは12Vが供給できずに使えないというわけ。
というわけで電源を分離して、12Vと5VをACアダプタから供給するケーブルを作ったりしてたわけなんだけど、SATAの電源一体のメス端子をオスに変更してしまえばいいのではないかと言うことでやってみた。

ベースの変換アダプタとしてはASMedia ASM1153E搭載のアダプタを選択。ファームウェアを変更することにより光学ドライブでも使えるし、デフォルトではTRIMもUASPも対応しているファームが書いてあるし。値段もAliexpressで3.7ドルぐらいととてもお安い。
自分も光学ドライブ用に購入したときに分解して中身確認してたので安心。
早速分解してみると基板は前回購入したものと同じでADPU3ST-A32という刻印が合ったけど、バージョンがVER006になってた。前回のはVER004だった。

違いはSATA電源のところがスルーホールになっているだけかな?こっちのほうが強度が高そう。
といっても改造するのには剥がすのが大変…

SATAのオス端子はポチっても良かったんだけど、できるだけ安く済ませるために壊れたHDDから取り外した。
HDDによってハンダ面の向きが反対だったりするけど、TOSHIBAのHDDは同じ向きだったのでこいつを分解してカット。

SATA電源の部分はいらないのでカットしてSATAの部分だけハンダした。

ケースもいい感じにカットして完成。
これでSATAケーブルが刺さるようになるので2.5インチでも3.5インチでも電源さえ用意すれば問題なく使える。光学ドライブを使うときはファームを書き換えればいいし。

2019年4月21日日曜日

ArduinoでINA226を使ってみた。

前にラズパイにDACとACS712を接続して電流測定しようとして5Vラインのノイズとかでうまく測れなかった事があったんだけど、Aliexpressを見ていたらI2Cの電流センシングモジュールを発見したので試しにポチってみた。
TIのINA226っていうICを使ったモジュールらしい。3.3V駆動もできるらしいのでこれならレベル変換もいらないので便利そう。
INA226はシャント抵抗を使って電流を測定するモジュール。ハイサイドもローサイドも行けるらしい。電圧測定もできて入力電圧は最大36Vまで。これがI2Cで取得できるのは手軽でいいかも。
今回のモジュールには電流測定用抵抗として0.1Ω(R100)が乗っていた。INA226はシャント電圧±81.92mVまで測定できるらしいので、0.1Ωだと±0.8192Aまで測定できる。シャント抵抗としては結構でかいのが乗ってる…
0.01Ωに交換すれば、±8.192Aまで測定できるということで、シャント抵抗は怪しいし交換必要かな。
WCMCU-226
I2Cのスレーブアドレスは裏面にジャンパがあるので変更できる。

しかしこのモジュール、電源電圧も測定できるのはいいけど結構ピン配置が恐ろしい事になってるな。マイコン用出力のとなりに36Vとか入れたくないような…
あとはGNDはせめて2つつけてほしかった。
シャント抵抗からICのIN+ IN-につながるまでにスルーホール2回経由してるのも気になる…
WCMCU-226
ということで改造してみた。
電流検出用抵抗は電流測定用のシャント抵抗に交換してみた。今回は0.001Ω(R001)と0.002Ω(R002)を用意して見た。桁間違えたのは秘密。(本当は0.01Ωか0.02Ωが欲しかった…)2Wの抵抗を使ったので0.002Ωの場合は31.6Aまで流せる?
そんでもってICのIN+とIN-とシャント抵抗をジャンパワイヤーで直結。ワイヤーはなんとなくだけど一応同じ長さになるようにしておいた。(パターンカットしてないからあんまり意味ないかも)あとはIN+とIN-にノイズ取り用として0.1uFを入れてみた。(データシートには0.1uF~1uF)ってなってる。ピン直下に入れたかったけどピッチ的に1005でも難しかったのでパットの上に…

2019年4月13日土曜日

ESP32にアナログスティックで入力してみた。

ESP32でモータとかサーボを動かして見るときにシリアルコンソールからのコマンドだとたるいのでアナログスティックを繋いでみた。
Arduino用のジョイスティックのブレークアウト基板とか、ジョイスティックシールドもいいけど、今回はハードオフで見つけたジャンクのWiiヌンチャクを使ってみた。

ヌンチャクはWiiリモコンの拡張コントローラなんだけど、Wiiリモコンとの通信はI2Cを使っているっぽい。電源電圧も3.3VらしいのでESP32と直結できそう。
ESP32のADCはちょっと使いにくそうだったので(直線性が悪いとか)、I2Cのようにデジタルで入力できるのはありがたい。それにGPIOを2本しか消費しないし。
wii nunchuck
とりあえずハードオフで200円で売られていたヌンチャクを購入してみた。スティックが少しべとついてる。
ジョイスティックがベタベタしているのはパーツクリーナーとかで拭いた後にシリコンスプレーを塗ってゴシゴシすると結構サラサラできれいになったりする。

そういえばヌンチャク、コピー品があるっぽいので注意かもしれない。見分けられそうなポイントはネジと端子のロゴかも。純正はネジがY字ネジ。コピー品はプラスネジだった。あとはコネクタ部にNintendoのロゴが入っていなかったり。
純正品はi2cのクロック400kHzでも動作するけどどうやらコピー品は100kHzでしか動作しなかったりするらしい。I2Cバスを他のデバイスと共有するときとかも考えると純正がいいかも。

ESP32との接続は変換用コネクタも売られていたりするし、延長ケーブルをカットして使ってもいいかもしれない。
今回はコネクタにジャンパワイヤーがそのまま刺さるところがあったので、とりあえずそこにブレッドボード用のジャンパワイヤーをそのままさして使ってみた。すごくいい感じの隙間だ…。
Wii nunchuck pin assign
コネクタは6極(うち1つはピンなしなので実質5極)なんだけどI2Cで実際必要なのは外側の4Pinで、上の画像だとオレンジが3.3V、緑がGND、黄色がSCL、青がSDAに刺さっている状態。
そんでもってヌンチャク自体はI2Cなんだけど、通信内容は暗号化されているようで、復号化も自動でやってくれるライブラリがあったのでライブラリを使わせてもらった。
Nintendo Extension Controller Library
このライブラリを使えば簡単にヌンチャクを使うことができる。

ESP32でデフォルト以外のピンをI2Cで使う場合はI2Cの初期化をnchuk.begin();の前にすれば良い。
例えばSDAを21、SCKを25にする場合はWire.begin(21,25);をnchuk.begin();の前の行に挿入するだけ。

ためしにNunchuk_DebugPrint.inoに上記の変更を加えてシリアルコンソールで見てみるとちゃんとアナログデータが取れている。
そんでもってこのヌンチャクコントローラ、3軸加速度センサーがついているのでそのデータも見れたりする。アナログスティックとデジタルボタン2つと加速度センサー3軸がお手軽に取れてしまう。

I2Cなので複数のヌンチャクを使いたい場合はLTC4316とかを使ってアドレスを変更してやれば使えそうな気がする。もしくはTCA9548Aでバスを切り替えるか…。ESP32の場合はI2Cバスが2つ付いてるから別なピンにつなげちゃってもいいかもしれないけど。

これでラジコンとか作りたいなと思っていたんだけど、WiFiでUDP通信使えばレスポンスも問題ないかな?ESP32を2セット用意してもプロポ買うより断然お安く作れそうだし。テレメトリも行けそうだし。