2020年10月11日日曜日

ドラレコ用にSandiskの高耐久microSDXCを買ってみた

 カーナビ連動型の純正ドラレコを使っているんだけど、先日久しぶりに映像を確認してみようと思って再生モードにしたら超読み込み時間待たせられた挙げ句にエラーがでて見れなかったのでmicroSDを交換することに。

ドラレコ自体はPanasonicのDRH-165NH。ナビ連動型の純正ドラレコで、付属のmicroSDHCか純正部品のmicroSDHC以外は動作保証してなさそうな感じ。

でも純正高そうなのでとりあえずSandiskのHigh Enduranceがやすかったので購入してみた。

microSD 64GB
並行輸入品なので保証はないんだけど64GBで1300円ぐらいで購入できた。
High Endurance

純正品は8GBでMLCって表記があるんだけど、SandiskのHigh Enduranceは高耐久っては書いてあるけどMLCかどうかはわからないんだよね…

そんでもって購入してから気がついたんだけど64GBなのでmicroSDXCだった。なのでフォーマットがFAT32じゃなくてexFat。

ということで車にセットする前に念の為FAT32でフォーマットしておいた。SDXCをFAT32でフォーマットするとなんか使えてしまうカメラとかもあったりしたので…

そんでもってドラレコに挿してみたら普通に認識した。やはりSDHCまでしか対応していない機種でもフォーマットをFAT32にすれば使える?もともとexFatでもいけたのかはやっていないのでわからないけど…

フルに64GB使えるかは使ってみないとわからないけどもとりあえず今のところちゃんと動いてそうなので様子見。

SDSQQNR-064G-GN6IA
ちなみにCrystalDiskMarkの結果はこんな感じ。耐久性に特化してるとはいけ結構早い気がする。


追記

ドラレコ本体でフォーマットしたらexFatでフォーマットされて普通に64GB使えてた…

2020年10月10日土曜日

抵抗入りケーブルを作ってみた。

前回、USB DACのノイズ対策として作った抵抗入りケーブルが調子良かったので抵抗値を変えたものをもう一つ作ってみた。あと前作ったやつも端子のメーカーを揃えて抵抗も金属皮膜抵抗に変更してみた。

AliexpressでSYRNARNっていうメーカーの3.5mmジャックのオスメスを購入してみた。一応どっちも4極にしておいた。3セットで送料込み5ドルという安さ。
前回作ったときのメスはSYRNARNだったんだけどオスはノーブランドだったんだけど、ハンダしたらメッキごと剥がれたりとかあったのでこちらで作り直すことに。
ステレオミニプラグ
色はとりあえず黒を選択。値段の割に品質は良いと思う。見た目もいいし。
ステレオミニ4極プラグ
分解するとこんな感じ。抵抗はやっぱりオス側にしか入らなそう。

銀メッキケーブルは前回の余りの0.5sqを使うんだけどやっぱり太いなぁ
四つ編みするとオスジャックのカバーが通らないのでまずはオス側からはんだ付け。
この状態で熱収縮チューブを通してからカバーを通せばぎりぎり通る感じだった。
熱収縮してカバーを閉めてから四つ編みを開始した。付属の透明チューブは穴が小さかったので不使用。
メス側は穴が大きいので四つ編みしてからでもカバーが通る。熱収縮チューブを入れてからメスジャックをはんだ付け。
あとはカバーを閉めて完成。
とりあえず今回は330Ωを追加で作成してみた。どっちも端子をSYRNARNのやつにしたので熱収縮チューブの色で分けることに。黄色が330Ωとした。

インピーダンスケーブルとかアッテネータとか買うと結構高いし、オーディオにそんなにこだわりがない人なら1/10以下の値段で作れちゃう抵抗入りケーブルはおすすめ。物によっては中身ほとんど同じだし…今回も見た目重視で作ってみたけど使用してる部品は超安いし…
そんでいてPCのホワイトノイズ対策には効果抜群だし。

2020年10月4日日曜日

デスクトップPCにBluetoothドングルを内蔵してみた

先日作った友人用PC、Bluetoothスピーカーを接続するためにBluetoothドングルをケースに内蔵してみた。LEDテープ貼る作業していたらちょうどドングル届いたし。

使用したBluetoothドングルはとりあえず超安かったCSR4.0ってやつ。Amazonとかでも500円きってる。

マザーボードがZ270 Extreme4なので、M.2のWifi&Bluetoothモジュール用スロットとアンテナ用の穴あいてるんだけど、Wifiを使わないならUSBのBluetoothドングルを買ったほうが安いということで…

