2019年12月15日日曜日

イヤホンをMMCX化してみた

友人からイヤホンの断線修理を頼まれたのでMMCX化してみた。
ウォークマンのノイキャン用のマイク付きのイヤホンらしいけど、どうせ壊れているのでノイキャン機能はなくてもいいということだったので…


MMCX端子はAliexpressで5個入りで1.4ドルだった。
本来はPCBに水平に取り付けるタイプかな。


イヤホン側、どうやって分解しようかなと思って引っ張ってみたら簡単に割れた…
根本からケーブルハンダできるタイプだったので、半田でケーブルを外してMMCX端子を付けただけ。
MMCX端子は足を少しカットする必要があった。

あとは接着剤で張り合わせて固定。


最後にエポキシパテで端子の周りを固めてみた。
初めてMMCX化したけどMMCX端子は丸いタイプのほうが合わせやすいかも?
ちなみにケーブルの方はeBayで3ドルぐらいのMMCXケーブルをとりあえず付けておいた。
これで次回断線しても本人にケーブルだけ購入してもらえば良いし。

2019年12月7日土曜日

Xbox Oneコントローラをアップデートしてみた。

HaloがSteamで発売ということで久しぶりにパッドでFPSしてみようということでXbox Oneコントローラを出してきたんだけども、Xboxアクセサリーアプリで確認したらファームウェアアップデートがあったのでアップデートしてみた。

前もBluetooth対応版(オーディオジャック付き)に買い替えたときにもアップデートをしたらBluetoothでの再接続が安定したりしていたのでたまに確認するといいかも。

Xbox One本体を持っていないのでWindowsでアップデートする場合はXboxアクセサリーと言うアプリをインストールする必要がある。
Windows 10のMicrosoft Storeからダウンロードできる。

Eliteコントローラとかの設定とかには必要みたいだけどノーマルコントローラだとあんまりいらないアプリだと思っていたらいつの間にかボタンを入れ替えたりみたいなカスタマイズできるようになっていたりしていた…


Bluetoothで接続されているとUSBでつなぐように促される。


USBで接続したら"…"をクリック。

するとアップデートがある場合は更新するかどうか確認されるので更新ボタンを押す。

更新中に抜き差しとかケーブルの接触悪いと失敗してしまうので静かに放置。
ちなみに失敗した場合でUSBでつなぐと"Xbox One Controller DFU"と認識されている場合はもう一度Xboxアクセサリーアプリを立ち上げるとコントローラーの更新が必要ですというボタンが現れるのでそのボタンを押せば再試行できるらしい。

今回のアップデートでv4.8.1923.0にアップデートされた。
2019年10月23日に更新されていたようで、更新内容は
・コンソールとのワイヤレス接続信頼性の向上
・Bluetoothペアリングの改善
・Android端末にBluetooth接続した際のしいたけボタンの挙動変更
・Bluetooth接続時の信頼性の修正
らしい。

ちなみにアップデート後はBluetooth再ペアリングしないとつながらなかった。

さてHALO Reachプレイするか

2019年11月30日土曜日

Blue PillでHID Bootloaderを使ってみた。

Arduino IDEを更新してArduino Core STM32を久しぶりに更新したらだいぶ項目が増えていて、その中でも対応Bootloaderも増えていたのでちょっと気になったHID Bootloaderに書き換えてみた。

Blue PillはBootloaderによってUSB書き込みできるのが便利なんだけど、ユーザープログラムが入っているやつを新規のPCにつないだりするとDFUのドライバインストールにちょっとコツが必要だったり(不明なデバイスになってすぐユーザープログラムのUSBデバイスになったり)するのでデバイスドライバいらずのHID bootloaderはどうなんだろうと。

今回使用したのはArduino側からはHID Bootloader 2.2と言われているもの。
最新版は2.2.2だったけど問題なく使えました。

ダウンロードはGithubのreleaseのところからバイナリをダウンロードできる。
stm32_binaries.zipをダウンロードしたら、F103の中のlow_and_medium_densityの中に入っている"hid_generic_pc13.bin"を使用した。
書き換え方法は以前DFUブートローダーを書き込んだ記事とかぶるのでそっちを参照いただければ。

Arduino側のセッティングはこんな感じにしてみた。USB SupportでCDCのCOMポートにしておくと書き込み時にオートリセットができるので便利。
リセットボタン側のジャンパを1にすると常時ブートローダーになるっぽいので何かあったときはそれで対応できそう。

