Budżetowy system alarmowy GSM z mózgami Arduino. Alarm domowy lub za pomocą czujnika ruchu i monitora LCD z Arduino Z czego będziemy montować

Dobry dzień! Znowu wielokrotny przegląd chińskich podzespołów elektronicznych, jak zwykle trochę o wszystkim, postaram się skrócić, ale czy to zadziała? Więc witaj Alarm GSM kosztuje do 700 rubli. Ciekawy? Proszę o "cięcie"!

Zacznijmy! Przed rozpoczęciem polecam przyjrzeć się temu, mniejszej liczbie komponentów i większej autonomii. Tak więc „zakres zadań”, podstawowe wymagania dotyczące sygnalizacji:

1) Powiadom, gdy czujniki zostaną uruchomione.
2) W przypadku awarii zasilania należy zapewnić pewną autonomię.
3) Zarządzanie alarmami przez sms i połączenia.

W związku z tym, że proces tworzenia alarmu ciągnął się od kilku miesięcy i niektórzy sprzedawcy nie sprzedają już zakupionych u nich komponentów, zostaną zaktualizowane linki do produktów innych sprzedawców, którzy mają maksymalną lub bliską maksymalnej liczbę sprzedaży produktów i najlepsza cena... Ceny w recenzji są aktualne na dzień jej napisania.

Lista tego, czego potrzebujesz:

Lista zmian

GSM_03_12_2016-14-38.hex- naprawiono działanie urządzenia z modemem M590.
GSM_05_12_2016-13-45.hex- dodano memtest poleceń konsoli, optymalizacja wykorzystania pamięci RAM.
GSM_2016_12_06-15-43.hex- dodano wyprowadzanie wyników poleceń do konsoli, optymalizacja pamięci. Zajętość: 49% SRAM.
GSM_2016_12_07-10-59.hex- teraz numery telefonów są dodawane i usuwane poprawnie. Zajęte: 49% SRAM, 74% Pamięć Flash.
GSM_2016_12_07-15-38.hex- dodano możliwość podłączenia czujnika ruchu, podłączonego do pinu A0 (w tym przypadku pin A0 jest używany jako cyfrowy). Dodano SMS - komendy PIRON, PIROff... Zajęte: 48% SRAM, 76% Pamięć Flash.
GSM_2016_12_08-13-53.hex- Teraz, po pomyślnym wykonaniu polecenia, które nie wysyła wiadomości SMS w odpowiedzi, urządzenie mignie raz niebieską diodą LED. Teraz po błędnym wykonaniu polecenia, które nie wysyła w odpowiedzi wiadomości SMS, urządzenie dwukrotnie mrugnie niebieską diodą LED. Teraz, po inicjalizacji parametrów urządzenia, jeśli włączony jest tryb „cichy” (SendSms = 0), urządzenie miga szybko niebieską diodą przez 2 sekundy. Naprawiono błąd, przez który numer nie zawsze był usuwany z pamięci poleceniem DeletePhone. Zajęte: 48% SRAM, 78% Pamięć Flash.
GSM_2016_12_11-09-12.hex- Dodany polecenia konsoli AddPhone i DeletePhone, składnia jest podobna do poleceń SMS. Optymalizacja pamięci. Zajęte: 43% SRAM, 79% Pamięć Flash.
GSM_2017_01_03-22-51.hex- Zaimplementowana obsługa podobnych przedłużaczy portów I/O na układzie PCF8574, do podłączenia dodatkowych 8 czujników, w tym kontaktronów. Automatyczne wyszukiwanie adresu i automatyczna konfiguracja modułu. Standardowe nazwy czujników i logiczny poziom ich wyzwolenia zmienia się za pomocą polecenia EditSensor. Zmieniono treść sms alarmowych dla czujnika głównego (pin D0) „Alarm! Główny czujnik!” i czujnik ruchu (pin A0) „Alarm! Czujnik PIR!”. Dodano polecenia EditSensor i I2CScan. Zajęte: 66% SRAM, 92% Pamięć Flash.
GSM_2017_01_15-23-26.hex- Wsparcie dla modemu A6_Mini. Sterowanie zasilaniem zewnętrznym (pin D7). Dodano polecenia SMS WatchPowerOn, WatchPowerOff. Dodano polecenia konsoli ListConfig, ListSensor. Teraz polecenie sms EditSensor działa poprawnie. Wyjście debugowania do monitora portu zostało nieco „przycięte”. Zajęte: 66% SRAM, 95% pamięci Flash.
GSM_2017_01_16-23-54.hex- Teraz w odpowiedzi na polecenie SMS „Info” zgłaszany jest również stan czujnika ruchu. Naprawiono błąd, przez który czasami wysyłane były puste wiadomości zwrotne SMS. Teraz urządzenie powiadamia nie tylko o odłączeniu, ale również o wznowieniu zasilania zewnętrznego. Wszystkie modemy zaczęły „mniej gadać”, teraz monitor portu jest trochę czystszy. Zajęte: 66% SRAM, 95% pamięci Flash.
GSM_2017_02_04-20-23.hex- Naprawiono błąd "Obserwuj włączanie". Teraz po rozbrojeniu "pin alarmowy" jest wyłączony. Teraz po skasowaniu numeru w konsoli wyświetlana jest prawidłowa informacja. Prawdopodobnie naprawiono błąd, przez który czasami wysyłane były puste wiadomości zwrotne SMS. Zajęte: 66% SRAM, 90% Pamięć Flash.
GSM_2017_02_14-00-03.hex- Teraz domyślnie wysyłane są wiadomości SMS, parametr SendSms ponownie wynosi 1. Teraz, gdy styki kontaktronu głównego są zwarte (drzwiczki są zamknięte), urządzenie mruga niebieską diodą przez 2 sekundy, sygnalizując normalne działanie czujnik. Zajęte: 66% SRAM, 90% Pamięć Flash.
GSM_2017_03_01-23-37.hex- Usunięto polecenie WatchPowerOn. Dodano polecenie konsoli WatchPowerOff, identyczne z poleceniem SMS. Dodano polecenia WatchPowerOn1, WatchPowerOn2. WatchPowerOn1 - monitorowanie zasilania zewnętrznego jest włączone, jeśli alarm jest uzbrojony, WatchPowerOn2 - monitorowanie zasilania zewnętrznego jest zawsze włączone. Zaimplementowana została funkcja załączania i wyłączania czuwania przez urządzenia zewnętrzne, do tego służą piny A1 (D15) i A2 (D16). Alarm uzbrojenia / rozbrojenia, gdy pojawia się na pinie A1 (D15) wysoki poziom+ 5V lub na pinie A2 (D16) niski poziom GND. Pin A1 (D15) jest podciągnięty do GND, pin A2 (D16) jest podciągnięty do +5V przez rezystory 20 (10) kΩ. Dodano polecenia GuardButtonOn i GuardButtonOff. Teraz po uzbrojeniu czerwona dioda LED miga do momentu sprawdzenia integralności obwodu głównego kontaktronu. Jeśli obwód jest nienaruszony, zapala się czerwona dioda LED. Zajęte: 66% SRAM, 95% pamięci Flash.
GSM_2017_03_12-20-04.hex- Teraz konsola stała się jeszcze czystsza, ale jeśli włączony jest tryb testowy „TestOn”, w konsoli wyświetlane są dodatkowe informacje. Poprawiony błąd "Wysłane!", Teraz komunikat o wysyłaniu wiadomości wyświetla się poprawnie w konsoli. Naprawiono błąd "powtarzającego się fałszywego połączenia". Żądanie salda powinno teraz działać poprawnie na wszystkich modemach. Zajęte: 67% SRAM, 95% pamięci Flash.
GSM_2017_04_16-12-00.hex- Naprawiony. Teraz zespoły ds. informacji i pieniędzy zawsze będą wysyłać SMS z odpowiedzią. Komenda GuardButtonOn została zastąpiona przez komendy GuardButtonOn1 i GuardButtonOn2. Zajęte: 67% SRAM, 99% Pamięć Flash.
GSM_2017_04_21-09-43.hex - nie zalecany do użytku, tylko testowy, dzięki za wykryte błędy :) - Teraz parametr sendsms nie ma wpływu na wysyłanie wiadomości SMS w celu monitorowania sieci energetycznej. Dodano komendę SMS DelayBeforeGuard, która odpowiada za opóźnienie przy uzbrojeniu, wartość nie może przekraczać 255 sekund. Dodano komendę SMS DelayBeforeAlarm, która odpowiada za opóźnienie w wysyłaniu powiadomień oraz włączanie "alarm pin" po wyzwoleniu czujników, wartość nie może przekroczyć 255 sekund. Usunięto polecenia ClearSMS, teraz wiadomości są usuwane automatycznie po otrzymaniu. Zajęte: 68% SRAM, 100% pamięci Flash.
GSM_2017_04_22-20-42.hex- Naprawiono wiele błędów. Polecenia ClearSMS są ponownie obecne w oprogramowaniu. Optymalizacja pamięci. Zajęte: 68% SRAM, 98% Pamięć Flash.
GSM_2017_04_23-17-50.hex- Teraz żądanie równowagi powinno działać poprawnie na wszystkich modemach. Uzbrajanie i rozbrajanie przez urządzenia zewnętrzne działa teraz poprawnie. Wiadomość SMS z odpowiedzią na polecenie informacyjne nie powinna być pusta. Optymalizacja pamięci. Zajęte: 68% SRAM, 98% Pamięć Flash.
GSM_2017_04_24-13-22.hex- Teraz transmisja komend konsoli do modułu GSM jest realizowana tylko wtedy, gdy włączony jest tryb testowy. Teraz nie ma podziału na komendy SMS i komendy konsoli, wszystkie istniejące komendy można wysyłać zarówno poprzez SMS, jak i przez konsolę. Ewentualnie naprawiony błąd z poleceniem Info. Optymalizacja pamięci. Zajęte: 68% SRAM, 94% Pamięć Flash.
GSM_2017_04_25-20-54.hex- Naprawiono błąd, w którym polecenie ListConfig zmieniało wartość ostatniego zdarzenia. Teraz podczas wprowadzania poleceń przez kosol niepotrzebne wiadomości SMS nie są wysyłane. Ewentualnie naprawiony błąd z poleceniem Info. Optymalizacja pamięci. Zajęte: 66% SRAM, 94% Pamięć Flash.
GSM_2017_04_30-12-57.hex- Tymczasowo włączono wysyłanie dodatkowych informacji do konsoli podczas wysyłania wiadomości SMS i tworzenia odpowiedzi na polecenie Info. Ewentualnie naprawiony błąd z poleceniem Info. Optymalizacja pamięci. Zajęte: 66% SRAM, 92% Pamięć Flash.
GSM_2017_05_06-11-52.hex- Naprawiono z funkcją DelayBeforeAlarm. Zajęte: 66% SRAM, 93% Pamięć Flash.
GSM_2017_05_23-21-27.hex- Nieznacznie zmieniono wyprowadzanie informacji na konsolę. Dodano obsługę modułów rozszerzeń portów na PCF8574A z adresami od 0x38 do 0x3f włącznie. Naprawiono błąd do. Teraz urządzenie jest ponownie uruchamiane automatycznie po komendach FullReset, ResetConfig, ResetPhone i po pomyślnym wykonaniu komendy MemTest. Dodano polecenie WatchPowerTime. Teraz można ustawić czas, po którym zostanie wysłana wiadomość SMS o odłączeniu zewnętrznego źródła zasilania. Zajęte: 67% SRAM, 94% Pamięć Flash.
GSM_2017_05_26-20-22.hex- Poprawiono inicjalizację pamięci czujników karty rozszerzeń. Zmieniono składnię polecenia AddPhone. Dodano polecenie EditMainPhone. Zmieniono zasadę działania systemu powiadomień, gdy czujnik zostanie wyzwolony, w pierwszej kolejności będą wysyłane wiadomości sms, po których będą wykonywane połączenia głosowe. Alarmujące wiadomości sms będą wysyłane na numery telefonów ze znakiem „S” (SMS). Połączenia głosowe będą wykonywane na numery ze znakiem „R” (dzwonek). Komunikaty o wyłączeniu/włączeniu zasilania zewnętrznego będą wysyłane na numery telefonów ze znakiem „P” (Zasilanie). Dodano polecenie RingTime. Teraz można ustawić czas trwania alarmu dźwiękowego, parametr może mieć wartość od 10 do 255 sekund. Teraz polecenie RingOn / RingOff globalnie włącza / wyłącza powiadamianie o połączeniach głosowych. Dodano polecenie ResetSensor. Zajęte: 68% SRAM, 99% Pamięć Flash.
GSM_2017_06_02-17-43.hex- Dodano parametr „I” (Info) do komend AddPhone i EditMainPhone, który odpowiada za powiadomienie sms o uzbrojeniu lub rozbrojeniu urządzenia. Teraz po dodaniu numeru głównego urządzenie automatycznie się zrestartuje. Teraz możesz dodać te same numery do pamięci urządzenia. Podczas dodawania drugiego i kolejnych zduplikowanych numerów atrybuty „M”, „S”, „P” i „I” zostaną z nich automatycznie usunięte. Te numery będą używane do powtarzających się połączeń głosowych, gdy czujniki zostaną uruchomione. Naprawiono błąd z wyjściem krzywej do konsoli po wykonaniu polecenia AddPhone, teraz informacja nie wyświetla się automatycznie po dodaniu numeru. Dodano polecenie Reboot. Zajęte: 69% SRAM, 99% Pamięć Flash.
GSM_2017_06_11-00-07.hex- Teraz znowu, gdy styki kontaktronu głównego są zamknięte (drzwi są zamknięte), urządzenie miga niebieską diodą LED przez 2 sekundy, sygnalizując normalną pracę czujnika, podczas gdy urządzenie nie jest uzbrojone lub rozbrojone. Usunięto polecenia RingOn / RingOff. Teraz urządzenie można rozbroić podczas wezwania alarmowego, teraz są one wykonywane w tle. Zajęte: 69% SRAM, 99% Pamięć Flash.
GSM_2017_07_04-21-52.hex- Teraz polecenie Pauza nie wysyła odpowiedzi SMS. Usunięto polecenia TestOn i TestOff. Flaga zarządzania została usunięta ze wszystkich numerów. Zajęte: 68% SRAM, 96% Pamięć Flash.
GSM_2017_07_24-12-02.hex- Dodano komendy ReedSwitchOn / ReedSwitchOff do monitorowania głównego czujnika kontaktronowego, teraz można go włączyć / wyłączyć w taki sam sposób jak czujnik ruchu. Naprawiono błąd polecenia Info. Polecenia TestOn i TestOff są ponownie obecne w oprogramowaniu. Zajęte: 68% SRAM, 96% Pamięć Flash.
GSM_2017_07_26-10-03.hex- Dodano polecenie ModemID. Automatyczne wykrywanie modemu odbywa się tylko wtedy, gdy wartość tego parametru wynosi 0. Po ustawieniu wartości parametru na 0 urządzenie jest automatycznie restartowane. Zajęte: 68% SRAM, 98% Pamięć Flash.
GSM_2017_08_03-22-03.hex- Teraz alarm może sterować urządzeniami zewnętrznymi. Do sterowania wykorzystywane jest wyjście analogowe A3 (D17 - używane jako cyfrowe). Poziom logiczny wyjścia (+5V lub GND) można zmienić, po zmianie poziomu za pomocą polecenia ustawień urządzenie automatycznie uruchomi się ponownie. Czas trwania sygnału sterującego urządzeniem zewnętrznym można zmienić. Dodano polecenia ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open. Pewne zmiany w logice poleceń sterujących. Optymalizacja pamięci. Zajęte: 68% SRAM, 99% Pamięć Flash.
GSM_2017_08_10-12-17.hex- Usunięto komendy SmsOn / SmsOff, ReedSwitchOn / ReedSwitchOff, PIROn / PIROff i wszystko z nimi związane. Polecenie DelayBeforeAlarm zastąpione rozszerzonymi poleceniami. Zmieniono dane wyjściowe polecenia informacyjnego. Zoptymalizowano dane wyjściowe polecenia ListConfig do konsoli. Teraz do pinów D6 i A0 można podłączyć dowolne czujniki cyfrowe o wysokim lub niskim poziomie odpowiedzi, w tym kontaktrony. Piny D6 i A0 muszą być podłączone do masy (GND) przez rezystor 10 (20) kΩ. Jeżeli czujnik jest skonfigurowany na niski poziom wyzwalania (włączony w trybie kontaktronu), sprawdzana jest ciągłość obwodu. Poziom logiczny wyzwalania na wejściach D6 i A0 (+5V lub GND) można zmienić, po zmianie poziomu logicznego urządzenie zostanie automatycznie zrestartowane. Dla każdego z czujników (główny, drugi, karty rozszerzeń PCF) po wyzwoleniu można ustawić swój własny czas, po którym nastąpi powiadomienie (SMS i/lub połączenie głosowe). "Czujnik PIR" przemianowany na "Drugi czujnik". Poprawiono działanie płytki rozszerzeń, błąd, przez który urządzenie zawsze powiadamiało o zadziałaniu czujników, niezależnie od tego, czy było uzbrojone, czy nie. Teraz można wybrać tryb pracy, w którym urządzenie może monitorować czujniki na płytce rozszerzeń zarówno w stanie czuwania (GuardOn), jak i w trybie wyłączonym (GuardOff). Dodano polecenia PCFFForceOn / PCFForceOff, MainSensorLevelHigh / MainSensorLevelLow / MainSensorLevelOff, SecondSensorLevelHigh / SecondSensorLevelLow / SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeFAforeAlay, PC Zajęte: 68% SRAM, 99% Pamięć Flash.

* Kolejne wersje oprogramowania zawierają zmiany w stosunku do poprzednich wersji.


Używane porty Arduino Nano v3

D4- wyjście pinu "alarm", gdy czujnik jest wyzwolony, na tym pinie ustawiany jest sygnał wysokiego poziomu
D5- odwrotne wyjście pinu "alarm", gdy czujnik zostanie wyzwolony, na tym pinie ustawiany jest sygnał niskiego poziomu

D6- kontaktron. Począwszy od wersji GSM_2017_08_10-12-17.hex do pinu D6 można podłączyć dowolne czujniki cyfrowe o wysokim lub niskim poziomie odpowiedzi, w tym kontaktrony. Pin D6 musi być podłączony do masy (GND) przez rezystor 10 (20) kΩ.
D7- podłączony do dzielnika napięcia z zewnętrznego zasilacza +5V. Górne ramię ma 2,2 kOhm, dolne 3,3 kOhm.

Dzielnik napięcia


D8- Modem TX
D9-Modem RX

D10- czerwona dioda LED
D11- niebieska dioda LED
D12- zielona dioda LED

Połączenie peryferyjne:
A0- Czujnik ruchu . Począwszy od wersji GSM_2017_08_10-12-17.hex do pinu A0 można podłączyć dowolne czujniki cyfrowe o wysokim lub niskim poziomie odpowiedzi, w tym kontaktrony. Pin A0 musi być podłączony do masy (GND) przez rezystor 10 (20) kΩ.

A1- Wejście do sterowania zewnętrznego. Alarm uzbroi/rozbroi system, gdy na wejściu pojawi się wysoki poziom +5V.
A2- Odwrócone wejście do sterowania zewnętrznego. Alarm uzbroi/rozbroi system, gdy na wejściu pojawi się niski poziom GND.

A3- Konfigurowalne wyjście (+5V lub GND) do sterowania urządzeniami zewnętrznymi. Po odebraniu polecenia sterującego wartość na tym wyjściu zmienia się w zależności od tego, które zostało ustawione na określony czas.

A4- SDA I2C
A5- SLC I2C
, do podłączenia dodatkowych 8 czujników.


Polecenia sterujące dla hex - firmware

Uwaga! Dedykowane polecenia pogrubione można wykonać tylko z numeru głównego, ponieważ są one odpowiedzialne za konfigurację urządzenia. Pozostałe polecenia można wykonać z numerów ze znakiem „Zarządzanie”.

SMS - w komendach sterujących nie jest rozróżniana wielkość liter:
Dodaj telefon- Dodaj numer telefonu. W sumie można dodać nie więcej niż 9 numerów + 1 numer główny, który jest automatycznie zapisywany w pamięci przy pierwszym połączeniu z urządzeniem po przywróceniu ustawień fabrycznych za pomocą poleceń Zresetuj telefon lub Pełny reset... Te. ten, kto pierwszy zadzwonił do urządzenia po zresetowaniu go do ustawień fabrycznych, jest „głównym”, numer ten jest wpisywany do pierwszej komórki pamięci i nie można go zmienić ani usunąć SMS-em. Możliwe jest dodanie dwóch identycznych numerów, ale wtedy zduplikowany numer automatycznie zachowuje tylko znak „r” - wyłącznie dla powtórnych połączeń głosowych.
Przykładowe polecenie:



Składnia polecenia:

Dodaj telefon- drużyna
: - ogranicznik
5 - zapisz do piątej lokalizacji pamięci
+71234567890 - numer telefonu
Przed wersją GSM_2017_05_26-20-22.hex:
a - parametr „Alarm” - na numery z tym parametrem będą wysyłane SMS-y - komunikaty o aktywacji alarmu oraz komunikaty o uzbrojeniu lub rozbrojeniu.
Od wersji GSM_2017_05_26-20-22.hex:
m - parametr „Zarządzanie” - zarządzanie alarmami włączone
s - parametr "SMS" - wiadomość sms zostanie wysłana po zadziałaniu czujników
r - parametr „Dzwonek” – połączenie głosowe zostanie wykonane po zadziałaniu czujników
p - parametr „Zasilanie” - wiadomość sms zostanie wysłana po włączeniu / wyłączeniu zewnętrznego zasilania
i - Parametr "Info" - wiadomość sms zostanie wysłana podczas uzbrajania lub rozbrajania
W przypadku braku parametrów „m”, „s”, „r”, „p”, „i” telefon jest przechowywany w pamięci, ale nie jest w żaden sposób wykorzystywany.


Usuń telefon- Usuń numer telefonu.
Przykładowe polecenie:

Składnia polecenia:

Usuń telefon - polecenie
: - ogranicznik
+71234567891 - numer telefonu


EdytujGłówny Telefon- Zmień parametry "s", "r", "p", "i" telefonu głównego, numer ten jest wpisywany do pierwszej komórki pamięci.
Przykładowe polecenie:

Składnia polecenia:

EditMainPhone - polecenie
: - ogranicznik
srpi - parametry


SaldoNum- Zmiana numeru żądania salda i przetwarzanie długości odpowiedzi na żądanie. Domyślna wartość dla Beeline: # 100 # L22.
Przykładowe polecenie:

Składnia polecenia:

BalanceNum - polecenie
: - ogranicznik
# 103 # - numer żądania salda
L24 - Długość (len) wysłanej odpowiedzi to 24 znaki, odcinamy spam od zapytania o saldo.


Edytuj czujnik- Zmień nazwę czujnika i logiczny poziom działania. W sumie nie może być więcej niż 8 dodatkowych czujników. Po zmianie parametrów wymagane jest ponowne uruchomienie urządzenia.
Przykładowe polecenie:
EditSensor: 1 + Datchik dvizheniya v koridore # h

Składnia polecenia:

EditSensor - polecenie
: - ogranicznik
1 - zapisz do pierwszej lokalizacji w pamięci
+ - separator
Datchik dvizheniya v koridore - nazwa czujnika, nie może przekraczać 36 znaków ze spacjami.
#h - Znak wysokiego poziomu logicznego z czujnika, po otrzymaniu którego zostanie wyzwolony alarm. Jeśli nie ma „#h”, alarm zostanie wyzwolony, gdy z czujnika zostanie odebrany niski poziom logiczny.


Czas spania- Czas "zasypiania" alarmu przy odbiorze SMS - polecenie "Pauza" jest podawany w minutach. Wartość domyślna: 15, nie może być mniejsza niż 1 i większa niż 60.
Przykładowe polecenie:

Składnia polecenia:

Czas uśpienia - polecenie
: - ogranicznik
20 - 20 minut "snu".


AlarmPinTime- Czas, przez który alarm / odwrotny pin jest włączony / wyłączony, podawany jest w sekundach. Wartość domyślna: 60, nie może być mniejsza niż 1 sekunda i większa niż 43200 sekund (12 godzin).
Przykładowe polecenie:

Składnia polecenia:

Polecenie AlarmPinTime
: - ogranicznik
30 - 30 sekund włączania / wyłączania pinu alarmowego.


Opóźnienie przed strażą- Czas przed uzbrojeniem urządzenia po otrzymaniu odpowiedniego polecenia.
Przykładowe polecenie:

Składnia polecenia:

DelayBeforeGuard - Zespół
: - ogranicznik
25 - 25 sekund przed uzbrojeniem


Opóźnienie przed alarmem- Czas, po którym zostanie wysłane powiadomienie SMS „alarmujące”, jeśli alarm nie został w tym czasie rozbrojony. Zastąpione przez rozszerzone komendy począwszy od wersji GSM_2017_08_10-12-17.hex
Przykładowe polecenie:

