2017年5月28日日曜日

LM75をRaspberry Piで使ってみる

室温やケース内温度を測ったりするときはやはりI2Cの温度センサが便利。余計なこと考えずにそのまま値を得られるし…
温度と気圧まで測りたいならBOSCH BMP280とか良さそうだし、さらに湿度測りたいならBOSCH BME280とかもあるけど、今回は温度だけでよかったのでお安いNXP LM75ADを使ってみた。

eBayで2個で1ドルぐらい。お安い。

SOP8のままでは扱いにくいのでとりあえず変換基板に載せてみた。
この変換基板も10枚で1ドルぐらいだった気がする。

動作テストということでそのままRaspberry Piに接続して
raspi-configでi2cを有効化して

sudo apt-get install i2c-tools
でi2c-toolsをインストール

sudo i2cdetect -y 1
でi2cデバイスのアドレス一覧が見れる
今回はアドレス設定ジャンパに何も繋いでないので4fの模様。

i2cget -y 1 0x48 0 w
でLM75からデータを取得できる。
このままではわかりにくいのでawkで整形すると10進数で温度が表示できる。

i2cget -y 1 0x48 0 w | awk '{print(("0x"substr($1,5,2)substr($1,3,1))*0.0625)}' 

温度だけ見るならやはりLM75安くて良さそうだなぁ

2017年5月23日火曜日

ASIX AX88772B搭載USB LANアダプタを買ってみた。

Raspberry PiとかでたまにLANポート増設したくなったりするのでUSB LANアダプタを買ってみた。

一応だいぶ前に買った超安いUSB LANアダプタもあったんだけどこいつはチップ(DM9601)がダメすぎて使い物にならず…

eBayで安いLANアダプタを探してるとDM9601搭載してそうな感じのがよく出てくる。同じ外見でもたまにRealtekだったりするみたいだけど…
DM9601は結構ひどくてUSB1.1なのであんまり速度が出ない上たまに繋がらなくなったりする。

探してみると安いLANアダプタだとやはりRealtek RTL8152かASIX AX88772Bが無難そう。ASIXのほうがちょっと高いけどAndroidにもドライバが組み込まれたりと汎用性が高そうなのでASIXを探してみた。
すると、ASIX AX8872B 100Mbps USB 2.0 to RJ45って言うアダプタが3.42ドルで売っていた。こういう安いアダプタにはチップ名が書いてないことが多いんだけど説明にはASIX AX88772Bって書いてある。というか製品名のAX8872Bってタイプミスなのか、あえてこういう名前にしてるのかよくわからない。確かにこの品番で検索すると結構同じ形の製品が出てくるし…

まぁとりあえずポチってみた。
ラベルにも製品名しっかり書いてあるから間違いではなさそう。あえてこういう名前にしたのかな?

作りがすごいチープだけどまぁ使ってみないとわからない。
LEDは黄色と赤のようだ。

とりあえず通信中はどっちもそれぞれ点滅するのでどっちかがTXでどっちかがRXの通信に合わせて点滅してるのだろうと推測。
点滅する速度はそんなに速くない。

使い方的にはすごく簡単、結構有名なICなので殆どの環境でプラグアンドプレイだと思う。
一応Raspberry Piでも一発で認識して、lsusbでもAX88772Bと出る。

VID、PIDは0b95:772bで、一応同じVID PIDの製品は何種類か存在してるみたい。
MACアドレスのベンダーコードは00:00:00なのですごく怪しい。

というわけで分解してみた。
隙間にカッターを入れて少しずつ広げていくと傷つかずに開けることができた。

よく見るとAX88772BがCOB実装である。なんかすごく怪しさ満点だ…
パルストランスはE15-A35-21ZPとある。EEPROMにはATMLH612という刻印が。


裏面には主なICは乗ってない。HX-USBLAN0529という刻印がある。

COB実装でなんかすごい怪しさ満点なので速度も測定してみた。

Windows PCに繋いで速度を測ってみるもオンボと変わらぬ速度。
ということでまぁとりあえず速度は出てるので問題なく使えそう。
LinuxでもWindowsでも標準ドライバで使えてるのですごく便利。試してないけどMacもAndroidも行けるはず。


2017年5月21日日曜日

DeathAdder 2015 Chromaのスイッチを交換してみた

友人とハードオフを巡っていたらDeathAdder 2015 Chromaのジャンクを発見したので買ってみた。1080円だった。
ちなみに今はDeathAdder 3500を使っているので大幅な性能アップなきがする。


一応箱入りだけど左クリックが効きにくいということでジャンクになってた。


本体はすごくきれい。すぐにだめになったのかな?

分解するときのネジの位置は3500と同じだった。上の左右のソールの下に一個づつとラベルの下の方に一つの合計3個。普通のプラスネジだった。


