カテゴリ
リンク

当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内

情報セキュリティおよび個人情報の取り扱いについて


コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。

■lcdproc をリモコンからコントロールする
  lcdproc で利用したくなるボタンの数は意外と多いものです。液晶の横にスイッチを並べたり、で きるだけスイッチを減らす工夫も楽しいのですが、ここではリモコンを利用することにしてみました 。液晶より大きなリモコンになってしまいましたが、便利になりました。


ATV-561.jpg

■ サーバ側で占有するキー
  /etc/lcdproc/LCDd.conf を読むとわかるのですが、LCDd ではサーバ側で表示の切り替えにつかうためのキーが割当てられます。一つは、ToggleRotateKey です。スクリーンの表示を ROTATE (自動で切り替わっていく)と HOLD (あるスクリーンを表示した状態に保つ) の間で切り替えます。一つは PrevScreenKey です。スクリーンを切り替えるためのキーです。もう一つは [menu] セクション で指定する MenuKey です。このキーはメニュー表示に使います。  ほかに、NextScreenKey, ScrollUpKey, SrollDownKey が指定できます。これらの五つのキーに割り当てると、そのキーはクライアント側で使うことはできません。[menu]セクションで使うことはできるようです。
キーの名前 排他/共有 サンプル・ファイルでの設定例 ToggleRotateKey 排他 Enter PrevScreenKey 排他 Left NextScreenKey 排他 Right ScrollUpKey 排他 (Up, コメントアウトされている) ScrollDownKey 排他 (Down, コメントアウトされている)

[server]セクションで指定するキー

■ サーバ側で使用するがクライアントで共用できるキー
  ほかには、[menu]セクションで指定する EnterKey, UpKey, DownKey, LeftKey, RightKey があります。これらのキーに設定しても、メニュー表示時にしか使われないので、ほかのクライアントと共有できるキーです。
キーの名前 排他/共有 サンプル・ファイルでの設定例 MenuKey 排他 Escape EnterKey 共有 Enter UpKey 共有 Up DownKey 共有 Down LeftKey 共有 (Left, コメントアウトされている) RightKey 共有 (Right, コメントアウトされている)

[menu]セクションで指定するキー

■ クライアントで -exclusive を指定するキー
  クライアント側(たとえばlcd-stuff)で、排他的利用 (-exclusive 属性)を指定したキーは、ほかのクライアントと共有できません。また、すでに使われているキーは排他利用が宣言でききないので、複数のクライアント(サーバのメニュー機能を含む)でキーを共有するときは注意します。  排他利用をするメリットは、画面表示に関わらずクライアントにキー操作が伝えられることです。 そこで音楽の再生・停止など、表示に関係なく、すぐに反応して欲しいもので利用すると便利です。  ここで紹介したパッチを当てた lcd-stuff では、lcd-stuff.conf の [mpd] セクションで menukey=1 としたとき、Play, Next, Prev, Stop, Pause が排他キーになります。それぞれ、Music Player Daemon (MPD) の再生、次曲、前曲、停止、一時停止の操作用のキーです。

■最小限のキーの割当て
  最小限のキーを割り当てる例としては、[server]セクションで、
ToggleRotateKey=Enter PrevScreenKey=Down
 [menu]セクションで、
MenuKey=Escape EnterKey=Enter DownKey=Down
とすると、最低の三つのキーで済むようです。ただし、クライアントで利用できるキーはありません。

■lcdproc 用にリモコンを用意する
 液晶の横に必要なだけスイッチを並べてもよいのですが、結構な数になり大変です。そこで、メニ ュー操作用の上、下、左、右、決定ボタンがあり、再生や停止ボタンもついている、ハードディスク ・レコーダなどを操作できる市販のリモコンを lcdproc 専用に用意することにしました。  用意したのは、オーディオテクニカの ATV-561 です。リモコンのコードは、パナソニックのテレビ (0112, リモコンの設定番号) と DVD レコーダ (0118) にしました。手元にない機器用のコードを利 用するので、学習型は必要はありません。

■ボタンの割当てを考える
  できるだけ直感的になるように考えて次のように割り当てました。


buttons.jpg

 サーバの画面切り替えには、画面表示ボタン(Enter)、チャネル+(Right)、チャネル-(Left) を 占有で割り当てることにしました。
ToggleRotateKey=Enter PrevScreenKey=Left NextScreenKey=Right

LCDd.conf の [server] セクション

 サーバのメニュー用には、メニュー・ボタン(Escape)を占有で割り当て、中央の上(Up)、下(Down)、 左(Left2)、右(Right2)、決定(Center)を共有で割り当てました。
MenuKey=Escape EnterKey=Center UpKey=Up DownKey=Down LeftKey=Left2 RightKey=Right2

LCDd.conf の [menu]セクション

 lcd-stuff を通した Music Player Daemon (MPD) の制御用に、再生(Play)、巻戻し(Prev), 早送 り(Next), 停止(Stop), 一時停止(Pause) を排他的に割り当てました。それぞれ、MPD の相当するコ ントロールを、画面表示に関わらず行えます。

