System bezpieczeństwa GSM dla domu oparty na Arduino. O czujniku ruchu i podłączeniu go do Arduino Więcej przeczytasz w filmie

System bezpieczeństwa GSM dla domu oparty na Arduino.  O czujniku ruchu i podłączeniu go do Arduino Więcej przeczytasz w filmie
System bezpieczeństwa GSM dla domu oparty na Arduino. O czujniku ruchu i podłączeniu go do Arduino Więcej przeczytasz w filmie
Kradzieże samochodów na całym świecie Ostatnia dekada zajmują jedno ze znaczących miejsc w strukturze przestępstw popełnianych na świecie. Wynika to nie tyle ze szczególnej wagi tej kategorii kradzieży w stosunku do Łączna przestępstw, jak duże szkody wynikają z wysokiego kosztu samochodów. Słaba skuteczność działań podejmowanych w zakresie zwalczania kradzieży pojazdów do końca lat 90-tych doprowadziła do powstania stabilnych ugrupowań specjalizujących się w popełnianiu tych przestępstw i posiadających cechy charakterystyczne przestępczość zorganizowana; Prawdopodobnie słyszałeś termin „biznes czarnych samochodów”. Parking Kraje europejskie rocznie tracą ≈ 2% samochodów, które stają się przedmiotem ataków przestępczych. Dlatego wpadłem na pomysł zrobienia alarmu GSM do mojego samochodu w oparciu o Arduino Uno.

Zaczynajmy!

Z czego będziemy zbierać?

Musimy wybrać serce naszego systemu. Moim zdaniem do takiej sygnalizacji nie ma nic lepszego niż Arduino Uno. Głównym kryterium jest wystarczająca liczba „szpilek” i cena.


Kluczowe cechy Arduino Uno

Mikrokontroler - ATmega328
Napięcie robocze- 5 V
Napięcie wejściowe (zalecane) - 7-12 V
Napięcie wejściowe (limit) - 6-20 V
Wejścia/wyjścia cyfrowe — 14 (z czego 6 można wykorzystać jako wyjścia PWM)
Wejścia analogowe - 6
Stały prąd przez wejście/wyjście - 40 mA
Stały prąd dla wyjścia 3,3 V - 50 mA
Pamięć Flash - 32 KB (ATmega328) z czego 0,5 KB wykorzystywane jest na bootloader
RAM - 2 KB (ATmega328)
EEPROM - 1KB (ATmega328)
Częstotliwość zegara - 16 MHz


Pasuje!

Teraz musisz wybrać moduł GSM, ponieważ nasz system alarmowy musi mieć możliwość powiadomienia właściciela samochodu. Trzeba więc „Google”... Tutaj doskonały czujnik - SIM800L, rozmiar jest po prostu cudowny.


Pomyślałem i zamówiłem to z Chin. Wszystko okazało się jednak nie takie różowe. Czujnik po prostu odmówił rejestracji karty SIM w sieci. Wypróbowano wszystko, co możliwe - wynik był zerowy.
Znaleziony dobrzy ludzie, który dostarczył mi fajniejszą rzecz - Sim900 Shield. Teraz to poważna sprawa. Shield posiada zarówno gniazdo mikrofonowe, jak i słuchawkowe, co czyni go pełnoprawnym telefonem.


Kluczowe cechy tarczy Sim900

4 standardy częstotliwości roboczych 850/900/1800/1900 MHz
GPRS z wieloma slotami, klasa 10/8
Stacja mobilna GPRS klasy B
Zgodny z fazą GSM 2/2+
Klasa 4 (2 W przy 850/900 MHz)
Klasa 1 (1 W przy 1800/1900 MHz)
Sterowanie za pomocą poleceń AT (polecenia GSM 07.07, 07.05 i SIMCOM rozszerzone AT)
Niski pobór mocy: 1,5 mA (tryb uśpienia)
Zakres temperatury pracy: -40°C do +85°C


Pasuje!

OK, ale żeby powiadomić właściciela, trzeba odczytać dane z niektórych czujników. Jeśli samochód zostanie odholowany, jego położenie w przestrzeni oczywiście ulegnie zmianie. Weźmy akcelerometr i żyroskop. Świetnie. OK, teraz szukamy czujnika.

Myślę, że GY-521 MPU6050 na pewno będzie pasować. Okazało się, że ma też czujnik temperatury. My też powinniśmy z niego skorzystać, będzie taka „zabójcza funkcja”. Załóżmy, że właściciel samochodu zaparkował go pod swoim domem i odjechał. Temperatura wewnątrz samochodu będzie zmieniać się „płynnie”. Co się stanie, jeśli intruz spróbuje włamać się do samochodu? Na przykład będzie mógł otworzyć drzwi. Temperatura w samochodzie zacznie się gwałtownie zmieniać, gdy powietrze w kabinie zacznie mieszać się z powietrzem środowisko. Myślę, że to zadziała.


Główne cechy GY-521 MPU6050

3-osiowy żyroskop + 3-osiowy moduł akcelerometru GY-521 na chipie MPU-6050. Pozwala określić położenie i ruch obiektu w przestrzeni, prędkość kątową podczas obrotu. Posiada również wbudowany czujnik temperatury. Jest stosowany w różnych modelach helikopterów i samolotów; w oparciu o te czujniki można również zamontować system przechwytywania ruchu.

Układ - MPU-6050
Napięcie zasilania - od 3,5 V do 6 V (DC);
Zasięg żyroskopu - ±250 500 1000 2000°/s
Zakres akcelerometru - ±2±4±8±16g
Interfejs komunikacyjny - I2C
Rozmiar - 15x20 mm.
Waga - 5 g


Pasuje!

Przyda się także czujnik wibracji. Nagle próbują otworzyć samochód „brutalną siłą” lub na parkingu inny samochód uderza w Twój samochód. Weźmy czujnik wibracji SW-420 (regulowany).


Główne cechy SW-420

Napięcie zasilania - 3,3 - 5V
Sygnał wyjściowy - cyfrowy Wysoki/Niski (normalnie zamknięty)
Zastosowany czujnik - SW-420
Używanym komparatorem jest LM393
Wymiary - 32x14 mm
Dodatkowo - Jest rezystor regulacyjny.


Pasuje!

Przykręć moduł karty pamięci SD. Napiszemy także plik dziennika.


Główne cechy modułu karty pamięci SD

Moduł umożliwia przechowywanie, odczytywanie i zapisywanie na karcie SD danych niezbędnych do pracy urządzenia opartego na mikrokontrolerze. Korzystanie z urządzenia jest istotne przy przechowywaniu plików od kilkudziesięciu megabajtów do dwóch gigabajtów. Na płytce znajduje się pojemnik na kartę SD, stabilizator zasilania karty oraz złącze wtykowe do podłączenia linii interfejsu i zasilania. Jeśli potrzebujesz pracować z danymi audio, wideo lub innymi danymi o dużej skali, na przykład prowadzić rejestr zdarzeń, dane z czujników lub przechowywać informacje z serwera WWW, to moduł karty pamięci SD dla Arduino umożliwi wykorzystanie karty SD do tych celów. Za pomocą modułu możesz zapoznać się z funkcjami karty SD.
Napięcie zasilania - 5 lub 3,3 V
Pojemność pamięci karty SD - do 2 GB
Wymiary - 46 x 30 mm


Pasuje!

Dodajmy jeszcze serwonapęd; po uruchomieniu czujników serwonapęd z rejestratorem obróci się i nagra wideo ze zdarzenia. Weźmy serwonapęd MG996R.


Główne cechy serwonapędu MG996R

Stabilny i niezawodna ochrona od uszkodzeń
- Napęd metalowy
- Dwurzędowe łożysko kulkowe
- Długość drutu 300 mm
- Wymiary 40x19x43mm
- Waga 55 g
- Kąt obrotu: 120 stopni.
- Prędkość robocza: 0,17 s/60 stopni (4,8 V bez obciążenia)
- Prędkość robocza: 0,13 s/60 stopni (6 V bez obciążenia)
- Moment rozruchowy: 9,4 kg/cm przy zasilaniu 4,8 V
- Moment rozruchowy: 11kg/cm przy zasilaniu 6V
- Napięcie robocze: 4,8 - 7,2 V
- Wszystkie części napędu wykonane są z metalu


Pasuje!

Zbieramy

W Google istnieje ogromna liczba artykułów na temat podłączenia każdego czujnika. I nie mam ochoty wymyślać nowych rowerów, więc zostawię linki do prostych i działających opcji.

Są to specjalne platformy sprzętowe, w oparciu o które można tworzyć najróżniejsze urządzenia elektryczne, w tym i . Urządzenia tego typu wyróżniają się prostą konstrukcją i możliwością programowania algorytmów działania. Dzięki temu powstał przy pomocy ArduinoGSM sygnalizacja , można maksymalnie dostosować do obiektu, który ma chronić.

Co to jest moduł Arduino?

Arduino realizowane jest w postaci małych płytek, które posiadają własny mikroprocesor i pamięć. Na płytce znajduje się także zestaw styków funkcyjnych, do których można podłączyć różne urządzenia zelektryfikowane, w tym czujniki stosowane w systemach bezpieczeństwa.

Procesor Arduino umożliwia wczytanie programu napisanego samodzielnie przez użytkownika. Tworząc własny, unikalny algorytm, możesz zapewnić optymalne tryby obsługa alarmów bezpieczeństwa dla różne obiekty i dla różne warunki zastosowań 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. Stało się to możliwe dzięki prostocie i dostępności.

Programy do zarządzania modułami pisane są przy użyciu zwykłego C++ i dodatków w formularzu proste funkcje sterować procesami wejścia/wyjścia na stykach modułu. Dodatkowo do programowania można wykorzystać bezpłatne oprogramowanie Arduino IDE działające pod systemem Windows, Linux lub Mac OS.

Dzięki modułom Arduino procedura montażu urządzeń jest znacznie uproszczona. System alarmowy GSM na Arduino można zbudować bez użycia lutownicy - montaż odbywa się za pomocą płytki stykowej, zworek i przewodów.

Jak stworzyć alarm za pomocą Arduino?

Podstawowe wymagania, jakie musi spełniać system alarmowy gsm DIY tworzony na Arduino to:

  • powiadomić właściciela obiektu o włamaniu lub wejściu;
  • wsparcie systemy zewnętrzne takie jak syrena dźwiękowa, światła sygnalizacyjne;
  • sterowanie alarmem poprzez SMS lub połączenie;
  • autonomiczna praca bez zewnętrznego zasilania.

Aby utworzyć alarm, będziesz potrzebować:

  • moduł Arduino;
  • zestaw czujników funkcjonalnych;
  • lub modem;
  • autonomiczne źródło zasilania;
  • siłowniki zewnętrzne.

Cechą charakterystyczną modułów Arduino jest zastosowanie specjalnych płytek rozszerzeń. Pomagają połączyć wszystkich dodatkowe urządzenia do Arduino, które są potrzebne do złożenia konfiguracji system bezpieczeństwa. Takie płytki instaluje się na górze modułu Arduino w formie „kanapki”, a odpowiednie urządzenia pomocnicze podłącza się do samych płytek.

Jak to działa?

Po uruchomieniu jednego z podłączonych czujników sygnał przekazywany jest do procesora modułu Arduino. Korzystając z pobranego oprogramowania użytkownika, mikroprocesor przetwarza je według określonego algorytmu. W rezultacie może zostać wygenerowany rozkaz uruchomienia zewnętrznego siłownika, który zostanie do niego przesłany poprzez odpowiednią kartę interfejsu rozszerzeń.

Aby zapewnić możliwość wysyłania sygnałów ostrzegawczych do właściciela chronionego domu lub mieszkania, do modułu Arduino poprzez kartę rozszerzeń podłączany jest specjalny moduł GSM. Zainstalowana jest w nim karta SIM jednego z dostawców komunikacja komórkowa.

W przypadku braku specjalnego adaptera GSM, swoją rolę może spełnić zwykły. telefon komórkowy. Oprócz wysyłania wiadomości SMS z ostrzeżeniami alarmowymi i wybieraniem numerów, obecność komunikacji komórkowej pozwoli Ci zarządzać Alarm GSM zdalnie na Arduino, a także monitoruj stan obiektu wysyłając specjalne zapytania.

"Notatka!

Do komunikacji z właścicielem obiektu oprócz modułów GSM można wykorzystać zwykłe modemy, które umożliwiają komunikację poprzez Internet.”

W takim przypadku po uruchomieniu czujnika sygnał przetworzony przez procesor jest przesyłany za pośrednictwem modemu do specjalnego portalu lub strony internetowej. Ze strony automatycznie generowany jest ostrzegawczy SMS lub e-mail na podany adres e-mail.

wnioski

Zastosowanie modułów Arduino umożliwi użytkownikom samodzielne zaprojektowanie alarmów GSM, które mogą współpracować z różnymi czujnikami funkcjonalnymi i sterowaniem urządzenia zewnętrzne. Dzięki możliwości wykorzystania różne czujniki Funkcje alarmowe można znacznie rozszerzyć i stworzyć kompleks, który będzie monitorował nie tylko bezpieczeństwo obiektu, ale także jego stan. Będzie można na przykład kontrolować temperaturę w obiekcie, wykrywać wycieki wody i gazu, odcinać ich dopływ w sytuacji awaryjnej i wiele więcej.

Czujniki podczerwieni (IR) są zwykle używane do pomiaru odległości, ale można ich również używać do wykrywania obiektów. Podłączając do Arduino kilka czujników IR możemy tworzyć alarm przeciwwłamaniowy.

Recenzja

Czujniki podczerwieni (IR) są zwykle używane do pomiaru odległości, ale można ich również używać do wykrywania obiektów. Czujniki podczerwieni składają się z nadajnika podczerwieni i odbiornika podczerwieni. Nadajnik emituje impulsy promieniowanie podczerwone podczas gdy odbiornik wykrywa jakiekolwiek odbicia. Jeśli odbiornik wykryje odbicie, oznacza to, że w pewnej odległości przed czujnikiem znajduje się jakiś obiekt. Jeśli nie ma odbicia, nie ma obiektu.

Czujnik podczerwieni, którego użyjemy w tym projekcie, wykrywa odbicia w pewnym zakresie. Czujniki te są wyposażone w małe urządzenie ze sprzężeniem liniowym (CCD), które wykrywa kąt, pod jakim światło podczerwone powraca do czujnika. Jak pokazano na poniższym rysunku, czujnik wysyła impuls podczerwieni w przestrzeń, a gdy przed czujnikiem pojawi się obiekt, impuls jest odbijany z powrotem do czujnika pod kątem proporcjonalnym do odległości między obiektem a czujnikiem. Odbiornik czujnika wykrywa i podaje kąt, a na podstawie tej wartości można obliczyć odległość.

