Na Raspberry Pi możemy zbudować alarm z wykorzystaniem czujnika PIR i syreny alarmowej, ja użyłem do testów prostego małego buzera.
Czujnik może być zasilany w zakresie 4,5 V do 20 V. Czujnik posiada wyprowadzenia VCC, OUT, GND. Po wykryciu ruchu na wyjściu OUT pojawia się stan wysoki. Ja zasilam go z zewnętrznego zasilacza 5V.
Czujnik posiada 2 potencjometry, którymi możemy regulować
T1 - czas trwania stanu wysokiego po wykryciu obiektu
T2 - czułość czujnika (dystans, w którym wykrywa ruch obiektu)
Ponieważ ja używam czujnika w pokoju T2 ustawiłem w połowie na średnią odległość, a T1 czyli czas reakcji maksymalnie w lewo.
W moim projekcie podłączyłem buzer pod pin 26 GPIO, a PIR pod pin 6 GPIO.
W programie napisanym w pythonie piny możemy sobie dowolnie zdefiniować na początku kodu:
#wpisz nr pinu GPIO czujnika PIR
PIR = 6
#wpisz nr pinu GPIO alarmu
ALARM = 26
Możemy również zdefiniować jak długo w sekundach alarm ma być włączony, definiujemy, to w tej linijce:
#wpisz czas w sekundach jak dlugo ma byc wlaczony alarm
DELAY = 5
Kod programu:
#!/usr/bin/python
import RPi.GPIO as GPIO
#import bibloetki GPIO
import time
GPIO.setmode(GPIO.BCM)
#wpisz nr pinu GPIO czujnika PIR
PIR = 6
#wpisz nr pinu GPIO alaramu
ALARM = 26
#wpisz czas w sekundach jak dlugo ma byc wlaczony alarm
DELAY = 5
#ustawienie pinu PIR jako wejscie
GPIO.setup(ALARM, GPIO.OUT)
# ustawienie pinu ALARM jako wyjscie
GPIO.setup(PIR, GPIO.IN)
GPIO.setup(PIR, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
while True:
# wykrycie ruchu
GPIO.wait_for_edge(PIR, GPIO.RISING)
# alaram wlaczony
GPIO.output(ALARM, True)
time.sleep(DELAY)
GPIO.output(ALARM, False)
except KeyboardInterrupt:
GPIO.cleanup()
Program jest do pobrania stąd ->
alarm.pyProgram kopiujemy sobie do katalogu python.
Teraz możemy przeprowadzić test programu, więc w terminalu wpisujemy:
cd python
sudo python alarm.py
Po wykryciu ruchu włączy się alarm na 5 sekund, po wciśnięciu dowolnego klawisza program się zakończy.
Teraz tworzymy skrypt lua, który będzie włączał i wyłączał nasz alarm, czyli uruchamiał i zamykał program w pythonie.
Skrypt będzie wyglądał tak:
commandArray = {}
if (devicechanged['ALARM'] == 'On') then
os.execute ("sudo python /home/pi/python/alarm.py")
end
if (devicechanged['ALARM'] == 'Off') then
os.execute("sudo pkill -9 -f /home/pi/python/alarm.py")
end
return commandArray
W linijce:
if (devicechanged['ALARM'] == 'On') then i
if (devicechanged['ALARM'] == 'Off') then
wpisujemy nazwę naszego przycisku jaki dodamy w Domoticz, ja nazwałem sobie go ALARM.
Skrypt jest do pobrania stąd ->
script_device_alarm.luaKopiujemy nasz skrypt do:
/home/pi/domoticz/scripts/luaWchodzimy na nasz panel Domoticz IP:8080 i klikamy
Utwórz wirtualne sensoryJak utworzyć wirtualne sensory napisałem wcześnie w poście ->
Domoticz i uruchamianie programów w Pythonie Wybieramy przełącznik i klikamy OK
Wchodzimy w Ustawienia -> Urządzenia, szukamy nasz utworzony przycisk Wirtualny ALARM i klikamy w zieloną strzałkę.
Wpisujemy nazwę ALARM i klikamy OK.
Teraz nasz przełącznik mamy w zakładce Przełączniki, ponieważ nie jest, to włącznik światła zmienimy sobie jego ikonkę, klikamy edytuj i wybieramy dowolną ikonkę w
Zamień ikonę. Ja wybrałem Alarm i klikamy Zapisz.
Ponieważ zdefiniowany wcześniej czas włączenia buzera lub alarmu jest zbyt krótki, zmienimy sobie czas DELAY w programie na 3 minuty, czyli 180 sekund, czyli w programie alarm.py wpisujemy DELAY = 5 i zapisujemy plik w /home/pi/python
Teraz, gdy alarm się aktywuje musimy go jakoś wyłączyć, w tym celu edytujemy plik domoticz.sh, czyli w terminalu wpisujemy:
sudo nano /etc/init.d/domoticz.sh
Przechodzimy na koniec linii i wpisujemy:
/usr/local/bin/gpio export 26 out
Wciskamy Ctrl+X, T i ENTER i robimy restart, czyli:
sudo reboot
Wpisaliśmy pin GPIO nr 26 jako out ponieważ, do tego pinu mamy podłączony buzer.
Wchodzimy do panelu Domoticz IP:8080
Teraz wchodzimy w zakładkę Przełączniki -> Ręczne ustawienia.
Sprzęt ma być ustawione GPIO, Nazwę wpisuję sobie Wyłącz ALARM, Typ przełącznika Push Off Button, Typ GPIO, GPIO: gpio26 i klikamy dodaj urządzenie
Teraz po włączeniu alarmu możemy go wyłączyć przyciskiem Wyłącz ALARM, ale wykrywanie ruchu i włączanie buzera będzie nadal aktywne, aby całkowicie dezaktywować alarm, klikamy przełącznik ALARM na OFF.