ブラウザの JavaScript がオフ(ブロックまたは許可しない)に設定されているため、このページは正常に機能しません。
disklessfun’s Wiki*
[
ホーム
]
一覧
最終更新
バックアップ
ヘルプ
Top
>
aggressive-automation
>
複製
?
ms
aggressive-automation をテンプレートにして作成
これらのキーワードがハイライトされています:
開始行:
(2016-8-25:検索ワードを教えて頂けませんか)
どなたか、このページに辿り着いた際の検索キーワードを教えて下さい。
どんな内容を充実させるべきなのかの参考にしたいです。
本ページの最下部に書き込める場所があります。
----
TITLE:(USB接続の装置をいろいろ自作して)自動化が難しい作業を自動化する
RIGHT:初出 2016-3-15
RIGHT:最終更新 2019-12-24
LEFT:
// USB 抜き挿し 自動
HDMI(ゲーム)レコーダーAvermedia ER130はステータスLEDの色や点滅速度で内部の状態を表示します。
&size(7){無音の動画です(18秒)。};
&flash(https://www.youtube.com/v/tOXdS1X-KDk,480x360);
これを以下に示すように、いろいろ特別な装置を取り付けることで普通は人間でなければおこなえないような複雑な作業(この場合は録画して、USBメモリを抜き挿しして、ファイルをパソコンに取り込む等)を自動化してしまおうというプロジェクトです。
#br
ただし、本ページではAvermedia ER130を題材にしていますが、単なる一例です。赤外線リモコンやBluetoothで操作してUSBメモリに動画や録音やログを溜めるタイプの機器は様々あります。そのような機器なら本ページの手法がかなり応用できるでしょう。その他に
因みに本ページの例の場合、仮にHDCPが解除できて且つパソコンから操作できるチューナーを追加すれば、パソコンにMP4でファイルを貯めることのできるテレビレコーダーを作成することができます。
本ページのやり方とFlashAirやEyefiが一見競合すると見えるかもしれません。本ページの手法の方が圧倒的に速いという特徴もありますが、私としては「機器をきちんと操作する」という特徴を活かしてそれらとは全く異なる分野で応用して頂きたいと考えています
#br
[[&ref(aggressive-automation_1_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=aggressive-automation_1_b.jpg&refer=aggressive-automation]]
&size(7){クリックすると大きな画像で表示されます};
#br
&flash(https://www.youtube.com/v/JsnfsLhQCqU,640x480);
&size(7){環境音のような音があります(64秒)。};
#br
システムは以下の様々なモジュールの組み合わせで構成されます。
#br
#contents
#br
* USB経由でPCから操作できるUSB切替器 [#i9753d3b]
** USB経由でPCから操作できるUSB切替器・リレー基板 [#b6408bbd]
[[&ref(aggressive-automation_2_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=aggressive-automation_2_b.jpg&refer=aggressive-automation]][[&ref(aggressive-automation_3_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=att
&size(7){クリックすると大きな画像で表示されます};
こんなオープンな配線でUSB2.0のスピードが出るのか心配になるでしょう。マスストレージクラスのデバイスのみでの検証ですが、限界のスピードがちゃんと出ますし、もちろんデータ化けも起きていません。
** USB経由でPCから操作できるUSB切替器・リレー基板・回路図 [#z2f0acde]
[[&ref(usb-switcher_relay-board_circt_s.png);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=usb-switcher_relay-board_circt_b.png&refer=aggressive-automation]]
&size(7){クリックすると大きな画像で表示されます};
実体配線と回路図では見た目に少し乖離がありますが、回路図どおりに作成しています。
USB2.0スイッチ専用の[[%%%TC7USB42FT%%%:http://toshiba.semicon-storage.com/info/lookup.jsp?pid=TC7USB42FT&lang=ja®ion=jp]]もありますが、それは入手性が低いし、ユニバーサル基板では電気的なメリットも消えてしまうし、今回の場合は汎用を狙ってVB
#br
''ダウンロード'' &ref(USB_Switcher_circt.zip,nolink);
** USB経由でPCから操作できるUSB切替器・USBインターフェース基板 [#g79c9430]
[[&ref(aggressive-automation_4_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=aggressive-automation_4_b.jpg&refer=aggressive-automation]][[&ref(aggressive-automation_5_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=att
&size(7){クリックすると大きな画像で表示されます。};
-4連のグリーンのLEDは冒頭の全景の写真では薄型のLEDに交換済みです。
-USB経由で命令を受けて、4つのデジタルポートを時間差をつけて順番にONからOFFもしくはOFFからONに切り替えることだけが役目です。
-この作例ではAVRのV-USB基板を採用していますが、単純な役目ですから好みに合わせて適宜変更して下さい。
-この基板は28ピンのATmegaチップを採用し、USB通信にPD2,PD4を使用するV-USBのデフォルトの回路ほぼそのものです。ICSP回路も含めてメッキ線のみで配線したので、今後またV-USB回路を作成する際はこれを踏襲しようと思っています。
** USB経由でPCから操作できるUSB切替器・USBインターフェース基板・ファームウェア [#y9eee97f]
上述のようにこのハードである必然性はあまりないんですが、もちろん一応、現状のファームウェアを公開しておきます。
#br
普通は多くのOSでインボックスドライバで動作させられるHIDデバイスにするところだとは思いますが、どうせ当分Linux限定で使うのだからと、私の好みで今回のファームウェアは[[PowerSwitch:https://www.obdev.at/products/vusb/powerswitch.html]]をベースと
#br
とりあえず修正したファイルだけをアップします。そのうち一纏めにする可能性もあります。
''ダウンロード'' &ref(PowerSwitch.2012-12-08.USB_Switcher.firmware.main.c,nolink);
''ダウンロード'' &ref(PowerSwitch.2012-12-08.USB_Switcher.firmware.usbconfig.h,nolink);
''ダウンロード'' &ref(PowerSwitch.2012-12-08.USB_Switcher.firmware.Makefile,nolink);
ライセンスは[[GPL2:https://www.gnu.org/licenses/old-licenses/gpl-2.0.ja.html]]です。
#br
本来は4つのデジタルポートを時間差をつけて駆動する部分はファームウェア側に実装するべきですが、(試行が簡単だからと)テンポラリーにPC側に実装してしまい、未だそのままになっています。
** USB経由でPCから操作できるUSB切替器・PC側ソフトウェア [#s28a4522]
上述のように、テンポラリーな(動作確認テスト時だけの)つもりでしたが、4つのデジタルポートに時間差をつけて駆動する機能を未だここに持たせてしまっています。
#br
上述のように[[PowerSwitch:https://www.obdev.at/products/vusb/powerswitch.html]]を使用しています。
とりあえず修正したファイルだけをアップします。
''ダウンロード'' &ref(PowerSwitch.2012-12-08.USB_Switcher.commandline.powerSwitch.c,nolink);
ライセンスは[[GPL2:https://www.gnu.org/licenses/old-licenses/gpl-2.0.ja.html]]です。
* USB接続ステータスLED読み取り器 [#r433fca8]
** USB接続ステータスLED読み取り器・基板 [#f21e0366]
[[&ref(aggressive-automation_6_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=aggressive-automation_6_b.jpg&refer=aggressive-automation]]
&size(7){クリックすると大きな画像で表示されます};
中央の大きなLEDは、センサー部が読み取り対象のLEDの殆どを隠してしまうので、その代替となるLEDです。読み取り対象のLEDの色と点滅具合をほぼそのままコピー表示します。
** USB接続ステータスLED読み取り器・回路図 [#d8d46e40]
[[&ref(led-status-reader_circt_s.png);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=led-status-reader_circt_b.png&refer=aggressive-automation]]
&size(7){クリックすると大きな画像で表示されます};
#br
6ピンヘッダの部分は(1)3.3V(2)S11059-02DTのSDA(3)S11059-02DTのSCL(4)GND(5)TPS615コレクタ(6)TPS615エミッタ
です。
#br
''ダウンロード'' &ref(LED_Reader_circt.zip,nolink);
** USB接続ステータスLED読み取り器・センサー部 [#a1bbab5c]
&ref(aggressive-automation_7_s.jpg,nolink);
ベースは秋月で販売されている[[I2C対応デジタルカラーセンサモジュール S11059-02DT:http://akizukidenshi.com/catalog/g/gK-08316/]]です。
基板に孔が開いていますが、ここには明暗検知のみを受け持つフォトトランジスタTPS615を取り付けています。
カラーセンサ受光部とフォトトランジスタとを出来るだけ近づけて設置する必要があるためにこんな構造にしています。
#br
取り付けは当初[[このページ>interlocking_device]]の例のように板で覆おうと考えましたが、面倒なので結局グルーで貼り付けた上で、黒テープを貼った養生テープで光漏れを防ぐという安易な処理に落ち着いています。剥がしたいときに無理なく剥がせるようにグ
** USB接続ステータスLED読み取り器・ファームウェア [#z30b31ec]
当初PIC18F14K50の1チップ構成で試行してみましたが、その構成だと代替LEDの動作に時々どうしても不具合が生じてしまいました。カラーセンサーとのI2C通信に時間をとられすぎることが原因です。なのでカラーセンサーとの通信は8ピンチップPIC12F1822に任せる
#br
''メインチップPIC18F14K50用''
[[Microchip MLA:http://ww1.microchip.com/downloads/en/softwarelibrary/microchip-libraries-for-applications-v2013-06-15-windows-installer.exe]]の「HID - Custom Demos」をベースにしています。
とりあえず修正したファイルだけをアップします。
ご存知の方はご存知だと思いますが、このチップはMLAに含まれるHIDBootloaderを書き込めばライタレスでUSB経由でファームウェアを書き換えることができます。
''ダウンロード'' &ref(microchip_solutions_v2013-06-15.USB.Device-HID-Custom_Demos.Firmware.main(LED_Reader).c,nolink); ''2016-4-17更新(はしてない)''(前回の修正でもやっぱり駄目だったので結局高速点滅時はデバッグ出力しないように修正し、そ
常に115200bpsでデバッグ出力しています。
''ダウンロード'' &ref(microchip_solutions_v2013-06-15.USB.Device-HID-Custom_Demos.Firmware.usb_descriptors(LED_Reader).c,nolink);
#br
ビルドするにはMPLAB C18が必要です。
☆MPLAB C18コンパイラーの最終版 v3.47評価版(無料)がダウンロードできるURL
http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc18-v3.47-windows-eval-installer.exe
☆MPLAB IDE の最終版 v8.92(無料)がダウンロードできるURL
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_92.zip
#br
XC8でなくC18を採用しているのは、現状のMicrochipのXC8用のサンプルコードがUSB通信とユーザ定義の割り込みの両立を許さない形式になっているからです。
#br
''サブチップPIC12F1822用''
こちらはXC8用です。
XC8でS11059-02DTと通信する例は他からは入手できないものかもしれません。
(C18でS11059-02DTと通信するソースも持ってます。要望があれば掲げます)
''ダウンロード'' &ref(12f1822_color_identifier.c,nolink);
(ジャンパをセットされた時のみ9600bpsでデバッグ出力します。)
割り込み機能を使ってないのでハードウェアI2C機能を持ってないPIC12F683に置き換えることもできる筈です(ピン4のプルアップ追加は必要)。
** USB接続ステータスLED読み取り器・PC側ソフトウェア [#r567ec96]
多分他では採ってない手法だと思うんですが、Qtのコマンドラインアプリです。コマンドラインアプリ化するのはシェルスクリプトから使いやすくする為です。
$ ./led_reader
で{None,Slow,Fast}のいずれかと{Blank,Green,Red,Orange}のいずれかを組み合わせた文字列を戻します。exitcodeでなく文字列で戻すのもシェルスクリプトから使いやすくする為です。
#br
具体的なところを少し示すと、ER130では録画終了時「FastRed」が暫く続くので、USBメモリ(もしくはHDD等)を取り外す命令を送るには、「FastRed」が「NoneGreen」になるまで待つ必要があります。また取り外し命令を送った後、実際に取り外すには「SlowGreen」
#br
Microchip MLAにはQtのGUIアプリサンプルがあるので、それをベースにしています。修正箇所を辿っていくと多分理由がわかりにくい修正があるかと思いますが、そこは多分CUI化に合わせ、1回の問い合わせで確実に答えを戻すように修正した箇所だと思います。
#br
Linux(x64 Linux, ラズパイLinux)でしか動作確認をとっていませんが、QtなのでWindowsやMacでも動作させることは難しくないと思います。HIDクラスなのでドライバの問題はありません。
#br
''ダウンロード'' &ref(LED_Reader_Client.zip,nolink);
私が試した限りではHIDPAIの方はLinuxではqmakeで作成されたMakefileに手動で-I/usr/include/libusb-1.0を追加する必要があり、LED_Readerの方はラズパイLinuxでは-lrtを手動で追加する必要がありました。他のOSでも適宜必要な修正を加えて下さい。あとラズパ
* USB接続赤外線リモコン [#m4f788fc]
写真に写っているUSB接続赤外線リモコンのハードは自作したものですが、事実上、[[%%%これ%%%:http://www.amazon.co.jp/Bit-Trade-One-AD00020-%E8%B5%A4%E5%A4%96%E7%B7%9A%E3%83%AA%E3%83%A2%E3%82%B3%E3%83%B3/dp/B00AXVH1P8/]]から受信(学習)機能を省いた
[[%%%Low Pin Count USB Development Kit%%%:http://ww1.microchip.com/downloads/en/DeviceDoc/41356B.pdf]]とも互換性があります。これを適当に簡略化して赤外線LEDを追加しただけとも言えます。
#br
ファームウェアは別サイトに私がアップしてある[[%%%これ%%%:http://a-desk.jp/modules/mydownloads/singlefile.php?cid=3&lid=81]]です。
この中のシリアルインターフェース版ファームウェアをPIDだけ変更して使っています。
このファームウェアをリビルドするには上述と同じくMPLAB C18が必要です。
#br
シリアルインターフェースにしているのはあくまで私の好みで、デフォルトのHIDインターフェースの方が駄目なわけではありません。むしろラズベリーパイLinuxなんかの場合はHIDインターフェースの方が必須です。加えて言えばシリアルインターフェースには接続
#br
シリアルインターフェースなのでインターフェースを間違わないようにudevでリンクを張っています。udevルールの定義ファイルの中身はこんな感じです。
ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="000b", ATTRS{product}=="Serial-RemoconServant", MODE="0660", GROUP="owner", SYMLINK+="Serial-ER130-BtoUsbIrRemocon"
#br
私は既に互換性のある学習機能を持つデバイスを他に持っているので今回学習機能を省きましたが、皆さんはそうじゃないと思うので学習機能のもつデバイスを自作するか購入して下さい。ただし私の手元に持っているデバイスについては私が既に学習済みなので新た
''ダウンロード'' &ref(er130-remocon.sh,nolink); ER130を赤外線命令で操作するスクリプト
#br
他のページにTVチューナーTSTB-R50を赤外線で操作するスクリプトを掲載しているのでそのリンクも載せておきます。
''ダウンロード'' [[channel-setSerial.sh:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=channel-setSerial.sh&refer=tstb-r50]]
これらのスクリプトにはビット・トレード・ワンのUSB接続赤外線リモコンのフォーマットで、学習結果を内包しています。
* 上述の機器群を制御するスクリプト群 [#h50f2d53]
''ダウンロード'' [[etc_init.d_devmon:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=etc_init.d_devmon&refer=download-radio]] 自動マウント時に任意のスクリプトを呼び出すdevmonデーモンの起動用ファイル
''ダウンロード'' &ref(etc_conf.d_devmon.sample2,nolink); devmonデーモンの設定ファイル
''ダウンロード'' &ref(auto-ER130-move.sh,nolink); devmonデーモンから呼び出されるスクリプト (2019-12-24更新)
''ダウンロード'' &ref(ER130-move.sh,nolink); auto…から呼び出される子スクリプト (2019-12-24更新)
''ダウンロード'' &ref(er130-ctl.sh,nolink); 内部でステータスLEDを読み取ったり、赤外線リモコン命令を送信したりしてER130を操作するスクリプト(直前の処理の時間が可変で、ステータスLEDを読み取る必要があるケースで使用する) (2019-12-24更新)
#br
''2019年12月24日追加''
''ダウンロード'' &ref(after-dubbing.sh,nolink); TSTB-R50に録画済みの番組をER130を介してPC側にダビングするスクリプト
''ダウンロード'' &ref(er130-interval-shot.sh,nolink); 15秒ごとに番組をの画像だけをキャプチャーするスクリプト
''ダウンロード'' &ref(dubb-stop.sh,nolink); after-dubbing.sh --stoponlyオプションのラッパー
''ダウンロード'' &ref(er130-restore.sh,nolink); auto-ER130-move.shののPC側アンマウント処理を切り出したもの
#br
ここに掲げたスクリプトと、USB経由でPCから操作できるUSB切替器のコマンドと、USB接続ステータスLED読み取り器のコマンドを駆使すると最終的にアプリケーションになります。
#br
簡単な、仮定に基づく具体例
ここでの仮定は「もしHDCP解除機能を持ったHDMIスプリッターをもっていたら」ということです。
さらにTVチューナーを追加すると原始的なTVレコーダーが構築できることになります。
たとえばcronに以下のように登録すると定期的な番組録画がおこなえます。
# 報道ステーション(9時54分開始です)
53 21 * * 1-5 /home/owner/bin/prepare-BStv.sh G 6 > /dev/null 2>&1
53 21 * * 1-5 sleep 53.3;/home/owner/bin/er130-ctl.sh rec_on
06 23 * * 1-5 export PATH=$PATH:/home/owner/bin;sleep 0.8; (実際には改行しない)
er130-ctl.sh rec_off && er130-ctl.sh menu && sleep 4 && (実際には改行しない)
er130-remocon.sh f1 && er130-ctl.sh usb_switch_port2
3行目の既述は、録画を終了し、USBメモリ(HDD)を取り外し、USB切替器のポートを切り替える処理です。この後は上掲のauto-ER130-move.shが、再びUSB切替器のポートを切り替えるまでの処理をおこないます。
#br
この例では過度に作りこまず、生のコマンドで用が足りるところは生のコマンドのまま既述し、ステータスLEDの読み取り処理は必要な箇所のみに留めています。
#br
上記のprepare-BStv.shという名のスクリプトはここではTVチューナーを操作するスクリプトです。
ここにアップしておきます。
''ダウンロード'' &ref(prepare-BStv.sh,nolink);
この中で呼び出しているchannel-setSerial.shは他ページにアップしていますのでそのリンクも載せておきます。
''ダウンロード'' [[channel-setSerial.sh:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=channel-setSerial.sh&refer=tstb-r50]]
#br
これをもっと本格的な??レコーダーに仕立てるなら、epgrec UNAというソフトを、ローレベルな部分を自分で修正した上で導入すべきなのですが、今のところその気はありません。
#br
* ご要望、ご意見、質問を下のフォームにどうぞ&br;(でもここより、[[掲示板>board]]や[[書き込みフォーム>form]]のページに書いて頂いた方が気づき易いと思います。) [#q63dd288]
#areaedit(nofreeze,noauth,btn:[修正(書き間違った場合にご利用下さい)])
- キーボード切替機 自作 -- &new{2016-09-05 (月) 19:32:54};
- 「usb hid 自作」で見つかりました -- &new{2017-05-31 (水) 08:29:44};
- 「flashair 学習リモコン」で見つかりました -- &new{2017-08-22 (火) 22:40:55};
- USBセレクター リレー -- &new{2018-04-13 (金) 07:37:16};
- usb リレー 自作 でたどりつきました -- [[検索君]] &new{2018-10-31 (水) 11:00:53};
- usb リレー制御 自作 です。ACのコントロースのため -- [[ドンゴロス]] &new{2019-10-06 (日) 15:14:54};
#comment
#areaedit(end)
終了行:
(2016-8-25:検索ワードを教えて頂けませんか)
どなたか、このページに辿り着いた際の検索キーワードを教えて下さい。
どんな内容を充実させるべきなのかの参考にしたいです。
本ページの最下部に書き込める場所があります。
----
TITLE:(USB接続の装置をいろいろ自作して)自動化が難しい作業を自動化する
RIGHT:初出 2016-3-15
RIGHT:最終更新 2019-12-24
LEFT:
// USB 抜き挿し 自動
HDMI(ゲーム)レコーダーAvermedia ER130はステータスLEDの色や点滅速度で内部の状態を表示します。
&size(7){無音の動画です(18秒)。};
&flash(https://www.youtube.com/v/tOXdS1X-KDk,480x360);
これを以下に示すように、いろいろ特別な装置を取り付けることで普通は人間でなければおこなえないような複雑な作業(この場合は録画して、USBメモリを抜き挿しして、ファイルをパソコンに取り込む等)を自動化してしまおうというプロジェクトです。
#br
ただし、本ページではAvermedia ER130を題材にしていますが、単なる一例です。赤外線リモコンやBluetoothで操作してUSBメモリに動画や録音やログを溜めるタイプの機器は様々あります。そのような機器なら本ページの手法がかなり応用できるでしょう。その他に
因みに本ページの例の場合、仮にHDCPが解除できて且つパソコンから操作できるチューナーを追加すれば、パソコンにMP4でファイルを貯めることのできるテレビレコーダーを作成することができます。
本ページのやり方とFlashAirやEyefiが一見競合すると見えるかもしれません。本ページの手法の方が圧倒的に速いという特徴もありますが、私としては「機器をきちんと操作する」という特徴を活かしてそれらとは全く異なる分野で応用して頂きたいと考えています
#br
[[&ref(aggressive-automation_1_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=aggressive-automation_1_b.jpg&refer=aggressive-automation]]
&size(7){クリックすると大きな画像で表示されます};
#br
&flash(https://www.youtube.com/v/JsnfsLhQCqU,640x480);
&size(7){環境音のような音があります(64秒)。};
#br
システムは以下の様々なモジュールの組み合わせで構成されます。
#br
#contents
#br
* USB経由でPCから操作できるUSB切替器 [#i9753d3b]
** USB経由でPCから操作できるUSB切替器・リレー基板 [#b6408bbd]
[[&ref(aggressive-automation_2_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=aggressive-automation_2_b.jpg&refer=aggressive-automation]][[&ref(aggressive-automation_3_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=att
&size(7){クリックすると大きな画像で表示されます};
こんなオープンな配線でUSB2.0のスピードが出るのか心配になるでしょう。マスストレージクラスのデバイスのみでの検証ですが、限界のスピードがちゃんと出ますし、もちろんデータ化けも起きていません。
** USB経由でPCから操作できるUSB切替器・リレー基板・回路図 [#z2f0acde]
[[&ref(usb-switcher_relay-board_circt_s.png);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=usb-switcher_relay-board_circt_b.png&refer=aggressive-automation]]
&size(7){クリックすると大きな画像で表示されます};
実体配線と回路図では見た目に少し乖離がありますが、回路図どおりに作成しています。
USB2.0スイッチ専用の[[%%%TC7USB42FT%%%:http://toshiba.semicon-storage.com/info/lookup.jsp?pid=TC7USB42FT&lang=ja®ion=jp]]もありますが、それは入手性が低いし、ユニバーサル基板では電気的なメリットも消えてしまうし、今回の場合は汎用を狙ってVB
#br
''ダウンロード'' &ref(USB_Switcher_circt.zip,nolink);
** USB経由でPCから操作できるUSB切替器・USBインターフェース基板 [#g79c9430]
[[&ref(aggressive-automation_4_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=aggressive-automation_4_b.jpg&refer=aggressive-automation]][[&ref(aggressive-automation_5_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=att
&size(7){クリックすると大きな画像で表示されます。};
-4連のグリーンのLEDは冒頭の全景の写真では薄型のLEDに交換済みです。
-USB経由で命令を受けて、4つのデジタルポートを時間差をつけて順番にONからOFFもしくはOFFからONに切り替えることだけが役目です。
-この作例ではAVRのV-USB基板を採用していますが、単純な役目ですから好みに合わせて適宜変更して下さい。
-この基板は28ピンのATmegaチップを採用し、USB通信にPD2,PD4を使用するV-USBのデフォルトの回路ほぼそのものです。ICSP回路も含めてメッキ線のみで配線したので、今後またV-USB回路を作成する際はこれを踏襲しようと思っています。
** USB経由でPCから操作できるUSB切替器・USBインターフェース基板・ファームウェア [#y9eee97f]
上述のようにこのハードである必然性はあまりないんですが、もちろん一応、現状のファームウェアを公開しておきます。
#br
普通は多くのOSでインボックスドライバで動作させられるHIDデバイスにするところだとは思いますが、どうせ当分Linux限定で使うのだからと、私の好みで今回のファームウェアは[[PowerSwitch:https://www.obdev.at/products/vusb/powerswitch.html]]をベースと
#br
とりあえず修正したファイルだけをアップします。そのうち一纏めにする可能性もあります。
''ダウンロード'' &ref(PowerSwitch.2012-12-08.USB_Switcher.firmware.main.c,nolink);
''ダウンロード'' &ref(PowerSwitch.2012-12-08.USB_Switcher.firmware.usbconfig.h,nolink);
''ダウンロード'' &ref(PowerSwitch.2012-12-08.USB_Switcher.firmware.Makefile,nolink);
ライセンスは[[GPL2:https://www.gnu.org/licenses/old-licenses/gpl-2.0.ja.html]]です。
#br
本来は4つのデジタルポートを時間差をつけて駆動する部分はファームウェア側に実装するべきですが、(試行が簡単だからと)テンポラリーにPC側に実装してしまい、未だそのままになっています。
** USB経由でPCから操作できるUSB切替器・PC側ソフトウェア [#s28a4522]
上述のように、テンポラリーな(動作確認テスト時だけの)つもりでしたが、4つのデジタルポートに時間差をつけて駆動する機能を未だここに持たせてしまっています。
#br
上述のように[[PowerSwitch:https://www.obdev.at/products/vusb/powerswitch.html]]を使用しています。
とりあえず修正したファイルだけをアップします。
''ダウンロード'' &ref(PowerSwitch.2012-12-08.USB_Switcher.commandline.powerSwitch.c,nolink);
ライセンスは[[GPL2:https://www.gnu.org/licenses/old-licenses/gpl-2.0.ja.html]]です。
* USB接続ステータスLED読み取り器 [#r433fca8]
** USB接続ステータスLED読み取り器・基板 [#f21e0366]
[[&ref(aggressive-automation_6_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=aggressive-automation_6_b.jpg&refer=aggressive-automation]]
&size(7){クリックすると大きな画像で表示されます};
中央の大きなLEDは、センサー部が読み取り対象のLEDの殆どを隠してしまうので、その代替となるLEDです。読み取り対象のLEDの色と点滅具合をほぼそのままコピー表示します。
** USB接続ステータスLED読み取り器・回路図 [#d8d46e40]
[[&ref(led-status-reader_circt_s.png);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=led-status-reader_circt_b.png&refer=aggressive-automation]]
&size(7){クリックすると大きな画像で表示されます};
#br
6ピンヘッダの部分は(1)3.3V(2)S11059-02DTのSDA(3)S11059-02DTのSCL(4)GND(5)TPS615コレクタ(6)TPS615エミッタ
です。
#br
''ダウンロード'' &ref(LED_Reader_circt.zip,nolink);
** USB接続ステータスLED読み取り器・センサー部 [#a1bbab5c]
&ref(aggressive-automation_7_s.jpg,nolink);
ベースは秋月で販売されている[[I2C対応デジタルカラーセンサモジュール S11059-02DT:http://akizukidenshi.com/catalog/g/gK-08316/]]です。
基板に孔が開いていますが、ここには明暗検知のみを受け持つフォトトランジスタTPS615を取り付けています。
カラーセンサ受光部とフォトトランジスタとを出来るだけ近づけて設置する必要があるためにこんな構造にしています。
#br
取り付けは当初[[このページ>interlocking_device]]の例のように板で覆おうと考えましたが、面倒なので結局グルーで貼り付けた上で、黒テープを貼った養生テープで光漏れを防ぐという安易な処理に落ち着いています。剥がしたいときに無理なく剥がせるようにグ
** USB接続ステータスLED読み取り器・ファームウェア [#z30b31ec]
当初PIC18F14K50の1チップ構成で試行してみましたが、その構成だと代替LEDの動作に時々どうしても不具合が生じてしまいました。カラーセンサーとのI2C通信に時間をとられすぎることが原因です。なのでカラーセンサーとの通信は8ピンチップPIC12F1822に任せる
#br
''メインチップPIC18F14K50用''
[[Microchip MLA:http://ww1.microchip.com/downloads/en/softwarelibrary/microchip-libraries-for-applications-v2013-06-15-windows-installer.exe]]の「HID - Custom Demos」をベースにしています。
とりあえず修正したファイルだけをアップします。
ご存知の方はご存知だと思いますが、このチップはMLAに含まれるHIDBootloaderを書き込めばライタレスでUSB経由でファームウェアを書き換えることができます。
''ダウンロード'' &ref(microchip_solutions_v2013-06-15.USB.Device-HID-Custom_Demos.Firmware.main(LED_Reader).c,nolink); ''2016-4-17更新(はしてない)''(前回の修正でもやっぱり駄目だったので結局高速点滅時はデバッグ出力しないように修正し、そ
常に115200bpsでデバッグ出力しています。
''ダウンロード'' &ref(microchip_solutions_v2013-06-15.USB.Device-HID-Custom_Demos.Firmware.usb_descriptors(LED_Reader).c,nolink);
#br
ビルドするにはMPLAB C18が必要です。
☆MPLAB C18コンパイラーの最終版 v3.47評価版(無料)がダウンロードできるURL
http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc18-v3.47-windows-eval-installer.exe
☆MPLAB IDE の最終版 v8.92(無料)がダウンロードできるURL
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_92.zip
#br
XC8でなくC18を採用しているのは、現状のMicrochipのXC8用のサンプルコードがUSB通信とユーザ定義の割り込みの両立を許さない形式になっているからです。
#br
''サブチップPIC12F1822用''
こちらはXC8用です。
XC8でS11059-02DTと通信する例は他からは入手できないものかもしれません。
(C18でS11059-02DTと通信するソースも持ってます。要望があれば掲げます)
''ダウンロード'' &ref(12f1822_color_identifier.c,nolink);
(ジャンパをセットされた時のみ9600bpsでデバッグ出力します。)
割り込み機能を使ってないのでハードウェアI2C機能を持ってないPIC12F683に置き換えることもできる筈です(ピン4のプルアップ追加は必要)。
** USB接続ステータスLED読み取り器・PC側ソフトウェア [#r567ec96]
多分他では採ってない手法だと思うんですが、Qtのコマンドラインアプリです。コマンドラインアプリ化するのはシェルスクリプトから使いやすくする為です。
$ ./led_reader
で{None,Slow,Fast}のいずれかと{Blank,Green,Red,Orange}のいずれかを組み合わせた文字列を戻します。exitcodeでなく文字列で戻すのもシェルスクリプトから使いやすくする為です。
#br
具体的なところを少し示すと、ER130では録画終了時「FastRed」が暫く続くので、USBメモリ(もしくはHDD等)を取り外す命令を送るには、「FastRed」が「NoneGreen」になるまで待つ必要があります。また取り外し命令を送った後、実際に取り外すには「SlowGreen」
#br
Microchip MLAにはQtのGUIアプリサンプルがあるので、それをベースにしています。修正箇所を辿っていくと多分理由がわかりにくい修正があるかと思いますが、そこは多分CUI化に合わせ、1回の問い合わせで確実に答えを戻すように修正した箇所だと思います。
#br
Linux(x64 Linux, ラズパイLinux)でしか動作確認をとっていませんが、QtなのでWindowsやMacでも動作させることは難しくないと思います。HIDクラスなのでドライバの問題はありません。
#br
''ダウンロード'' &ref(LED_Reader_Client.zip,nolink);
私が試した限りではHIDPAIの方はLinuxではqmakeで作成されたMakefileに手動で-I/usr/include/libusb-1.0を追加する必要があり、LED_Readerの方はラズパイLinuxでは-lrtを手動で追加する必要がありました。他のOSでも適宜必要な修正を加えて下さい。あとラズパ
* USB接続赤外線リモコン [#m4f788fc]
写真に写っているUSB接続赤外線リモコンのハードは自作したものですが、事実上、[[%%%これ%%%:http://www.amazon.co.jp/Bit-Trade-One-AD00020-%E8%B5%A4%E5%A4%96%E7%B7%9A%E3%83%AA%E3%83%A2%E3%82%B3%E3%83%B3/dp/B00AXVH1P8/]]から受信(学習)機能を省いた
[[%%%Low Pin Count USB Development Kit%%%:http://ww1.microchip.com/downloads/en/DeviceDoc/41356B.pdf]]とも互換性があります。これを適当に簡略化して赤外線LEDを追加しただけとも言えます。
#br
ファームウェアは別サイトに私がアップしてある[[%%%これ%%%:http://a-desk.jp/modules/mydownloads/singlefile.php?cid=3&lid=81]]です。
この中のシリアルインターフェース版ファームウェアをPIDだけ変更して使っています。
このファームウェアをリビルドするには上述と同じくMPLAB C18が必要です。
#br
シリアルインターフェースにしているのはあくまで私の好みで、デフォルトのHIDインターフェースの方が駄目なわけではありません。むしろラズベリーパイLinuxなんかの場合はHIDインターフェースの方が必須です。加えて言えばシリアルインターフェースには接続
#br
シリアルインターフェースなのでインターフェースを間違わないようにudevでリンクを張っています。udevルールの定義ファイルの中身はこんな感じです。
ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="000b", ATTRS{product}=="Serial-RemoconServant", MODE="0660", GROUP="owner", SYMLINK+="Serial-ER130-BtoUsbIrRemocon"
#br
私は既に互換性のある学習機能を持つデバイスを他に持っているので今回学習機能を省きましたが、皆さんはそうじゃないと思うので学習機能のもつデバイスを自作するか購入して下さい。ただし私の手元に持っているデバイスについては私が既に学習済みなので新た
''ダウンロード'' &ref(er130-remocon.sh,nolink); ER130を赤外線命令で操作するスクリプト
#br
他のページにTVチューナーTSTB-R50を赤外線で操作するスクリプトを掲載しているのでそのリンクも載せておきます。
''ダウンロード'' [[channel-setSerial.sh:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=channel-setSerial.sh&refer=tstb-r50]]
これらのスクリプトにはビット・トレード・ワンのUSB接続赤外線リモコンのフォーマットで、学習結果を内包しています。
* 上述の機器群を制御するスクリプト群 [#h50f2d53]
''ダウンロード'' [[etc_init.d_devmon:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=etc_init.d_devmon&refer=download-radio]] 自動マウント時に任意のスクリプトを呼び出すdevmonデーモンの起動用ファイル
''ダウンロード'' &ref(etc_conf.d_devmon.sample2,nolink); devmonデーモンの設定ファイル
''ダウンロード'' &ref(auto-ER130-move.sh,nolink); devmonデーモンから呼び出されるスクリプト (2019-12-24更新)
''ダウンロード'' &ref(ER130-move.sh,nolink); auto…から呼び出される子スクリプト (2019-12-24更新)
''ダウンロード'' &ref(er130-ctl.sh,nolink); 内部でステータスLEDを読み取ったり、赤外線リモコン命令を送信したりしてER130を操作するスクリプト(直前の処理の時間が可変で、ステータスLEDを読み取る必要があるケースで使用する) (2019-12-24更新)
#br
''2019年12月24日追加''
''ダウンロード'' &ref(after-dubbing.sh,nolink); TSTB-R50に録画済みの番組をER130を介してPC側にダビングするスクリプト
''ダウンロード'' &ref(er130-interval-shot.sh,nolink); 15秒ごとに番組をの画像だけをキャプチャーするスクリプト
''ダウンロード'' &ref(dubb-stop.sh,nolink); after-dubbing.sh --stoponlyオプションのラッパー
''ダウンロード'' &ref(er130-restore.sh,nolink); auto-ER130-move.shののPC側アンマウント処理を切り出したもの
#br
ここに掲げたスクリプトと、USB経由でPCから操作できるUSB切替器のコマンドと、USB接続ステータスLED読み取り器のコマンドを駆使すると最終的にアプリケーションになります。
#br
簡単な、仮定に基づく具体例
ここでの仮定は「もしHDCP解除機能を持ったHDMIスプリッターをもっていたら」ということです。
さらにTVチューナーを追加すると原始的なTVレコーダーが構築できることになります。
たとえばcronに以下のように登録すると定期的な番組録画がおこなえます。
# 報道ステーション(9時54分開始です)
53 21 * * 1-5 /home/owner/bin/prepare-BStv.sh G 6 > /dev/null 2>&1
53 21 * * 1-5 sleep 53.3;/home/owner/bin/er130-ctl.sh rec_on
06 23 * * 1-5 export PATH=$PATH:/home/owner/bin;sleep 0.8; (実際には改行しない)
er130-ctl.sh rec_off && er130-ctl.sh menu && sleep 4 && (実際には改行しない)
er130-remocon.sh f1 && er130-ctl.sh usb_switch_port2
3行目の既述は、録画を終了し、USBメモリ(HDD)を取り外し、USB切替器のポートを切り替える処理です。この後は上掲のauto-ER130-move.shが、再びUSB切替器のポートを切り替えるまでの処理をおこないます。
#br
この例では過度に作りこまず、生のコマンドで用が足りるところは生のコマンドのまま既述し、ステータスLEDの読み取り処理は必要な箇所のみに留めています。
#br
上記のprepare-BStv.shという名のスクリプトはここではTVチューナーを操作するスクリプトです。
ここにアップしておきます。
''ダウンロード'' &ref(prepare-BStv.sh,nolink);
この中で呼び出しているchannel-setSerial.shは他ページにアップしていますのでそのリンクも載せておきます。
''ダウンロード'' [[channel-setSerial.sh:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=channel-setSerial.sh&refer=tstb-r50]]
#br
これをもっと本格的な??レコーダーに仕立てるなら、epgrec UNAというソフトを、ローレベルな部分を自分で修正した上で導入すべきなのですが、今のところその気はありません。
#br
* ご要望、ご意見、質問を下のフォームにどうぞ&br;(でもここより、[[掲示板>board]]や[[書き込みフォーム>form]]のページに書いて頂いた方が気づき易いと思います。) [#q63dd288]
#areaedit(nofreeze,noauth,btn:[修正(書き間違った場合にご利用下さい)])
- キーボード切替機 自作 -- &new{2016-09-05 (月) 19:32:54};
- 「usb hid 自作」で見つかりました -- &new{2017-05-31 (水) 08:29:44};
- 「flashair 学習リモコン」で見つかりました -- &new{2017-08-22 (火) 22:40:55};
- USBセレクター リレー -- &new{2018-04-13 (金) 07:37:16};
- usb リレー 自作 でたどりつきました -- [[検索君]] &new{2018-10-31 (水) 11:00:53};
- usb リレー制御 自作 です。ACのコントロースのため -- [[ドンゴロス]] &new{2019-10-06 (日) 15:14:54};
#comment
#areaedit(end)
ページ名: