• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 1 głosów - średnia: 5
  • 1
  • 2
  • 3
  • 4
  • 5
Projekt Centrali alarmowej na Arduino UNO
#1
Witam

Na początku chciałbym powiedzieć, że nie mam dużego doświadczenia z platformą. Tak naprawdę poznałem ją jakieś 2 lata temu, gdy kupiłem urządzenie działające na Arduino Nano, byłem po prostu pod wrażeniem, jak coś tak prostego może w sobie ogarnąć tak wiele.
Z lutownicą jestem od dziecka czyli już jakieś 34 lata, gdyby w moich dziecięcych latach było takie cudo jak arduino, to myślę, że powstała by niejedna ciekawa rzecz na tej platformie.

No, ale dobra wracając do teraźniejszości , to udało mi się ( ze względu na to, że kiedyś bawiłem się Basic’kiem na C64 i Amosie na Amidze 500 ) napisać prosty program sterujący załączaniem/wyłaczaniem zasilania zdalnie poprzez aplikację na Windowsie (tak, udało mi się nawet napisać mały programik w VB).
Stąd narodził się pomysł by zaprząść Arduino do czegoś poważniejszego, a mianowicie do bycia systemem alarmowym.
Składowe alarmu:
Zasilanie : sieć/akumulator – tutaj sobie poradzę bez problemu
Centrala : Arduino UNO V3
Łączność : zewnętrzny moduł SMS GSM Neoway M590 (taki posiadam)
Pierwsza linia obrony PIR połączony szeregowo z czujnikiem otwarcia drzwi, reakcja po 10 sek.
Druga linia obrony wiązka laserowa, jej przerwanie powoduje uruchomienie alarmu.
Sterowanie otwieraniem i zamykaniem bramy (wliczone wyłączniki krańcowe) z klawiatury i poprzez SMS – osobny moduł z przekaźnikami oraz sterowanie z klawiatury.
Status wyświetlany na ekranie LCD (I2C)
3 diody sygnalizujące prace centrali:
-zielona rozbrojone,
-czerwona działa alarm na PIR i laser,
-niebieska – reakcja tylko na przecięcie wiązki lasera


Założenia jakie chciałem osiągnąć to:
1) 2 osobne wejścia (D9 i D10) na czujniki wyzwalające alarm, aktywowane osobno. Tj. jedno jako główne reaguje na wykryty ruch z czujki PIR Po wykryciu ruchu, czyli przerwanie obiegu na wejściu, mamy 10 sekund na wbicie kodu deaktywującego alarm.
Drugie przy wykryciu ruchu uruchamia alarm niezwłocznie (w tym przypadku przecięcie wiązki lasere we D10).
2) Uzbrajanie/rozbrajanie/wyłączenie alarmu poprzez klawiature numeryczną, lub poprzez wysłanie SMSa.
3) Otwieranie bramy/zamykanie poprzez klawiaturę, lub SMS.
4) Powiadomienie o uzbrojeniu/rozbrojeniu alarmu na wyświetlaczu oraz poprzez wiadomość SMS wysłaną na wybrany nr telefonu.
5) Gdy alarm zostanie uruchomiony zostaje jednocześnie wysłany komunikat SMS .
6) Komunikaty wyświetlane na ekranie LCD.
7) Dwa osobne kody, jeden na aktywowanie/deaktywowanie czujek PIR, drugi na aktywowanie czujnika wiązki Laserowej, czas aktywacji alarmu po wprowadzeniu kodu to 10 sekund.
8) Możliwość otwarcia bramy tylko w momencie gdy alarm jest zdezaktywowany.
9) Przekaźnik uruchamiający syrenę jest cały czas zasilany. Gdy jego zasilanie zaniknie to wtedy zostanie zasilona syrena (jest to pokazane na schemacie).


Wiem, że brzmi to może zawile, ale postaram się to szybko wytłumaczyć.

Po pierwsze dlaczego 2 kody ? A więc dlatego, że np. kodem 12345, aktywuje/deaktywuje działanie alarmu przy wykryciu ruchu na czujnikach PIR i Laser, zwłoka sygnalizacji alarmu to 10 sek. (daje nam czas na wprowadzenie kodu wyłączającego alarm).

Kodem np. 54321 aktywuje i deaktywuje tylko przerwanie wiązki laserowej, PIRy nie maja tutaj znaczenia, alarm uruchamia się od razu.

W momencie gdy uruchomi się alarm, uruchamia się syrena oraz dostaję powiadomienie SMS.
Jeśli uważam, że jest to np. fałszywy alarm, specjalnym SMSem mogę wyłączyć alarm.
Również SMSem o odpowiedniej treści mogę go załączyć (wybór trybu), lub np. otworzyć bramę, lub ją zamknąć.

Otwieranie/zamykanie bramy:

Tutaj wykorzystałbym 3 przekaźniki:
2 sterujące kierunkiem obrotu silnika i jeden odcinający jego zasilanie.

Do tego dochodzą 2 wyłączniki krańcowe, w momencie ich zwarcia praca silnika zostaje zatrzymana i zostaje wyświetlony odpowiedni komunikat na ekranie LCD oraz wysłany SMS.
Na schemacie wyłączniki korzystają z 2 wejść na Arduino, ale można użyć jednego, które będzie służyło jako sygnał STOP.
Opis stanu czujek PIR i lasera:

Myślę, że tutaj wszystko powinno pracować w obwodzie zamkniętym, czyli jego przerwanie sygnalizuje sytuację ALARMOWĄ.

Podłączenie klawiatury (4x4, 8 pinów) z tego przykładu www kropka youtube kropka com/watch?v=iXpM-v8MNAE z użyciem oporników, by użyć tylko 4 wejścia w Arduino.

Całość będzie zasilana poprzez zasilacz buforowy z sieci 220V plus AKU 12V, do tego stabilizator obniżający napięcie na 5V do zasilania przekaźników itd.

To mój pierwszy tak duży projekt i mam nadzieję, że pomożecie mi w poprawnym napisaniu kodu.

Część już zacząłem, ale nie wiem, czy idę dobrą drogą. Najgorzej jest mi zrozumieć i napisać kod tak by system rozróżniał kiedy jest uzbrojony i po wykryciu ruchu dawał 10 sekunt na wbicie kodu, tak jak wspominałem raczkuję w tym temacie więc każda pomoc będzie na wagę złota.

Być może sam projekt/schemat ma wady, to tutaj też moja prośba by je mi wskazać i pomóc zmodernizować całość tak by działała niezawodnie.

Jak na razie to testy niestety kończą się fiaskiem, utknąłem i nie wiem co dalej zrobić .


Będę wdzięczny za porady i pomoc

Pozdrawiam
Marcin

Poniżej kod:

Kod:
#define buzzer 2
#define gsmtx 3
#define gsmrx 4
#define kranc1 5
#define kranc2 6
#define silnik 7
#define kier 8
#define pir 9
#define las 10
#define ledb 11
#define ledg 12
#define ledr 13

long czas;
long odliczanie;
// odliczanie czasu
int alarm = 0; // deklaracja zmiennej
int silnikpwr = 0; // sterowanie zasilaniem silnika
int haslo = 123456; // kod do aktywacji alarmu
int haslolsr = 654321; // kod do aktywacji alarmu laserowego
int buzer = 1; // stan buzzera
int kierunek = 0; // stan kierunku silnika 0 - zamkniecie, 1 - otwarcie
int lr = 0; // stan diody red
int lg = 1; // stan diody green
int lb = 0; // stan diody blue
int aktyw = 0; // czy alarm aktywny
int lasakt = 0; // czy alarm laserowy aktywny
int pirakt = 0; // czujki pir wylaczone
int laser = 0; // stan linii lasera
int suma = 0; // suma stanow
char znakl = ' '; // do zapisania odczytanego znaku ?
String kod = ""; // do zsumowania wklepywanych znakow

int kb1 = A0; // przypisanie wejsc do odczytu klawiatury
int kb2 = A1;
int kb3 = A2;
int kb4 = A3;
int znak= 0;
int v1, v2, v3, v4;

#include <LiquidCrystal_I2C.h> // dolaczenie biblioteki LCD
#include <Wire.h> // do czego sluzy ta biblioteka ?
#include <SoftwareSerial.h> // dolaczenie bliblioteki do komunikacji z modulem GSM

