ラズパイとSPS-444-1で赤外線リモコンの信号を受信する
家電リモコンの信号を受信したくてモジュールSPS-444-1を購入した。SPS-444-1は5Vで動作する。Raspberry Pi(ラズパイ)のGPIOピンに接続するには3.3V以下に降圧する必要がある。モジュールからの出力を抵抗で分圧して3.3V以下にした。Pi OSが起動したとき、各GPIOポート(2、3を除く)は内部プルアップまたは内部プルダウンされている。外部の抵抗のみで分圧するにはポートをフローティング入力に設定する必要がある。
SPS-444-1
SPS-444-1は38kHzで点滅する赤外線を受光するモジュール。38kHzの点滅を受光しているときはLOWを出力する。家電のリモコンは周波数38kHzで信号を送る。
データシートより
電源からのノイズによる誤動作がありえるからRCフィルタをつけるといい。配線例のPDFリンクが秋月電子通商の販売ページよくある質問にある。
ブロック図によると、入力5Vから出力Voutの間に抵抗が入っている。データシートには15Ωから51kΩと書いてある。今回使用するモジュールを計測すると22kΩだった。
SPS-444-1のブロック図の一部
回路
回路図
- RCフィルタとして100Ωの抵抗器と22μFの電解コンデンサ
- SPS-444-1のVoutをモジュール内部の22kΩの抵抗と22kΩの抵抗器で分圧する
- ラズパイの使用するピンを入力モード、かつ、フローティングに設定する
ラズパイのピン設定
入力に使用するピンに対応するGPIOポートをインプットモードにして、プルアップ・プルダウンの設定を無効にする。GPIOの制御にはpigpioを使った。
#### pigpioライブラリをdaemonとして起動する
$ sudo pigpiod
### GPIO26をInput(read)モードにする
$ pigs m 26 r
### GPIO26の内部プル状態を無効(off = floating)にする
$ pigs pud 26 o
その他
pigpioはPi OS Liteにも最初からインストールされている。シェルで使えるpigsコマンドがある。
周波数がMHzを超えるようなパルスを抵抗で分圧すると信号がなまる、らしい。今回は数百μmの幅でのHIGH/LOWなのでせいぜい1kHzぐらいだろう、心配しなくてよさそう。
GPIOポートのプル状態はラズパイ3ではクエリできないが、ラズパイ4でならクエリできる、らしい。
Pi OSにインストールされているpigpioが https://abyz.me.uk/rpi/pigpio/ や https://github.com/joan2937/pigpio と同じものかどうか判断できなかった。ラズパイ公式サイトでひもづけるドキュメントを見付けられなかった。abyz.me.uk
とgithub.com/joan2937/pigpio
は相互にURLを掲示している。aptパッケージの詳細情報の項目Homepageには、ドメインの異なるURL http://abyz.co.uk/rpi/pigpio/ とある。ラズパイの公式フォーラムでおそらく作者がURLの変更を告げてはいるがこれもラズパイ側の発表ではない。
Discussion