開けてみると左クリックのスイッチが粉だらけ。スイッチは毎度おなじみD2FC-F-7N。
おそらくすごい力で押していた模様。カバー側のスイッチと当たってる部分もスイッチ型のポッチの形に削れてた。

マウスの基板はたくさんのネジで固定されてる。なかなか外れないと思っていたらサイドボタンのスイッチまでネジでハウジングに固定されていたのね… (ネジ6個ぐらい)


とりあえずスイッチを分解してみたら樹脂が削れた粉が接点のところに溜まってる…
これは交換したほうが良いかなぁ


というわけで余っていたD2FC-F-7Nと交換することに。
もともとついていたのはD2FC-F-7N(10M)で高耐久品だったので、問題がなかった右のスイッチを左に移植して、左を通常のD2FC-F-7Nと交換してみた。

基板がスルーホールでスイッチがとても取りにくかった。
スイッチを交換したら元通りに組み立てて完成!
動作も問題なさそう。

さすが新型、ロゴの発光ムラがなくなってた

2017年5月20日土曜日

Raspberry Pi Camera V1の互換モジュールを買ってみた

eBayでRaspberry Pi Camera V1の互換モジュールが安かったのでついポチってみた。
純正のモジュールは3000円ぐらいするけど今回ポチった互換モジュールは5.29ドル。調べてみるといろんな互換モジュールが出てるみたいなんだけど、純正そっくりな奴はトラブルがなさそうだったので…
付属品はフレキシブルケーブルのみ。このフレキシブルケーブル、純正そっくりだけど、出荷時は純正と裏表逆についてる?どっちも同じピッチだしあんまり関係ないのかな?

モジュール自体は本当に純正そっくり。
Raspberry Pi Camera V1はイメージセンサーにOV5647が使われていて5メガピクセル。V2になるとSONYのIMX219に変わって8メガピクセルになってるらしい。

今回はあえてRaspberry Pi 1を使ってテストしてみた。
というのも、よくある互換モジュールはLED関連の実装がおかしくて、Raspberry Pi 3B以外だと起動しなくなるというのを見かけたので…
(レンズが純正と違う形状のものに多いらしい。)

今回はraspi-configを使ってカメラを有効にしてみた。
インターフェースオプションを開いて、
カメラの項目を開いて

Yesを選択するだけ。
あとはConfigを閉じると再起動するか聞かれるので再起動。

とりあえず写真を取ってみる
raspistill -o test.jpg
このコマンドを実行するとカメラのLEDが光って写真を取れる。
カメラのLEDはカメラ動作中のみ発行する模様。オフにもできる。

このカメラは通常MMAL対応のアプリケーションからじゃないと使用できないけどUSBカメラのようにV4L2で使えるようにするモジュールも出てるみたい。
とりあえず
sudo modprobe bcm2835-v4l2
でモジュールを読み込めばV4L2対応のアプリケーションから使えるようになる。
起動時に読み込むようにする場合は
/etc/modulesにbcm2835-v4l2を追記すればOK。
これでUSBカメラみたいに扱えるのですごく便利になった。

純正モジュール持ってないので比較はできないけど、互換モジュールはレンズが純正品より品質がいまいちみたい。
しかし1000円ぐらいのWebカメラよりは断然良い。専用インターフェースなのでフレームレートも高め。互換モジュールの使用は自己責任ですけどね。


2017年5月13日土曜日

LM1875Tでレールスプリッタを作ってみた

ヘッドホンアンプを作ってみようと思ってモジュールを探してたんだけどもどうも電源が両電源のものが多い…
あまり大電流でなければ抵抗分圧で仮想グラウンドもよいのだけども、とりあえずオペアンプか専用ICで電源の方を先に自作してみようかということで作ってみた。

レールスプリッタ専用ICは結構高いきがする。ただし回路も簡単。オペアンプで作ろうと回路を探していたらLM1875Tを使ったレールスプリッタを発見したので早速作ってみた。
回路もすごく簡単である…


こちらがLM1875Tである。本来の用途は20WのアンプIC。

一応、金属皮膜抵抗を使用した。電解コンデンサはなんかいい色してるけど怪しいやつ。

ICのピッチをユニバーサル基板に合わせるために多少足を広げた。
ピン配置的にはすごく組み立てやすい回路。24V入力で0.2Aほど流せるらしい。
ちゃんとしたPCBになってるキットも売ってるみたい。

とりあえずTPA6120が乗った基板を買ってあるのでこれで試してみようかな。

2017年5月5日金曜日

ケースファンもセミファンレスにしてみた

最近のグラボは温度が低いと自動的にファンをストップするというセミファンレスが増えてきてるみたい。自分が使ってるGTX 1080もセミファンレスなのでアイドル時はファンが止まったまま。結構静か。

なのにグラボの前についてるケースファンは地味にうるさい気がする。グラボのファンが止まってるんだから止まれよ!っていう(ちなみにこのファンを外してもアイドル時のグラボのファン停止機能は働いてます

このケースファンは一応マザボのPWM制御付きのファン端子に刺さっていて、マザーボードの温度に連動してコントロールするようにBIOSで設定してある。
ということで今回はこのPWMファンコントロールは活かしたままどうにかファンを止めてみようかと。


というわけでPWM制御ファン停止アダプタを作ってみた。このアダプタはPWMファンにしか使えない仕様。原理は簡単でPWM制御の低速のところではファンを止めてしまおうというやつ。今使ってるケースファンは最低回転数が800rpmぐらいから最大で1600rpmぐらいなので、このアダプタを使って800rpm~900rpmぐらいはファンを止めてしまおうかと。
もうちょっと小さくできそうな気がする。マイコンはAttiny85のSOP8が結構余ってるのでそいつを使ってみた。変換基板はeBayで10枚セットで1ドルだったし…
可変抵抗はファン停止回転数調整用。

裏面はAttiny85用の5Vを作る3端子とN-ch FETを実装。
FETはIRLML0030を使用。マジ小さいけど30V 5Aぐらいなので今回の用途には十分かも。

一応プログラムの方はパルス幅だけではなくて、デューティ比も見るようにしてる。ベースクロックがマザーボードによってだいぶ変わるみたいなので…
なのでファンとかマザーボードとか問わずになんとなく動くはず?

早速取り付け。
ファン停止中はLEDが点灯するようにしてみた。
電源を入れて可変抵抗を調整すれば完成!
一応時計回りいっぱいに回してからファンがギリギリ回るあたりで止めてからちょっとづつ調整してみた。

ここで落とし穴が…
ファンの回転信号が結構振れるのでファンが止まったり動いたりを繰り返す…
一応そこら辺加味してたんだけど、予想以上だった…

プログラムの修正が必要ですな

2017年4月29日土曜日

Raspberry Pi 3Bで地デジを録画してみる

というわけで最近入手したRaspberry Pi 3BでKTV-FSUSB2を使ってみた。

Linuxではrecfsusb2nというアプリケーションを使用して録画したりできる。
前回LinkStationにrecfsusb2を入れて録画してみたときよりも進化していて、有志により機能追加やバグ修正も行われているみたい。

今回はhttpサーバ、tssplitter_lite内蔵、放送休止時の無限ループバグ修正などなどが入っている、STZ版を使用してみた。というのもオリジナルにrecfsusb2n_http_patch2.zipパッチを当てる手法だとMakefileを結構いじらないとコンパイルできなかったので…
どっちも機能的には同じでSTZ版のほうが簡単だし、コンパイル時の警告も少なかったので。

まずはラズパイをアップデートして必要なライブラリをインストール
sudo apt-get update
sudo apt-get install git libboost-thread-dev libboost-filesystem-dev
そんでもってrecfsusb2nのSTZ版をgitからダウンロードしてmake
git clone https://github.com/stz2012/recfsusb2n
cd recfsusb2n
make
sudo make install
STZ版はmake installするとチューナーデバイスへのアクセス権も付与してくれるので便利だ…
ただしsudo make installしてからチューナーのUSB抜き差し必要あるかも?
recfsusb2n --b25 --sid hd 16 10 rec.ts
あとは録画してみる。16chを10秒録画。
と思ったら"GetSequenceState timeout."で録画できず…
どうやらこのままのソースではCATVパススルーには対応していないらしい?

ということでfsusb2n.cppの250行目と523行目あたりのSetFrequencyのところをCATV対応にしてみた。
// 周波数を計算 (UHF13ch = 473143 kHz)
//pDev->SetFrequency( (args.channel * 6000) + 395143 );
if(13 <= args.channel && args.channel <= 21) {
	pDev->SetFrequency( ( (args.channel - 13) * 6000 ) + 111143 );
}else if(args.channel == 22) {
	pDev->SetFrequency( ( (args.channel - 22) * 6000 ) + 167143 );
}else if(23 <= args.channel && args.channel <= 63) {
	pDev->SetFrequency( ( (args.channel - 23) * 6000 ) + 225143 );
}
pDev->InitDeMod();
pDev->ResetDeMod();
こんな感じになるように修正してみた。(SetFrequencyがある2箇所とも。)
これでもう一回makeしてsudo make installしたらCATVパススルーでテレビが受信できるようになった。ちなみにCATVとBS/CSが混波されてるんだけどこの環境だと分波器を取り付けないと一部映らないチャンネルがあった…BS/CSも混波されてる環境で電波強度が悪い場合は分波器を試すといいかも?

予約録画ができるツールは色々あるみたいだけどepgrec UNAあたりを試してみようかなぁ

ラズパイのmpeg2のデコーダーライセンスを購入すればリアルタイムでハードウェアデコードで視聴できちゃうのかなぁ?