// nie wiem czy dolaczac te biblioteke #include <Key.h> // biblioteka klawiatury dziala chyba tylko jesli klawiatura jest podpieta 8 pinami do wejsc cyfrowych
#include <Password.h> // biblioteka hasel ale nie wiemm, jak to wykorzystac



LiquidCrystal_I2C lcd(0x20,16,2); // ustawienie adresu expandera z LCD
SoftwareSerial gsm(4, 3); // RX, TX

Password password = Password( "123456" ); // czy tu sie ustawia haslo jakie ma byc ?
Password password2 = Password( "654321");



void setup() {

pinMode(buzzer, OUTPUT); // wyjscie buzera
digitalWrite(buzzer, HIGH); // stan wyjscia buzera na zalaczony

pinMode(gsmtx, OUTPUT); // nadawanie do modemu GSM TX
pinMode(gsmrx, INPUT); // odbior z modemu GSM RX

pinMode(kranc1, INPUT_PULLUP); // wejscie wlacznika krancowego
pinMode(kranc2, INPUT_PULLUP); // wejscie wlacznika krancowego 2

pinMode(silnik, OUTPUT); // zalaczenie zasilania silnika (high zalacza silnik)
digitalWrite(silnik, LOW); // silnik wylaczony
pinMode(kierunek, OUTPUT); // zmiana kierunku otwieranie/zamkniecie (low zamkniecie, high otwarcie)
digitalWrite(kierunek, LOW); // stan niski na przekazniku zamkniecia dachu

pinMode(pirakt, INPUT_PULLUP); // odczyt wejscia czujnika pir
pinMode(las, INPUT_PULLUP); // odczyt lasera

pinMode(ledb, OUTPUT); // dioda blue - dzialajacy alarm laserowy
pinMode(ledg, OUTPUT); // dioda zielona - alarm zdeaktywowany
pinMode(ledr, OUTPUT); // dioda czerwona - alarm aktywny

digitalWrite(ledb, LOW); // diody wylaczone
digitalWrite(ledg, LOW); // diody wylaczone
digitalWrite(ledr, LOW); // diody wylaczone

Serial.begin(9600); // inicjalizuje komunikacje portu 9600 razy na sekunde
gsm.begin(9600); // do komunikacji z modulem GSM

lcd.init(); // inicjalizacja wyswietlacza LCD
lcd.print ("Centrala alarmowa"); //napisanie tekstu na ekranie


}