Składnia polecenia:

Opóźnienie przed alarmem - polecenie
: - ogranicznik
40 - 40 sekund przed wysłaniem powiadomienia „alarm”


OglądajPowerTime- Czas w minutach, po którym zostanie wysłana wiadomość SMS o odłączeniu zewnętrznego źródła zasilania. Jeśli zasilanie zewnętrzne zostanie przywrócone przed upływem ustawionego czasu, wiadomość nie zostanie wysłana.
Przykładowe polecenie:

Składnia polecenia:

WatchPowerTime — Zespół
: - ogranicznik
5 - 5 minut przed wysłaniem wiadomości SMS


Czas dzwonienia- Czas trwania alarmu głosowego, parametr może mieć wartość od 10 do 255 sekund.
Przykładowe polecenie:

Składnia polecenia:

RingTime - polecenie
: - ogranicznik
Czas trwania połączenia 40 - 40 wyniesie 40 sekund, po czym zostanie wywołany kolejny abonent.


Identyfikator modemu- Wymuszona instalacja modelu używanego modemu. Możliwe wartości: 0 - autodetekcja modemu, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Przykładowe polecenie:

Składnia polecenia:

ModemID - polecenie
: - ogranicznik
2 - identyfikator modemu.


ExtDeviceTime- Liczba sekund, o jaką zmieni się poziom sygnału na wyjściu sterowania urządzeniem zewnętrznym.
Przykładowe polecenie:

Składnia polecenia:

ExtDeviceTime- polecenie
: - ogranicznik
5 - 5 sekund


ExtDevicePoziomNiski- Urządzenie zewnętrzne podłączone do wyjścia A3 jest sterowane niskim poziomem sygnału (GND). Domyślnie wyjście będzie wysokie + 5 V do momentu otrzymania polecenia sterowania urządzeniem zewnętrznym.
ExtDevicePoziomWysoki- Urządzenie zewnętrzne podłączone do wyjścia A3 sterowane jest wysokim poziomem sygnału (+5V). Wyjście będzie domyślnie miało niski poziom GND, dopóki nie zostanie odebrane polecenie sterowania urządzeniem zewnętrznym.

Resetuj czujnik- zresetuj parametry czujników ekspandera portów,

Resetuj konfigurację- zresetuj ustawienia do ustawień fabrycznych

Zresetuj telefon- usuwanie z pamięci wszystkich numery telefoniczne

Pełny reset- resetowanie ustawień, usunięcie wszystkich numerów telefonów z pamięci, przywrócenie wartości domyślnej komendy BalanceNum.

Dzwonek włączony- włączyć powiadamianie telefonem na numer „główny” zapisany w pierwszej komórce pamięci po zadziałaniu czujnika. Usunięto od wersji GSM_2017_06_11-00-07.hex
Wyłączenie- wyłącz powiadomienie przez połączenie, gdy czujnik zostanie wyzwolony. Usunięto od wersji GSM_2017_06_11-00-07.hex

SmsOn- Włącz powiadomienie sms, gdy czujnik zostanie wyzwolony. Usunięto od wersji GSM_2017_08_10-12-17.hex
SmsOff- wyłącz powiadomienia sms, gdy czujnik zostanie wyzwolony. Usunięto od wersji GSM_2017_08_10-12-17.hex

PIRON- włącz przetwarzanie czujnika ruchu
PIROff- wyłącz przetwarzanie czujnika ruchu

Przełącznik Reed- włączyć przetwarzanie głównego kontaktronu
Wyłącznik Reed- wyłącz przetwarzanie głównego kontaktronu

WatchPowerOn- włącz sterowanie zasilaniem zewnętrznym, wiadomość SMS o odłączeniu zasilania zewnętrznego zostanie wysłana, jeżeli alarm jest uzbrojony. Usunięto od wersji GSM_2017_03_01-23-37.

WatchPowerOn1- włącz sterowanie zasilaniem zewnętrznym, wiadomość SMS o odłączeniu zasilania zewnętrznego zostanie wysłana, jeżeli alarm jest uzbrojony.
WatchPowerOn2- włącz sterowanie zewnętrznym zasilaniem, wiadomość SMS o odłączeniu zewnętrznego zasilania zostanie w każdym przypadku wysłana

OglądajWyłącz- wyłącz sterowanie zasilaniem zewnętrznym

Przycisk Guard włączony- włączone sterowanie alarmami przez urządzenia zewnętrzne lub przyciskiem Usunięte od wersji GSM_2017_04_16-12-00.
Przycisk Strażnika Włączony1- funkcja uzbrajanie lub rozbrajanie ochrona przez urządzenia zewnętrzne lub włączony przycisk
Przycisk Guard włączony2- funkcja tylko produkcje uzbrojony przez urządzenia zewnętrzne lub włączony przycisk, wyłączenie czuwania odbywa się przez wywołanie urządzenia lub polecenie SMS.
GuardPrzyciskWył.- sterowanie alarmem przez urządzenia zewnętrzne lub przyciskiem jest wyłączone;

PCFForceOn- ciągły monitoring grupy wszystkich czujników ekspandera
PCFForceOff- monitorowanie grupy wszystkich czujników ekspandera tylko wtedy, gdy urządzenie jest uzbrojone;

GłównyPoziomCzujnikaWysoki- powiadomienie o alarmie zostanie wysłane, gdy na wejściu (D6) z czujnika pojawi się sygnał wysokiego poziomu (+5 V)
GłównyPoziomCzujnikaNiski- powiadomienie o alarmie zostanie wysłane, gdy na wejściu (D6) z czujnika pojawi się sygnał niskiego poziomu (GND)
GłównyPoziomCzujnikaWył- przetwarzanie czujnika wejściowego (D6) wyłączone

Poziom drugiego czujnika wysoki- powiadomienie o alarmie zostanie wysłane, gdy na wejściu (A0) z czujnika pojawi się sygnał wysokiego poziomu (+5 V)
Poziom drugiego czujnika Niski- powiadomienie o alarmie zostanie wysłane, gdy na wejściu (A0) z czujnika pojawi się sygnał niskiego poziomu (GND)
Poziom drugiego czujnika Wył.- przetwarzanie czujnika na wejściu (A0) jest wyłączone

GłówneOpóźnieniePrzed Alarmem- czas, po którym zostanie wysłane powiadomienie SMS „alarm” po zadziałaniu czujnika głównego (D6), jeśli alarm nie został w tym czasie rozbrojony. Składnia jest taka sama jak w przypadku polecenia DelayBeforeAlarm.
Drugie opóźnienie przed alarmem- czas, po którym zostanie wysłane powiadomienie SMS „alarm” o zadziałaniu dodatkowego czujnika (A0), jeśli alarm nie został w tym czasie rozbrojony. Składnia jest taka sama jak w przypadku polecenia DelayBeforeAlarm.
PCFDopóźnienie przed alarmem- czas, po którym zostanie wysłane powiadomienie SMS „alarm” o zadziałaniu czujników karty rozszerzeń (PCF8574), jeśli alarm nie został w tym czasie rozbrojony. Składnia jest taka sama jak w przypadku polecenia DelayBeforeAlarm.

GuardOn - ramię
GuardOff - usuń ochronę

Otwórz - polecenie do sterowania urządzeniem zewnętrznym

Info - sprawdź status, w odpowiedzi na tę wiadomość zostanie wysłana wiadomość sms z informacją o numerze, z którego zostało włączone/wyłączone zabezpieczenie

Pauza - wstrzymuje system na czas ustawiony komendą sleeptime w minutach, system nie reaguje na zadziałanie czujnika.

TestOn - włączony tryb testowy, migająca niebieska dioda LED.
TestOff - tryb testowy jest wyłączony.

LedOff - wyłącza diodę czuwania.
LedOn - włącza diodę czuwania.

Pieniądze - prośba o saldo.

ClearSms - Usuń wszystkie sms z pamięci

Komendy konsoli (do wersji GSM_2017_04_24-13-22.hex) - wprowadzane w monitorze portu Arduino IDE:

AddPhone - podobny do polecenia SMS AddPhone

DeletePhone - podobny do polecenia SMS DeletePhone

EditSensor - podobne do polecenia sms EditSensor

ListPhone - wyświetlanie na monitorze portu listy telefonów zapisanych w pamięci

ResetConfig - podobny do polecenia sms ResetConfig

ResetPhone - podobny do polecenia sms ResetPhone

FullReset - podobny do polecenia SMS FullReset

ClearSms - podobny do polecenia sms ClearSms

WatchPowerOn1 - podobny do polecenia sms WatchPowerOn1
WatchPowerOn2 - podobny do polecenia sms WatchPowerOn2
WatchPowerOff - podobny do polecenia sms WatchPowerOff

GuardButtonOn - podobny do polecenia sms GuardButtonOn. Usunięto od wersji GSM_2017_04_16-12-00
GuardButtonOn1 - podobny do polecenia sms GuardButtonOn1
GuardButtonOn2 - podobny do polecenia sms GuardButtonOn2
GuardButtonOff - podobny do polecenia sms GuardButtonOff

Memtest - test pamięci nieulotnej urządzenia, wszystkie ustawienia urządzenia zostaną zresetowane, podobnie jak w poleceniu FullReset.

I2CScan - wyszukaj i zainicjuj obsługiwane urządzenia na magistrali I2C.

ListConfig - wyprowadza bieżącą konfigurację urządzenia do monitora portu.

ListSensor — wyprowadza bieżącą konfigurację czujnika do monitora portu.

UPD. Podczas korzystania z czujnika ruchu, aby wykluczyć fałszywe alarmy podczas pracy modemu, jest to konieczne pomiędzy szpilki GND i A0 Arduino stawiać opór, dziękujemy przyjacielowi
AllowPhone = ("70001234501", "70001234502", "70001234503", "70001234504", "70001234505") - Numery, które mogą kontrolować bezpieczeństwo.
AlarmPhone = ("70001234501", "70001234502") - Numery do wysyłania powiadomień SMS o wyzwoleniu czujnika oraz powiadomień o rozbrojeniu lub uzbrojeniu. Pierwszy numer na liście zostanie wywołany, gdy czujnik zostanie wyzwolony, jeśli zostanie wykonane polecenie RingOn, domyślnie ta opcja jest włączona. Dzieje się tak, ponieważ wiadomości SMS mogą nadejść z pewnym opóźnieniem, ale połączenie musi zostać wykonane natychmiast.

Jeżeli połączenie pochodzi z autoryzowanego numeru lub wiadomość SMS z poleceniem GuardOn / GuardOff to w zależności od aktualnego stanu ochrony na numery wymienione w tablicy AlarmPhone zostanie wysłana wiadomość SMS o uzbrojeniu lub rozbrojeniu zostanie również wysłana na numer, z którego przyszło połączenie.

Gdy czujnik jest wyzwalany wiadomości sms są wysyłane na wszystkie numery z tablicy AlarmPhone (lista) i połączenie głosowe zostanie wykonane na pierwszy numer z tej tablicy.

Sygnalizacja świetlna:
Czerwona dioda LED - czuwanie.
Dioda świeci Zielony- rozbrojony, włączony / wyłączony komendą sms LedOn / LedOff.
Dioda LED ciągle miga na niebiesko - sygnalizuje, że wszystko jest w porządku z Arduino, płytka nie jest zamrożona, służy wyłącznie do debugowania, włącza się/wyłącza poleceniem sms TestOn/TestOff.
*Kod zawiera funkcję LedTest(), mruga niebieską diodą LED, służy tylko do monitorowania Arduino, mruga oznacza, że ​​działa, nie mruga - jest zamrożony. Jeszcze nie zamarzam :)

Nieistotne!

Podłączanie 2 lub więcej czujników do otwartego oprogramowania układowego (dotyczy tylko tego oprogramowania układowego szkic_02_12_2016.ino)
Do podłączenia dodatkowych kontaktronów wykorzystujemy wolne piny cyfrowe D2, D3, D5 lub D7. Schemat połączeń z dodatkowym czujnikiem na D7.

Wymagane zmiany oprogramowania
... #define DoorPin 6 // Numer wejścia podłączonego do czujnika głównego int8_t DoorState = 0; // Zmienna do przechowywania stanu czujnika głównego int8_t DoorFlag = 1; // Zmienna do przechowywania stanu czujnika głównego #define BackDoorPin 7 // Numer wejścia podłączonego do czujnika dodatkowego int8_t BackDoorState = 0; // Zmienna do przechowywania stanu dodatkowego czujnika int8_t BackDoorFlag = 1; // Zmienna do przechowywania stanu dodatkowego czujnika...
void setup() (... pinMode (DoorPin, INPUT); pinMode (BackDoorPin, INPUT);...
... void Detect() (// Odczyt wartości z czujników DoorState = digitalRead (DoorPin); BackDoorState = digitalRead (BackDoorPin); // Przetwarzanie głównego czujnika if (DoorState == LOW && DoorFlag == 0) (DoorFlag = 1; opóźnienie (100); if (LedOn == 1) digitalWrite (GLed, LOW); Alarm ();) if (DoorState == HIGH && DoorFlag == 1) (DoorFlag = 0; opóźnienie (100);) // Przetwarzanie dodatkowego czujnika if (BackDoorState == LOW && BackDoorFlag == 0) (BackDoorFlag = 1; opóźnienie (100); if (LedOn == 1) digitalWrite (GLed, LOW); Alarm ();) if (BackDoorState = = HIGH && BackDoorFlag == 1) (BackDoorFlag = 0; opóźnienie (100);)) ...

I jeszcze jedno:
1. Lepiej zastosować diody zaprojektowane na prąd 2 A, ponieważ moduł infekuje prądem 1 A i musimy jeszcze czymś zasilić Arduino i modem. W tym przypadku stosuje się diody 1N4007, jeśli ulegną awarii, wymień je na 2 A.
2. Użyłem wszystkich rezystorów do diody na 20 kOhm, żeby nie oświetlać w nocy całego korytarza.
3. Zawiesiłem też rezystor 20 kOhm na kontaktronie między pinem GND a pinem D6.

To wszystko na teraz. Dziękuję za uwagę! :)

planuję kupić +207 Dodaj do ulubionych podobała mi się recenzja +112 +243

Prosty system alarmowy w domu na Arduino Uno jest tematem tego przeglądu. Pomimo tego, że mikrokontrolery z tej rodziny były pierwotnie przeznaczone do nauczania studentów, całkiem możliwe jest wykonanie naprawdę przydatnego projektu na Arduino. Alarmy antywłamaniowe do domu lub działka ogrodowa będzie mógł ostrzec właściciela o sytuacji awaryjnej i wysłać wiadomość z czujników na smartfon.

Alarm domowy Arduino

Zastanówmy się, jak zrobić alarm do domu, podmiejskiego ogrodu lub garażu na Arduino Uno lub Nano. W projekcie zastosowaliśmy czujnik ruchu, czujnik wody i temperatury - jest to zestaw podstawowych czujników do najprostszego systemu ostrzegania. Dowiesz się o przełomie w systemie wodociągowym, obniżeniu temperatury w domu czy przeniknięciu obcych do pomieszczenia w dowolnym czasie i miejscu.

Czujniki Arduino do alarmów antywłamaniowych

W tym projekcie wykorzystaliśmy starego smartfona do przesyłania informacji przez Internet. W związku z tym lokalizacja Twojej nieruchomości musi mieć sygnał GPRS, a każdy operator komórkowy ma najprostszą taryfę z dostępem do Internetu. Jeśli te warunki nie są spełnione, w systemie bezpieczeństwa znajduje się syrena dźwiękowa, która również może odstraszyć złodziei.

W projekcie zastosowano najprostsze czujniki – czujnik temperatury DHT11, czujnik wycieku wody, który możesz wykonać samodzielnie oraz czujnik ruchu. Jeśli zdecydujesz się na bardziej złożoną sygnalizację, zalecamy zapoznanie się z projektem alarm przeciwpożarowy lub alarm na GSM. Będziesz także musiał zainstalować aplikację na swoim smartfonie i zarejestrować dwa konta na Twitterze.

Jak zrobić alarm Arduino

Do tego projektu potrzebujemy:

  • płytka Arduino Uno / Arduino Nano / Arduino Mega;
  • smartfon z dostępem do Internetu;
  • czujnik temperatury i wilgotności DHT11;
  • czujnik wycieku wody;
  • czujnik ruchu i przycisk (przełącznik);
  • diody LED, rezystory, przewody itp.


Szkic do alarmu, wszystkie niezbędne biblioteki oraz aplikację na smartfona można pobrać w jednym archiwum. Należy pamiętać, że zdalne sterowanie Arduino nie będzie możliwe, ponieważ projekt jest tak prosty, jak to tylko możliwe. Tylko w wiadomościach na smartfonie możesz dowiedzieć się o odczytach czujników zainstalowanych w domu, po określonym czasie lub po zadziałaniu czujnika.

Szkic alarmu bezpieczeństwa Arduino Uno / Nano

#zawierać // podłączenie biblioteki SoftwareSerial.h SoftwareSerial mySerial (2, 3); // określ odpowiednio piny rx i tx#zawierać // podłącz bibliotekę dla czujnika DHT dht (16, DHT11); // powiedz, na którym porcie czujnik będzie włączony int tmp; #zdefiniuj PIR 5 // port do podłączenia czujnika ruchu wewn pir; #definiuj KNP 7 // port do podłączenia przełącznika int knp; #define WTR 19 // port do podłączenia czujnika wody m.wtr; #definiuj diodę LED 11 // port do podłączenia diod LED#definiuj BUZ 9 // port do podłączenia głośnika piezo // ciągi identyfikujące informacje otrzymane na smartfonie Ciąg ciągT = ciąg ("*"); Ciąg ciągP = Ciąg („^”); Ciąg ciągW = Ciąg ("-"); Ciąg ciągH = Ciąg ("#"); // zmienne dla liczników, cykli zliczania itp. niepodpisany wniosek długi; długa godzina bez znaku; bajt m, ​​s1, s2, s3, c = 10; void setup () (mySerial.begin (9600); Serial .begin (9600); dht.begin (); pinMode (PIR, INPUT); analogWrite (PIR, LOW); pinMode (KNP, INPUT); analogWrite (KNP, LOW); pinMode (WTR, INPUT); analogWrite (WTR, LOW); // sprawdź diody i brzęczyk przy włączonym zasilaniu pinMode (BUZ, WYJŚCIE); pinMode (LED, WYJŚCIE); zapis analogowy (LED, 255); ton (BUZ, 100); opóźnienie (1000); zapis analogowy (LED, 0); bez dźwięku (BUZ); opóźnienie (1000); ) void loop () (tmp = dht.readTemperature (); pir = digitalRead (PIR); knp = digitalRead (KNP); wtr = analogRead (WTR); // licznik startowy godzina = milis (); // 3600000 milisekund to 1 godzina, 10800000 - 3 godziny // jeśli minęły 3 godziny - wyślij dane do smartfona // w razie potrzeby wpisz swoje wartości zamiast 10800000 if (millis() - godzina> 10800000) (mySerial.println (tmp + stringT); mySerial.println (stringH); // wyślij sygnał, że minęły 3 godziny } // licząc cykle, co dziesiąty cykl wysyłamy dane do smartfona do--; Seryjny .print (c); Serial .println ("-pętla"); Serial .println (""); opóźnienie (1000); brak dźwięku (BUZ); jeśli (c> 10) (c = 10;) jeśli (c< 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println (tmp + stringT); // wyślij wartość temperatury mySerial.println (pir + stringP); // wyślij obecność ruchu w domu mySerial.println (wtr + stringW); // wyślij dane z czujników wody // CZUJNIK RUCHU ZADZIAŁAŁ I PRZYCISK JEST WYŁĄCZONY - WŁĄCZ ŚWIATŁO if (pir == HIGH && knp == LOW) (analogWrite (LED, 255);) // CZUJNIK RUCHU ODŁĄCZONY, A PRZYCISK WYŁĄCZONY - WYŁĄCZ ŚWIATŁO if (pir == LOW && knp == LOW) (ruch = milis (); while (pir == LOW) (tmp = dht.readTemperature (); pir = digitalRead (PIR); knp = digitalRead (KNP); wtr = analogRead (WTR); c--; Serial .print (c); Serial .println ("-pętla"); Serial .println (""); opóźnienie (1000); noTone (BUZ); if (c> 10 ) (c = 10;) jeśli (c< 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println (tmp + stringT); // wyślij wartość temperatury mySerial.println (pir + stringP); // wyślij obecność ruchu w domu mySerial.println (wtr + stringW); // wyślij dane z czujników wody // wyświetl wszystkie dane z czujników na monitorze portu Serial .print ("TMP ="); Serial .println (tmp); Serial .print ("PIR ="); Serial .println (pir); Serial .print ("KNP ="); Serial .println (knp); Serial .print ("WTR ="); Serial .println (wtr); Serial .println (""); ) // INTERWAŁ WYŁĄCZANIA ŚWIATŁA W MISIEKUNKACH if (millis() - motion> 5000) (analogWrite (LED, 0); przerwa;) if (pir == HIGH) (analogWrite (LED, 255); przerwa;))) // SPRAWDZIŁ CZUJNIK RUCHU I WŁĄCZONY PRZYCISK - URUCHAMIANIE TIMERA if (pir == HIGH && knp == HIGH) (ruch = milis (); opóźnienie (1000); analogowy zapis (LED, 255); Serial .println ( „CZUJNIK DZIAŁAŁ”); Serial .println (""); opóźnienie (1000); while (knp == HIGH) (tmp = dht.readTemperature (); pir = digitalRead (PIR); knp = digitalRead (KNP); wtr = analogRead (WTR); c--; Serial .print (c); Serial. println ("-pętla"); Serial. println (""); opóźnienie (1000); noTone (BUZ); if (c> 10) (c = 10;) if (c< 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println (tmp + stringT); // wyślij wartość temperatury mySerial.println (pir + stringP); // wyślij obecność ruchu w domu mySerial.println (wtr + stringW); // wyślij dane z czujników wody // wyświetl wszystkie dane z czujników na monitorze portu Serial .print ("TMP ="); Serial .println (tmp); Serial .print ("PIR ="); Serial .println (pir); Serial .print ("KNP ="); Serial .println (knp); Serial .print ("WTR ="); Serial .println (wtr); Serial .println (""); ) // JEŚLI CZUJNIK RUCHU JEST ODŁĄCZONY - WYSYŁANIE WIADOMOŚCI NA BLUES if (knp == LOW) (Serial .println ( "ALARM WYŁĄCZONY"); Serial .println (""); opóźnienie (1000); ) // JEŚLI BYŁO WIĘCEJ NIŻ 10 SEKUND - WYSYŁANIE WIADOMOŚCI DO BLUESA if (millis () - ruch> 10000 && s1! = 1) (m = 1; przejdź do wiadomości1;) opóźnienie (1000); )) // JEŚLI WODA WYCIEKA – WYSYŁANIE WIADOMOŚCI DO BLUESA if (wtr> 500 && s2! = 2) (m = 2; goto message2;) if (wtr> 500) (ton (BUZ, 400);) if (wtr<= 500) { noTone (BUZ); } // JEŚLI SPADNIE TEMPERATURA - WYSYŁANIE WIADOMOŚCI NA BLUESA jeśli (tmp< 20 && s3 != 3) { m = 3; goto message3; } if (tmp < 20) { tone (BUZ, 200); } if (tmp >= 20) (noTone (BUZ);) message1: while (m == 1) (Serial .println ( "ALARM WYSŁANY NA NIEBIESKIM" // wyślij wartość temperatury mySerial.println (1 + stringP); // wyślij obecność ruchu w domu mySerial.println (wtr + stringW); // wyślij dane z czujników wody s1 = 1; m = 0; złamać; ) message2: while (m == 2) (Serial .println ( „SYGNAŁ WYCIEKU WODY WYSŁANY NA NIEBIESKIM”); Serial .println (""); opóźnienie (1000); mySerial.println (tmp + stringT); // wyślij wartość temperatury mySerial.println (pir + stringP); // wyślij obecność ruchu w domu mySerial.println (500 + stringW); // wyślij dane z czujników wody s2 = 2; m = 0; złamać; ) message3: while (m == 3) (Serial .println ( „SYGNAŁ TEMPERATURY WYSŁANY NA NIEBIESKIM”); Serial .println (""); opóźnienie (1000); mySerial.println (20 + ciągT); // wyślij wartość temperatury mySerial.println (pir + stringP); // wyślij obecność ruchu w domu mySerial.println (wtr + stringW); // wyślij dane z czujników wody s3 = 3; m = 0; złamać; ))

Wyjaśnienia do kodu:

Na pierwszy rzut oka schemat może wydawać się skomplikowany, ale tak nie jest. Sygnalizację można zamontować na dowolnej płytce, w tym Arduino Uno. Zamiast diod LED można użyć taśmy LED, ale jednocześnie zasilanie płytki będzie wymagało już 12 V, a taśmę LED należy podłączyć nie do 5 V, ale do pinu Vin Arduino. Dzięki diodom LED do zasilania obwodu można użyć zwykłej ładowarki do telefonu 5 V.

Instalowanie aplikacji alarmowej na smartfonie

Aby zainstalować aplikację, pobierz plik home_twit.apk na telefon za pomocą kabla USB, znajdź go w pamięci telefonu i kliknij „Zainstaluj”. Ten telefon musi zawsze znajdować się w strefie bluethoth sygnału Arduino. Po instalacji otwórz aplikację i kliknij przycisk „Konfiguruj”. Tutaj musisz określić minimalne i maksymalne wartości temperatury, przy których zostanie wysłana wiadomość.

Teraz najtrudniejsze jest założenie kont na Twitterze. W ustawieniach określ nazwę użytkownika Twittera, do którego wyślesz wiadomość. Musisz również podać login, Klucz API i Tajny klucz API w czyim imieniu będą odbierane wiadomości. Najnowsze innowacje wynikają z walki ze spamem i gromadzenia informacji o użytkownikach w sieci społecznościowej. Jak zdobyć klucz API i sekret API - przeczytaj tę recenzję.

Na telefonie, który zawsze będzie przy Tobie i będzie odbierał wiadomości, będziesz musiał zainstalować oficjalną aplikację Twitter od PlayMarket i wpisać ją z żądaną nazwą użytkownika. Dzięki temu aplikacja signalizaciya.apk z telefonu w domu będzie zbierać dane z czujników Arduino i wysyłać je w prywatnej wiadomości za pośrednictwem Twittera do użytkownika, pod którego loginem zainstalowałeś aplikację Twitter.

Jeśli masz jakiekolwiek problemy z ustawieniami alarmów na Arduino - napisz swoje pytania w komentarzach do tej recenzji.

Są to specjalne platformy sprzętowe, na podstawie których można tworzyć różne urządzenia elektroniczne, w tym i. Urządzenia tego typu wyróżnia prosta konstrukcja oraz możliwość zaprogramowania algorytmów ich działania. Dzięki temu alarm stworzony za pomocą Arduino GSM , można skonfigurować tak bardzo, jak to możliwe dla obiektu, którego będzie strzegł.

Co to jest moduł Arduino?

Arduino są zaimplementowane jako małe płytki, które mają własny mikroprocesor i pamięć. Na płytce znajduje się również zestaw styków funkcjonalnych, do których można podłączyć różne zelektryfikowane urządzenia, w tym czujniki wykorzystywane w systemach bezpieczeństwa.

Procesor Arduino umożliwia samodzielne wczytanie programu napisanego przez użytkownika. Tworząc własny, unikalny algorytm, możesz zapewnić optymalne tryby pracy alarmów bezpieczeństwa dla różnych obiektów oraz dla różnych warunków użytkowania i zadań do rozwiązania.

Czy praca z Arduino jest trudna?

Moduły Arduino cieszą się dużą popularnością wśród wielu użytkowników. Jest to możliwe dzięki prostocie i przystępnej cenie.

Programy do zarządzania modułami pisane są przy użyciu zwykłego C++ oraz dodatków w postaci prostych funkcji do sterowania procesami I/O na pinach modułu. Dodatkowo do programowania można wykorzystać darmowe oprogramowanie Arduino IDE działające pod systemami Windows, Linux lub Mac OS.

Dzięki modułom Arduino procedura składania urządzeń została znacznie uproszczona. Sygnalizację GSM na Arduino można stworzyć bez konieczności użycia lutownicy - montaż odbywa się za pomocą płytki stykowej, zworek i przewodów.

Jak stworzyć alarm za pomocą Arduino?

Główne wymagania, jakie musi spełnić samodzielnie wygenerowany system alarmowy gsm na Arduino to:

  • powiadomić właściciela obiektu o włamaniu lub penetracji;
  • obsługa systemów zewnętrznych takich jak syrena dźwiękowa, światła ostrzegawcze;
  • sterowanie alarmem przez SMS lub telefon;
  • autonomiczna praca bez zewnętrznego zasilania.

Aby utworzyć alarm, potrzebujesz:

  • moduł Arduino;
  • zestaw funkcjonalnych czujników;
  • lub modem;
  • źródło autonomicznego zasilania;
  • zewnętrzne urządzenia wykonawcze.

Cechą charakterystyczną modułów Arduino jest zastosowanie specjalnych kart rozszerzeń. Za ich pomocą do Arduino podłączane są wszystkie dodatkowe urządzenia, które są wymagane do złożenia konfiguracji. system bezpieczeństwa... Takie płytki są instalowane na górze modułu Arduino w postaci „kanapki”, a odpowiednie urządzenia pomocnicze są podłączone do samych płytek.

Jak to działa?

Gdy jeden z podłączonych czujników zostanie wyzwolony, sygnał jest przesyłany do procesora modułu Arduino. Korzystając z załadowanego niestandardowego oprogramowania, mikroprocesor przetwarza je zgodnie z określonym algorytmem. W wyniku tego można utworzyć polecenie obsługi zewnętrznego siłownika, które jest do niego przekazywane przez odpowiednią kartę rozszerzeń.

Aby zapewnić możliwość wysyłania sygnałów ostrzegawczych właścicielowi strzeżonego domu lub mieszkania, specjalny Moduł GSM... Instaluje kartę SIM od jednego z dostawców komunikacja komórkowa.

W przypadku braku specjalnego adaptera GSM swoją rolę może pełnić również zwykły telefon komórkowy. Poza wysyłaniem wiadomości SMS z ostrzeżeniem o alarmie i wybieraniem numeru, obecność komunikacji komórkowej pozwoli na zdalne sterowanie systemem alarmowym GSM na Arduino, a także monitorowanie stanu obiektu poprzez wysyłanie specjalnych żądań.

"Uwaga!

Aby komunikować się z właścicielem obiektu, oprócz modułów GSM, można również użyć zwykłych modemów, które zapewniają komunikację przez Internet.”

W takim przypadku, gdy czujnik zostanie wyzwolony, sygnał przetwarzany przez procesor jest przesyłany za pośrednictwem modemu do specjalnego portalu lub strony internetowej. I już ze strony wykonywane jest automatyczne generowanie SMS-a ostrzegawczego lub mailingu na podlinkowany e-mail.

wnioski

Wykorzystanie modułów Arduino pozwoli użytkownikom samodzielnie projektować alarmy GSM, które mogą współpracować z różnymi funkcjonalnymi czujnikami i sterować urządzeniami zewnętrznymi. Dzięki możliwości zastosowania różnych czujników można znacznie rozszerzyć funkcje alarmowe i stworzyć kompleks, który będzie monitorował nie tylko bezpieczeństwo obiektu, ale także jego stan. Na przykład będzie można kontrolować temperaturę w obiekcie, rejestrować wycieki wody i gazu, odcinać ich dopływ w razie wypadku i wiele więcej.

Czujniki na podczerwień (IR, IR) są powszechnie używane do pomiaru odległości, ale mogą być również wykorzystywane do wykrywania obiektów. Podłączając wiele czujników podczerwieni do Arduino, możesz tworzyć alarm przeciwwłamaniowy.

Przegląd

Czujniki na podczerwień (IR, IR) są powszechnie używane do pomiaru odległości, ale mogą być również wykorzystywane do wykrywania obiektów. Czujniki podczerwieni składają się z nadajnika podczerwieni i odbiornika podczerwieni. Nadajnik emituje impulsy promieniowania podczerwonego, a odbiornik wykrywa ewentualne odbicia. Jeśli odbiornik wykryje odbicie, oznacza to, że w pewnej odległości przed czujnikiem znajduje się obiekt. Jeśli nie ma odbicia, nie ma też przedmiotu.

Czujnik podczerwieni, którego będziemy używać w tym projekcie, wykrywa odbicia w określonym zakresie. Te czujniki mają niewiele urządzenie liniowe sprzężenie ładunkowe (CCD), które wykrywa kąt, pod jakim promieniowanie podczerwone powraca do czujnika. Jak pokazano na poniższym rysunku, czujnik wysyła impuls podczerwieni w przestrzeń, a gdy obiekt pojawi się przed czujnikiem, impuls jest odbijany z powrotem do czujnika pod kątem proporcjonalnym do odległości między obiektem a czujnikiem. Odbiornik czujnika wykrywa i wysyła kąt, a korzystając z tej wartości można obliczyć odległość.

Podłączając do Arduino kilka czujników podczerwieni, możemy wykonać prosty alarm antywłamaniowy. Czujniki zamontujemy na ościeżnicy, a dzięki odpowiedniemu ustawieniu czujników możemy wykryć, kiedy ktoś przechodzi przez drzwi. Gdy tak się stanie, zmieni się sygnał na wyjściu czujnika IR, a tę zmianę wykryjemy stale odczytując wyjście czujników z Arduino. W tym przykładzie wiemy, że obiekt przechodzi przez drzwi, gdy odczyt na czujniku IR przekroczy 400. Gdy tak się stanie, Arduino uruchomi alarm. Aby zresetować alarm, użytkownik może nacisnąć przycisk.

składniki

  • 2 x czujnik odległości na podczerwień;
  • 1 x Arduino Mega 2560;
  • 1 x brzęczyk;
  • 1 x przycisk;
  • 1 x rezystor 470 omów;
  • 1 x tranzystor NPN;
  • zworki.

Diagram połączeń

Schemat dla tego projektu pokazano na poniższym rysunku. Wyjścia dwóch czujników podczerwieni są podłączone do pinów A0 i A1. Pozostałe dwa piny są podłączone do pinów 5V i GND. Brzęczyk 12 V jest podłączony do styku 3 przez tranzystor, a przycisk służący do wyłączania alarmu jest podłączony do styku 4.


Poniższe zdjęcie pokazuje, jak przykleiliśmy czujniki do framugi drzwi w tym eksperymencie. Oczywiście w przypadku ciągłego użytkowania czujniki zainstalujesz inaczej.


Instalacja

  1. Podłącz piny 5V i GND płytki Arduino do pinów zasilania i GND czujników. Możesz także zasilać je z zewnątrz.
  2. Podłącz przewody wyjściowe czujników do pinów A0 i A1 płytki Arduino.
  3. Podłącz pin 3 Arduino do bazy tranzystora przez rezystor 1K.
  4. Doprowadzić napięcie 12 V do kolektora tranzystora.
  5. Podłącz dodatni przewód brzęczyka 12 V do nadajnika, a ujemny przewód do szyny uziemiającej.
  6. Połącz pin 4 z pinem 5V za pomocą przycisku. Ze względów bezpieczeństwa zawsze najlepiej jest to zrobić za pomocą dodatkowego małego rezystora, aby uniknąć przepływu dużego prądu.
  7. Podłącz płytkę Arduino do komputera za pomocą kabla USB i wgraj program do mikrokontrolera za pomocą Arduino IDE.
  8. Zasil płytkę Arduino za pomocą zasilacza, baterii lub kabla USB /

Kod

const int brzęczyk = 3; // pin 3 to wyjście brzęczyka const int button = 4; // pin 4 to wejście dla przycisku void setup () (pinMode (brzęczyk, OUTPUT); // ustaw pin 3 na wyjście pinMode (przycisk, INPUT); // ustaw pin 4 na wejście) void loop () (/ / odczytaj wyjście obu czujników i porównaj wynik z wartością progową int wartość_czujnika = analogRead (A0); int wartość_czujnika = analogRead (A1); if (wartość_czujnika> 400 || wartość_czujnika> 400) (while (true) (digitalWrite (buzzer) , HIGH) ; // włącz alarm jeśli (digitalRead (przycisk) == HIGH) przerwa;)) else (digitalWrite (brzęczyk, LOW); // wyłącz alarm))

Wideo

Aby chronić swój dom przed nieproszonymi gośćmi, wszyscy więcej ludzi zainstalować alarmy. Pozwalają na czas ostrzec przed wejściem do pokoju. Dziś są różne rodzaje alarmy, ale ostatnio popularność alarmów GSM zaczęła rosnąć, ponieważ pozwalają one otrzymywać informacje o penetracji z dowolnej odległości od obiektu, najważniejsze jest to, że właściciel w tym czasie ma przy sobie telefon, a ten telefon jest w sieci. Niestety systemy te nie są jeszcze zbyt tanie, aby były preferowane wyłącznie do nich. Ale w dzisiejszych czasach możesz samodzielnie wykonać prostą sygnalizację GSM. Pomoże w tym popularna płytka Arduino.


Ten projekt to system bezpieczeństwa (alarm) ostrzegający o wtargnięciu intruzów do domu. System wykorzystuje technologię GSM.



Do płytki mikrokontrolera tego systemu bezpieczeństwa podłączony jest moduł wykrywania włamań, który może być oparty na przykład na czujniku podczerwieni lub ultradźwiękowym czujniku zbliżeniowym. Po otrzymaniu sygnału z takiego modułu na telefon użytkownika wysyłana jest wiadomość SMS o wtargnięciu do jego domu.


Poniższy rysunek to schemat blokowy systemu bezpieczeństwa.



Głównymi elementami systemu są płytka mikrokontrolera (np. Arduino Uno) oraz moduł GSM/GPRS SIM900A. Cały system może być zasilany z jednego zasilacza 12V/2A.


Poniższy obrazek pokazuje Schemat obwodu system bezpieczeństwa domu z gsm oparty na arduino.



Obsługa systemu jest bardzo prosta i nie wymaga specjalnych wyjaśnień. Po podaniu napięcia zasilającego system przechodzi w stan czuwania. Jednakże, gdy J2 jest zwarte, wiadomość ostrzegawcza jest automatycznie wysyłana na zaprogramowany numer telefonu komórkowego. Do wejścia J2 można podłączyć dowolny czujnik detekcji. Należy zauważyć, że niski poziom na pinie 1 J2 jest aktywny i aktywuje system bezpieczeństwa.


Dodatkowo system dodał możliwość nawiązania połączenia poprzez naciśnięcie przycisku S2. Do zresetowania tego połączenia można użyć przycisku S3.


Poniżej znajduje się kod dla Arduino.


// Połącz pin Tx z pinem D3 modułu GPS // Połącz pin Rx z pinem D4 modułu GPS // Połącz sygnał wysyłania SMS z pinem D7 (aktywny niski) // Podłącz sygnał wywołania do D8 (aktywny niski) // Podłącz sygnał resetowania połączenia END do pinu D9 (aktywny niski) #include NewSoftSerial mySerial (3,4); // ustaw piny RX i TX do komunikacji z modułem GSM #define msg_key 7 #define call_key 8 #define end_key 9 String number = "0000000000"; // Tutaj zamiast zer musisz wprowadzić 10-cyfrowy numer telefonu komórkowego void setup () (Serial.begin (9600); mySerial.begin (9600); pinMode (msg_key, INPUT); pinMode (call_key, INPUT) ; pinMode (end_key, INPUT ); digitalWrite (msg_key, HIGH); digitalWrite (call_key, HIGH); digitalWrite (end_key, HIGH);) void loop () (// wysyłaj sms przy każdym uruchomieniu msg_key if (digitalRead (msg_key)) = = LOW) // Sprawdź, czy przycisk wysyłania sms jest wciśnięty (mySerial.println („AT + CMGF = 1”); // Ustaw tryb jako opóźnienie trybu tekstowego (150); mySerial.println („AT + CMGS = \" + 00 "+ numer + "\" "); // Określ numer docelowy w formacie międzynarodowym, zastępując opóźnienia zerami (150); mySerial.print (" Ostrzeżenie! Alarm intruzów! "); // Wprowadź opóźnienie wiadomości (150); mySerial.write (( byte) 0x1A); // Znak końca wiadomości 0x1A: odpowiednik opóźnienia Ctrl + z (50); mySerial.println ();) // Nawiąż połączenie, gdy wywoła wywołanie call_key else if ( digitalRead (call_key) == LOW) // Sprawdź, czy call_key został już naciśnięty (mySerial.println ("ATD + 91" + numer + ";"); // Określ n numer do połączenia podczas (digitalRead (call_key) == LOW); opóźnienie (50); ) // Zresetuj połączenie else if (digitalRead (end_key) == LOW) // Sprawdź, czy przycisk resetowania jest już wciśnięty (mySerial.println („ATH”)); while (digitalRead (end_key) == LOW); opóźnienie ( 50 );))

Dzięki temu dość łatwo jest stworzyć własnymi rękami alarm GSM oparty na płytce Arduino. Taki alarm swoim kosztem będzie oczywiście tańszy od zastrzeżonych odpowiedników dostępnych obecnie na rynku i będzie działał w niemal identyczny sposób.

mob_info