■server/drivers/kurors.c の用意
  上記のように、リモコン・コードに対して、キー文字列が割り当てられるよう、lcdproc の server/drivers/kurors.c へは以下のように書いてあります。
/* Panasonic DVD */ 
/* Used from lcdproc itself */ 
{"010000000000010000001101000000000010110000100001", "Right"}, /* Channel Down */ 
{"010000000000010000001101000000001010110010100001", "Left"}, /* Channel Up */ 
{"010000000000010000001101000000001101100111010100", "Escape"}, /* menu */ 
{"010000000000010000001101000000001111101011110111", "Enter"},  /* Gamen-Hyoji */ 
/* Shared keys */ 
{"010000000000010000001101000000001010000110101100", "Up"},    /* Up key */ 
{"010000000000010000001101000000000110000101101100", "Down"},  /* Down key */ 
{"010000000000010000001101000000001110000111101100", "Left2"}, /* Left key */ 
{"010000000000010000001101000000000001000100011100", "Right2"}, /* Right key */ 
{"010000000000010000001101000000000100000101001100", "Center"}, /* Center key */ 
{"010000000000010000001101000000001000000110001100", "Return"}, /* Return key */ 
{"010000000000010000001101000000001110101011100111", "Function"}, /* Function key */ 
/* Exclusive for Music Player Daemon (MPD) control by lcd-stuff */ 
{"010000000000010000001101000000000000000000001101", "Stop"}, /* Stop */ 
{"010000000000010000001101000000000101000001011101", "Play"}, /* Play */ 
{"010000000000010000001101000000001010000010101101", "Next"}, /* >> */ 
{"010000000000010000001101000000000010000000101101", "Prev"}, /* << */ 
{"010000000000010000001101000000000110000001101101", "Pause"}, /* Pause */

■工作しよう
  ちょっと秋月グラフィック液晶を改造してみました。一つは USB シリアル・ケーブルを使わなく てもいいように、USB シリアル・モジュールを内蔵して、電源を USB バスから供給するようにしまし た。つぎに、通信速度を上げて画面の書き換え速度が速くなるようにしてみました。それから、外装 をつけてみました。また、書籍の工作の回路で、キャラクタ液晶を試してみました。
  以下の秋月グラフィック液晶の改造(その1)と(その2)は、独立した改造です。どちらか必要 な改造だけすることが可能です。

■秋月グラフィック液晶の改造(その1)
  USB シリアル・ケーブルの代わりに、(株)ストロベリー・リナックスの USB シリアル変換モジ ュール FT232RX を利用し、電源を USB ポートからとるように改造してみました。


image0001.jpg

USB MiniB 基板(左)とFT232RX基板(右)

 FT232RX は、 USB シリアル・ケーブル内に内蔵されているのと同じ LSI が基板上に載っています 。レベル・コンバータはありませんので、機器内部でシリアルを USB にするのに向いています。こ こでは液晶キットがバックライト点灯時でも、電流がそれほど大きくないので USB ポートから電源 を供給するように配線しています。ほかの自作回路に利用するときは、消費電流の大きさに十分注意 してください。また、できればセルフパワー (ACアダプタを使用)の USB ハブにつないでおくと、最 悪の場合にも玄箱PROの USB ポートに影響がおよびにくくなるので安心です。
  FT232RX は標準サイズの USB-B コネクタが付属していますが、mini-B コネクタを利用するために 、変換基板(シリコンハウス共立で購入)も利用しています。コネクタのサイズにこだわらずに標準 サイズにすると、変換基板は不要です。  FT232RX の VCCIO の設定が 5V になるよう忘れずにジャンパを取り付けます。基板間の接続は以 下のようにします。FT232RX の USB-B とあるのは USB-B のコネクタ部 (CN1) に配線します。

Mini USB-B      FT232RX               秋月グラフィック液晶キット
1 (5V)          USB-B 1 5V
2 (D-)          USB-B 2 D-   
3 (D+)          USB-B 3 D+   
5 (GND)         USB-B 4 GND   
                GND                  CN3-1 GND   
                VBUS                 CN3-2 5V   
                TXD                  CN3-4 RX   
                RXD                  CN3-5 TX


usb-ft232rx-akiglcdS.jpg

USB MiniB 基板、FT232RX、 秋月グラフィック液晶の接続図


2R0014437.jpg

 ジャンパ・ピンはすべてささない(片側だけなくさないよう挿している)

R0014443.jpg

配線が終わったところ  基板が2枚追加になっていますが、

電源が不要になる分は配線がすっきりします。


■秋月グラフィック液晶の改造(その2)

 データの転送速度を 115.2kbps に高速化するために改造しました。画面の書き換えが早くなりま す。改造は、

  • ハードウェア:19.6MHz の水晶を 18.432MHz のものに交換
  • ソフトウェア:ボーレートが 115.2kbps になるようレジスタを変更
しています。ソフトウェア(ファームウェア)の変更は、glcd001.asm の 728 行目付近です (VALUE_FOR_TXSTA, VALUE_FOR_BPS)。
VALUE_FOR_TXSTA       = B'00100100'                ;
BGRH=1VALUE_FOR_RCSTA = B'10010000'                ;
VALUE_FOR_BPS         = 9                          ;
 水晶を交換しないと、115.2kbps がうまく生成できないので交換しています。改造後の HEX ファ イルglcd001.hex.txt(拡張 子を変更してください) を置いておきます。ファームウェア・アップデートの手順で書き込めるか はテストしていません。キットの PIC は、そのまま保管し、別のライタで書き込んで交換すると安心 です。


3image0005.jpg

 表面実装タイプの水晶は、はんだがよく回っているので、しっかり温めないと 取れないことに注意する。

 また、LCDd.conf の akiglcd, sed1520 のセクションで Speed の変更ができるようにし、タイミ ングを改善するように改造した sed1520.cakiglcd.cと改造後の Debian パッケージlcdproc_0.5.2p1_arm.deb.tarを置いておきます。 LCDd.conf の、それぞれのセクションに、
Speed=115200
と書くことで 115.2kbps (115200bps) になります。デフォルトは 38400bps です。

■秋月グラフィック液晶に外装をつける
  基板を剥き出しのままにしておくのもかっこ悪いので、外装をつけてみました。今回はケースを利 用せず、100円ショップで購入したスチレン・ボードを現物あわせで貼ってみました。


image0008.jpg

買ってきたスチレン・ボード

R0014463.JPG

 まず、D-sub 9ピン・コネクタを外しました。スルーホールでしっかりついたの で、なかなかとれず、パターンを痛めてしまいました。


image0010.jpg
image0011.jpg USB MiniB のコネクタつき基板を、D-sub 9ピンをとめていたところに、ねじ止めしました。力が かかるのでしっかり固定します。基板と基板の間には、スポンジ入りの両面テープを貼っています。 FT232RX 基板は、MiniB 基板の上に両面テープで止めています。

image0012.jpg
  こんな感じで裏表にはりつけました。大きさは現物あわせで決めました。PICの載った基板と、LCD の隙間に高さを保てるように、スチレン・ボードの切れ端をはさんでいます。このあと、上下と左側 にも現物あわせでスチレン・ボードを貼りました。

lcdbox-e.jpg
lcdbox-f.jpg 全体をスチレン・ボードで覆った後、正面に紙を貼り付けました。この紙は、線を引いた画像をプ リンタで出したものです。

■書籍紹介の回路のLCD
  「はじめての PIC アセンブラ入 門」で紹介している回路でも、PIC のプログラムを少し変更すれば、lcdproc で使うことができ ます。リスト 5-12 のプログラムを、以下のように変更しました。
  • コマンド・モードに入る文字を 0x01 から 0xfe に変更
  • 起動時にシリアルに書いていた文字列や、エコーバックをしないように変更
プロトコルとしては、
  • 9600bps, 8bit, パリティなし, ストップ・ビット1
  • 0xfe のつぎに続く文字はコマンド・モードとして液晶に送る
  • それ以外の文字は表示するデータとして液晶に送る
となります。変更後のソースlcd.asm.txtと、hex ファイルLCD.HEX.txtを置いておきます。書籍では 16×2 の LCD (SC1602BS) で したが、20×4 の LCD (SC2004CSLB) をつけてみました。この液晶は、電源ピンが、SC1602BS とは プラス/マイナスが入れ替わっているので配線に注意します。  LCDd で使用するドライバは hd44780 です。/etc/lcdproc/LCDd.conf では、以下を hd44780 のセ クションで指定します。
ConnectionType=vdr-lcd     (このタイプと同じコマンド体系)
Device=/dev/ttyUSB0        (使用した USB シリアルにあわせる)
Speed=0                    (デフォルトの 9600bps なので 0 でも 9600 でもよい)   

Keypad=no                  (キーはない)   

Backlight=no               (バックライトはない)   

OutputPort=no              (バーグラフ出力はない)   

Size=20x4                  (液晶が 16x2 の場合は 16x2 と書く
R0014461.JPGのサムネール画像  16×2 の LCD も試してみましたが、かなり表示領域が狭く lcdproc は、なんとか情報を詰め込も うとしてくれますが、苦しいです。20×4 だと秋月のグラフィック液晶キットと比較すると文字が大 きくて読みやすいです。日本語を表示しないと割り切るなら悪くないと思います。
<光永 法明>

 カテゴリ 

 

トラックバック(0)

このブログ記事を参照しているブログ一覧: lcdproc のキー割当とリモコン

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/1223

コメントする

おすすめ書籍
Powered by
Movable Type 4.1