void loop() {
// put your main code here, to run repeatedly:

czas = millis();


v1 = analogRead(kb1); // odczyty wartosci z pinow z klawiatury
v2 = analogRead(kb2);
v3 = analogRead(kb3);
v4 = analogRead(kb4);

if (v1>999 && v1<1100){ // jesli jest odczyt na danym poziomie to przyjmujemy ze zostal wcisniety taki, a taki klawisz
Serial.println("1");
password.append('1');
znakl='1';
// aktyw=1;
}
if (v1>420 && v1<550){
Serial.println("4");
znakl='4';}
password.append('4');
if (v1>220 && v1<380){
Serial.println("7");
password.append('7');
znakl='7';
}
if (v1>130 && v1<180){
Serial.println("*");
znakl = ' ';
password.append('*');
kod = ' ';
}

if (v2>999 && v2<1100){
Serial.println("2");
password.append('2');
znakl='2';}
if (v2>420 && v2<520){
Serial.println("5");
password.append('a');
znakl='5';}
if (v2>240 && v2<255){
Serial.println("8");
password.append('8');
znakl='8';}
if (v2>140 && v2<150){
Serial.println("0");
password.append('0');
znakl='0';}

if (v3>999 && v3<1100){
Serial.println("3");
password.append('3');
znakl='3';}
if (v3>420 && v3<550){
Serial.println("6");
password.append('6');
znakl='6';}
if (v3>240 && v3<255){
Serial.println("9");
password.append('9');
znakl='9';}
if (v3>130 && v3<180){
Serial.println("#");
password.append('#');
znakl='#';}

if (v4>999 && v4<1100){
Serial.println("A");
znakl='a';
password.append('a');
}
if (v4>420 && v4<520){
Serial.println("B");
password.append('b');
znakl='b';}
if (v4>220 && v4<270){
Serial.println("C");
password.append('c');
znakl='c';}
if (v4>130 && v4<180){
Serial.println("D");
password.append('d');
znakl='d';

}
delay(200);
password.append(znakl); // czy to cos do odczytu hasla ?

if (password.evaluate()){
Serial.println("poprawny");
delay(1000); // proba wykozystania biblioteki password bez skutku :(
}
Serial.println( password.evaluate()?"true":"false");

if ((kod='761023') && (aktyw == 0)){ // proba przypisania warunku co gdy zostanie wbite dobry kod
aktyw=1;
kod="";
}

if ((kod='761023') && (aktyw == 1)){ // i to samo co wyzej ale deaktywacja alarmu
aktyw=0;
kod="";
}

if (digitalRead(pir) == LOW ) { // odczyt stanu pir
odliczanie=odliczanie+1;
pirakt=1;
} else {
odliczanie=0;
}

if (aktyw == 1) { // ustalenie jakie diody maja swiecic gdy alarm jest aktywny lub nieaktywny
digitalWrite(ledr, HIGH);
digitalWrite(ledb, LOW);
digitalWrite(ledg, LOW);
}

if (aktyw == 0) {
digitalWrite(ledr, LOW);
digitalWrite(ledb, LOW);
digitalWrite(ledg, HIGH);
}




if (lasakt == 1 && laser == 1){ // odczyt stanu lini lasera
digitalWrite (buzzer, LOW); // wlaczenie alarmu
}

if (odliczanie >= 10 && digitalRead(pir) == LOW && (aktyw == 1)) { // jesli czas oczekiwania minal 10 sekund
digitalWrite(buzzer, LOW); // załącz syrene alarmową
lcd.print ("!!! ALARM !!!"); //wyswietl komunikat
gsm.println("ATD+48502000000;"); // wyslanie komunitatu gsm
}
else
{
digitalWrite(buzzer, HIGH);
}
}


Załączone pliki Miniatury
   
 
Odpowiedź
#2
Ok, udało mi się dziś usprawnić kod i już działa reakcja na wpisanie poprawnego hasła.

Wbijając 123456 i # aktywujemy, lub deaktywujemy reakcje na odczyt czujki PIR. Po wykryciu ruchu mamy ok 10 sek. na wpisanie hasła by wyłączyć centralkę.

Wbijając kod 1234 aktywujemy bezzwłoczną reakcję na czujnik laserowy. Tym samym kodem wyłączamy ten czujnik/alarm.

Teraz musze popracować nad komunikacją poprzez moduł SMS.

Poprawiony kod poniżej, może komuś się przyda do podobnego projektu.
Jak najbardziej zapraszam i zachęcam do współpracy Smile

Kod:
#define gsmtx 3
#define gsmrx 4
#define kranc1 5
#define kranc2 6
#define silnik 7
#define kier 8
#define pir 9
#define las 10
#define ledb 11
#define ledg 12
#define ledr 13
#define bip 1

long czas;
long odliczanie;
// odliczanie czasu
int alarm = 0; // deklaracja zmiennej
int silnikpwr = 0; // sterowanie zasilaniem silnika
String haslo = "123456"; // kod do aktywacji alarmu
String haslolsr = "1234"; // kod do aktywacji alarmu laserowego
int buzer = 1; // stan buzzera
int kierunek = 0; // stan kierunku silnika 0 - zamkniecie, 1 - otwarcie
int lr = 0; // stan diody red
int lg = 1; // stan diody green
int lb = 0; // stan diody blue
int aktyw = 0; // czy alarm aktywny
int lasakt = 0; // czy alarm laserowy aktywny
int pirakt = 0; // czujki pir wylaczone
int laser = 0; // stan linii lasera
int suma = 0; // suma stanow
int check = 0 ; // czy sprawdzic kod
int ruch = 0; //  odliczanie gdy pir cos wykrylo
char znakl = ' '; // do zapisania odczytanego znaku ?
String kod = ""; // do zsumowania wklepywanych znakow

int kb1 = A0; // przypisanie wejsc do odczytu klawiatury
int kb2 = A1;
int kb3 = A2;
int kb4 = A3;
int znak= 0;
int v1, v2, v3, v4;

#include <LiquidCrystal_I2C.h> // dolaczenie biblioteki LCD
#include <Wire.h> // do czego sluzy ta biblioteka ?
#include <SoftwareSerial.h> // dolaczenie bliblioteki do komunikacji z modulem GSM

// nie wiem czy dolaczac te biblioteke #include <Key.h> // biblioteka klawiatury dziala chyba tylko jesli klawiatura jest podpieta 8 pinami do wejsc cyfrowych
// #include <Password.h> // biblioteka hasel ale nie wiemm, jak to wykorzystac



LiquidCrystal_I2C lcd(0x20,16,2); // ustawienie adresu expandera z LCD
SoftwareSerial gsm(4, 3); // RX, TX

// Password password = Password( "123456" ); // czy tu sie ustawia haslo jakie ma byc ?
// Password password2 = Password( "654321");



void setup() {
pinMode(bip, OUTPUT); // wyjscie bipera
digitalWrite(bip, LOW); // stan bipera niski

pinMode(buzzer, OUTPUT); // wyjscie buzera
digitalWrite(buzzer, HIGH); // stan wyjscia buzera na zalaczony

pinMode(gsmtx, OUTPUT); // nadawanie do modemu GSM TX
pinMode(gsmrx, INPUT); // odbior z modemu GSM RX

pinMode(kranc1, INPUT_PULLUP); // wejscie wlacznika krancowego
pinMode(kranc2, INPUT_PULLUP); // wejscie wlacznika krancowego 2

pinMode(silnik, OUTPUT); // zalaczenie zasilania silnika (high zalacza silnik)
digitalWrite(silnik, LOW); // silnik wylaczony
pinMode(kierunek, OUTPUT); // zmiana kierunku otwieranie/zamkniecie (low zamkniecie, high otwarcie)
digitalWrite(kierunek, LOW); // stan niski na przekazniku zamkniecia dachu

pinMode(pirakt, INPUT_PULLUP); // odczyt wejscia czujnika pir
pinMode(las, INPUT_PULLUP); // odczyt lasera

pinMode(ledb, OUTPUT); // dioda blue - dzialajacy alarm laserowy
pinMode(ledg, OUTPUT); // dioda zielona - alarm zdeaktywowany
pinMode(ledr, OUTPUT); // dioda czerwona - alarm aktywny

digitalWrite(ledb, LOW); // diody wylaczone
digitalWrite(ledg, LOW); // diody wylaczone
digitalWrite(ledr, LOW); // diody wylaczone
digitalWrite(buzzer, HIGH); // wylaczenie na starcie syreny
Serial.begin(9600); // inicjalizuje komunikacje portu 9600 razy na sekunde
gsm.begin(9600); // do komunikacji z modulem GSM

lcd.init(); // inicjalizacja wyswietlacza LCD
lcd.print ("Centrala alarmowa"); //napisanie tekstu na ekranie


}

