大阪近郊で活動するフリーランスエンジニアのブログです 技術情報とか趣味など

*

Raspberry Pi2でリモコンを使って水槽の照明をつける

      2015/04/24

リモコン操作で照明をつける

Web上からRaspberry Pi2で水槽の照明をリモコン操作でON/OFFするの為、通販で買ったものが届いたので早速試す

買ったのはこちら


回路組み立て

Make.さんのブログを参考に必要な部品を秋月で購入
ブログ内容を見ながら組み立ててみる
00046

eoRaw

ソフト設定

LIRCのインストールと設定

リモコンを操作するライブラリ LIRCをインストールする

sudo apt-get install lirc

ハードの設定を変更する

sudo vi /etc/lirc/hardware.conf

LIRCD_ARGS="--uinput"
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

モジュールの追加を行い再起動

sudo vi /etc/modules


lirc_dev
#inが受信機 outが送信LED
lirc_rpi gpio_in_pin=17 gpio_out_pin=18

sudo reboot

再起動後、モジュールが追加されているか確認する

lsmod | grep lirc

・・・が、表示されないので調べているとビクトリーセブンさんのブログに行き着く

※Raspbian 2015-01-31(NOOBS 1.3.12)以降では、 /etc/modules ファイルではなく /boot/config.txt ファイルに下の行を追加します。
となっていた為設定の追加と再起動を行う

sudo vi /boot/config.txt 

dtoverlay=lirc-rpi,gpio_in_pin=17,gpio_out_pin=18

sudo reboot

再起動後、再度確認する

lsmod | grep lirc

lirc_rpi                6646  0 
lirc_dev                8181  1 lirc_rpi
rc_core                16932  1 lirc_dev

ls -l /dev/lirc*

crw-rw---T 1 root video 246, 0  1月  1  1970 /dev/lirc0

ちゃんと認識されてるっぽい

リモコンからの受信できているか確認する

sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0

#リモコンを受信機に向けて何かボタンを押す
space 2655
pulse 822
space 888
pulse 822
space 841
pulse 817
space 1903
pulse 819
space 1905

謎の数字がズラッと出れば受信できてるようなので一旦Ctrl+Cで終了する

リモコンコードの学習

コンセントのON/OFFにする信号を学習させpower.confに保存する

sudo irrecord -n -d /dev/lirc0 power.conf
  1. Enterキーを2回押して、リモコン学習を開始します。
    irrecord -  application for recording IR-codes for usage with lirc
    
    Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)
    
    This program will record the signals from your remote control
    and create a config file for lircd.
    
    
    A proper config file for lircd is maybe the most vital part of this
    package, so you should invest some time to create a working config
    file. Although I put a good deal of effort in this program it is often
    not possible to automatically recognize all features of a remote
    control. Often short-comings of the receiver hardware make it nearly
    impossible. If you have problems to create a config file READ THE
    DOCUMENTATION of this package, especially section "Adding new remote
    controls" for how to get help.
    
    If there already is a remote control of the same brand available at
    http://www.lirc.org/remotes/ you might also want to try using such a
    remote as a template. The config files already contain all
    parameters of the protocol used by remotes of a certain brand and
    knowing these parameters makes the job of this program much
    easier. There are also template files for the most common protocols
    available in the remotes/generic/ directory of the source
    distribution of this package. You can use a template files by
    providing the path of the file as command line parameter.
    
    Please send the finished config files to <lirc@bartelmus.de> so that I
    can make them available to others. Don't forget to put all information
    that you can get about the remote control in the header of the file.
    
    Press RETURN to continue.
    
    
    Now start pressing buttons on your remote control.
    
    It is very important that you press many different buttons and hold them
    down for approximately one second. Each button should generate at least one
    dot but in no case more than ten dots of output.
    Don't stop pressing buttons until two lines of dots (2x80) have been
    generated.
    
    Press RETURN now to start recording. #←学習開始
    
  2. 学習したいリモコンのボタンを何度も押して学習します。
    ボタンを押すたびに「.」が1個表示されるため、”Please keep on pressing buttons like described above.”と表示されるまで、ボタンを押し続けます。

    ................................................................................ #← ON OFF 押したあとONボタン押しっぱ
    Found gap: 53955
    Please keep on pressing buttons like described above.
    
  3. “Please keep on pressing buttons like described above.”が表示されたら、10秒間待ちます。
    Please keep on pressing buttons like described above.
    irrecord: no data for 10 secs, aborting
    Creating config file in raw mode.
    
    
  4. “Please enter the name for the next button”が表示されたら、登録したいボタン名を入力してEnterを押します。
    Now enter the names for the buttons.
    
    Please enter the name for the next button (press <ENTER> to finish recording)
    power_on #←名前をいれる
    
    

    登録したいリモコンボタンを押して、登録します。

    Please enter the name for the next button (press <ENTER> to finish recording)
    power_on #←名前を登録する
    
    Now hold down button "power_on". #←power_onとして登録したいボタンはどれか押せと言われるのでリモコンのONボタンを押す
    Got it.
    Signal length is 19
    
    Please enter the name for the next button (press <ENTER> to finish recording)
    power_off #←続いてをoffを登録する
    
    Now hold down button "power_off". #←OFFボタンを押す
    Got it.
    Signal length is 19
    Please enter the name for the next button (press <ENTER> to finish recording)
    #enterで終了
    
    

作ったファイルを確認する

cat power.conf 

# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Thu Apr 23 21:59:27 2015
#
# contributed by 
#
# brand:                       power.conf
# model no. of remote control: 
# devices being controlled by this remote:
#

begin remote

  name  power.conf
  flags RAW_CODES|CONST_LENGTH
  eps            30
  aeps          100

  gap          77611

      begin raw_codes

          name power_on
             2527    2707     794     889     823     862
              822    1982     742    1905     819    1899
              824    1922     807     854     824     861
              852

          name power_off
             2558    2674     823     863     824    1897
              822     864     824     864     822    1924
              799     861     823    1900     825    1900
              861

      end raw_codes

end remote

ふ、ふーん・・・
このファイルを /etc/lirc/lircd.conf にコピーして、LIRCから使えるようにする

sudo sh -c "cat power.conf > /etc/lirc/lircd.conf"

LIRCの起動

パイ起動時にLIRCが動くように登録する

sudo update-rc.d lirc defaults

#学習用に停止していたので起動
sudo /etc/init.d/lirc start

信号送信

登録したリモコン信号の種類を確認する

irsend LIST power.conf ""

irsend: 0000000000000001 power_on
irsend: 0000000000000002 power_off

学習した信号が送信できるか確認する

irsend SEND_ONCE power.conf power_on

kitaaaaaa
キタアアアアアアアアアアアアア!

照明操作のシェルを置き換える

Raspberry Pi2側

Web上やターミナルから叩いてる照明操作のシェルを置き換える

#旧ファイルをバックアップ
sudo cp /usr/local/bin/led-on ~/backup
sudo cp /usr/local/bin/led-off ~/backup
sudo cp /usr/local/bin/led-20sec ~/backup

#それぞれ書き換え
sudo vi /usr/local/bin/led-on

#!/bin/sh
irsend SEND_ONCE power.conf power_on

sudo vi /usr/local/bin/led-off

#!/bin/sh
irsend SEND_ONCE power.conf power_off

sudo vi /usr/local/bin/led-20sec

#!/bin/sh
irsend SEND_ONCE power.conf power_on
sleep 20s
irsend SEND_ONCE power.conf power_off

さくらVPS側

点灯ボタンを制御しているPHPを修正
現在時刻が定期点灯の10:00から19:00の間だった場合、点灯(20秒後消灯)キューを送らない

if (date('Hi') > 1000 && date('Hi') < 1900 ) {
    exit;
}

定期点灯の時間帯を変更すると当phpファイルも修正しなきゃいけない下策ではあるがまぁいいか・・・
GPIO側から現在スイッチがONなのかOFFなのか判別する方法がないので信号が届かなかった場合に自動でリトライできないのが問題か
まぁ所詮照明のON/OFFなので良いことにする

 - Raspberry Pi, プログラミング, 金魚

  • このエントリーをはてなブックマークに追加
  • にほんブログ村 観賞魚ブログ 金魚へ

Comment

  1. […] してから、lircの設定をする。 Raspberry Pi2でリモコンを使って水槽の照明をつけるが大変詳しいです。 リモコンがちゃんと受信できてるかもチェック。 […]

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

Raspberry Pi2でPlanexのGW-450Dが動かなくなった

Raspberry Pi2上で何も考えずソフト類をアップグレードしたらカーネルの …

Raspberry Pi2で室温、水温を計測してグラフ表示する その2

前回でRaspberry PiからさくらVPSへ計測したデータを飛ばして登録でき …

穂竜はじめました

先日新しく45cm水槽を立ち上げてまして穂竜という金魚を飼いはじめました。 高頭 …

Raspberry Pi2で外部から水槽のLEDを点灯する

外部からネット越しに金魚水槽のLEDを点灯させたい WebIOPiというライブラ …

Raspberry Pi2で外部から水槽のLEDを点灯する その2

前回でひとまずさくらVPS上のPHPから自宅水槽のLED照明をONにできるように …

プラ舟はじめました

プラ船買っちゃった 金魚にだだハマりなGW ついにプラ船買ってガレージに設置して …

穂竜水槽のフィルターを交換

穂竜が挟まる! 金魚水槽のページで配信している穂竜たちですが、非常にドン臭く よ …

福だるま購入しました

福だるま?玉サバ? ちょっと前、寝室に60cm水槽に立ち上げた水槽へ福だるまを4 …

金魚が病気の為、隔離しました

配信中の金魚水槽ですが、金魚が病気で1匹死んでしまったので隔離しました メイン水 …

金魚を水槽に戻しました

病気のため水槽をリセットし、隔離していた金魚を戻しました ついでに照明のLEDも …