2019年11月29日金曜日

Raspberry Pi 4 4GBのセットアップ

友人がRaspberry Pi 4を普段遣い用(Youtube視聴とネットらしい)にポチってみたらしいのでセットアップする代わりに借りてきた。6.6k円ぐらいで購入できるらしいのでたしかにお安いけどどのぐらい使えるのかもついでに試した見た。

RSで購入したらしく、OKdoのロゴが入っているっぽいのでUSB Type Cの不具合対策品っぽい。USB Type Cの不具合対策品だとUSB Type C対応充電器で問題なく動くらしい。
基板は相変わらず同じサイズ。HDMIがmicroHDMI×2になっているのでデュアルディスプレイもOKだけど、今回一緒に借りてきたmicroHDMI→HDMI変換アダプタだとUSB Type Cとも干渉してHDMI1にしか刺さらないので、ケーブル購入時注意かも。

ちゃんと裏面には技適がシルクで入っている。

とりあえずOSのダウンロード。今回はデスクトップとしての使用するらしいので、Raspbian Buster with desktop and recommended softwareを使用した。

Win32 Disk ImagerでmicroSDに書き込み。

microSDカードスロットはスプリングタイプじゃないので耐久性は安心かも。
起動するとウィザードに従って設定できるので便利。
ただしアップデートに時間がかかるので不安になるやつ
しっかし起動が早い。Raspberianのロゴも一瞬だし。

さすがにメモリ4GBもあるので結構サクサク感がつよい。通常のインターネットぐらいだったら常用できそう。microSDカードの速度にもよるのかな?Youtubeのサムネ読み込みはちょっともたついてる感があるかも。
しかしラズパイもここまで来ると普通に使えそうだなぁ。ただし結構発熱しているのでヒートシンクとかつけないとだめかも。ヒートシンクケースは購入したらしい。
ヒートシンクケースをつけたら普通に常用できるんではないだろうか…

自分も欲しくなってきたのでポチってしまおうかなぁ

2019年11月2日土曜日

Wiiリモコンのコネクタ取り用にモーションプラスを買ってみた。

友人とラーメンライブに行った帰りにブックオフに寄ってみたらWiiモーションプラスが100円で売っていたのでWiiリモコンの端子取り用に買ってみた。

これが出た当初はみんな解析して3軸ジャイロとして使おうとしてたりしてたけど、Wiiリモコンにモーションプラスが内蔵されたりしてもう100円で売られる時代に。
でもWiiリモコンのコネクタが100円なら安い気がしている。

大量にあったのできれいなやつを買ってみたけどコネクタ自体もすげーキレイだった。

分解にはY型ドライバが必要。結構高そうな作りをしていた。一応ライブラリもありそうなのでArduinoでi2c接続の3軸ジャイロとして使えそう。だけどドリフト対策とかができるような6軸のMPU-6050とかを使ったほうが情報量も多いし使いやすいかも…

コネクタ側も結構高級な作りしている。今回はメス側のコネクタを使いたいのでこいつをハンダで外せばオッケー。ピッチが1.778mmなのか合うコネクタがないのでどうしよう…

これでArduinoでヌンチャクとかクラシックコントローラが使いやすくなりそう。ロックがないとやっぱり抜けたとき1本ずつ指すのは面倒…
今となっては延長ケーブル買うより断然安いし。


2019年10月26日土曜日

Pythonでシリアルポートを自動で選択してみた。

ラズパイ上のPythonでArduinoとかにシリアル通信で接続するときに、通信中に間違ってリセットしたりするとCOMポート番号が変わってしまったりして面倒なので自動でつながるようにしてみた。


import serial.tools.list_ports

ports = list(serial.tools.list_ports.comports())

for p in ports:
    print("Port:" + str(p.device))
    print("VID:0x{:x}".format(int(0 if p.vid is None else p.vid)))
    print("PID:0x{:x}".format(int(0 if p.pid is None else p.pid)))
    print("")
とりあえずPythonでシリアルポートの一覧を作成して各ポートのUSBのVIDとPIDを表示してみる。ラズパイはデフォルトでGPIOにシリアルポートが付いてるのでUSBじゃないシリアルポートに関しては0x0になる。

ためしにこれをこちらの環境で実行すると
Port:/dev/ttyUSB0
VID:0x10c4
PID:0xea60

Port:/dev/ttyAMA0
VID:0x0
PID:0x0
となった。
ttyUSB0は対象のArduinoの情報。ttyAMA0はUSBじゃないのでVIDとPIDが出ない。

というわけでこれを利用して

import serial
import serial.tools.list_ports

ports = list(serial.tools.list_ports.comports())

for p in ports:
    print("Port:" + str(p.device))
    print("VID:0x{:x}".format(int(0 if p.vid is None else p.vid)))
    print("PID:0x{:x}".format(int(0 if p.pid is None else p.pid)))
    print("")
    if(p.vid == 0x10C4 and p.pid == 0xEA60):
        print("Device found")
        ser = serial.Serial(p.device, baudrate=115200,timeout=0.05)
        break

print(ser.readline())
これで特定のVIDとPIDのデバイスを自動で選んで接続してくれるようになった。
これ便利なんだけどVIDとPIDがかぶってたりするとあんまり使えないかも…
listには他にも情報が格納されてるようなのでその中で判別に使えるものがあればよいのだが…(未確認

2019年10月19日土曜日

ラズパイでCAN通信を使ってみた。

OBD2のテストとかするのにデバッグ環境が欲しくなったので、Raspberry Piで使えるUSB-CANコンバータを使ってみた。
InnomakerってところのUSB2CAN-Moduleってやつ。絶縁タイプのUSB-CANコンバータなのに激安なうえ、RSコンポーネンツでも扱っているのでAmazonの中華変換アダプタよりも安心である。同じものがRSよりAmazonのほうが安くて3000円切ってる…
 
RSでは商品説明に付属品がちゃんと書いてあったけど、Amazonでもちゃんとターミナルブロックはついてくるみたい。2500円とは思えない豪華さ。

このUSB2CANは一応WindowsやMacにも対応しているらしいけど、ラズパイで使うならgs_canモジュールでそのままSocketCANデバイスとして使えるから便利。ネットワークデバイスとしてそのままifconfigで立ち上げれば使える。これは便利。
MCP2515モジュールをラズパイにつなぐより楽かも。CANトランシーバーを3.3V品に交換するか、パターンカットして3.3Vと5V分けなくてもいいし。ターミナルブロックも付属しているし…
アイソレーションされてるCANトランシーバを搭載していることを考えるとコスパは高いかも。

とりあえずラズパイ3BにUSBで接続して見るとTXとRxがチカチカしたあとにLinkが点灯する。lsusbしてみると
1d50:606f OpenMoko, Inc.
として認識されていた。PIDを調べてみるとGeschwister Schneider CAN adapterとなっていた。gs_usbはGeschwister Schneider Technologie Entwicklungs- und Vertriebs UGってところが作ったCANアダプタ用のカーネルモジュールっぽい。

まずはcan-utilsをラズパイにインストール。
sudo apt-get install can-utils
あとは
sudo ip link set can0 up type can bitrate 500000
をするだけでSocketCANデバイスとして使えるようになる。ビットレートは適宜。
ifconfigをすればcan0が追加されてるのを確認できる。
TXとRXのLEDも点灯する。通信すると点滅するっぽい。

あとはcandump can0したりwiresharkしたり普通のSocketCANデバイスが使えるアプリケーションで扱える。

CANコネクタ側にはジャンパ抵抗をハンダすれば絶縁DC-DCコンバータからの5Vも供給できたりするみたい。5Vが必要なデバイスでは有効にすると便利な場合があるのかな。

このアダプタの部品構成的にはCANとUSB対応のSTM32F072C8T6、絶縁CANトランシーバのISO1050DUBR、I2C接続のEEPROMに絶縁DC-DCコンバータが主な部品構成っぽい。CANの変換アダプタって結構高価なものが多いからこれはだいぶお安いなぁ。さすが中華製。
しかし中華製だけあってか、情報が少ない…
RSだとMS123って品番で、USB-CANコンバータになってたり、AmazonだとUSB2CANってなってたり、同じ商品名で別な商品があるから探しにくかったり…
まぁラズパイでプラグアンドプレイで使えるからいいか。RSでもラズパイ用として扱われてたし、WindowsとかMacでも使えそうだけどSocketCANみたいに超簡単ではないのかもしれない。
今度はWindowsで使えるか試してみようかな。