Próbuję kontrolować IR HVAC w moim domu za pomocą Raspberry Pi 2 i osłony na podczerwień (patrz tutaj: http://bit.ly/29iC0lr ).
Postępowałem zgodnie z instrukcjami na stronie produktu z osłoną IR, z poradami z kilku innych miejsc, a odbiór sygnałów z pilota HVAC działa świetnie. Byłem w stanie utworzyć plik .conf i irsend widzi przyciski, które skonfigurowałem, kiedy używam polecenia LIST, ale kiedy próbuję SEND_ONCE, otrzymuję tę odpowiedź:
irsend: hardware does not support sending
Spędziłem kilka godzin, próbując różnych systemów operacyjnych (w tym piCore 6.1-v7 i Raspbian Jesse 2016-05-27 i 2015-11-21) oraz dwóch wersji LIRC (0.9.0 i 0.9.4), ale zawsze otrzymywałem ten sam wynik.
Potwierdziłem, że dioda podczerwieni działa za pomocą aparatu cyfrowego i skryptu python, który ręcznie obsługuje pin GPIO.
Czy ktoś może skierować mnie w dobrym kierunku, aby rozwiązać ten problem? Czy jest jakiś sposób, aby dowiedzieć się, dlaczego LIRC wydaje się sądzić, że mój sprzęt nie ma nadajnika?
Z góry dziękuję.
Uwaga: mój /boot/config.txt zawiera tę linię dla lirc-rpi
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
[EDYCJA 7-7-2016]
Oto dodatkowe informacje, w tym dane wyjściowe z kilku poleceń w sekcji Rozwiązywanie problemów na tej stronie: http://aron.ws/projects/lirc_rpi/
Dane wyjściowe cat /sys/kernel/debug/gpio
nie wyglądają dobrze, ale nie „ wiem co z tym zrobić. : - \
Mam następujący wiersz w pliku /etc/rc.local:
modprobe lirc_rpi gpio_in_pin=18 gpio_out_pins=17
Próbowałem również podobnego fragmentu kodu w / etc / modułów, ale to nie miało znaczenia.
pi@raspberrypi:~ $ ls -l /dev/lirc*
crw-rw---- 1 root video 244, 0 Jul 7 11:27 /dev/lirc0
lrwxrwxrwx 1 root root 21 Jul 7 11:27 /dev/lircd -> ../var/run/lirc/lircd
pi@raspberrypi:~ $ dmesg | grep lirc
[ 5.219904] lirc_dev: IR Remote Control driver registered, major 244
[ 5.230067] lirc_rpi: module is from the staging directory, the quality is unknown, you have been warned.
[ 6.196796] lirc_rpi: auto-detected active low receiver on GPIO pin 18
[ 6.197243] lirc_rpi lirc_rpi: lirc_dev: driver lirc_rpi registered at minor = 0
[ 6.197248] lirc_rpi: driver registered!
pi@raspberrypi:~ $ sudo cat /sys/kernel/debug/gpio
GPIOs 0-53, platform/3f200000.gpio, pinctrl-bcm2835:
gpio-35 (? ) in hi
gpio-47 (? ) out lo
pi@raspberrypi:~ $ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
16: 0 0 0 0 ARMCTRL 16 Edge bcm2708_fb dma
20: 1500 0 0 0 ARMCTRL 20 Edge DMA IRQ
32: 145314 0 0 0 ARMCTRL 32 Edge dwc_otg, dwc_otg_pcd, dwc_otg_hcd:usb1
49: 0 0 0 0 ARMCTRL 49 Edge 3f200000.gpio:bank0
50: 0 0 0 0 ARMCTRL 50 Edge 3f200000.gpio:bank1
65: 26 0 0 0 ARMCTRL 65 Edge 3f00b880.mailbox
66: 2 0 0 0 ARMCTRL 66 Edge VCHIQ doorbell
75: 1 0 0 0 ARMCTRL 75 Edge
77: 120 0 0 0 ARMCTRL 77 Edge DMA IRQ
82: 192 0 0 0 ARMCTRL 82 Edge mmc0
83: 5 0 0 0 ARMCTRL 83 Edge uart-pl011
96: 0 0 0 0 ARMCTRL 96 Edge arch_timer
97: 3798 2724 1275 1139 ARMCTRL 97 Edge arch_timer
FIQ: usb_fiq
IPI0: 0 0 0 0 CPU wakeup interrupts
IPI1: 0 0 0 0 Timer broadcast interrupts
IPI2: 2225 2478 3697 2901 Rescheduling interrupts
IPI3: 7 6 8 9 Function call interrupts
IPI4: 3 5 0 1 Single function call interrupts
IPI5: 0 0 0 0 CPU stop interrupts
IPI6: 0 0 0 0 IRQ work interrupts
IPI7: 0 0 0 0 completion interrupts
pi@raspberrypi:~ $ lsmod
Module Size Used by
cfg80211 419759 0
rfkill 16659 2 cfg80211
8192cu 528485 0
evdev 10226 1
snd_bcm2835 19739 0
bcm2835_gpiomem 3023 0
snd_pcm 74833 1 snd_bcm2835
snd_timer 18164 1 snd_pcm
lirc_rpi 6638 0
snd 52116 3 snd_bcm2835,snd_timer,snd_pcm
lirc_dev 8169 1 lirc_rpi
rc_core 16910 1 lirc_dev
uio_pdrv_genirq 2966 0
uio 8228 1 uio_pdrv_genirq
ipv6 341892 30
/boot/config.txt
?Odpowiedzi:
Dla mnie ten dodatkowy krok pomógł:
edit
/etc/lirc/lirc_options.conf
i zestawdriver = devinput
do
driver = default
, a następnie ponownie uruchomić usługę lub restart lircd
źródło
Dobra, znalazłem odpowiedź, a raczej ktoś o wiele bardziej znający się na Linuksie niż ja ( /raspberrypi//users/49162/jonathan-dieter ) ją znalazł. :)
Zamiast ładować moduł lirc_rpi do / etc / modules lub /etc/rc.local, zasugerował dodanie nowego pliku konfiguracyjnego do /etc/modprobe.d/ (w moim przypadku /etc/modprobe.d/ir-remote.conf ) w następującym wierszu:
Moim najlepszym przypuszczeniem, dlaczego to zrobiło różnicę, jest to, że moduł ładował się z ustawieniami domyślnymi PRZED uruchomieniem polecenia w / etc / modules lub rc.local. Ponieważ został już załadowany, system po prostu zignorował moją kolejną próbę, a pin wyjściowy nigdy nie został poprawnie skonfigurowany (dotyczy Raspbian Jessie BTW).
Jeszcze jedna uwaga na temat urządzenia HVAC, która może być pomocna. Nie byłem w stanie użyć polecenia irrecord do zapisania poleceń z pilota. Wygląda na to, że systemy HVAC działają nieco inaczej niż telewizor lub magnetowid.
Te dwie strony ( http://www.instructables.com/id/Reverse-engineering-of-an-Air-Conditioning-control/?ALLSTEPS i http://absurdlycertain.blogspot.com/2013/03/lirc-raspi -remote-control-configuration.html szczególnie pierwsze dwa komentarze) pomogły mi wymyślić, jak nagrać nieprzetworzone dane wyjściowe z trybu 2, znormalizować je, a następnie przesłać z irsend.
źródło
Po wykonaniu tego przewodnika: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board napotkałem ten sam problem, jak podano w tym pytaniu:
Próbowałem dodać tę linię:
w /etc/modprobe.d/ir-remote.conf, ale to też nie pomogło.
Kiedy uruchomiłem demona LIRC za pomocą następującego polecenia:
zadziałało! Urządzenie musi być takie samo, jak skonfigurowane w pliku /etc/lirc/hardware.conf. Kroki są następujące:
irsend: hardware does not support sending
sudo lircd --device /dev/lirc0
aby uruchomić demona LIRCirsend SEND_ONCE /home/pi/lircd.conf KEY_VIDEO_PREV
źródło