void loop() {
// put your main code here, to run repeatedly:

czas = millis();
Serial.println(kod);

v1 = analogRead(kb1); // odczyty wartosci z pinow z klawiatury
v2 = analogRead(kb2);
v3 = analogRead(kb3);
v4 = analogRead(kb4);

if (v1>999 && v1<1100){ // jesli jest odczyt na danym poziomie to przyjmujemy ze zostal wcisniety taki, a taki klawisz
 Serial.println("1");
// password.append('1');
 znakl='1';
kod=kod+"1";}
 
if (v1>420 && v1<550){
 Serial.println("4");
 znakl='4';
 kod=kod+"4";
delay(100);}

if (v1>220 && v1<380){
 Serial.println("7");
 znakl='7';
 kod=kod+"7";
 delay(100);
 }
if (v1>130 && v1<180){
 Serial.println("*");
 znakl = ' ';

 kod = ' ';
 kod="";
 delay(100);
 }

if (v2>999 && v2<1100){
 Serial.println("2");
kod=kod+"2";
delay(100);}

if (v2>420 && v2<520){
 Serial.println("5");
 znakl='5';
 kod=kod+"5";
 delay(100);}
 
if (v2>240 && v2<255){
 Serial.println("8");
 znakl='8';
 kod=kod+"8";
 delay(100);}
 
if (v2>140 && v2<150){
 Serial.println("0");
 znakl='0';
 kod=kod+"0";
 delay(100);}

 if (v3>999 && v3<1100){
 Serial.println("3");
 znakl='3';
 kod=kod+"3";
 delay(100);}
 
if (v3>420 && v3<550){
 Serial.println("6");
 znakl='6';
 kod=kod+"6";
 delay(100);}
if (v3>240 && v3<255){
 Serial.println("9");
 znakl='9';
 kod=kod+"9";
 delay(100);}
 
if (v3>130 && v3<180){
 Serial.println("#");
 znakl='#';
 check=1;
 delay(100);}

 if (v4>999 && v4<1100){
 Serial.println("A");
 znakl='a';
 delay(100); }
 
if (v4>420 && v4<520){
 Serial.println("B");
 znakl='b';
 delay(100);}
 
if (v4>220 && v4<270){
 Serial.println("C");
 znakl='c';
 delay(100);
 }
if (v4>130 && v4<180){
 Serial.println("D");
 znakl='d';
 delay(100);
 }
 
 
delay(50);

Serial.println(kod);

// odczyt kodu do aktywacji alarmu PIR

if ((kod == haslo) && check == 1 && (aktyw == 0)){  // jesli dobry kod to alarm jest aktywny, kod wyczyszczony i klawisze tez
aktyw=1;
kod="";  
check=0;
odliczanie=0;
}
     

if ((kod == haslo) && check == 1 && (aktyw == 1)){ // i to samo co wyzej ale deaktywacja alarmu
aktyw=0;
kod="";
check=0;
odliczanie=0;
ruch=0;
digitalWrite (buzzer, HIGH); // to wtedy wylacz syrene
}

if ((kod == haslolsr) && check == 1 && (lasakt == 0)){  // wpisanie dobrego kodu do lasera i jego aktywacja
kod="";  
lasakt=1;
check=0;
delay(50);
}

if ((kod == haslolsr) && check == 1 && (lasakt == 1)){ // deaktywacja lasera
kod="";
lasakt=0;
laser=0;
check=0;
digitalWrite(buzzer, HIGH);  // jesli alarm laserowy wyl. to synera wyl
}
     
if (digitalRead(pir) == LOW ) { // odczyt stanu pir
ruch=1; // wtedy zmienna ruch jest na 1 czyli wykryto ruch
}
if (digitalRead(las) == HIGH) { // jesli odczyt lasera jest negatywny to alarm
laser=1;
}


if (ruch == 1){
odliczanie=odliczanie+1; // odliczanie czasu do uruchomienia alarmu PIR
pirakt=1;
}

if (aktyw == 1) {  // ustalenie jakie diody maja swiecic gdy alarm jest aktywny lub nieaktywny
digitalWrite(ledr, HIGH);
  digitalWrite(ledg, LOW);
}

if (aktyw == 0) {
digitalWrite(ledr, LOW);
  digitalWrite(ledg, HIGH);
}

if (lasakt == 1){
digitalWrite(ledb, HIGH); // jesli alarm laserowy aktywny to dioda swieci niebieska dioda
} else
{
digitalWrite(ledb, LOW);  // jesli nieaktywny to dioda niebieska jest zgaszona
}




if (lasakt == 1 && laser == 1){    // odczyt stanu lini lasera
digitalWrite (buzzer, LOW); // wlaczenie alarmu
Serial.println("ALARM LASER");
}

if (odliczanie >= 70 && (aktyw == 1) && (ruch == 1)) {  // jesli czas oczekiwania minal 10 sekund
 digitalWrite(buzzer, LOW); // załącz syrene alarmową
 lcd.print ("!!! ALARM !!!"); //wyswietl komunikat
 gsm.println("ATD+48123456789;"); // wyslanie komunitatu gsm
 Serial.println("ALARM PIR");
}





Serial.println(lasakt, laser);




if (check == 1 ){
Serial.println("Błędny kod");
delay (1000);
kod="";

}



check=0; // wyzerowanie klawisza sprawdzania kodu

}
 
Odpowiedź
#3
Witam!
Fajny projekt i będę go śledził ponieważ sam tworzę równolegle 2 podobne do Twojego projekty:

BMWduino - w ostatecznej wersji ma być to potężny system do mojego pojazdu. Chcąc być dokładniejszy - będzie to nic innego jak rozbudowany alarm z namierzaniem GPS, komunikacja SMS/WIFI/BT itd, remote starterem itd. Ambitny plan, zobaczymy Smile

Oraz dość podobny do Twojego alarm który będę chciał zamontować na działce rodziców (altanka) oraz w garażu który niejako przerodziłem w swój warsztat,

Jestem jak najbardziej chętny do współpracy/wymiany uwag, rad itd Smile
Pomogłem? Dodaj punkt reputacji Smile
 
Odpowiedź
#4
U siebie zastosowałem NANO + ESP8266 + BLYNK
Na dziś z funkcji które opisałeś działają:
otwieranie/zamykanie bramy z telefonu
odbiór alarmów z dowolnej liczby z czujek PIR bezprzewodowych i bezprzewodowych czujników kontaktronowych (433MHz)
Załączanie dowolnego urządzenia (syreny, lampy itd) będące następstwem działania czujek - czasy zwłoki ustalanie dowolnie
Blokada całego systemu z telefonu. Nie mam mam bezprzewodowej klawiatury na pasmo 433 (min 200 zł) ale nie ma problemu by dołączyć to do systemu. Choć prościej jest zainstalować odpowiednia aplikację w telefonie każdego domownika (android lub ios)  
wysyłanie komunikatu na telefon typu powiadomienie o dowolnym zdarzeniu w systemie.
całość oprogramowana w Arduino IDE + kilka bibliotek. Aplikacja w telefonie - BLYNK
Jeśli interesują cię szczegóły zajrzyj na stronę - link w sygnaturze - lub proszę o PW - udostępnię kody i konfiguracje.
 
Odpowiedź
#5
Witam,

Sprawdziłęm Twoją stronę ale niemoge znaleść podobnego kodu i projektu. Czy jest szansa abyś podał linka? Będę wdzięczny! Próboje zrobic podobny projekt ale bez otwierania bramy. Chce zrobic alarm do wlasnego garazu z GSM.

Pozdrawiam,
Kamyk
 
Odpowiedź
#6
(23-02-2017, 15:58)Kamyk napisał(a): Witam,

Sprawdziłęm Twoją stronę ale niemoge znaleść podobnego kodu i projektu. Czy jest szansa abyś podał linka? Będę wdzięczny! Próboje zrobic podobny projekt ale bez otwierania bramy. Chce zrobic alarm do wlasnego garazu z GSM.

Pozdrawiam,
Kamyk

tu cały projekt + kod
http://100-x-arduino.blogspot.com/2016/0...e-iot.html
tu zasada działania
http://100-x-arduino.blogspot.com/2016/0...ersja.html
w projekcie pokazana jest jedna czujka radiowa 433 MHz i kilka odbiorników uruchamianych radiowo 433 Mhz
u mnie czujka uruchamia pompę na określony czas
można to prosto dostosować do potrzeb systemu alarmowego

Jeśli będą problemy z kodem lub z dostosowaniem do twoich potrzeb - pytaj
najważniejsze jest wybór platformy - jaki mikroprocesor, jaka łaczność z Internetem i jaka aplikacja w telefonie
U mnie to Arduino NANO + ESP8266 + BLYNK
jeśli zastosujesz podobne rozwiązanie może będę mógł pomóc więcej
pozdrawiam
K
 
Odpowiedź
#7
Generalnie nie chce sie wcinac w ten watek Wink Ale moj pomysl na projekt jest dosc prosty - Arduino nano/uno + czujka pir + gsm.

I to wszystko. Poczytam co zrobiles Smile Dzieki za linka i bede pytal w swoim watku.

Pozdrawiam,
Kamyk
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości