My Works
- LEDチェッカ
- 太陽電池式回路テスタ
- TTL Pong
- DSP プリセットラジオ
- 電動式 CVCC 電源装置
- OLED MP3 プレーヤ
- etc.
Report
- MIDI のハードウェア
- aitendo DSPラジオ一覧表
- etc.
Parts Collection
- Logic IC
- Calculator LSI
- CMOS Melody IC
- etc.
主な更新のみ
24/09/11
- MCU-based Melody ICs
24/08/12
- MCU-based Melody ICs
24/03/10
- Logic IC Collection
公開:2018/07/22
最終更新:
2023/05/26
今年の夏はとても暑いです。自宅に帰ると室温が 40 ℃を超えていることもありしんどいので、外出先から Web 経由でエアコンを操作するためのリモコンサーバを作りました。NanoPi NEO 2 を使って動作させています。
リモコンサーバは上図のように NanoPi NEO 2 と IR 送受信基板の 2 枚で構成されています。NanoPi NEO 2 は秋月電子にて \2,400 で入手できます。NanoPi NEO やその他の Linux コンピュータボードで十分ですが、サウンド入出力端子が出ていることが望ましいです。
NanoPi NEO 2
IR 送受信基板
本製作では Audio IO を使用してリモコンの赤外線信号を送受信しています。arecord / aplay で録音再生するだけなので、送受信のプログラムを作る必要はありません。GPIO を使用して信号の送受信を行うことも考えたのですが、実験したところ NanoPi では数 10us 単位の制御が安定しない結果でした。リモコン信号は MIC IN を通して受信され、.wav ファイルとして記録されます。リモコン送信は記録した .wav ファイルを再生するだけです。Audio Out の信号はコンパレータで Binarize された後、NE555 タイマ IC により 38 kHz 変調と IR LED のドライブが行われます。
コントロール用ページは PHP で書いており、任意のウェブブラウザからアクセスできます。「A/C ON」「A/C OFF」を押すとエアコンを ON/OFF するようにしています。CPU Temperature には現在の CPU 温度を表示しています。
リモコン信号の記録/再生は SSH よりシェルスクリプト (record_test.sh) を実行することで行います。
NanoPi の IP アドレスは arp -a
で推測するとよい
パスワードの変更は passwd
コマンド
とりあえず apt-get update
必要なライブラリのインストール apt-get install g++ apache2 php php-cgi libapache2-mod-php
apache2 の設定ファイルは /etc/apache2/apache2.conf
など。
スクリプトの権限を適切に (755) 設定しておかないとスクリプトが実行できないのは当然として、ディレクトリの権限を適切に (666) 設定しておかないとファイルを作成できないので注意。
デフォルトの設定では apache から呼び出されたプログラムは www-data というユーザ名で実行される。このユーザに対して適当な権限を与えておかないと、サウンドや GPIO の操作ができない。
www-data ユーザが属するグループの確認: groups www-data
たとえばオーディオの操作権限追加は usermod -a -G audio www-data
apache 設定を変更したら service apache2 reload
または service apache2 restart
Basic 認証は apache2.conf に以下を追加
<Directory (パスワードの必要なディレクトリ)>
AllowOverride None
AuthType Basic
AuthName "Remocon"
AuthUserFile "/etc/apache2/.htpasswd"
Require valid-user
</Directory>
さらに、 htpasswd -c /etc/apache2/.htpasswd (ユーザ名)
を実行して .htpasswd ファイルを作成する。Basic 認証は平文で通信されるので、他で使っているユーザ名やパスワードを流用しない。
外部からアクセスするためにはルータの設定が必要。ルータによっては DDNS が無料で使用できるので便利。
IR 送受信基板の GND、RCV_OUT、IR_SEND、VCC を NanoPi 基板の GND、MIC IN+、Audio Out(R)、+5V と接続します。NanoPi NEO 2 基板では、オーディオ端子は 2mm ピッチのパッドのみ用意されているので、適当な手法で配線します。MIC IN - は GND と接続したほうがいいかもしれません。
変調周波数は VR で 38kHz に調整してください。
IR 受信モジュールとして回路図には SHARP SPS440-1 を書いていますが、他のメーカの製品を使用することをお勧めします。
リモコン受信波形処理プログラムのビルドは audio_in_pospro ディレクトリに入って make
するだけです。ビルドには g++ が必要ですが、標準ではインストールされていません。
arecord / aplay で操作する場合、デフォルト状態 NanoPi NEO 2 の Line IN / Out は hw:2,0 でアクセスできます。
受信されたデータは MIC IN 端子の CR フィルタで減衰するので、後処理プログラムにかけて波形整形しています。
生データ
後処理後