2017年12月25日月曜日

ニンテンドースイッチでいろんなコントローラーを使う

ゲーム機で他のゲーム機のコントローラーを使う変換アダプタっていうのは色々と出てるけど、その中でも1000円を切るようなコンバーターがあったので友人用にeBayで代理購入をしてみた。
酷威COOV N100ってやつ。eBayで1000円切るぐらいで購入できた。国内でも取り扱ってるショップはあるみたいだけど、1000円以下なら失敗しても悲しくないということで…
最近はN200ってのも出てるようで、こちらは20ドルぐらいっぽい。

COOV N200はレシーバとトランスミッタのセットになっていて、トランスミッタを好きなコントローラーにマジックテープで取り付けてワイヤレス化できると言うもの。
さらにトランスミッタにはジャイロがついてるので、どんなコントローラでもジャイロ対応にできるらしい。まぁ今回はとりあえず試しということで有線のn100を選択した。

とりあえず友人に渡す前に動作確認して使い方を把握しておかねば。

まずはアップデート。
ファームウェアは公式サイトからダウンロードできる。
日本語もあるけど、解凍すると文字化けしてよくわからないので英語版がいいかも。
現時点での最新はV3.4だった。

V3.0からはUSBキーボード、マウス、HID準拠ゲーム コントローラに対応したらしい。
キーボードとマウスを使うにはHUB K4って言うオプションが必要らしけど、DirectInput対応の普通のPC用ゲームパッドは繋げばそのまま動くようになってるかも。

あとは認証用に各純正コントローラが必要みたいだけどPS4とXbox One用のコンバータとしても使えるようになったっぽい?(実機がないので試せないけど)
ファームウェアのアップデート方法はCOOV N100をPCのUSBポートにつなぐとマスストレージデバイスとして認識するので、その中に先程ダウンロードしたfirmware.binを上書きするだけ。
アップデートが完了するとN100のLEDが緑色に点灯したあとに再認識される。失敗すると赤に光る模様。
ちなみにinfo.txtを開くと今入ってるバージョンがわかる。購入時のバージョンは1.5だった。

設定はdata.binというファイルの中に書き込まれる。
今回はまだ何も設定してない状態でアップデートしたので、ついでに設定初期化(restore)用のdata.binも上書きしておいた。(たまにうまく動かない設定ファイルのまま出荷されてるものもあるらしいので念のため。)


ファームウェアアップデートとコンフィグファイル(data.bin)の初期化が終わったところで、早速使ってみる。
ニンテンドースイッチ側の設定を少し変更する必要がある。
ファームウェアがV2.0以上の場合、設定のコントローラーとセンサーでProコントローラーの有線通信をONにする必要がある。ここをONにするまではn100に繋いだコントローラは全く動かない。
N100がPS4コンのジャイロに対応したときにProコン有線モードとして認識されるようにファームウェアを変更したのかもしれない。

とりあえずこの状態でXbox Oneコンを繋いでみたけど特に問題なく動く感じ。
デフォルトのキー配置は物理的に同じ位置にあるキーが割り当てられているので、
Proコン同様の操作性。ジャイロ無いけど。
Xbox OneコンをつなぐとAとB、XとYの印字が反対になる。
なんかQTEが多いゲームとかだと混乱しそうだ。つまりAを押せと言われたらBを押さないといけない。PS4コンの場合はABXYじゃないのでまた違う問題だけど。

一応N100にはキーマッピングという機能がついててキーを入れ替えることができる。
ホームボタンとスティック以外のキーは好きに入れ替えられるらしい。
1.キーマッピングモードに入るにはXboxボタン(ホームボタン)とBボタン(ProコンだとAボタンの位置)を同時に押す。
2.キーマッピング対象のボタンを押す。
3.割り当てたい機能のボタンを押す。
4.ホームボタンを押すとキーマッピングモード終了。

例えばAボタンを押したときにBと認識させたい場合は、
 Xboxボタン+Bボタン同時押し
 A
 B
 ホーム
という順番に押せば良い。
入れ替えたい場合は
 Xboxボタン+Bボタン同時押し
 A
 B
 B
 A
 ホーム
みたいな感じで、ホームボタンを押さない限りは連続して登録できる。

この機能を使えばXboxコンのときにAとB、XとYを入れ替えてしまえば画面表示どおりにキーを押せばいいことになる。
この場合Proコンに慣れてるとむしろ混乱するかもしれないけど、XboxやPCでXboxコンを使ってる人にはこっちのほうが慣れやすいかも?
ちなみにスクリーンショットはXboxボタンを2度押しだった。PS4コンだとまた違うらしい。

