Skocz do zawartości

Domowy system powiadamiania


slon

Pomocna odpowiedź

Przedstawiam projekt domowej centralki.   Założenia przy budowie tego urządzenia były zbliżone do klasycznych alarmów aczkolwiek ja miałem swoją wizję i chciałem do tego wykorzystać  Arduino nano. W związku z tym , że projekt po ukończeniu chciałem zamontować w domu to sporo czasu zajęło znalezienie właściwej obudowy. Ostatecznie wybrałem obudowę kradex z37 w kolorze czarnym , która jest całkiem spora jak na arduino nano ale w środku miały też znaleźć się inne moduły połączone przewodami. Do obudowy chciałem zamontować wyświetlacz LCD i tu zaczęły się schody bo nie chciałem ciąć obudowy. Po przeszukaniu kilku sklepów internetowych i przestudiowaniu rysunków technicznych okazało się , że pasuje jedna obudowa. Na szczęście obydwie obudowy pasowały do siebie wymiarami a pod spodem znalazło się miejsce na klawiaturę numeryczną

pierwsze2.thumb.jpg.dec75ad1f7b7337c00f5201dbcb6ad53.jpg

W ten sposób powstało to co widać na zdjęciach. Zanim przejdziemy do tego co w środku popatrzmy na cały schemat projektu.

119273475_schematblokowy.thumb.jpg.d525ddf49ca633e4db8a324d437f7c8e.jpg

Schemat bardzo prosty aczkolwiek opiszę nieco poszczególne elementy. Zasilacz podłączony do cewki przekaźnika i dodatkowo jego dodatni biegun do styku NO.    Bateria podłączona do styku NC przekaźnika (bieguny ujemne połączone razem). Po włączeniu zasilacza do sieci prąd płynie przez kondensatory i zasila arduino. Od arduino zasilanie +5V dociera do pozostałych modułów. W sytuacji chwilowego zaniku napięcia lub dłuższej awarii Styki NC przekaźnika zwierają się i układ pracuje na baterii. Kondensatory mają za zadanie potrzymać napięcie na czas przełączania między NO a NC. Rozwiązanie bardzo skuteczne i nie zawiodło ani razu od ponad roku. 

pir.thumb.jpg.aa93b04a8221c31b5455a1cd57934024.jpg

Tutaj wiele nie  trzeba mówić moduł pir zamknięty w puszce instalacyjnej. Dodam jedynie , że kabel (w zasadzie kable bo mam dwa czujniki) sygnałowy podłączony jest do złącza analogowego arduino.

lcd.thumb.jpg.7bb9b92b7399d0223d202d677143df70.jpg

Tutaj LCD z konwerterem na magistralę I2C.

kabelki.thumb.jpg.2c4905e5c672c3621b010b7a438a989f.jpg

No i "pajączek" w całej okazałości.  Zacznijmy od lewego polnego rogu widać widać tam buzzer , (w zasadzie to widać tylko konektory bo zam buzzer jest wyprowadzony na zewnątrz) który odgrywa melodyjkę przy uzbrojonym alarmie i wykrytym ruchu. Po prawej stronie tak w połowie wysokości obudowy widać przekaźnik. Pod przekaźnikiem moduł DS3231 czyli zegar czasu rzeczywistego podłączony do arduino przez magistralę I2C(mając więcej niż jeden moduł podpięty do tej magistrali warto użyć programu I2C scanner do sprawdzenia  ich adresów). W prawym dolnym rogu moduł BT podłączony bez konwertera napięć ale pin RX modułu BT podłączony z pinem TX arduino przez dzielnik napięcia co daje bezpieczne 3,3V .

Jak na dobry alarm przystało chciałem mieć możliwość otrzymywania powiadomień przez SMS. Ze względu na to , że moduły GSM do arduino są w różnych cenach a ja nie chciałem dużo wydawać zdecydowałem się na zakup najtańszego jaki tylko znalazłem. Mowa oczywiście o module Neoway 590E za 15zł 🙂. Zlutowałem oddzielny projekt z tym modułem żeby zobaczyć jak będzie działał. Powiem szczerze , że działał całkiem nieźle ale  po tygodniu testów raz nie wysłał sms'a i ostatecznie stwierdziłem , że jednak wykorzystam stary smartfon z androidem. 

sms.thumb.png.73cdfb9ada5abcc97324308d3b519d35.png