Podłączając kilka czujników IR do Arduino, możemy wykonać prosty alarm bezpieczeństwa. Zamontujemy czujniki framuga drzwi, a dzięki prawidłowemu ustawieniu czujników możemy wykryć, kiedy ktoś przechodzi przez drzwi. Kiedy tak się stanie, sygnał wyjściowy czujnika podczerwieni ulegnie zmianie, a my wykryjemy tę zmianę, stale odczytując sygnał wyjściowy czujnika za pomocą Arduino. W tym przykładzie wiemy, że obiekt przechodzi przez drzwi, gdy odczyt sygnału wyjściowego czujnika podczerwieni przekracza 400. Kiedy to nastąpi, Arduino uruchomi alarm. Aby zresetować alarm, użytkownik może nacisnąć przycisk.

Akcesoria

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

Diagram połączeń

Schemat tego projektu pokazano na poniższym rysunku. Wyjścia dwóch czujników IR podłączone są 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 za pomocą tranzystora, a przycisk służący do wyciszenia alarmu jest podłączony do styku 4.


Poniższe zdjęcie pokazuje, jak w tym eksperymencie przykleiliśmy czujniki do ościeżnicy. Oczywiście, gdybyś używał go regularnie, inaczej zainstalowałbyś czujniki.


Instalacja

  1. Podłącz piny 5V i GND płytki Arduino do pinów zasilania i GND czujników. Można je także zasilać zewnętrznym zasilaniem.
  2. Podłącz piny wyjściowe czujników do pinów A0 i A1 płytki Arduino.
  3. Podłącz pin 3 Arduino do podstawy tranzystora za pomocą rezystora 1 kΩ.
  4. Doprowadź napięcie 12 V do kolektora tranzystora.
  5. Podłącz dodatni przewód brzęczyka 12 V do emitera, a przewód ujemny do szyny uziemiającej.
  6. Połącz pin 4 z pinem 5V za pomocą przycisku. Ze względów bezpieczeństwa, aby uniknąć przepływu dużego prądu, zawsze lepiej jest to zrobić poprzez dodatkowy mały rezystor.
  7. Podłącz płytkę Arduino do komputera poprzez Kabel USB i wgraj program do mikrokontrolera za pomocą Arduino IDE.
  8. Zasil płytkę Arduino za pomocą zasilacza, baterii lub kabla USB/

Kod

stała int brzęczyk=3; // pin 3 jest wyjściem brzęczyka const int pushbutton=4; // pin 4 jest wejściem dla przycisku void setup() ( pinMode(buzzer,OUTPUT); // ustaw pin 3 na wyjście pinMode(przycisk, INPUT); // ustaw pin 4 na wejście ) void pętli() ( / / odczytaj sygnał wyjściowy obu czujników i porównaj wynik z wartością progową int wartość_czujnika = analogRead(A0); int wartość_czujnika2 = wartość_analogu(A1); if (wartość_czujnika1 > 400 || wartość_czujnika2 > 400) ( while(true) ( ​​​​digitalWrite(buzzer,HIGH) ; // włącz alarm if(digitalRead(przycisk) == HIGH) break; ) else ( digitalWrite(buzzer,LOW); // wyłącz alarm ) )

Wideo

Witam wszystkich, dzisiaj przyjrzymy się urządzeniu zwanemu czujnikiem ruchu. Wielu z nas słyszało o tym urządzeniu, niektórzy nawet mieli do czynienia z tym urządzeniem. Co to jest czujnik ruchu? Spróbujmy to rozgryźć, więc:

Czujnik ruchu lub czujnik przemieszczenia - urządzenie (urządzenie), które wykrywa ruch dowolnych obiektów. Bardzo często urządzenia te wykorzystywane są w systemach bezpieczeństwa, alarmowych i monitorujących. Istnieje wiele form tych czujników, ale rozważymy moduł czujnika ruchu do podłączenia do płytek Arduino,a konkretnie od firmy RobotDyn. Dlaczego ta firma? Nie chcę reklamować tego sklepu i jego produktów, ale to właśnie produkty tego sklepu zostały wybrane jako próbki laboratoryjne ze względu na wysoką jakość prezentacji ich produktów konsumentowi końcowemu. A więc spotykamy się - czujnik ruchu(Czujnik PIR) z RobotDyn:


Czujniki te są małe, zużywają mało energii i są łatwe w użyciu. Dodatkowo czujniki ruchu RobotDyn również posiadają styki sitodrukowe, to oczywiście drobnostka, a bardzo przyjemna. Cóż, ci, którzy korzystają z tych samych czujników, ale tylko innych firm, nie powinni się martwić - wszystkie mają tę samą funkcjonalność i nawet jeśli styki nie są oznaczone, to pinout takich czujników można łatwo znaleźć w Internecie.

Podstawowy specyfikacje czujnik ruchu (Czujnik PIR):

Obszar działania czujnika: od 3 do 7 metrów

Kąt śledzenia: do 110 o

Napięcie robocze: 4,5...6 V

Pobór prądu: do 50 µA

Notatka: Standardową funkcjonalność czujnika można rozszerzyć podłączając czujnik światła do pinów IN i GND, wtedy czujnik ruchu będzie działał tylko w ciemności.

Inicjowanie urządzenia.

Po włączeniu inicjalizacja czujnika zajmuje prawie minutę. W tym okresie czujnik może dawać fałszywe sygnały, należy to wziąć pod uwagę przy programowaniu mikrokontrolera z podłączonym do niego czujnikiem lub w obwodach wykonawczych, jeśli połączenie jest wykonane bez użycia mikrokontrolera.

Kąt i obszar detekcji.

Kąt wykrywania (śledzenia) wynosi 110 stopni, zasięg wykrywania wynosi od 3 do 7 metrów, poniższa ilustracja pokazuje wszystko:

Regulacja czułości (odległości detekcji) i opóźnienia czasowego.

Poniższa tabela przedstawia główne ustawienia czujnika ruchu, po lewej stronie znajduje się odpowiednio regulator opóźnienia czasowego, w lewej kolumnie opis możliwych ustawień. Prawa kolumna opisuje regulację odległości wykrywania.


Podłączenie czujnika:

  • Czujnik PIR - Arduino Nano
  • Czujnik PIR - Arduino Nano
  • Czujnik PIR - Arduino Nano
  • Czujnik PIR - dla czujnika światła
  • Czujnik PIR - dla czujnika światła

Typowy schemat podłączenia przedstawia poniższy schemat; w naszym przypadku czujnik pokazany jest umownie od tyłu i podłączony do płytki Arduino Nano.

Szkic demonstrujący działanie czujnika ruchu (korzystamy z programu):

/* * Czujnik PIR -> Arduino Nano * Czujnik PIR -> Arduino Nano * Czujnik PIR -> Arduino Nano */ void setup() ( //Ustanów połączenie z monitorem portu Serial.begin(9600); ) void pętli( ) ( //Odczytaj wartość progu z portu A0 //zwykle jest ona większa niż 500, jeśli jest sygnał if(analogRead(A0) > 500) ( //Sygnał z czujnika ruchu Serial.println("Występuje ruch! !!!"); ) else ( / /Brak sygnału Serial.println("Wszystko jest cicho...");

Szkic jest powszechnym testem działania czujnika ruchu; ma wiele wad, takich jak:

  1. Możliwy fałszywe alarmy, czujnik wymaga samoinicjalizacji w ciągu jednej minuty.
  2. Sztywne połączenie z monitorem portu, brak aktorów wyjściowych (przekaźnik, syrena, wskaźnik LED)
  3. Czas sygnału na wyjściu czujnika jest zbyt krótki; w przypadku wykrycia ruchu należy programowo opóźnić sygnał na dłuższy okres czasu.

Komplikując obwód i rozszerzając funkcjonalność czujnika, można uniknąć opisanych powyżej wad. Aby to zrobić, konieczne będzie uzupełnienie obwodu modułem przekaźnika i podłączenie przez ten moduł zwykłej lampy 220 V. Sam moduł przekaźnika zostanie podłączony do pinu 3 na płytce Arduino Nano. Zatem schemat:

Teraz czas na lekkie poprawienie szkicu testującego czujnik ruchu. Na szkicu zostanie wprowadzone opóźnienie wyłączenia przekaźnika, ponieważ sam czujnik ruchu ma zbyt krótki czas sygnału na wyjściu po uruchomieniu. Program implementuje 10-sekundowe opóźnienie po uruchomieniu czujnika. W razie potrzeby czas ten można zwiększyć lub zmniejszyć zmieniając wartość zmiennej Wartość opóźnienia. Poniżej szkic i film przedstawiający całą pracę zmontowany obwód:

/* * Czujnik PIR -> Arduino Nano * Czujnik PIR -> Arduino Nano * Czujnik PIR -> Arduino Nano * Moduł przekaźnika -> Arduino Nano */ //relout - pin (sygnał wyjściowy) dla modułu przekaźnika const int relout = 3 ; //prevMillis - zmienna do przechowywania czasu poprzedniego cyklu skanowania programu //interval - odstęp czasu odliczania sekund przed wyłączeniem przekaźnika unsigned long prevMillis = 0; int interwał = 1000; //DelayValue - czas utrzymywania przekaźnika w stanie włączenia int DelayValue = 10; //initSecond – Zmienna iteracji pętli inicjującej int initSecond = 60; //countDelayOff - licznik przedziałów czasowych statyczny int countDelayOff = 0; //trigger - flaga wyzwalacza czujnika ruchu static bool wyzwalacz = false; void setup() ( //Standardowa procedura inicjalizacji portu, do którego podłączony jest moduł przekaźnikowy //WAŻNE!!! - aby moduł przekaźnikowy pozostawał w stanie początkowo wyłączonym //i nie wyzwalał się podczas inicjalizacji, należy wpisanie //wartości HIGH na port wejścia/wyjścia pozwoli uniknąć fałszywego „kliknięcia” i //zachowa stan przekaźnika taki jaki był przed włączeniem całego układu pinMode(relout, OUTPUT(); relout, HIGH); //Tutaj wszystko jest proste - czekamy, aż zakończy się 60 cykli (zmienna initSecond) //trwających 1 sekundę, w tym czasie czujnik „samoczynnie się inicjuje” dla (int i = 0; i).< initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) >500) ( //Ustaw flagę wyzwalającą czujnik ruchu if(!trigger) ( wyzwalacz = true; ) ) //Gdy flaga wyzwalająca czujnik ruchu jest ustawiona while(trigger) ( //Wykonaj postępując zgodnie z instrukcjami//Zapisz w zmiennej currMillis //wartość milisekund, które upłynęły od rozpoczęcia //wykonania programu unsigned long currMillis = millis(); //Porównaj z poprzednią wartością milisekundową //jeśli różnica jest większa niż podany przedział, to: if(currMillis - prevMillis > interwał) ( //Zapisz obecna wartość milisekundy do zmiennej prevMillis prevMillis = currMillis; //Sprawdź licznik opóźnienia porównując go z wartością okresu //w którym przekaźnik powinien być utrzymywany w stanie ON if(countDelayOff >= DelayValue) ( ​​\/Jeśli wartość jest równa to: // zresetuj flagę wyzwalania czujnika ruchu wyzwalacz = false; //Zresetuj licznik opóźnienia countDelayOff = 0; //Wyłącz przekaźnik digitalWrite(relout, HIGH); //Przerwij przerwanie pętli) else ( //Jeśli wartość jest nadal mniejsza , następnie //Zwiększ licznik opóźnienia o jeden countDelayOff ++; / /Utrzymuj przekaźnik w stanie włączenia digitalWrite(relout, LOW);

Program zawiera następującą strukturę:

bez znaku długi prevMillis = 0;

int interwał = 1000;

...

długi bez znaku currMillis = millis();

if(currMillis - prevMillis > interwał)

{

prevMillis = currMillis;

....

// Nasze operacje są zamknięte w treści konstrukcji

....

}

Aby to wyjaśnić, postanowiono osobno skomentować ten projekt. Więc, ten projekt pozwala na wykonanie zadania równoległego w programie. Korpus konstrukcji działa mniej więcej raz na sekundę, ułatwia to zmienna interwał. Po pierwsze, zmienna currMillis przypisana jest wartość zwracana przy wywołaniu funkcji milis(). Funkcjonować milis() zwraca liczbę milisekund, które upłynęły od początku programu. Jeśli różnica currMillis - poprzedniMillis większa od wartości zmiennej interwał oznacza to, że od rozpoczęcia wykonywania programu upłynęła już ponad sekunda i należy zapisać wartość zmiennej currMillis w zmienną poprzedniMillis następnie wykonaj operacje zawarte w bryle konstrukcji. Jeśli różnica currMillis - poprzedniMillis mniejsza niż wartość zmiennej interwał, wówczas pomiędzy cyklami skanowania programu nie minęła jeszcze sekunda, a operacje zawarte w korpusie konstrukcji są pomijane.

Cóż, na końcu artykułu znajduje się wideo od autora:

Aby komentarze mogły działać, włącz JavaScript.

Wiosnie, jak wiadomo, towarzyszą najróżniejsze zaostrzenia, a teraz główne „zaostrzenie” wypełzło ze swoich dziur na ulicę, aby przywłaszczyć sobie to, co do niej nie należy. Oznacza to, że temat ochrony Twojego mienia staje się coraz bardziej aktualny niż kiedykolwiek.
Na stronie znajduje się już kilka recenzji domowych. Są oczywiście funkcjonalne, ale każdy je ma cecha ogólna- zależność od gniazdka. Jeśli nie stanowi to problemu w przypadku nieruchomości, w której prąd jest już dostarczony, to co z nieruchomością, w której gniazdko jest daleko lub okolica jest całkowicie pozbawiona prądu? Postanowiłem pójść inną drogą - złożyć coś trwałego, tak prostego, jak to możliwe i niezależnego zasilanie sieciowe urządzenie, które będzie cały czas uśpione, a gdy włamie się złodziej, uruchomi się i zadzwoni na telefon właściciela, sygnalizując to prostym połączeniem alarmowym.

Przejrzyj przedmioty

Zakupione:
1. Deska stykowa jednostronna 5x7 cm: getinaks- Lub włókno szklane
* - włókno szklane jest znacznie lepszej jakości niż getinax.
2. Moduł Neoway M590 - z anteną na PCB -
3. Arduino Pro Mini „RobotDyn” ATmega168PA 8 MHz 3,3 V -
4. Płyta kontrolna ładowania i rozładowania litu -

Wydobyte z ruin cywilizacji:
1. Stojaki na tablice wycinane z obudów urządzeń - 6 szt.
2. Płaska bateria litowa 1300 mAh
3. Zszywki służące do mocowania kabla do ściany
4. Gumka biurowa
5. Kabel miedziany Grubość 1,5 mm
6. Obudowa przyrządów z lokalnego rynku radiowego - 1.5$
7. Para diod LED inny kolor(zrobione z odtwarzacza VHS)
8. Antena i przycisk z nasadką (pobrane z routera Wi-Fi)
9. 4-pinowa listwa zaciskowa (pobrana ze ściemniacza)
10. Złącze zasilania (wyjęte ze starej ładowarki do 18650)
11. Złącze 6-pinowe (pobrane z napędu DVD)
12. Puszka (na przykład puszka po kawie)

Arduino Pro Mini „RobotDyn” Atmega 168PA 3,3 V 8 MHz

Dane techniczne:
Mikrokontroler: ATmega168PA
Bezpośrednie napięcie robocze: 0,8–5,5 V
Napięcie robocze poprzez stabilizator LE33: 3,3 V lub 5 V (w zależności od modelu)
Temperatura pracy:-40°C… 105°C
Napięcie wejściowe: 3,35–12 V (model 3,3 V) lub 5–12 V (model 5 V)
Wejścia/wyjścia cyfrowe: 14 (z czego 6 można wykorzystać jako wyjścia PWM: 3, 5, 6, 9, 10 i 11)
Wejścia analogowe: 6
Liczniki czasowe: dwa 8-bitowe i jeden 16-bitowy
Tryby oszczędzania energii: 6
Prąd stały przez wejście/wyjście: 40 mA
Pamięć flash: 16 KB (2 używane na bootloader)
BARAN: 1KB
Pamięć EEPROM: 512 bajtów
Zasób zapisu/kasowania pamięci: 10 000 Flash/100 000 EEPROM
Częstotliwość zegara: 8 MHz (model 3,3 V) lub 16 MHz (model 5 V)
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)
I2C: A4 (SDA) i A5 (SCL)
UART TTL: 0 (odbiór) i 1 (TX)
Arkusz danych:

Wybór padł na tę atmegę zupełnie przez przypadek. na jednym forum, na którym dyskutowano o projektach energooszczędnych, w komentarzach pojawiała się rada, aby zastosować 168. atmegę.
Musiałem jednak majstrować, aby znaleźć taką płytkę, ponieważ dość często wszystkie partie były wypełnione 328 atmegami o częstotliwości 16 MHz, działającymi od 5 V. W moim projekcie takie cechy były od początku zbędne i niewygodne, a poszukiwania stały się bardziej skomplikowane.
W rezultacie natknąłem się na 3,3-woltową wersję Pro Mini na Atmega 168PA w serwisie eBay i to nie tylko prostą chińską, ale pod marką RobotDyn od rosyjskiego programisty. Tak, na początku, podobnie jak Ty, również miałem ziarno wątpliwości. Ale na próżno. Kiedy projekt był już zmontowany, a AliExpress wprowadził obowiązkową płatną dostawę tanich towarów (po czym paczki zaczęły gubić się znacznie częściej), zamówiłem później zwykłego Pro Mini Atmega168 (bez PA) 3,3V 8MHz. Poeksperymentowałem trochę z trybami oszczędzania energii na obu płytach, wrzucając do każdej specjalny szkic, który zanurzał mikrokontroler w trybie maksymalnego oszczędzania energii, i oto co wyszło:
1) Arduino Pro Mini „RobotDyn”: ~250µA
2) Arduino Pro Mini „NoName”: po podłączeniu zasilania do stabilizatora napięcia (pin RAW) i przylutowaniu diody LED, pobór prądu wynosi ~3,92mA




- jak rozumiesz różnica w zużyciu energii jest prawie 16-krotna, a wszystko dlatego, że Pro Mini firmy NoName korzysta z kombinacji Atmega168+, z której sam MK zjada tylko 20uA prąd (sprawdzałem to osobno), całą resztę obżarstwa załatwia liniowy przetwornik napięcia AMS1117 - datasheet tylko to potwierdza:


W przypadku płytki od RobotDyn zestawienie jest nieco inne - jest to Atmega168PA+ - tutaj zastosowano inny stabilizator LDO, którego charakterystyka pod względem oszczędności energii okazała się przyjemniejsza:


Nie wylutowałem, więc nie jestem w stanie powiedzieć ile prądu pobiera Atmega168PA czysta forma. W w tym przypadku miałem dość ~250µA przy zasilaniu przez firmę Nokia bateria litowa. Jeśli jednak odlutujesz AMS1117 od płyty głównej NoName, to zwykły ATmega168 w czystej postaci, jak powiedziałem powyżej, zużywa 20uA.
Diody wraz z zasilaczem można stłuc czymś ostrym. To nie problem. Stabilizator został wylutowany suszarką do włosów. Jednak nie każdy ma suszarkę do włosów i umiejętności, aby z nią pracować, więc obie powyższe opcje mają prawo istnieć.

Moduł Neoway M590E

Dane techniczne:
Częstotliwości: EGSM900/DCS1800 Dwuzakresowy lub GSM850/1900 lub czterozakresowy
Wrażliwość:-107 dBm
Maksymalna moc przenoszenie: EGSM900 klasa 4 (2 W), DCS1800 klasa 1 (1 W)
Prąd szczytowy: 2A
Prąd roboczy: 210mA
Prąd uśpienia: 2,5 mA
Temperatura pracy:-40°C… +85°C
Napięcie robocze: 3,3 V…4,5 V (zalecane 3,9 V)
Protokoły: GSM/GPRS Phase2/2+, TCP/IP, FTP, UDP itp.
Internet: KLASA GPRS 10
Arkusz danych:

Najtańszy moduł GSM jaki można znaleźć na rynku, zwykle używany, lutowany nie zawsze wprawnie z chińskimi rękami ze sprzętu. Dlaczego nie zawsze zręczny? Tak, wszystko przez wylutowanie suszarką - często ludzie otrzymują te moduły ze zwartym plusem i minusem, co jest jedną z przyczyn ich niesprawności. Dlatego pierwszym krokiem jest sprawdzenie styków mocy pod kątem zwarcia.

Notatka. Chciałbym zwrócić uwagę na osobną, ważną moim zdaniem kwestię, że moduły te mogą być wyposażone w okrągłe złącze koncentryczne do anteny, co pozwala osobno zamówić poważniejszą antenę i podłączyć ją do modułu bez tańca z tamburynem. Mogą też zostać dostarczone bez tego złącza. To tak, jeśli mówimy o najtańszych zestawach. Jeśli nie chcesz liczyć na szczęśliwy wypadek to są nieco droższe zestawy, w których występuje to złącze + w zestawie antena zewnętrzna na płytce tekstolitowej.

Moduł ten jest też kapryśny jeśli chodzi o zasilanie, gdyż w szczytowych momentach pobiera aż do 2A prądu, a dioda dołączona do zestawu zdaje się być zaprojektowana tak, aby obniżać napięcie z 5V (dlatego na samej płytce jest napisane 5V ) do 4,2 V, ale sądząc po skargach ludzi, stwarza to więcej problemów niż jest tego warte.
Załóżmy, że zmontowałeś już ten moduł i zamiast diody wlutowano zworkę, ponieważ nie będziemy podawać do niego napięcia 5 V, ale będziemy go zasilać bezpośrednio z akumulatora litowego, co mieści się w dopuszczalnym zakresie limity napięcia 3,3-4,2 V.
Trzeba będzie jakoś podłączyć go do komputera i sprawdzić funkcjonalność. W tym wypadku lepiej wcześniej kupić taki dla siebie - za jego pośrednictwem będziemy komunikować się z modułem i płytkami Arduino poprzez interfejs szeregowy UART (USART).
Połączenie pokazano poniżej na obrazku (narysowałem to najlepiej jak potrafię):
Modem TX >>> Konwerter RX
modemu RX<<< TX конвертера
Plus baterii - plus modemu
Minus baterii litowej łączy się z GND modemu i GND konwertera
Aby uruchomić modem, przyłóż pin BOOT przez rezystor 4,7 kOhm do GND


W międzyczasie uruchom program na swoim komputerze. Zwróć uwagę na ustawienia:
1) Wybierz port COM, do którego podłączony jest konwerter TTL, w moim przypadku jest to COM4, ​​u Ciebie może być inaczej.
2) Wybierz prędkość przesyłania danych. (Tu jest niuans, bo same moduły można skonfigurować na różne prędkości, najczęściej 9600 bodów lub 115200 bodów. Tutaj trzeba to dobrać empirycznie, dobierając jakąś prędkość, podłączając się i wysyłając polecenie AT, jeśli wyjdą pęknięcia w odpowiedzi, to się rozłączy, wybierze inną prędkość i powtórzy polecenie I tak dalej, aż odpowiedź będzie OK).
3) Wybierz długość pakietu (w tym przypadku 8 bitów), bit parzystości wyłączony (brak), bit stopu (1).
4) Pamiętaj, aby zaznaczyć pole +CR, a wtedy do każdego polecenia, które wysyłamy do modułu na końcu, automatycznie będzie dodawany znak powrotu karetki - moduł rozumie tylko polecenia z tym znakiem na końcu.
5) Połączenie, tutaj wszystko jest jasne, kliknij i możemy pracować z modułem.

Jeżeli klikniesz na „Połączenie”, a następnie uruchomisz moduł poprzez przyłożenie BOOT przez rezystor 4,7K do masy, to najpierw na terminalu wyświetli się napis „MODEM:STARTUP”, a po chwili napis „+PBREADY”, co oznacza, że ​​numer telefonu został przeczytany w książce, nawet jeśli może być pusty:

Pod tym spoilerem znajdują się polecenia AT z przykładami

Wypisujemy polecenie AT - w odpowiedzi moduł wysyła nam nasze polecenie, ponieważ tryb echa jest włączony i OK:

Sprawdźmy stan modemu komendą AT+CPAS - odpowiedzią znów jest nasza komenda +CPAS: 0 i OK.
Wartość 0 oznacza, że ​​moduł jest gotowy do pracy, ale w zależności od sytuacji mogą występować inne numery, np. 3 – połączenie przychodzące, 4 – w trybie połączenia, 5 – stan uśpienia. Nie znalazłem informacji o 1 i 2.

Zmiana szybkości transmisji danych poprzez UART odbywa się za pomocą polecenia AT+IPR=9600 - to tak, jeśli potrzebna jest prędkość 9600. Jeśli coś innego, podobnie jak np. AT+IPR=19200 lub AT+IPR=115200.

Sprawdźmy sygnał sieci. AT+CSQ pojawia się odpowiedź +CSQ: 22,1 - wartość przed przecinkiem ma zakres 0...31 (115...52 dBl) - jest to poziom sygnału, im wyższy, tym lepiej. Ale 99 oznacza jego brak. Wartość po przecinku to jakość sygnału 0...7 - tutaj jest odwrotnie, im niższa liczba, tym lepiej.

Wyłączmy tryb echa wysyłając polecenie ATE0, aby zduplikowane polecenia nie przeszkadzały. Tryb ten włącza się ponownie komendą ATE1.

Zobacz wersję oprogramowania AT+GETVERS



Te i wiele innych poleceń można wyświetlić

Wyrównywanie desek

O ile lutowanie Pro Mini do płytki prototypowej nie jest trudne, to z modułem GSM sytuacja jest nieco bardziej skomplikowana, gdyż jego grzebień kontaktowy znajduje się tylko z jednej strony, a jeśli tylko go przylutujesz, to druga strona płytki po prostu wisi w powietrzu. Następnie ponownie musiałem wywiercić na oko dodatkowe 3 otwory w pobliżu trzech rogów deski. Następnie zamaskowano obszary wokół każdego z otworów. Dla wygody odłączone przewody od grzebienia umieściłem na płytce stykowej bezlutowej (białej) i instalując na nich płytkę modułu GSM, przylutowałem je normalnie:

Później musiałem zrobić kolejny otwór, w moim przypadku na literę „I”, gdzie jest napisane „Made In China”, od krawędzi deski.


Okazało się, że dodany styk, czyli w istocie GND, został umiejscowiony obok GND płytki Pro Mini i w ten sposób możliwe stało się połączenie masy modułu GSM i Pro Mini za pomocą kropli lutowia (długi pin na środku i pin Pro Mini po jego prawej stronie) - zaznaczyłem je strzałkami. Oczywiście okazało się trochę krzywe, ale teraz trzyma się bezpiecznie:



Pomiędzy płytkami zostało trochę wolnego miejsca - w nim umieściłem litową płytkę kontrolującą ładowanie wyładowań z wlutowanym fabrycznie złączem microUSB i wlutowanymi przewodami.

Chusta mieści się tam bardzo ciasno, a blask diod umieszczonych z boku będzie doskonale widoczny przez niewielki otwór w etui.



Stojaki na karty

Aby bezpiecznie zamontować płytkę wewnątrz obudowy, musiałem spędzić kilka dni na zastanawianiu się, jak można to wdrożyć. Opcja z klejem termotopliwym nie była brana pod uwagę z kilku powodów - mógłby spaść, zdeformować się, a co najważniejsze, konstrukcja byłaby trudna do demontażu.
Doszedłem do wniosku, że najprostszą i najwłaściwszą opcją byłoby tutaj zastosowanie stojaków, których oczywiście nie miałem. Było jednak kilka niedziałających ładowarek, z których wycięto jedną długą podstawkę z gwintem na wkręty samogwintujące. Każdy stojak został przecięty na pół i spiłowany do około 9,5 mm - to właśnie na tej wysokości akumulator znajdujący się pod deską ma wystarczający margines około 2 mm - robi się to tak, aby przylutowane styki płytki wraz z jej końcówkami nie nie dotykaj go i tak, aby można było włożyć między nie kawałek pianki w celu unieruchomienia.
Jeśli chodzi o mocowanie płytki bezpośrednio do obudowy, tutaj wyciąłem cztery paski z puszki po kawie, wywierciłem na ich końcach otwór, a następnie przymocowałem je na tych samych śrubach, które wkręca się w stojaki. Zobacz na zdjęciu poniżej jak to wygląda.
Następnym krokiem jest przykręcenie kilku stojaków po drugiej stronie deski, czyli od góry, tak aby po zamknięciu obudowy pokrywa lekko opierała się na tych stojakach, tworząc dodatkowe mocowanie. Nieco później natknąłem się w tym celu na obudowę sowieckiego radia propagandowego (gdyby została znaleziona wcześniej, wziąłbym stąd wszystkie stojaki), gdzie znalazłem kilka mniej więcej odpowiednich wysokości, ale najpierw wywierciłem je na środku wiertłem pod wkręty samogwintujące Następnie je odpiłowałem i również wykończyłem pilnikiem, usuwając nadmiar. Tutaj wpadłem na jedną subtelność - na zdjęciu widać, że jeden biały stojak jest przykręcony do płyty getinaks od krawędzi, a drugi biały jest przykręcony bezpośrednio do płyty modułu, ponieważ od jednej krawędzi płytka modemu całkowicie zakrywa dolną płytę, a od przeciwnej krawędzi - wręcz przeciwnie - dolna już wystaje. Jednocześnie w obu płytach trzeba było wywiercić dodatkowe otwory, aby łby wkrętów mogły swobodnie przechodzić.
I na koniec pozostaje upewnić się, że deska jest zawsze równoległa do korpusu - zszywki służące do mocowania przewodów i kabli na ścianie doskonale sprawdzają się w tym zadaniu; wcześniej usunąłem z nich gwoździe. Wsporniki dobrze przylegają do płytki wklęsłą stroną bez żadnych dodatkowych urządzeń, jedyne co jest na prawo od karty SIM, to szerokość wspornika okazała się za duża i też musiałem go przeszlifować.
Wszystkie szczegóły zostały skorygowane naocznie i eksperymentalnie, poniżej znajduje się zdjęcie wszystkich powyższych:



Złącza. diody LED. Przycisk.

Ponieważ zabrakło mi grzebienia, musiałem usunąć 6-pinowe złącze z płyty napędu DVD, które następnie przylutowałem do Pro Mini, aby ułatwić flashowanie płyty. Obok przylutowałem okrągłe złącze (Nokiev 3,5mm) do ładowania litu.

Korpus złącza 6-pinowego został lekko wykończony pilnikiem, gdyż jego krawędzie wystawały nieco ponad korpus. Gniazdo ładowania idealnie dopasowuje się do ścianki obudowy.

Z drugiej strony płytki przylutowałem przycisk do restartu urządzenia oraz dwie diody do debugowania oprogramowania - czerwona dioda jest podłączona do modułu GSM, druga zielona dioda jest podłączona do 10-tego pinu Pro Mini - jest łatwiej mi debugować program.

Modyfikacja baterii

Płaska bateria Nokii w telefonach Nokia jest nie mniej powszechna niż 18650, ale wielu po prostu odmawia jej użycia ze względu na niedogodności związane z podłączaniem styków, które są zagłębione głęboko w samej baterii. Lutowanie ich jest niepożądane, dlatego zdecydowano się zastosować zaproponowaną przez nich metodę, a mianowicie samodzielne wykonanie bloku stykowego z gumki biurowej i drutu miedzianego (o grubości 1,5 mm).
Najpierw przebiłem kawałek gumki dwoma drutami z odciętymi końcami i dopasowałem je do styków akumulatora tak, aby odległość między nimi się pokrywała,
Zagiąłem końce, ocynowałem je lutownicą i lekko odciągnąłem za długie końce, tak aby powstałe styki zagłębiły się w gumkę.



Próba na baterii:

Można zabezpieczyć blok styków gumką recepturką lub owinąć niebieską taśmą izolacyjną, co ostatecznie zrobiłem.

Montaż.

Zasadnicza część pracy jest już wykonana, pozostaje tylko złożyć i nagrać.
Pomiędzy akumulator a płytkę włożyłem kawałek gumy piankowej, aby później nie przesuwał się wewnątrz obudowy. Dodatkowo przylutowałem kondensator 2200 µF do zasilania modułu.

Gdy ładowanie jest podłączone:

Rama. Zewnętrzna listwa zaciskowa.

Etui było dostępne na lokalnym rynku radiowym za około 1,5 dolara w przeliczeniu na dolary, a jego wymiary to 95 x 60 x 25 mm, czyli prawie wielkość paczki papierosów. Wywierciłem w nim kilka otworów. Najpierw dla 4-pinowej listwy zaciskowej pobranej z niedziałającego ściemniacza.
Całkowicie uwolniłem dwa zewnętrzne styki od śrub za pomocą podkładek, wywierciłem otwory na dłuższe śruby, które utrzymają całą listwę zaciskową na korpusie. Na samej obudowie oczywiście dwa zewnętrzne otwory będą duże, a dwa środkowe mniejsze - będą miały przewleczone styki, z czego jeden będzie podłączony do VCC Pro Mini, a drugi do pinu 2.

Wiercenie otworów, choć na pierwszy rzut oka proste, jest jednak nie mniej pracochłonne, bardzo łatwo je przeoczyć, dlatego zrobiłem to najpierw wiertłem o mniejszej średnicy, potem większym.

Na przycisk takt wybrałem nasadkę z lekko wklęsłym wierzchołkiem, tak aby łatwo było do niego sięgnąć zapałką lub spinaczem przez wąski otwór w etui.

Płytka w obudowie z podłączonym kablem konwertera USB-TTL:

O antenie.
Antena, jak być może zauważyłeś w całej recenzji, ciągle się zmieniała, gdy eksperymentowałem z różnymi antenami domowej roboty. Początkowo na płytce modułu znajdowało się okrągłe złącze koncentryczne, ale przy piątym użyciu do anteny zewnętrznej po prostu się rozpadło, więc należy pamiętać, że jest wątłe. W efekcie wyrwałem antenę na PCB ze starego routera i przylutowałem ją do płytki modułu, bo... łapie siatkę trochę lepiej niż sprężyna i drut.

Cóż, całkowicie zmontowany z podłączonym ładowaniem wygląda tak:

Test. Jak to działa:

Oprócz testów z antenami sprawdziłem jak alarm będzie się zachowywał na zewnątrz, przy mrozie -15. Aby to zrobić po prostu włożyłem całe wnętrze do pojemnika i zostawiłem na noc na balkonie, alarm się nie uruchomił, przyczyna okazała się w zasadzie oczywista - lit nie lubi mrozu. Potwierdził to kolejny test, gdzie akumulator zostawiłem w domu, a płytkę wyniosłem na zewnątrz długimi kablami i zostawiłem tak na jeden dzień na tym samym mrozie - działała jak gdyby nic się nie stało. Natomiast dziwne by było, gdyby alarm nie działał, bo... W kartach katalogowych Atmegi, modułów i kwarcu dopuszczalne temperatury pracy wynoszą do -40 stopni.

Zasada działania zorganizowana jest za pomocą przerwania zewnętrznego, początkowo pin 2 jest zwarty z VCC i tym samym na pinie utrzymywana jest logiczna 1, a sterownik śpi. Gdy tylko styk zostanie zerwany i na pinie 2 pojawi się 0, mikrokontroler budzi się, opuszcza 3-ci pin (do którego podłączony jest BOOT modemu przez rezystor) do masy - moduł uruchamia się, MK okresowo odpytuje moduł gotowości, a gdy tylko złapie sieć, natychmiast wysyła połączenie na podany w kodzie numer telefonu właściciela. Po odrzuceniu połączenia urządzenie wyłącza się nie wysyłając już żadnych niekończących się połączeń, co jest problemem wielu chińskich alarmów.

Dodatkowe informacje

#włączać #włączać // Biblioteka oprogramowania UART SoftwareSerial gsm(7, 6); // RX(7), TX(6) void wakeUp()() // pusta obsługa przerwań /////////////////////////// /////////////// void gsmOFF())( // PORTD|=(1<<3); // ВЫКЛЮЧЕНИЕ МОДУЛЯ _delay_ms(10); // gsm.println("AT+CPWROFF"); // ПЕЧАТАЕМ КОМАНДУ OFF PORTB &=~ (1<<2); // выключить LED 10 } // //========================================= void gsmON(){ // PORTD|=(1<<6); // 6-му порту (TX) назначить 1 PORTD &= ~(1<<3); // ЗАПУСК МОДУЛЯ _delay_ms(10); // while(!gsm.find("+PBREADY")); // ждём прочтения тел. книги PORTB |= (1<<2); // включить LED 10 _delay_ms(100); // while(1){ // gsm.println("AT+CREG?"); // проверяем в сети ли модуль if (gsm.find("0,1")) break; // если сеть есть, выходим из цикла _delay_ms(400); // проверка раз в 0,4 сек } // } // /////////////////////////////////////////// // void sleepNow(){ // функция засыпания ADCSRA = 0x00; // отключить подсистему АЦП (экономия 140 мкА) PORTD&=~(1<<6); // в вывод TX поставить 0 _delay_ms(100); // set_sleep_mode(SLEEP_MODE_PWR_DOWN); // режим сна PWR_DOWN sleep_enable(); // включение сна attachInterrupt(0, wakeUp, LOW); // включить прерывания sleep_mode(); // sleep_disable(); // detachInterrupt(0); // отключить прерывания } void setup(){ gsm.begin(9600); // скорость работы UART DDRD = B01001000; // 3-й и 6-й выводы на выход DDRB |= (1<<2); // вывод 10 на выход gsmON(); // запуск модуля для теста gsmOFF(); // выключаем модуль } void loop(){ if (!(PIND&(1<<2))){ // если на 0-ом прерывании появился 0 gsmON(); gsm.println("ATD+79xxxxxxxxx;"); // отзваниваемся, в ответ приходит OK и CONNECT _delay_ms(100); if (gsm.find("OK")) while(1){ // ожидание сброса вызова gsm.println("AT+CPAS"); // при каждой итерации опрашиваем модуль if (gsm.find("0")) break; // если 0, то выходим из цикла while _delay_ms(100); // проверка раз в 0,1 сек } for (char i=0; i<14; i++){ PORTB|=(1<<2); // LED 10 ON _delay_ms(200); PORTB&=~(1<<2); // LED 10 OFF _delay_ms(200); } gsmOFF(); // выключить модуль _delay_ms(10); while(1); // блокируем программу } else { sleepNow(); // укладываем контроллер спать } }

Schemat obwodu (bez karty sterującej ładowaniem i rozładowaniem)



Wnioski i przemyślenia. Plany.

Alarm jest używany na daczy, jestem zadowolony z pracy, jednak wraz z dalszymi badaniami AVR pojawia się coraz więcej pomysłów na dalsze modyfikacje. Arduino ze swoim pseudojęzykowym Wiringiem naprawdę mnie zdenerwowało, ponieważ... W pracy odkryto jeden nieprzyjemny moment. Kiedy użyłem funkcji portu digitalWrite(); lub tryb pin(); - z jakiegoś powodu moduł GSM bardzo często się zawieszał. Ale warto było je zastąpić sztuczkami takimi jak DDRB|=(1<Dopiero operacja bezpośredniego dostępu do portów sprawiła, że ​​urządzenie działało zgodnie z przeznaczeniem.

O oszczędzaniu energii...
Zmontowane urządzenie działało przez pełne cztery miesiące bez ładowania i nadal działa, chociaż bardziej słuszne byłoby powiedzenie „spać”. Można to sprawdzić, po prostu uruchamiając ponownie komputer za pomocą białego przycisku. Przy poborze prądu 250 μA (przez stabilizator LE33) i akumulatorze ~1430 mAh, choć ok, ze względu na nowość akumulatora, zaokrąglmy to w górę do 1000 mAh, okazuje się, że urządzenie może spać ok. 5,5 miesiąca bez ładowania. Jeśli nadal usuniesz stabilizator, czas działania można bezpiecznie pomnożyć 10 razy. Ale w moim przypadku nie ma takiej potrzeby, bo i tak saldo z karty SIM trzeba wydać raz na trzy miesiące, przy okazji można sprawdzić i naładować urządzenie.
Przykład oszczędzania energii podany w recenzji jest daleki od limitu, ponieważ sądząc po informacjach z datasheet, można obniżyć częstotliwość taktowania mikrokontrolera (odbywa się to poprzez włożenie bezpieczników) do 1 MHz i przy podaniu napięcia 1,8 V pobór w trybie aktywnym spadnie poniżej paska 1 µA . Bardzo dobrze! Ale jeśli MK jest taktowany z wewnętrznego oscylatora RC, pojawi się inny problem - powietrze UART zostanie zatkane śmieciami i błędami, szczególnie jeśli sterownik jest podgrzewany lub chłodzony.

Po zakończeniu...
1) Zwykły drut zainstalowany do zerwania nie jest zbyt wygodny, planuję poeksperymentować z czujnikiem Halla i kontaktronem, choć o tym drugim mówią, że nie jest zbyt niezawodny, ponieważ styki w nim mogą się sklejać.
2) Przydałoby się dodać możliwość zmiany „numeru właściciela” bez udziału komputera i flashowania go. Będziesz musiał pracować z EEPROM.
3) Spróbuj przerwać od timera watchdoga, ale nie tylko z ciekawości, ale po to, aby mikrokontroler okresowo sam się wybudzał, mierzył napięcie akumulatora i wysyłał wynikową wartość SMS-em, aby wiedzieć, jak niski jest akumulator.
4) Panel słoneczny może całkowicie wyeliminować potrzebę ładowania urządzenia; będzie to szczególnie prawdziwe w przypadku akumulatorów o małej pojemności.
5) Już od dawna chciałem kupić akumulatory LiFePo4, które według opinii dobrze znoszą mróz, jednak gdy szukałem odpowiedniej partii, wiosna już spokojnie przyszła.
6) Pracuj nad elementem estetycznym

Którego Pro Mini kupić?
Jeśli nie masz suszarki do włosów to Pro Mini „RobotDyn” Atmega168PA 3,3V, odetnij diodę LED czymś ostrym i masz ~250 µA.
Jeśli masz suszarkę do włosów, to dowolną płytkę, przylutuj stabilizator i diodę LED do zasilania - otrzymasz ~20 µA poboru prądu.

To wszystko na razie, mam nadzieję, że recenzja była interesująca i przydatna.

Planuję kupić +174 Dodaj do ulubionych Recenzja przypadła mi do gustu +143 +278