設定をもとに戻したい場合はXboxボタンとBボタンを同時押しした後にXboxボタンを3秒以上長押しするとキーマッピングをリセットできる。

キーを押すたびに振動してくれるのでちゃんとキー操作が認識されてるかどうかもわかりやすい。

N100にはキーマップも含めて、結構色んな機能があるっぽい。
・キーマッピング(Xboxボタン+B)
・スティックのデッドゾーンの設定
・速度調整可能な連打機能(Xboxボタン+X?)
・マクロモード(ホーム+マクロを登録したいボタン)

非公式ハードだから本体のバージョンアップで使えなくなる可能性はあるけれどもこんなに機能ついてて1000円以下ならお買い得かもしれないぞ…
HUB K4を購入すればキーボードとマウスも使えるみたいだし。
スリープから解除できないのはちょっと不便かもしれないけどセカンドコントローラとしてなら問題ないしな

最後に分解してみた。

ケースは金属で高級感がある。ネジを外せば分解できる。
メインのマイコンはNuvotonのNUC505Y013Yっぽい。
あとはUSB機能用と思われる12MHzのクロックと3.3Vのレギュレータ、抵抗とコンデンサとLEDぐらい。マイコンだけで300円ぐらいはしそう。


2017年12月23日土曜日

Discord用に簡単なTTS Botを使ってみた。

友人とゲームをするときにはよくTeamSpeak3を使っていたんだけど、最近Discordに乗り換える流れがあったので乗り換えてみた。

ついでにDiscordのAPIを使ってBotが簡単に作れるらしいのでちょっとTTS(text to speech)ボットを作ってみた。要はテキスト棒読みBot。
Discordはブラウザからも簡単に参加できてしまうので、その場で喋れない奴とかたまーにゲーム中に入ってきてもテキスト読めない問題を少しでも解決するために…。

サーバーは現状のLinux鯖を使いたかったので、Bot作成にはPythonのDiscord.pyを使用した。
喋る部分は棒読みちゃんとかを使いたかったんだけど、Linuxだとちょっと面倒だったので簡単に使えるOpen JTalkを使用した。

まずはOpen JTalkをPythonから使えるようにする。

こちらのサイトのjtalk.pyをPython3でも使えるようにちょっとだけ変更して使用した。

#coding: utf-8
import subprocess

def jtalk(t):
    open_jtalk=['open_jtalk']
    mech=['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
    htsvoice=['-m','/usr/share/hts-voice/mei/mei_normal.htsvoice']
    speed=['-r','1.0']
    outwav=['-ow','open_jtalk.wav']
    cmd=open_jtalk+mech+htsvoice+speed+outwav
    c = subprocess.Popen(cmd,stdin=subprocess.PIPE)
    c.stdin.write(t.encode('utf-8'))
    c.stdin.close()
    c.wait()

変更したのは音声は再生しないようにしたのとstdin.writeの部分をバージョンに合わせてちょっと変更。

あとはBot本体からこいつを呼び出すだけ。

#coding: utf-8
import discord
import jtalk


client = discord.Client()

@client.event
async def on_ready():
    global player
    global voice
    print("-"*20)
    print("user name:", client.user.name)
    print("user id:", client.user.id)
    print("-"*20)
    channel = client.get_channel('参加させたいボイスチャンネルのID')
    voice = await client.join_voice_channel(channel)
  

@client.event
async def on_message(message):
    global player
    global voice
    # we do not want the bot to reply to itself
    if message.author == client.user:
        return
    jtalk.jtalk(message.content)
    player = voice.create_ffmpeg_player('open_jtalk.wav')
    player.start()

client.run('トークンをこちらに')

とりあえずこんなもんで一応は動いてるっぽい。
テキストの流れが早かったりすると対応できないかもしれないし、チャンネル移動コマンドとか追加していきたい

2017年12月17日日曜日

Lightning - USBカメラアダプタの互換品を買ってみた

たまにiPhoneにカメラをUSBで繋いで画像を取り込みたくなることがあるんだけどLightning - USBカメラアダプタの純正品は高い…
ということでためしにeBayで安いやつを買ってみた。
Lightningコネクタは認証を取ってないケーブルによくある、一体成型じゃないやつ。
USBポート側は純正より丸い感じ。全体的に安っぽいんだけど、実際安い。
これで160円ぐらい。純正品が3200円なので超お安い…

非純正でよくあるのがiOSのアップデートで使えなくなるというやつ。
しかもこいつはiOS9以上対応とか大雑把にしか対応情報が書いてなかった。

とりあえず最新のiOS 11.2.1にアップデートしたiPhone SEで試してみた。
身近にあったUSBメモリを指してみるとこんな状態。
どうやらこの"アクセサリは使用できません。"ではないので問題なく使用できそう。
"接続されたデバイスは消費電力が大きすぎます。"というエラーは純正ケーブルでもいろんなデバイスで発生するようなので問題ない。
USBカメラアダプタの仕様上、100mAとか200mAを超えるデバイスは使えないようなのでその場合はセルフパワーのUSBハブを使うしか無いみたい。
USBデバイスの消費電力情報を読んで判断してるようなので、USB給電ケーブルとかを使ってもだめっぽい。

ちなみにUSBキーボードは使えたのでこのケーブル自体には問題なさそう。

このケーブルに使えるカードリーダーが手持ちになかったので、iPadをiPhoneに繋いでみた。
すると取り込みボタンが表示された!
iOSデバイスをこのケーブルでつなぐと消費電力を100mA以下に抑えるために充電モードにはいらない様になってるのかな。
とりあえずこれでiPadの画像をiPhoneに取り込むことができた。

他にもUSB DACなど、iOSが対応してればいろんなUSBデバイスが使えるらしいので試してみようかな。
160円ならOSアップデートで使えなくなっても問題ないかな。

100mA以下のSDカードリーダー探さないとなぁ

2017年12月8日金曜日

Google Homeで家電を制御してみる

Google Home Miniをせっかく購入したのでこの前作ったIR Stationを使って赤外線リモコンが使える家電をGoogleアシスタントで制御してみた。

流れとしてはGoogleアシスタントをIFTTTと連動させて、IFTTTからIR Stationを呼び出す感じ。
まずは手始めにシーリングライトをオンオフするところから始めてみた。

まずIR StationをどうやってIFTTTと連動させるかなんだけど、Webhookが使えそう。

Chromeのデベロッパーツールで学習リモコンのボタンをクリックしたときの動作を見てみるとsendでIDをPOSTしてる模様。
IDはどうやらリモコンを登録した順番に割り振ってるようで、さらにPOSTじゃなくてGETでも赤外線を飛ばすことができた。

とりあえず必要なリモコンのボタンをどんどんIR Stationに割り振ってIDをデベロッパーツールで調べれば行けそう。


IDの調べ方はIR StationのページをChromeで開いた状態でF12を押してデベロッパーツールを開いて学習リモコンのボタンをクリック。
するとsendが読み込まれるのでそこのForm DataというところにIDが出てくる。この数字がクリックしたボタンに割り当てられてるIDになるみたい。

そしてWebから
http://IR StationのIPアドレス/signals/send?id=先程のID

とすればIR Stationから赤外線を飛ばすことができる。
IFTTTのWebhookを使うためにポートを開けてIR Stationを外部から制御できるようにしておかないといけない。

あとはIFTTTで連動するだけ。Webhookのアドレスの部分はグローバルIPかDDNSを入れる感じ。

ネット経由の割にはだいぶレスポンスが良い。
HomeBridgeとかよりは設定が簡単でいいなぁ

これで赤外線リモコンが使えるものはほぼ音声で制御できるかも?

2017年12月4日月曜日

Google Home Miniを買ってみた

楽天ブックスで半額セールをしていたのでついGoogle Home Miniを買ってしまった。
半額なら最低限普通のスピーカー的な使い方ができれば問題ないかなと言うことで…
おもったよりだいぶ小さい箱。

箱を開けると本体が。ファブリック感が良い。

付属品はちょっとした説明とACアダプタのみ。
ACアダプタはmini USBでデザインとか質感はなかなか良いと思う。

裏面のオレンジ色はゴムで結構グリップする。本体にはACアダプタとミュートスイッチぐらいしか無いかも。タッチ式のボタンはあるようだけど。

音声認識中は真ん中あたりのLEDが光るっぽい。本体の左右を触ると音量の上げ下げができる。

とりあえず電源を入れるとGoogle Homeアプリから設定するように言われるのでGoogle Homeアプリから自宅のWiFiに繋いだり個人設定すれば普通に使える状態に。
音質的には声は聞きやすいかも。低音は物足りないけど作業用BGMぐらいだったら問題ないかもなぁ

IFTTTでも使えるようなので色々連動させてカスタムコマンドで遊んでみようかな

2017年12月3日日曜日

MyGica S270を買ってみた

地デジ用チューナーPLEX PX-S1UD V2.0のOEM元?であるMyGica S270をポチってみた。
11/11のセールにポチって届くのに3週間かかった…
セールだから仕方ないね

MyGica S270
中国から来た割には箱が原型をとどめている

日本語の説明も書いてある!
ISDB-T対応の国の言語それぞれで説明が書いてあるのかな

付属品はアンテナとそのスタンド2種類、アンテナ変換アダプタとUSB延長ケーブル

アンテナ端子はそのままだと日本のF型と互換性がないので付属の変換アダプタをぶっ刺します。

MyGica S270
PX-S1UD V2.0とそっくりというかそのまんま?

とりあえずWindowsで動作確認。
ドライバはPX-S1UD V2.0のものをダウンロードして使用してみた。
BondriverはBondriver_BDATを使用した。
PX-BCUDで環境は整っているのでチャンネルスキャンするだけで普通に使えたー
KTV-FSUSB2のように分波器使わないと極端に感度悪くなるということはないんだけど一部映らないチャンネルも…
CATVパススルー環境だからかなぁ?(PX-S1UD V1はC41ch~C45ch映らなかったみたいだし)
ちなみに映らないチャンネルはC14とC15でC16~C20までは普通に映っている。

ちなみに消費電力を測ってみた。
MyGica S270
視聴していない時は0.01Aと0.00Aを行ったり来たりなので最大でも10mA流れてる感じかな?

MyGica S270
TvTestでテレビを見ている間は80mAぐらいで安定している。チャンネル切り替え時に50mAぐらいまで落ちたりするけど。

ちなみにPX-BCUDは常に140mAぐらい流れてるけど…

今度はRaspberry Piでためしてみよ。

2017年12月2日土曜日

WiFi学習リモコンを組み立ててみた

Wi-Fi接続の学習リモコンといえばIRKitとかeRemoteとかいろいろ出てるけどどれも意外と値段が張る…
IRKitに関してはオープンソースなので回路図やソフトウェアが公開されていて部品を買って組み立てれば多少はお安くなるんだろうけども、結構部品もお高い。

安価なWiFi搭載マイコンである、ESP-WROOM-02を使って学習リモコンを作っている例が何件かあったので調べてみた。
1つはminIRum。IRKitの一部機能を実現しているもの。
作者さんのサイトではHomebridgeでHomeKit互換の学習リモコンとしての使用例が。IRKit互換なのでHomebridgeではIRKit用のプラグインそのまま使えるっぽい?
もう一つはIR Station。こちらはフル機能の学習リモコンで、タイマーなども使える模様。ブラウザから操作するので対応機種選ばなそう。

ということで今回はIR Stationを作ってみることに。
どちらもESP-WROOM-02なのでハードだけ作ってしまえばソフト書き換えでどっちにでもなりそうだし。

ソースコードや回路図はGithubのIR Stationにアップロードしてくださっているのでそちらを利用させていただいた。

とりあえず部品は手持ちのものを利用して作成することに。
前にAtmega328やRaspberry Piで学習リモコンを自作した時の余りを利用した。

ESP-WROOM-02はだいぶ前に購入して、ユニバーサル基板に実装していたものを再利用した。


ケース買ってからLEDの位置を決めようかと思っていたので赤外線LEDの実装適当。
RGB LEDもケースに入れるときかな…

ソフトの方はArduinoから書き込む。
ESP8266の設定はGithubに書いてあるとおりなんだけど、NTPを使って時刻が正常に取得できなかったのでNTPのサーバーの変更を行った。
ntp.cppのIPAddress timeServerのところをNICTのIPアドレスに変更した。

これで正常に時間が設定されるようになった。

ついでにルータからIR Stationのホスト名を取得するとESP_から始まるデフォルトのホスト名になっていたのでホスト名を"IR-Station"に変更してみた。

修正箇所はwifi.cppの57行目あたりにWiFi.biginがあるのでその上に
WiFi.hostname("IR-Station");
と追加した。

プログラムを焼いたらお次はSPIFFSにWebサーバ用のデータを書き込む。
ファイルシステムにデータをアップロードするためにArduinoにプラグインを追加しないといけない。
Arduino ESP8266 filesystem uploader
こちらからツールをダウンロードしてドキュメントの中にあるArduinoフォルダにtoolsというフォルダを作ってESP8266FSフォルダごと突っ込むだけ。

あとはツールのESP8266 Sketch Data Uploadからデータをアップロードするだけ。
マイコンの設定が正常に行われてないとうまく書き込めないので注意。

起動するとIR-StationというSSIDでAPモードで立ち上がるのでパスワード(IR-Station)を入れて192.168.4.1にアクセスするとWiFiの設定ができる。
あとは自宅のWiFiに繋げば完成っぽい。

詳しい使い方は作者さんのページがわかりやすい。

一応ダイキンのエアコンとNECのシーリングライトがうまく動いてるのですごく便利になった。
エアコンのリモコン信号は特殊な物が多いのでエアコンのリモコンを学習できるリモコンなら他の製品も問題なく動きそう。
ESP-WROOM-02ならRaspberry Piみたいに電源切るとき気を使わなくても良いし、低消費電力だし。
後はこれを小型のケースに組み込みたいな

2017年11月18日土曜日

HC-06でRN42のファームウェアを使う

だいぶ前に買ったHC-06っていうBluetoothモジュールがあるんだけど、このモジュールが秋月で売っているMicrochipのRN42というBluetoothモジュールのファームウェアが使えるということなので試してみた。

HC-06もRN42もCSRのBC417っていうチップを搭載してるらしい。
左からHC-06、Vgateに入ってたやつ(形式不明)、Microchip RN42である。
RN42は秋月で1800円だった。

他にもHC-05とかBC-04とかあるみたいだけど、どれもHC-06とハードは同じでソフトが微妙に違うとか?
さらに同じHC-05でもハードが違うやつもあるらしい?
まぁたしかにHC-06とVgateに入ってたやつはICは同じような配置だけど周辺部品が微妙に違う感じが。

RN42は何がいいかというと、HIDプロファイルが使える!
さらにHC-06では使えないマスター(親機)にもなれるし、ボーレートの設定の自由度があがるみたい。
HIDモードはシリアル通信で外部のマイコンから制御しないとだめだけど、ゲームパッドやキーボードになれる模様。

早速書き換え。
書き換え手順はネットで探せば結構出てくるけど、簡単に言うとCSRの書き換えツールでRN42のファームウェアをダンプして、書き換え対象のHC-06とかHC-05からも一応ファームウェアをダンプ、PSKEYもダンプしてからRN42のファームを焼いて基板固有の一部のPSKEYを書き戻すといった感じ。

今回はライターとして前回作ったCSR-SPI-FTDIを使用した。
まずはRN42からファームをダンプ
CSR-SPI-FTDIとは以下のように接続
  SPI_MOSI   → RI
  SPI_CLOCK → RTS
  SPI_MISO   → DSR
  SPI_CSB     → DTR

BlueFlash.exeを起動して
Stop Processorを押してからDumpボタンでファームウェアを保存。
保存が終わったら次にHC-06などの書き換え対象につなぎ替える。
これまたピン配置が違うので面倒だけど…
なんかあってももとに戻せるようにまた同じように
Stop Processorを押してからDump。次にStart Processorを押してからBlueFlashを閉じる。

PSTool.exeを起動して
File→DumpをクリックしてPSKEYをダンプする。
そしたらまたBlueFlash.exeを起動してStop Processorを押してから
Choose FileでRN42からダンプしたファイルを選択してDownloadボタンを押す。
これでRN42のファームウェアがHC-06に書き込まれる。
Start Processorを押してからBlueFlashを終了する。

あとはHC-06基板固有のPSKEYを書き戻す。
先程ダンプしたPSKEY(拡張子がpsr)をテキストエディタなどで開いて

// PSKEY_BDADDR
&0001 = xxxx xxxx xxxx xxxx
// PSKEY_ANA_FTRIM
&01f6 = xxxx
// PSKEY_ANA_FREQ
&01fe = xxxx

のようにこの3つ(6行分)の値だけを残してほかを消去して保存。
PStool.exeを開いてFile→Margeでマージして完成。
これであとはRN42として動くはず。

これで手持ちのHC-06とRN42間での通信もできるな。
ADM3202とか繋げば安価でREX-BT60互換なRS-232C変換アダプタとか作れそう。
ちなみにデバイス名が最初コピー元のRN42と一緒になってしまうので注意。
今回移植したファームウェアは旧版の6.15だった…
最新は6.30らしい?RN42-I/RM630買えばFWが6.30だったぽい…

2017年11月8日水曜日

DuinoFun UHS miniを買ってみた

Arduino用のUSB Host ShieldのArduino Pro mini版のクローンを買ってみた。
Circuits@HomeのUSB host mini r1.0のコピーっぽい?MAX3241Eは3.3V駆動なので、レベル変換がついてないUSB host miniは3.3V駆動のArduino Pro mini用に作られてるっぽい。
結局重ねて使うことも無いと思うしESP32とかでも使ってみたいのでピンヘッダを必要最低限にしてみた。

V_BUSとVCCはパターンカットで切り離して、V_BUSに5V、VCCに3.3Vをわけれ入れられるようにした。
そうしないと3.3Vで動くUSBデバイスしか動かせないし…

これならブレッドボード上でArduino Pro Micro以外でも試せそう。
一応Arduino Pro microで動作確認。

ライブラリはUSB Host Shield Library 2.0を使用した。
とりあえずこの環境での動作は問題なさそうなので今度は別なマイコンでも試してみたいなぁ

2017年11月4日土曜日

recfsusb2nで外付けカードリーダを使ってみる

recfsusb2nはそのままの状態でビルドすると内蔵カードリーダー使うんだけど、このまえPX-BCUDをラズパイで使えるようにしたときにNTTのカードリーダも使えるようにしたので、PT3みたいに4チューナー1枚のカードで行けるようにしたらKTV-FSUSB2側のカードと共用できないかな?とか思ったり。
さらに新しめのWindows用のBondriver_fsusb2nでも内蔵のカードリーダが廃止されていたりしているのでUSBコントローラICの負荷も減ってドロップ減らないかなぁ?

PX-BCUDのセットアップのときに必要なファイルを準備していたので前回CATV対応してrecfsusb2nをビルドしたときのmakefileだけを変更してmakeし直してみた。

とりあえずmakefileを開いてifdef B25の下の
B25_PATH
B25_CLEAN
B25_OBJS_EXT
この3つの行をコメントアウト。
そんでもって
B25_LIBSの行の最後に -larib25を追加するだけ。
ifdef B25
#	B25_PATH = ./arib25
#	B25_CLEAN = clean_b25
	B25_OBJS = B25Decoder.o
#	B25_OBJS_EXT = $(B25_PATH)/arib_std_b25.o $(B25_PATH)/b_cas_card.o $(B25_PATH)/multi2.o $(B25_PATH)/ts_section_parser.o
	PCSC_LDLIBS ?= `pkg-config libpcsclite --libs`
#	B25_LIBS = $(PCSC_LDLIBS) -lm
	B25_LIBS = $(PCSC_LDLIBS) -lm -larib25
endif;
ifdef B25のところだけを抜粋するとこんな感じに編集。
あとは前回makeしたやつが残っていたのでmake cleanしてから
make
sudo make install
で完成。

これで内蔵カードリーダ用に改変されたarib25を使わずに、前回ビルドしたarib25を使うようになるのでPX-BCUDとカードリーダーを共用できた。pcsclite経由でNTTのカードリーダを使うことにより内蔵カードリーダへのアクセス減った分ドロップも減るといいなぁ

あと内蔵カードリーダーのときはBCAS抜けてると録画うまく行かない事があったんだけど(B25のエラー判定で躓く?)外付けカードリーダーにしてからカード入ってない時にB25なしでスムーズに録画してくれるようになった。
バグだったのかな?

2017年11月3日金曜日

Orange Pi PCにArmbianを入れてKernel 4.xを使ってみた

久しぶりにRaspberry Piを引っ張り出してきたんだけど、そういえばOrange Pi PCでも同じことできるんじゃないかということで久しぶりにOrange Pi PCを引っ張り出してきた。
以前はテレビに繋いで使ってたんだけどFireTV Stick2が来てから全然使ってなかったし。

ディストリビューションはArmbianを使ってみることに。Armbianは今のところデフォルトでKernel 3.4系みたいだけど、PX-BCUDはカーネル4.7以降だとカーネルモジュールが組み込まれているようなのでArmbianのNightly Buildに切り替えて、カーネルを入れ替えてみた。

まずはarmbian-configでNightly Buildに切り替える。

sudo  armbian-config

これでSystemの設定から変更することができる。
少し時間がかかる。

古いバージョンを消去する。
sudo aptitude remove ~nlinux-dtb ~nlinux-u-boot ~nlinux-image ~nlinux-headers
sudo aptitude remove ~nlinux-firmware ~narmbian-firmware ~nlinux-$(lsb_release -cs)-root 1 aptitude remove ~nlinux-firmware ~narmbian-firmware ~nlinux-$(lsb_release -cs)-root
(勝手に改行されてるけど2行です…

あとは新しいバージョンのカーネルやヘッダをインストール。

sudo apt-get install linux-image-dev-sun8i linux-dtb-dev-sun8i linux-headers-dev-sun8i
sudo apt-get install linux-u-boot-orangepipc-dev linux-$(lsb_release -cs)-root-dev-orangepipc
sudo apt-get install sunxi-tools swconfig a10disp
sudo reboot

これで再起動後にカーネル4.11.12で起動した。
H3のカーネル4.xはまだ使えないモジュールがあったり不安定だったりするのでまだまだだろうけど、一応Raspberry Pi同様にPX-BCUDを動かすことができた。

ただなんかVLCでhttpストリーミングしてるとOrange Pi PCが落ちるんだよなぁ…
何が悪いんだろ…

2017年10月29日日曜日

PX-BCUDをRaspberry Piで使ってみた。

だいぶ前に買ったUSB接続のBS/CSチューナー、PX-BCUDをいつのまにかLinuxで使えるようにしてくれた人が居たようなのでためしにRaspberry Pi 3 Model Bで試してみた。

さらにRaspbianの最新バージョンだとモジュールが組み込まれているのでUSBに接続するだけで認識するみたい。

こんな感じでモジュールが勝手に読み込まれてた。
PX-BCUDはUSBコントローラとしてeMPIA EM28178を使ってる模様。ちなみにチューナーはSharp QM1D1C0042、復調にはTOSHIBA TC90532XBGが使われているっぽい。

B-CASリーダとして使っていたSCR3310-NTTComもLinux対応だったのでこいつも普通に認識してそうな感じ。

あとは録画ツールの準備。
PX-BCUDではrecpt1の派生であるrecdvbで使えるようにしてくださってる人がいるのでそれを使うことに。
デフォルトではtsの復号化をしてくれないのでB-CASカードでtsを復号化してくれるようにlibarib25も必要。

まずはlibarib25のセットアップ。

カードリーダを使うためのライブラリとcmakeを入れる。

sudo apt-get install cmake libpcsclite-dev

libarib25をダウンロードして解凍

wget https://github.com/stz2012/libarib25/archive/master.zip -O libarib25.zip
unzip libarib25.zip
libarib25をmakeするためのディレクトリに移動してmakeしてinstall

cd libarib25-master
cmake .
make
sudo make install

次にrecdvbをセットアップする
recdvbは派生が色々あるようだけど今回はdogeel版を使用してみた。

recdvbをダウンロードして解凍
wget https://github.com/dogeel/recdvb/archive/master.zip -O recdvb.zip
unzip recdvb.zip

recdvbをlibarib25を有効にしてmakeしてinstall
cd recdvb-master
sudo apt-get install autoconf
chmod 755 autogen.sh
./autogen.sh
./configure --enable-b25
make
sudo make install


これで一通りの準備が整った…ハズ。

カードリーダーにB-CASを差し込んで(例によって差し込む向き注意)テストしてみる。
recdvbにはネットワーク越しでVLCでテレビを視聴できる機能もあるのでこの機能で見れるか試してみた。

recdvb --http 8080 --b25 --strip
これでRaspberry Piのポート8080に接続すると復号化された映像をVLCから再生できる。

クライアントのPCにはVLCをインストール。iPadのVLCアプリでも可能だった。
メディア→ネットワークストリームを開くから
http://ラズパイのIP:8080/チャンネル
という形でアクセスするとテレビを視聴できるはず。
チャンネルはrecdvb -helpで一覧を見ることができる。
例えばラズパイのIPが192.168.0.2でBS11を見たい場合は
http://192.168.0.2:8080/211
をVLCから開けば再生できるはず。

とりあえずLinuxで使えることが確認できた。
Chinachuとかを使えば低消費電力な録画サーバーの構築とかもできそうだなぁ
PX-W3PE4とかも実質USB通信っぽいのでPCIE端子から3.3Vだけ供給してこうやってラズパイで使えるようになるならほしいなぁ

2017年10月27日金曜日

27UD58P-Bを買ってみた

バックライト基板を修理して使っていたサブ液晶がおなくなりになってから数ヶ月、やっぱりサブ液晶がないと不便。(スイッチで遊ぶにしても…

たまたまNTT-XのX-Dayで27UD58P-Bが37800円でセールしていたのでついポチってしまった。
X-Dayだと代引き手数料かかるみたいだけどそれでもかなりお安かったので(生産終了品なんだけどね
箱がでかい。

実際4KディスプレイはTNとAH-IPSあたりを店頭で見比べていたんだけどAH-IPSのほうが好みの発色だったので。TNだと下から覗き込むと色だいぶ変わってしまっていたし。
やっぱり4Kは広い。
結局Windows 10だとデフォルトでDPIが150%になるんだけど、125%にして使ってみてる。

設置したところでスイッチどこにあるのかすげー探したんだけど、結局LGのロゴの下辺りにスティックがあって、それを押すとスイッチになってた。
さらに倒すとOSDが操作できるという。
操作感はなかなかよい。

スタンバイになるとアイコンがばらばらになるという不具合も起こってないし、唯一の欠点はスタンバイ時にLEDが点滅することぐらいかな…
昔LG使ってたときもそういうのあった気がするけどコレが寝てる間に気になる。

まぁAH-IPSの4Kディスプレイとしてはかなり安く導入できたので良しとしよう。

2017年9月30日土曜日

モバイルWi-Fiルーターを買ってみた

iPad miniに格安SIMを入れて使っているんだけど、他のデバイスでWifiを使いたいときにiPadを持ってきていなかったりするのでモバイルWiFiルータを買ってみた。

DMM mobileのSIMを使っているのでDocomoのモバイルWiFiルータが一番手軽に入手できそうということでL-03Eあたりを狙っていたんだけど、たまたまL-02Fの中古がクレードル付きで2000円ぐらいで購入できたのでこちらにしてみた。4バンド対応だし。

L-03Eも中古で2000円ぐらいだったんだけど、ボタンの操作感が微妙というので…
L-02FはタッチパネルのLCDがついてるし、クレードルで有線LANが使えるのが便利そうというのもあったので。
しかもその有線LANがLANとWANモード切り替え対応で、クレードルをLANモードにするとLANポートに繋いだ機器をネットに繋げられるんだけど、WANモードにすると逆に家や滞在先のホテルなどの有線LANを無線化できるっぽい。

というわけで早速DMM mobileで使えるように設定。
iPadはnano SIMで契約しているのに対して、L-02Fはmicro SIMなのでSIM変換アダプタを使用した。

初回起動はスタートアップウィザードが自動的に走るみたい。

言語は日本語と英語が選択可能


APN設定はデフォルトではmopera Uしかはいっていないので新規追加でDMM mobileの情報を追加する。
すべて本体で設定できるのは便利かも。


文字入力はさすがにフリックは使えなかった。


プロファイルを保存したら選択して次へ。
次にWiFiの設定とかあるけどデフォで進んだら繋がった。


設定はとっても簡単だなぁ

なんか不具合があるのでとりあえずアップデートしておいた。

2017年9月4日月曜日

ESP-WROOM-32の簡易開発ボードを買ってみた

ちょっと前にESP-WROOM-32とピッチ変換基板を買っていたんだけど、
PCに繋いでプログラム書き込んだりなんだりするのが面倒なのでシリアル変換アダプタ付きのピッチ変換基板を買ってみた。
ebayでそこそこ安かったやつを選択。450円ぐらいだった。
シリアル変換ICはCP2102を採用してるっぽい。
eBox ESP32-Tのクローンかな?

この開発ボードは両面対応で、ESP32-BitってモジュールとESP-32Sというモジュールに対応している。
ESP-32Sは技適を取得して日本でも売られているESP-WROOM-32とピン配置が互換なのでこのボードで使用できる。ただし裏面に実装。

というわけで早速裏面のESP-32SのところにESP-WROOM-32を実装してみた。
GNDパターンが結構熱を吸収してしまうので結構大変だった。フラックスちょっと塗ってなんとかカバー。

この開発ボードにはLEDが2個ついていて、片方は電源LED、片方はIO2に繋がってた。
microUSBから電源も取れるのですごく便利になったぞ。
Arduino IDEから書き込みするときはIDEの方から書き込みボタンを押すと自動的に書込みモードになるようになっているみたいなので便利。(一部開発ボードは自動書込みのためにコンデンサを追加したりしないとできなかったりするみたい)

ただ一つこのボードで注意しないといけないのは5Vの隣のGNDっていうシルクが間違ってて、実はGNDじゃなくてCMD(GPIO11)につながってる…
この罠に引っかかってちょっと悩んだ…
ちなみにCMDは内蔵SPIフラッシュと接続されてるっぽいので通常は使わない端子っぽい。
CMDってシルク印刷されてるボードもあるようだし、コピーしたときにミスったのかな