Program do obsługi alarmu (konkretnie chodziło o wysyłanie wiadomości SMS) pod androida stworzyłem przez appinventor jest tam naprawdę mnóstwo możliwości na zrobienie czegoś przydatnego ze "starego smartfona".

Od strony programowania arduino głównie korzystałem arduino IDE ale momentami było to trochę uciążliwe. Zwłaszcza gdy chce się napisać kilka linijek kodu. Poszukałem więc alternatywy pod coś z androidem i tak trafiłem na...

Screenshot_20190308-122047.thumb.jpg.e7d8bec0850856c2c2b20b7e3a39a777.jpg

Bluino loader, który naprawdę świetnie sobie radzi (ze standardowymi bibliotekami) czas kompilowania i wgrywania skeczy trwa dosłownie błyskawicznie. Aczkolwiek aby wgrywać skecze przez usb wymagane jest pełne wsparcie dla hosta USB (ja w swoim am 🙂 ). Mam nadzieję że kod będzie czytelny bo widać tam funkcję która  jak sama nazwa może wskazywać wyświetla datę i godzinę w odpowiednim układzie (samą bibliotekę do obsługi ds3231 pobrałem z internetu)

454210142_SerialBluetoothTerminal.thumb.jpg.60d75bf6f1e31f433ce2e2ae4651b178.jpg 

tutaj terminal USB pod androida dostępny w sklepie play i wyświetlane kolejne zdarzenia z alarmu (niestety niema opcji sms) Terminal ma sporo opcji i najczęściej z niego korzystam. 

 

detekcja.thumb.jpg.456e1d94fc101353bd43f37c5a67804c.jpg

Na koniec zamieszczam jedną opcję dodatkową czyli wyświetlanie temperatury wewnętrznej (odczyt z modułu ds3231 z małą kalibracją programową bo w środku obudowy jest nieco wyższa temperatura) Następnie mamy przedstawione odliczanie do uzbrojenia i detekcja z dwóch czujników. Cyfry przy miejscach detekcji określają liczbę naruszeń czujnika. Sam kod alarmu ma ponad 800 linijek kodu więc niema sensu tego tu wklejać...

void zmienPin()
{
Serial.println();
serialCzas();
Serial.print(" podaj obecny pin ");
for (int i=0; i<4; i++) 
  {
    
while (Serial.available() == 0) {}
 while (Serial.available() > 0)
{
 nowyPin[i] = Serial.read();// wpisanie starego
 Serial.print(nowyPin[i]);
delay(150);
  }
}

int check=0;
  for(int i=0; i<4; i++)
{
 if (PIN[i]==nowyPin[i])
{
  check++;

}
else if (PIN[i]!=nowyPin[i])
{
  check--;
}
}// zamyka for check++

if (check==4)
{
Serial.println();
serialCzas();
Serial.print(" wpisz nowy pin ");
//-----
for (int i=0; i<4; i++) 
  {
    
while (Serial.available() == 0) {}
 while (Serial.available() > 0)
{
 nowyPin[i] = Serial.read();// wpisanie nowego
 Serial.print(nowyPin[i]);

 PIN[i]=nowyPin[i];
delay(150);
  }
}
 Serial.println();
 serialCzas();
 Serial.print(" pin zmieniony ");
}
else if (check!=4)
{
Serial.println();
serialCzas();
Serial.print(" zmiana nie powiodla sie");
}
Serial.println();
}

Wklejam funkcję zmiany pinu a tak właściwie to podmiany wartości w tablicy. Oczywiście , żeby to zadziałało to trzeba zadeklarować zmienne (u mnie są to zmienne globalne ) 

char PIN[4]={'2','3','5','6'};
char nowyPin[4];

PIN[4] to pin domyślny wraca zawsze po resecie arduino. Jeśli ktoś chciał by aby nowyPin zostawał po resecie to trzeba by było zapisywać wartości do pamięci EEPROM a następnie je odczytać przy starcie arduino.

Mam nadzieję , że kogoś zaciekawi ten projekt albo spowoduje , że zrobicie coś nowego , lepszego , coś co wam się przyda.

  • Lubię! 2
Link do komentarza
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

@slon, właśnie zaakceptowałem Twój opis, możesz go teraz zgłosić do akcji rabatowej umieszczając link w temacie zbiorczym. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 🙂

Link do komentarza
Share on other sites

Projekt bardzo dobry - zwłaszcza pod względem estetycznym dobranych obudów. Czy mógłbyś zdradzić jaki typ budowy wykorzystałeś do LCD ? Napisałeś kradexa ale tej drugiej już nie. Ogólnie ciekawy pomysł.

Link do komentarza
Share on other sites

Pewnie. Obudowa DT-065 pod wyświetlacz. Występuje w dwóch wersjach kolorystycznych i jest tylko w jednym sklepie internetowym z logiem lisa :). Szkoda , że niema jej w botlandzie no ale to już inna kwestia. Jak by to dobrze wszystko zaprojektować to można by do tej obudowy zmieścić cały mój projekt. Miałem tak zrobić i zastąpić klawiaturę membranową na analogową pozbył bym się wtedy wszystkich tych kabli i zwolnił bym 8 pinów cyfrowych kosztem jednego analogowego. Z tym, że trzeba by wtedy nawiercać otwory w tej obudowie z lcd i od strony programowej trzeba by było zmienić trochę kodu. 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Witam. Super projekt. Miałbym wielka prośbę. Mógłbyś podesłać schemat zasilania? Chodzi mi o to przełączanie (+kondensatory) między zasilaniem z sieci a bateria np 18650 li ion. Szukam od dłuższego czasu dobrego rozwiązania. 

Link do komentarza
Share on other sites

Jeśli chciał byś zasilić ten projekt z ogniwa 18650 to wystarczy ładowarka do smartfona połączona przez ten przewód  i wpięta w ten układ.  Na końcu tego modułu są cztery pady. Do wewnętrznych podłączasz + i - od ogniwa zgodnie z oznaczeniami na płytce. Do zewnętrznych wyjście zasilania opisane OUT i zgodnie z biegunami podłączasz na wejście przetwornicy (IN) podnoszącej napięcie na 5V (lub regulowana jak wolisz). Wyjście z przetwornicy podłączasz do pinu 5v arduino oraz GND i to tyle. 

Generalnie to w sekcji zasilanie jest sporo informacji na ten temat. Warto tam zerknąć i poczytać.

 

Link do komentarza
Share on other sites

Rozumiem. Ja chciałbym ogólnie zobaczyć schemat twojego podłączenia i przełączanie za pomocą przekaźnika i kondensatorów. Dasz radę narysować ten schemat? Bardzo by mi pomógł. 

Moduł tp4056 znam i używam. Chciałbym taki układ jak ty że przełącza się przy zaniku napięcia sieciowego. 

Edytowano przez hashpl
Link do komentarza
Share on other sites

zasilanie.thumb.jpg.3961a513f9cd154645889ee31bc85bac.jpg

tak dokładnie u mnie to wygląda. Natomiast do poprawnego działania potrzebny jest zasilacz o "odpowiedniej budowie". Mam tu na myśli taki , który po odłączeniu z sieci i odczekaniu kilku sekund nie spowoduje chwilowego przełączenia pomiędzy stykami NO NC. Możesz to łatwo sprawdzić podłączając zasilacz do cewki przekaźnika(sam zasilacz nic więcej). Jeśli po wyjęciu zasilacza z gniazdka usłyszysz tylko jedno "cyknięcie" to jet ok jeśli natomiast po paru sekundach usłyszysz dodatkowo "cyk cyk" to takiego zasilacza nie należy stosować do tego schematu.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Kondensatory widać na zdjęciu. Trzy przed Vin arduino i pięć na +5V OUT arduino. Co do pojemności to tak je dobrałem aby w momencie przełączania przekaźnika na zasilanie z baterii napięcie +5V na arduino było stabilne (dokładnie to zmienia się o 0.01-0.02V) Dzięki temu wszystko stabilnie pracuje i pir nie "szaleje". 

Link do komentarza
Share on other sites

@hashpl popularniejszym standardem jest 16V. Zresztą jak dasz takie, które są na trochę wyższe napięcie to nic złego się nie stanie - to tylko parametr maksymalny.

Link do komentarza
Share on other sites

Treker już udzielił ci odpowiedzi ale jeśli by cię interesowało jakie dopuszczalne napięcie jest na kondensatorach z mojego projektu to jest to : ~25V (takie  miałem ) na Vin i bodajże 16V na Vout. Zwróć uwagę na to, że im większe maksymalne napięcie tym większe  rozmiary kondensatora przy tej samej pojemności a co za tym idzie inny rozstaw wyprowadzeń kondensatora.

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.