そして今回はただUSBのBluetoothドングルを指すだけじゃなくて、ケースのフロントがプラチック製なので内蔵してみることに。リアのUSBに指すと感度悪いし、フロントのUSBに指しっぱってのもなんかかっこ悪いし。
何よりマザーボード上のUSB2.0ピンヘッダが余りまくっている。

マザーボード上のピンヘッダからUSB Aに変換するコネクタは普通に売ってるんだけど、黒いケーブルで丁度いい長さのやつがなかったので自作することに。

適当なUSB延長ケーブルを丁度いい長さで切ってQIコネクタをつけるだけだと思っていたんだけど、手持ちのUSB延長ケーブルがなかったので部屋にあったもので作ることに…

なんかの基板から剥がしたUSB端子と適当なUSBケーブルの切れ端にIQ端子をつけたものを準備。なんかこのケーブルの切れ端、シールドじゃなかった…CSR4.0もシールドに繋がってないし、いいかな…
ちなみにこの段階で白と緑反対に入れてた…
USB端子側をハンダするときに一応端子のフレームグラウンドもグラウンドにつないでおいた。
あとはホットボンドで絶縁&ケーブル保護。簡単で良い。
JAX-03W
黒鴉のフロントパネルは引っ張るだけで外すことができた。右側にケーブル通せる穴があったのでそこを通してフロントにケーブルを持ってきて、フロントパネルの樹脂面に貼り付けた。このケースのフロントパネル、樹脂なのにヘアラインっぽく仕上げられてるので安っぽく見えないかも。
両面テープでフロントパネルに貼り付けたんだけどケーブルをホットボンドで固めた部分がLEDテープで照らされて目立つので黒い布テープを張った。
多分こっち側は見えないと思うんだけど黒いテープを張ったら見えなくなったので完成。

CSR4.0はWindows 10の標準ドライバでそのまま使用することができた。設定のデバイスではQualcommのCSR8510 A10として認識されていた。一応Bluetoothヘッドホンも問題なく動いたので今回の用途的には大丈夫そう。
kurogarasu
電波強度もフロントパネルが樹脂製なので特に問題なさそう。リアのUSBポートに挿しているときよりは格段に飛ぶようになってるかも。。

黒鴉にLEDテープを貼ってみた

この前組み立てた友人のPCに余っていたLEDテープを張ってみることにした。

黒鴉はサイドパネルが前面ガラスなので貼れるところがすごく少ない…

上面と後ろと下面に貼ることに。全面は前のパネルをはめる穴が邪魔だったので…
手持ちの端子付きケーブルは短かったので長いケーブルに付け替え。
エンドの部分似ケーブルをハンダしたあとにホットボンドで補強しておいた。
kurogarasu
アドレサブルじゃないタイプのLEDテープなんだけど、マザボのピンヘッダもアドレサブル非対応だったのでちょうどよかった。光り方もまあまあ。
LEDテープ買うときは白よりも黒買っておいたほうが目立たなくていいかもしれないな。


2020年10月3日土曜日

CENTER 304のシリアルプロトコル

デジタル温度計のシリアルケーブル電源ケーブルを作成したので納品前に動作確認をしてみた。電源ケーブルの方はACアダプタじゃなくてUSB給電ケーブルにしたのにシリアルのGNDとレベルが違うということで急遽絶縁DC-DCコンバータを挟んで対策した。前にオーディオ用で購入していたAliexpressで100円ぐらいだったやつの余りが合ったので助かったー。

借りてきたのはCENTER 304ってやつだったんだけど、TC0304ってやつの説明書を見るとシリアルのプロトコルも載っていたのでついでにPythonで動作確認してみた。
Baudrateは9600でアスキーで"A"を改行コードなしで送ってやるとデータが返ってくる模様。
改行コードがあると何も帰って来なかった。
他にTC0301(CENTER 301)のコマンドも認識してくれるっぽい。シリアル通信経由でボタンが押せる。さらには"E"を送るとRECランプが付くのでこれはおそらくCENTER 309とかのロギング対応モデル用コマンドかも。"P"でログを読み出せそうだけど、空っぽのデータが返ってくる。
import serial
import struct

serial = serial.Serial('COM4', 9600)  # デバイス名とボーレートを設定しポートをオープン

while 1:
    serial.write("A".encode("utf-8"))
    data = bytearray()
    tmp = serial.read(1)
    if tmp == b'\x02':
        data = serial.read(44)
    temp = []
    for num in range(16):
        #print(struct.unpack('>H', data[6:8])[0]/10)
        temp.append(struct.unpack('>H', data[6+(num*2):8+(num*2)])[0]/10)
    print("Current:",end='\t')
    print(temp[0:4])
    print("Delta Set:",end='\t')
    print(temp[4:8])
    print("Min Temp:",end='\t')
    print(temp[8:12])
    print("Max Temp:",end='\t')
    print(temp[12:16])
serial.close()
とりあえず簡単にPythonで温度を読み出すプログラムを作ってみた。

MAXとMINはMAX MINボタンを押してMAX MINモードにしてる間しか変動しなさそう。DeltaはRELキーを押した瞬間の温度を記録してるっぽい。1秒間に2,3回読み出せるけど温度変化は緩やかなので内部のサンプリングに依存してそう。

ついでにArduino環境のESP32でも試してみた。
リクエストめっちゃ送ると温度計側がフリーズしてしまうのでやり過ぎ注意。300msとかでも反応してくるんだけど結局サンプリング周期が3秒に1回ぐらいっぽいので同じデータが淡々と送られてくる。
#define UART1_RX 25
#define UART1_TX 21

uint16_t temp[16];

void setup() {
  Serial.begin(115200);
  Serial1.begin(9600, SERIAL_8N1, UART1_RX, UART1_TX);
}

void loop() {
  static unsigned long updPrev;
  if (millis() > 1000 + updPrev )
  {
    updPrev = millis();
    Serial1.print("A");
    if (Serial1.available() > 0 ) {
      uint8_t header = Serial1.read();
      if (header == 0x02) {
        uint8_t rcvData[44];
        uint8_t bytesRead = Serial1.readBytes(rcvData, 44);
        if (bytesRead == 44 && rcvData[43] == 0x03) {
          for (uint8_t i = 0 ; i < 16; i++) {
            temp[i] = rcvData[6 + (i * 2)] << 8 | rcvData[7 + (i * 2)];
          }
          Serial.println(temp[0]);
        }
      }
    }
  }
}
シリアルコンソールに流してるだけだけどESP32ならWiFi経由でインターネットに飛ばしたり色々できそう。
CENTER304 ESP32
ESP32は3.3VなのでI2C用の双方向レベルコンバータを挟んでいる。温度計側は5Vだし。
双方向である必要はないんだけど、このFETを使ったレベル変換って便利だよなぁ。

とりあえずお遊びはこのぐらいにして納品しに行こ…


2020年9月27日日曜日

CENTER 304用のUSB通信ケーブルを自作してみた。

前回、知り合いに頼まれたシリアル通信対応デジタル温度計CENTER 304のACアダプタを自作したんだけど、今回はシリアル接続用のケーブルを作ってみることに。

CENTER 304と309はツールが共通っぽい。ドライバとかからみて純正はSilicon LabsのUARTブリッジを使ってそう。CENTER 301はサンプリングが早いためか、単純に2ポートになっただけじゃなさそう。
出力ポートは3.5mmステレオミニジャックなので、ステレオケーブルをカットして使うことに。
ちなみに本体にはRS-232って書いてあるんだけど、付属の説明書を見ると"5V normal high"ってなってるから実はUART(active low)なのでは?
とりあえずダイソーのステレオ分配器から取り外したステレオジャックが余っていたので、これに適当なリード線をつけてテスト用ケーブルを作ってみた。
もし本当に5VのUARTだったら、適当なUSBシリアルアダプタに直結できるようにQIコネクタを取り付けておいた。
ピンアサインはミニジャックの先端がTX、真ん中がRX、根本がGNDになってるっぽい。なんとなくTXを緑、RXを黄色にしてみた。

このケーブルをCENTER 304に接続して電源を入れて、テスターでGNDとTX間を測定してみると5Vが出ていた。ということはActive Lowっぽい。
なのでCP2102とかが乗ってるUSB-UART変換アダプタに繋げばそのまま通信できるはず。RS-232レベル変換はいらなそう。
試しにCH340を使ったESP32ライタに今回作ったテスト用ケーブルを繋いでダウンロードしてきたツールを開いてみるとCENTER 304を繋いだ瞬間に認識してくれた。ちなみにCOMポートは1ポートしか無いためか勝手に認識されてた。
3.3V化したCH340でもちゃんと通信できてるってことはUSBシリアル変換アダプタならなんでも動きそう。CENTER 304は5VなのでCH340そのまま繋いでも大丈夫だし。
CENTER 304
USBシリアル変換アダプタのLEDを見ているとPC側からなにかデータを送信してCENTER304側が返してきてる感じ。それが1秒間隔で行われてそう。(ツールのサンプリングで一番短いのが1秒設定だからかな?)
純正ツールで動くんだから、Artisanでも動くだろう…少なくともケーブルには問題なさそう。あとはMacとかだったらMacで使いやすいUSBシリアルブリッジICを使うという手もありそう。ドライバいらないやつとかあるのかな?
流石にこの状態で納品するのはアレなので、未改造のCH340アダプタにL字のステレオミニジャックのケーブルを直結したものを作って渡そうと思う。

ちなみにこの手のステレオミニジャック→USBシリアル変換ケーブルって意外と売ってるっぽいんだけど、Intel Galileoのシリアルコンソール用ケーブルだとRS-232変換ICが間に入っているので使えないと思う。(論理反転だけならまだしも、電圧レベルが違うので危険かも)

単純なシリアル通信なのでESP32とかを使ってBluetooth化もできそう。しかし信号レベルが5Vなのでレベルコンバータを挟む必要があるけど。CENTER301だと説明書に通信プロトコルも書いてあるみたいだけどやっぱりCENTER304とは違うのかな?ESP32に接続してWebsocket使ってリアルタイムモニタリングとかロギング機能とか色々遊べそう。

最後に前回作ったUSB給電ケーブルとこの通信ケーブルを同時に使用できるのかを検証してみようと思ってUSB給電ケーブルから電源を供給した状態で通信ポートの方のGNDを確認してみたところGNDのレベルが違う…(4Vぐらいの差がある)
はじめに色々テスターで測定している時にどうも電源ラインのGNDと通信ラインのGNDが繋がっていなさそうなので気にしていたんだけどまさかそんな罠があるとは…
ということで給電アダプタの方に絶縁DCコンバータを使ったほうが良さそうということで改造することに。

納品は来週になりそう…(美味しいコーヒーが待ってるらしい



2020年9月26日土曜日

CENTER 304のUSB給電ケーブルを作ってみた。

知り合いがコーヒー焙煎でArtisanというアプリを使うのにCENTER 304っていう熱電対温度計を買ったらしいんだけど、PCと接続するケーブルとACアダプタが見た目の割には高いんだけどなんとかならない?ということで借りてきた。

このCENTER 304っていうデジタル温度計、9V電池で駆動して4chのK型熱電対の温度をモニタリングできるっぽいんだけど、RS232Cって書いてあるポートがあってこれでPCでデータを取れるみたい。
確かに9V電池ちょっと高いので据え置きにするならACアダプタが使いたいところ。

色々調べてみるとこの温度計、PerfectPrime TC0304っていう品番でも売られていて、外観は全く一緒でケースと本体の品番刻印が違うぐらいのがあった。
ほかにも測定器メーカーのOMEGA Engineeringとかからもロガー付きでHH309Aってのが出てるし。(CENTER 309と同じかな?)
なのでこの系統のデータシートとか説明書とかを探してみると色々詳細がでてきた。

とりあえずACアダプタはセンターマイナスの、外径3.5mm/内径1.35mmで9VタイプのACアダプタが適合しそう。汎用のユニバーサルACアダプタならセンターマイナスに対応できるものもあるのでそれを使えばいけそうな気が。
でも今回はPCで使うのかな?ということでUSBで取れるようにしてみようかなと思ってUSBからの給電ケーブルを作ってみた。
外径3.5mm/内径1.35mmなUSBケーブルが売っていたので、これをぶった切って間に汎用の昇圧DC-DCコンバータを入れてみればいいかなと。これならUSB端子もDCジャックもケーブルもついててお得。(極性も電圧も違うのでそのまま繋いではいけない)
昇圧コンバータにはSX1308を使用してみた。小型でいいんだけど、可変抵抗の回す方向が反対なので少し不便なやつ。今回は9V固定で良いので可変抵抗を外してチップ抵抗を載せてコンパクトにしてみた。
一応チップ抵抗はSX1308のデータシートを参考に分圧比を計算して近いところを選択。
使用したケーブルはセンタープラスだったのでDCジャック側はプラスとマイナスを反対につないだ。本体に接続する前にちゃんとテスターチェックしておくこと。
とりあえずはうまく動いてるようだけどノイズとかの影響とか、純正じゃないケーブルなので真似する場合は自己責任で!
ケースは秋月のケーブル中継用ケースがぴったりだった。

少し長くなってしまったのでRS-232Cポートの通信ケーブルは次回。

P.S.

通信ケーブルを作ってから気がついたんだけど、CENTER304の内部の回路の作りの問題なのか、電源のGNDと通信のGNDが同じレベルじゃなかったので電源ケーブルに絶縁型DCコンバータを追加することに。たまたまオーディオ用で使おうとしていて手持ちしていたB0505S-1Wを使用した。5V 200mAの絶縁型DCコンバーターなんだけど、CENTER 304のACアダプタの仕様が9V 100mAなので問題ないかな。
電源をACアダプタから取る場合は問題ないんだけど、PCのUSBから電源を取りつつ、PCに通信ケーブルを指すパターンだとGNDのレベルが違うので問題が起きそうなのでこんな感じで一応絶縁することによって一応問題解決できたと思う。通信の方はミニジャックから電源が出てなかったし絶縁が面倒そうだったので…