Arduino-Display-Alarmsteuerung. Hausalarm oder Verwendung von Bewegungssensor und LCD-Monitor mit Arduino. Was ist ein Arduino-Modul?

Heute werden wir darüber sprechen, wie man es benutzt Arduino sammeln Sicherheitssystem. Unsere "Wache" wird einen Stromkreis bewachen und einen Melder steuern.

Für Arduino ist dies kein Problem, und wie Sie dem Programmcode und dem Gerätediagramm entnehmen können, können Sie die Anzahl der geschützten Zugriffspunkte und die Anzahl der Benachrichtigungs- oder Anzeigegeräte leicht erhöhen.
Sicherheitssystem kann verwendet werden, um sowohl große Objekte (Gebäude und Bauwerke) als auch kleine Gegenstände (Schatullen, Tresore) und sogar tragbare Koffer und Koffer zu schützen. Obwohl Sie mit letzterem vorsichtiger sein müssen, wenn Sie beispielsweise ein Sicherheitssystem an einem Koffer installieren, mit dem Sie reisen möchten, und das Warnsystem an einem Flughafen funktioniert, werden Sie meiner Meinung nach ein ernsthaftes Gespräch führen der örtliche Sicherheitsdienst :-)

Das vereinfachte Funktionsprinzip des Geräts ist wie folgt (Abb. 1). Nach dem Einschalten geht das Gerät in den Betriebsmodus und wartet auf die Scharfschaltung. Das Scharf- und Unscharfschalten erfolgt mit einer Taste. Um die Sicherheit zu erhöhen, ist es besser, diesen Knopf innerhalb des geschützten Raums (Safe oder Box) zu platzieren. Vor dem Einschalten des Sicherheitsmodus muss die Tür leicht geöffnet werden. Wenn der Sicherheitsmodus eingeschaltet ist (durch Drücken der Taste) elektronische Schaltung wartet, bis Sie die Tür zum Zimmer schließen (Tür des Tresors, Deckel der Kiste usw.).

Jede Art von Endschalter muss an der Tür (oder Tür) installiert werden, dazu später mehr. Beim Schließen (oder Öffnen) informiert der Endschalter das Gerät darüber, dass der geschützte Stromkreis geschlossen ist, und das Gerät wechselt in den Scharfmodus. Das System benachrichtigt Sie über den Übergang in den Scharfmodus mit zwei kurze Signale(wie bei Autoalarmanlagen). In diesem Modus „fängt“ das Gerät das Öffnen der Tür. Nach dem Öffnen der Tür wartet das System einige Sekunden (dies ist ein konfigurierbarer Wert, etwa zehn Sekunden für Zimmer, eine oder zwei für eine Box) auf das Unscharfschalten, wenn dies nicht geschieht, schaltet sich die Sirene ein. Der Algorithmus und die Schaltung sind so ausgelegt, dass die Sirene nur durch vollständiges Zerlegen des Gehäuses und Ausschalten der Stromversorgung ausgeschaltet werden kann.

Gerät Sicherheitssystem sehr einfach (Abb. 2). Im Herzen des Vorstands Arduino. Endschalter werden wie ein normaler Taster über Pull-up-Widerstände angeschlossen. Auf die Endschalter gehe ich gesondert ein. Sie sind normalerweise geschlossen und normalerweise offen. Man kann einen normalen Taster als Endschalter einschalten, nur der Hub eines normalen Tasters ist sehr groß, das Türspiel ist meist größer. Daher ist es notwendig, eine Art Drücker für den Knopf zu finden und ihn zu federn, um den Knopf nicht mit der Tür zu zerbrechen. Nun, wenn Sie nicht zu faul sind, können Sie in den Laden gehen und einen Magnetschalter (Reed-Schalter) kaufen (Abb. 3), er hat keine Angst vor Staub und Verschmutzung.

Auch ein Endschalter für Autoalarmanlagen ist geeignet (Bild 4). Zu beachten ist, dass das Programm für den Reedschalter geschrieben ist. Wenn die Tür geschlossen ist, ist ihr Kontakt geschlossen. Wenn Sie einen Autoalarmschalter verwenden, ist die Tür bei geschlossener Tür höchstwahrscheinlich offen, und an den entsprechenden Stellen im Code müssen Sie 0 in 1 ändern und umgekehrt.

Als Sirene schlage ich vor, den Tonmelder PKI-1 IVOLGA aus belarussischer Produktion zu verwenden (Abb. 5). Versorgungsspannung 9 - 15 V, Betriebsstrom 20 - 30 mA. Dadurch kann es mit Batteriestrom betrieben werden. Gleichzeitig "gibt" es 95 - 105 dB ab.

Mit solchen Eigenschaften der Krona-Batterie ertönt es mehrere zehn Minuten lang. Ich habe es im Internet für 110 Rubel gefunden. An der gleichen Stelle kostet ein Reedschalter mit Magnet etwa 30 Rubel. Der Schalter vom Autoalarm in Autoteilen wurde für 28 Rubel gekauft. Der Transistor KT315 kann mit jedem Buchstaben genommen oder durch jeden modernen Siliziumtransistor mit geringer Leistung und geeigneter Leitfähigkeit ersetzt werden. Wenn die Lautstärke eines Melders nicht ausreicht (wer weiß, vielleicht möchten Sie viele Kilometer gehört werden), können Sie mehrere Melder parallel schalten oder einen stärkeren nehmen, nur in diesem Fall muss der Transistor durch einen größeren ersetzt werden leistungsstarke (zum Beispiel die bekannte Transistorbaugruppe ULN2003). Als Anschlüsse zum Anschließen eines Reedschalters und einer Sirene habe ich die einfachsten Anschlüsse für Audio- / Videogeräte verwendet - der Preis auf dem Radiomarkt beträgt 5 Rubel. für ein paar.

Der Körper des Geräts kann aus Kunststoff oder Sperrholz geklebt werden; Wenn ein ernsthaftes Objekt bewacht wird, ist es besser, es aus Metall zu machen. Batterien oder Akkumulatoren, um die Zuverlässigkeit und Sicherheit zu erhöhen, sollten im Gehäuse untergebracht werden.

Um den Programmcode zu vereinfachen, wurde auf Energiesparelemente verzichtet und die Batterien reichen lange nicht aus. Sie können den Code optimieren oder, noch besser, radikal umgestalten, indem Sie die Ereignisbehandlung auf Interrupts und den MK-Schlafmodus anwenden. In diesem Fall sollte die Stromversorgung aus zwei in Reihe geschalteten Quaderbatterien (9 V) für mehrere Monate reichen.

Jetzt der Code

// dauerhaft
const int-Taste = 12; // Knopfstift
const int Gerkon = 3; // Stift für Reedschalter
konstant int sirena = 2; // Sirenensteuerstift
const int led = 13; // Anzeigestift
// Variablen
int buttonState = 0; // Zustand der Schaltfläche
GanzzahlZustand=0; // Zustand des Reedschalters
Ganzzahl N = 0; // Zähler der Deaktivierungstaste
ungültige Einrichtung () (
// Sirenen- und Blinkersteuerung - Ausgang
PinMode (sirena, AUSGANG);
PinMode (LED, AUSGANG); // Taster und Reedschalter - Eingänge
PinMode (gerkon, INPUT);
PinMode (Taste, INPUT);
}
Leere Schleife () (
DigitalWrite (LED, HIGH);
while(buttonState= =0)( // Schleife warten bis Taste gedrückt wird
buttonState = digitalRead (Schaltfläche); // um in den bewaffneten Modus zu wechseln
}
DigitalWrite (LED, LOW);
ButtonState=0; // Schaltflächenwert zurücksetzen
while(gerkonState= =0)( // Schleife bis wir die Tür schließen

}
Verzögerung (500); // :-)
digitalWrite (sirena, HOCH); // Der Code
Verzögerung (100); // Angaben
digitalWrite (sirena, NIEDRIG); // enthalten
Verzögerung (70); // Modus
digitalWrite (sirena, HOCH); // Wachen
Verzögerung (100); // Benachrichtigung
digitalWrite (sirena, NIEDRIG); // Klang
while(gerkonState= =1)( // warte bis sich die Tür öffnet
gerkonState = digitalRead(gerkon);
}
für (int i=0; i<= 5; i++){ // 7,5 секунды на нажатие
buttonState = digitalRead (Schaltfläche); // geheimer Knopf
if (buttonState = = HIGH) ( // Verfolgen Sie unsere eigenen - die von jemand anderem
N=N+1;
}
Verzögerung (1500); // Geheimfunktion :-)))
}
if (N > 0) ( // am wichtigsten
digitalWrite (sirena, NIEDRIG); // Sirene nicht einschalten
}
anders(
digitalWrite (sirena, HOCH); // oder die Sirene einschalten
}
DigitalWrite (LED, HIGH); // den Indikator einschalten N = 0;
ButtonState=0;
Verzögerung (15000); // Erinnerung für Dummies die mögen
DigitalWrite (LED, LOW); // Drucktasten ohne Unterbrechungsverzögerung (1000);

Guten Tag! Wieder eine Mehrfachbewertung chinesischer elektronischer Komponenten, wie üblich ein wenig über alles, ich werde versuchen, kürzer zu sein, aber wird es funktionieren? Also treffen GSM-Alarm im Wert von bis zu 700 ₽. Interessant? Bitte unter "Schnitt"!

Lass uns anfangen! Bevor Sie beginnen, empfehle ich, sich mit diesem zu befassen, weniger Komponenten und mehr Autonomie. Also die "Terms of Reference", die Grundvoraussetzungen für die Signalisierung:

1) Benachrichtigen, wenn Sensoren ausgelöst werden.
2) Im Falle eines Stromausfalls muss eine gewisse Autonomie bereitgestellt werden.
3) Alarmverwaltung über SMS und Anrufe.

Aufgrund der Tatsache, dass sich das Erstellen eines Alarms um mehrere Monate verzögert hat und einige Verkäufer die bei ihnen gekauften Komponenten nicht mehr verkaufen, werden die Links zu den Waren anderer Verkäufer aktualisiert, die das Maximum oder fast das Maximum haben Anzahl der Warenverkäufe und Bestpreis. Die Preise in der Bewertung sind zum Zeitpunkt der Erstellung aktuell.

Liste dessen, was Sie brauchen:

Liste der Änderungen

GSM_03_12_2016-14-38.hex- Gerätebetrieb mit M590-Modem behoben.
GSM_05_12_2016-13-45.hex- Konsolenbefehl memtest hinzugefügt, Optimierung der RAM-Nutzung.
GSM_2016_12_06-15-43.hex- Ausgabe von Befehlsergebnissen auf der Konsole hinzugefügt, Speicheroptimierung. Belegt: 49% SRAM.
GSM_2016_12_07-10-59.hex- Jetzt werden Telefonnummern korrekt hinzugefügt und entfernt. Belegt: 49 % SRAM, 74 % Flash-Speicher.
GSM_2016_12_07-15-38.hex- Möglichkeit hinzugefügt, einen Bewegungssensor anzuschließen, der an Pin A0 angeschlossen wird (in diesem Fall wird Pin A0 als digitaler verwendet). SMS-Befehle hinzugefügt PIRON, PIR aus. Belegt: 48 % SRAM, 76 % Flash-Speicher.
GSM_2016_12_08-13-53.hex- Jetzt, nach erfolgreicher Ausführung eines Befehls, der keine SMS-Nachricht als Antwort sendet, blinkt das Gerät einmal eine blaue LED. Jetzt blinkt das Gerät nach einer fehlerhaften Ausführung eines Befehls, der keine SMS-Nachricht als Antwort sendet, zweimal mit einer blauen LED. Jetzt, nach der Initialisierung der Geräteparameter, wenn der "Silent"-Modus aktiviert ist (SendSms = 0), blinkt das Gerät schnell mit einer blauen LED für 2 Sekunden. Es wurde ein Fehler behoben, aufgrund dessen die Nummer durch den Befehl DeletePhone nicht immer aus dem Speicher gelöscht wurde. Belegt: 48 % SRAM, 78 % Flash-Speicher.
GSM_2016_12_11-09-12.hex- Konsolenbefehle AddPhone und DeletePhone hinzugefügt, die Syntax ist ähnlich wie bei SMS-Befehlen. Speicheroptimierung. Belegt: 43 % SRAM, 79 % Flash-Speicher.
GSM_2017_01_03-22-51.hex- Implementierte Unterstützung für ähnliche E / A-Port-Expander auf dem PCF8574-Chip zum Anschließen von zusätzlichen 8 Sensoren, einschließlich Reed-Schaltern. Automatische Adresssuche und automatische Modulkonfiguration. Die Standardnamen der Sensoren und die logische Ebene ihrer Operation werden mit dem EditSensor-Befehl geändert. Inhalt der Alarm-SMS für den Hauptsensor (Pin D0) „Alarm! Hauptsensor! und Bewegungssensor (Pin A0) „Alarm! PIR-Sensor! Befehle EditSensor und I2CScan hinzugefügt. Belegt: 66 % SRAM, 92 % Flash-Speicher.
GSM_2017_01_15-23-26.hex- Unterstützung für A6_Mini-Modem. Kontrolle des Vorhandenseins einer externen Stromversorgung (Pin D7). SMS-Befehle WatchPowerOn, WatchPowerOff hinzugefügt. Konsolenbefehle ListConfig, ListSensor hinzugefügt. Jetzt funktioniert der EditSensor-SMS-Befehl korrekt. Die Ausgabe von Debugging-Informationen an den Port-Monitor wurde etwas "gekürzt". Belegt: 66 % SRAM, 95 % Flash-Speicher.
GSM_2017_01_16-23-54.hex- In der Antwortnachricht auf den SMS-Befehl „Info“ wird nun auch der Zustand des Bewegungssensors gemeldet. Es wurde ein Fehler behoben, aufgrund dessen manchmal leere Antwort-SMS-Nachrichten gesendet wurden. Jetzt benachrichtigt das Gerät nicht nur über das Herunterfahren, sondern auch über die Wiederaufnahme der externen Stromversorgung. Alle Modems fingen an „weniger zu reden“, jetzt ist der Portmonitor etwas sauberer geworden. Belegt: 66 % SRAM, 95 % Flash-Speicher.
GSM_2017_02_04-20-23.hex- Fehler "Beobachten Sie das Einschalten" behoben. Jetzt wird nach dem Unscharfschalten der „Alarmstift“ ausgeschaltet. Jetzt werden nach dem Löschen der Nummer die korrekten Informationen in der Konsole angezeigt. Möglicherweise wurde ein Fehler behoben, durch den manchmal leere Antwort-SMS verschickt wurden. Belegt: 66 % SRAM, 90 % Flash-Speicher.
GSM_2017_02_14-00-03.hex- Jetzt werden standardmäßig SMS-Nachrichten gesendet, der SendSms-Parameter ist wieder gleich 1. Jetzt, wenn die Kontakte des Haupt-Reedschalters geschlossen sind (die Tür ist geschlossen), blinkt das Gerät eine blaue LED für 2 Sekunden und signalisiert Über normale Operation Sensor. Belegt: 66 % SRAM, 90 % Flash-Speicher.
GSM_2017_03_01-23-37.hex- Der WatchPowerOn-Befehl wurde entfernt. Konsolenbefehl WatchPowerOff hinzugefügt, identisch mit dem SMS-Befehl. Befehle WatchPowerOn1, WatchPowerOn2 hinzugefügt. WatchPowerOn1 – Überwachung der externen Stromversorgung ist aktiviert, wenn der Alarm aktiviert ist, WatchPowerOn2 – Überwachung der externen Stromversorgung ist immer aktiviert. Die Funktion zum Scharf- und Unscharfschalten durch externe Geräte wurde implementiert, hierfür werden die Klemmen A1(D15) und A2(D16) verwendet. Der Alarm wird scharf/unscharf geschaltet, wenn er am Ausgang A1 (D15) erscheint. hohes Level+5V oder an Pin A2(D16) low GND. Pin A1 (D15) wird auf GND hochgezogen, Pin A2 (D16) wird über 20 (10) kOhm-Widerstände auf +5 V hochgezogen. GuardButtonOn- und GuardButtonOff-Befehle hinzugefügt. Jetzt, nach dem Scharfschalten, blinkt die rote LED, bis die Integrität des Haupt-Reedsensorkreises überprüft wird. Ist der Stromkreis geschlossen, leuchtet die rote LED. Belegt: 66 % SRAM, 95 % Flash-Speicher.
GSM_2017_03_12-20-04.hex- Die Konsole ist jetzt noch übersichtlicher, aber wenn der Testmodus "TestOn" aktiviert ist, werden zusätzliche Informationen in der Konsole angezeigt. Der Fehler „Gesendet!“ wurde behoben, Informationen zum Senden von Nachrichten werden jetzt korrekt in der Konsole angezeigt. Fehler „wiederholter Täuschungsanruf“ behoben. Nun sollte die Saldoabfrage auf allen Modems korrekt funktionieren. Belegt: 67 % SRAM, 95 % Flash-Speicher.
GSM_2017_04_16-12-00.hex- Fest. Jetzt senden die Info- und Geldbefehle immer eine Antwort-SMS. Der Befehl GuardButtonOn wurde durch die Befehle GuardButtonOn1 und GuardButtonOn2 ersetzt. Belegt: 67 % SRAM, 99 % Flash-Speicher.
GSM_2017_04_21-09-43.hex - nicht zur Verwendung empfohlen, nur als Test, danke für die gefundenen Fehler :) - Jetzt hat der Parameter sendsms keinen Einfluss auf das Versenden von SMS-Nachrichten zur Überwachung des Stromnetzes. SMS-Befehl DelayBeforeGuard hinzugefügt, der für die Verzögerung beim Scharfschalten verantwortlich ist, der Wert darf 255 Sekunden nicht überschreiten. SMS-Befehl DelayBeforeAlarm hinzugefügt, der für das Verzögern des Sendens von Benachrichtigungen und das Einschalten des "Alarm-Pins" verantwortlich ist, wenn Sensoren ausgelöst werden, der Wert darf 255 Sekunden nicht überschreiten. ClearSMS-Befehle entfernt, Nachrichten werden jetzt automatisch nach Erhalt gelöscht. Belegt: 68 % SRAM, 100 % Flash-Speicher.
GSM_2017_04_22-20-42.hex- Mehrere Fehler behoben. ClearSMS-Befehle sind wieder in der Firmware enthalten. Speicheroptimierung. Belegt: 68 % SRAM, 98 % Flash-Speicher.
GSM_2017_04_23-17-50.hex- Jetzt sollte die Saldoabfrage auf allen Modems korrekt funktionieren. Das Scharf- und Unscharfschalten durch externe Geräte funktioniert jetzt korrekt. Info-Kommando-SMS-Antwortnachrichten dürfen nicht leer sein. Speicheroptimierung. Belegt: 68 % SRAM, 98 % Flash-Speicher.
GSM_2017_04_24-13-22.hex- Übergibt jetzt Konsolenbefehle an GSM-Modul nur durchgeführt, wenn der Testmodus aktiviert ist. Jetzt gibt es keine Unterteilung in SMS-Befehle und Konsolenbefehle, alle vorhandenen Befehle können sowohl per SMS als auch über die Konsole gesendet werden. Möglicherweise ein Fehler mit dem Info-Befehl behoben. Speicheroptimierung. Belegt: 68 % SRAM, 94 % Flash-Speicher.
GSM_2017_04_25-20-54.hex- Es wurde ein Fehler behoben, bei dem der Befehl ListConfig den Wert des letzten Ereignisses geändert hat. Wenn Sie jetzt Befehle über die Konsole eingeben, werden keine unnötigen SMS-Nachrichten gesendet. Möglicherweise ein Fehler mit dem Info-Befehl behoben. Speicheroptimierung. Belegt: 66 % SRAM, 94 % Flash-Speicher.
GSM_2017_04_30-12-57.hex- Temporär aktivierte Ausgabe von Zusatzinformationen an die Konsole beim Senden von SMS-Nachrichten und beim Bilden einer Antwort auf den Info-Befehl. Möglicherweise ein Fehler mit dem Info-Befehl behoben. Speicheroptimierung. Belegt: 66 % SRAM, 92 % Flash-Speicher.
GSM_2017_05_06-11-52.hex- Behoben mit DelayBeforeAlarm-Funktion. Belegt: 66 % SRAM, 93 % Flash-Speicher.
GSM_2017_05_23-21-27.hex- Die Ausgabe von Informationen auf der Konsole wurde geringfügig geändert. Unterstützung für Port-Erweiterungsmodule auf PCF8574A mit Adressen von 0x38 bis einschließlich 0x3f hinzugefügt. C-Fehler behoben. Jetzt bootet das Gerät nach den Befehlen FullReset, ResetConfig, ResetPhone und bei erfolgreicher Ausführung des MemTest-Befehls automatisch neu. WatchPowerTime-Befehl hinzugefügt. Jetzt ist es möglich, die Zeit einzustellen, nach der eine SMS-Nachricht über die Trennung gesendet wird externe Quelle Ernährung. Belegt: 67 % SRAM, 94 % Flash-Speicher.
GSM_2017_05_26-20-22.hex- Initialisierung des Sensorspeichers der Erweiterungsplatine korrigiert. Die Syntax des AddPhone-Befehls wurde geändert. Befehl EditMainPhone hinzugefügt. Das Funktionsprinzip des Benachrichtigungssystems wurde geändert, wenn der Sensor ausgelöst wird, werden zuerst SMS-Nachrichten gesendet, danach werden Sprachanrufe getätigt. Alarm-SMS-Nachrichten werden an Telefonnummern gesendet, die mit "S" (SMS) gekennzeichnet sind. Sprachanrufe werden an Nummern mit dem Zeichen „R“ (Ring) getätigt. Nachrichten zum Ein-/Ausschalten einer externen Stromquelle werden an Telefonnummern mit dem Zeichen „P“ (Power) gesendet. RingTime-Befehl hinzugefügt. Jetzt ist es möglich, die Dauer des Alarm-Sprachanrufs einzustellen, der Parameter kann einen Wert von 10 bis 255 Sekunden haben. Jetzt aktiviert/deaktiviert der Befehl RingOn/RingOff global die Benachrichtigung durch Sprachanrufe. ResetSensor-Befehl hinzugefügt. Belegt: 68 % SRAM, 99 % Flash-Speicher.
GSM_2017_06_02-17-43.hex- Der Parameter "I" (Info) wurde zu den Befehlen AddPhone und EditMainPhone hinzugefügt, der für die SMS-Benachrichtigung beim Scharf- oder Unscharfschalten des Geräts verantwortlich ist. Jetzt, nach dem Hinzufügen der Hauptnummer, wird das Gerät automatisch neu gestartet. Jetzt können Sie dieselben Nummern in den Speicher des Geräts eingeben. Beim Hinzufügen der zweiten und folgenden doppelten Nummern werden die Attribute "M", "S", "P" und "I" automatisch entfernt. Diese Nummern werden für wiederholte Sprachanrufe verwendet, wenn die Sensoren ausgelöst werden. Fehler mit fehlerhafter Ausgabe an die Konsole nach Ausführung des AddPhone-Befehls behoben, jetzt werden Informationen nicht automatisch nach dem Hinzufügen einer Nummer angezeigt. Neustartbefehl hinzugefügt. Belegt: 69 % SRAM, 99 % Flash-Speicher.
GSM_2017_06_11-00-07.hex- Auch jetzt, wenn die Kontakte des Haupt-Reedschalters geschlossen sind (die Tür ist geschlossen), blinkt am Gerät eine blaue LED für 2 Sekunden, was den normalen Betrieb des Sensors signalisiert, während das Gerät nicht berücksichtigt wird, wenn das Gerät eingeschaltet ist bewaffnet oder entwaffnet ist. Die Befehle RingOn/RingOff wurden entfernt. Jetzt kann das Gerät während eines Alarmrufs unscharf geschaltet werden, jetzt werden sie im Hintergrund getätigt. Belegt: 69 % SRAM, 99 % Flash-Speicher.
GSM_2017_07_04-21-52.hex- Jetzt sendet der Pause-Befehl keine Antwort-SMS. Befehle TestOn und TestOff entfernt. Bei allen Nummern ist das Zeichen Management entfernt. Belegt: 68 % SRAM, 96 % Flash-Speicher.
GSM_2017_07_24-12-02.hex- ReedSwitchOn/ReedSwitchOff-Befehle zur Überwachung des Haupt-Reedsensors hinzugefügt, jetzt kann er auf die gleiche Weise wie ein Bewegungssensor aktiviert/deaktiviert werden. Fehler im Info-Befehl behoben. Die Befehle TestOn und TestOff sind wieder in der Firmware enthalten. Belegt: 68 % SRAM, 96 % Flash-Speicher.
GSM_2017_07_26-10-03.hex- ModemID-Befehl hinzugefügt. Nur wenn der Wert dieses Parameters gleich 0 ist, wird das Modem automatisch erkannt. Nach dem Setzen des Parameterwerts auf 0 wird das Gerät automatisch neu gestartet. Belegt: 68 % SRAM, 98 % Flash-Speicher.
GSM_2017_08_03-22-03.hex- Jetzt kann der Alarm externe Geräte steuern. Der analoge Ausgang A3 wird zur Steuerung verwendet (D17 wird als digitaler verwendet). Der Ausgangslogikpegel (+5 V oder GND) kann geändert werden, nach dem Ändern des Pegels durch den Einstellbefehl wird das Gerät automatisch neu gestartet. Die Dauer des Steuersignals für externe Geräte kann geändert werden. Befehle ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open hinzugefügt. Einige Änderungen in der Logik der Steuerbefehle. Speicheroptimierung. Belegt: 68 % SRAM, 99 % Flash-Speicher.
GSM_2017_08_10-12-17.hex- Befehle SmsOn/SmsOff, ReedSwitchOn/ReedSwitchOff, PIROn/PIROff und alles was damit zusammenhängt entfernt. Der Befehl DelayBeforeAlarm wurde durch erweiterte Befehle ersetzt. Die Ausgabe des Info-Befehls wurde geändert. Die Ausgabe des ListConfig-Befehls an die Konsole wurde optimiert. Jetzt können alle digitalen Sensoren mit hohem oder niedrigem Pegel, einschließlich Reed-Schalter, an die Pins D6 und A0 angeschlossen werden. Die Pins D6 und A0 müssen über einen Widerstand von 10 (20) kOhm auf Masse (GND) gezogen werden. Wenn der Sensor auf ein niedriges Betriebsniveau eingestellt ist (im Reed-Schaltermodus aktiviert), wird die Integrität des Stromkreises überprüft. Der Logikpegel des Betriebs an den Eingängen D6 und A0 (+5V oder GND) kann geändert werden, nach Änderung des Logikpegels wird das Gerät automatisch neu gestartet. Für jeden der Sensoren (Haupt-, Zweit-, PCF-Erweiterungskarten) kann bei Auslösung eine bestimmte Zeit eingestellt werden, nach der eine Benachrichtigung erfolgt (SMS und / oder Sprachanruf). „PIR-Sensor“ umbenannt in „Zweiter Sensor“. Der Betrieb der Erweiterungskarte wurde behoben, ein Fehler, aufgrund dessen das Gerät immer über den Betrieb von Sensoren informierte, unabhängig davon, ob das Gerät scharfgeschaltet war oder nicht. Nun können Sie den Betriebsmodus wählen, in dem das Gerät die Sensoren der Erweiterungsplatine sowohl im scharfgeschalteten Zustand (GuardOn) als auch im gesperrten Zustand (GuardOff) überwachen kann. Befehle PCFForceOn/PCFForceOff, MainSensorLevelHigh/MainSensorLevelLow/MainSensorLevelOff, SecondSensorLevelHigh/SecondSensorLevelLow/SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeforeAlarm, PCFDelayBeforeAlarm hinzugefügt. Belegt: 68 % SRAM, 99 % Flash-Speicher.

* Nachfolgende Firmware-Versionen enthalten Änderungen gegenüber früheren Versionen.


Arduino Nano v3-Ports verwendet

D4- Ausgang des "Alarm"-Pins, bei Auslösen des Sensors wird an diesem Pin ein High-Pegel-Signal gesetzt
D5- invertierter Ausgang des "Alarm"-Pins, bei Auslösen des Sensors wird an diesem Pin ein Low-Pegel-Signal gesetzt

D6- Reed-Sensor. Ab der Version GSM_2017_08_10-12-17.hex können beliebige digitale Sensoren mit hohem oder niedrigem Ansprechpegel, einschließlich Reed-Schalter, an Pin D6 angeschlossen werden. Pin D6 muss über einen Widerstand von 10 (20) kOhm auf Masse (GND) gezogen werden.
D7- an einen Spannungsteiler von einer externen +5-V-Stromversorgung angeschlossen. Oberarm 2,2 kΩ, Unterarm 3,3 kΩ.

Spannungsteiler


D8- TX-Modem
D9- RX-Modem

D10- rote LED
D11- blaue LED
D12- grüne LED

Peripherieanschluss:
A0- Bewegungssensor . Ab der Version GSM_2017_08_10-12-17.hex können beliebige digitale Sensoren mit hohem oder niedrigem Ansprechpegel, einschließlich Reedschalter, an Pin A0 angeschlossen werden. Pin A0 muss über einen Widerstand von 10 (20) kOhm auf Masse (GND) gezogen werden.

A1- Eingang für externe Steuerung. Der Alarm wird aktiviert/deaktiviert, wenn ein hoher Pegel von +5 V am Eingang erscheint.
A2- Invertierter Eingang für externe Steuerung. Der Alarm wird aktiviert/deaktiviert, wenn ein niedriger GND-Pegel am Eingang erscheint.

A3- Konfigurierbarer (+5V oder GND) Ausgang zur Steuerung externer Geräte. Beim Empfang eines Steuerbefehls ändert sich der Wert an diesem Ausgang je nach Einstellung für die eingestellte Zeitdauer.

A4- SDA I2C
A5- SLC-I2C
, um weitere 8 Sensoren anzuschließen.


Steuerbefehle für Hex-Firmware

Beachtung! Befehle hervorgehoben in fett können nur von der Hauptrufnummer aus durchgeführt werden, da diese für die Konfiguration des Gerätes zuständig sind. Die restlichen Befehle können von Nummern mit dem Attribut "Verwaltung" ausgeführt werden.

SMS - Steuerbefehle unterscheiden nicht zwischen Groß- und Kleinschreibung:
Telefon hinzufügen- Telefonnummer hinzufügen. Insgesamt können nicht mehr als 9 Nummern hinzugefügt werden + 1 Hauptnummer, die automatisch gespeichert wird, wenn Sie das Gerät zum ersten Mal anrufen, nachdem es durch Befehle auf Werkseinstellungen zurückgesetzt wurde Telefon zurücksetzen oder Vollständiges Zurücksetzen. Jene. Wer das Gerät nach dem Zurücksetzen auf die Werkseinstellungen zuerst angerufen hat, ist der „Main“, diese Nummer ist in der ersten Speicherzelle eingetragen und kann per SMS nicht geändert oder gelöscht werden. Es ist nicht möglich, zwei identische Nummern zu addieren.
Befehlsbeispiel:



Befehlssyntax:

Telefon hinzufügen- Team
: - Trennzeichen
5 - in die fünfte Speicherzelle schreiben
+71234567890 - Telefonnummer
Bis Version GSM_2017_05_26-20-22.hex:
a - Parameter "Alarm" - SMS-Nachrichten werden an Nummern mit diesem Parameter gesendet - Nachrichten über Alarmauslösung und Nachrichten über Scharf- oder Unscharfschaltung.
Ab Version GSM_2017_05_26-20-22.hex:
m - Parameter "Verwaltung" - Alarmverwaltung ist erlaubt
s - Parameter „SMS“ – eine SMS-Nachricht wird gesendet, wenn Sensoren ausgelöst werden
r - "Ring"-Parameter - ein Sprachanruf wird getätigt, wenn die Sensoren ausgelöst werden
p - Parameter "Power" - eine SMS-Nachricht wird gesendet, wenn die externe Stromversorgung ein- / ausgeschaltet wird
i - Parameter "Info" - Beim Scharf- oder Unscharfschalten wird eine SMS-Nachricht gesendet
Wenn die Parameter "m", "s", "r", "p", "i" fehlen, wird das Telefon im Speicher gespeichert, aber in keiner Weise verwendet.


Telefon löschen- Telefonnummer löschen.
Befehlsbeispiel:

Befehlssyntax:

Befehl „Telefon löschen“.
: - Trennzeichen
+71234567891 - Telefonnummer


Haupttelefon bearbeiten- Ändern Sie die Parameter "s", "r", "p", "i" des Haupttelefons, diese Nummer wird in die erste Speicherzelle eingetragen.
Befehlsbeispiel:

Befehlssyntax:

Befehl MainPhone bearbeiten
: - Trennzeichen
srpi - Parameter


SaldoNum- Ändern der Nummer der Kontostandsanforderung und Verarbeitung der Länge der Anforderungsantwort. Standardwert für Beeline: #100#L22.
Befehlsbeispiel:

Befehlssyntax:

BalanceNum - Befehl
: - Trennzeichen
#103# - Saldoanforderungsnummer
L24 - Die Länge (len) der weitergeleiteten Antwort beträgt 24 Zeichen, wir schneiden den Spam von der Kontostandsanforderung ab.


Sensor bearbeiten- Ändern Sie den Namen des Sensors und die logische Betriebsebene. Insgesamt dürfen nicht mehr als 8 zusätzliche Sensoren vorhanden sein. Nach dem Ändern der Einstellungen muss das Gerät neu gestartet werden.
Befehlsbeispiel:
EditSensor:1+Datchik dvizheniya v koridore#h

Befehlssyntax:

Sensor bearbeiten - Befehl
: - Trennzeichen
1 - in die erste Speicherzelle schreiben
+ - Trennzeichen
Datchik dvizheniya v koridore - der Name des Sensors darf 36 Zeichen einschließlich Leerzeichen nicht überschreiten.
#h - Ein Zeichen für einen hohen Logikpegel vom Sensor, bei dessen Empfang ein Alarm ausgelöst wird. Wenn „#h“ fehlt, wird der Alarm ausgelöst, wenn ein niedriger Logikpegel vom Sensor empfangen wird.


Schlafenszeit- Die Zeit des "Einschlafens" des Alarms beim Empfang von SMS - der Befehl "Pause", wird in Minuten angegeben. Standardwert: 15, darf nicht kleiner als 1 und größer als 60 sein.
Befehlsbeispiel:

Befehlssyntax:

SleepTime - Team
: - Trennzeichen
20 - 20 Minuten "schlafen".


AlarmPinZeit- Die Zeit, für die der Alarm / Invers-Pin ein- / ausgeschaltet ist, wird in Sekunden angezeigt. Standardwert: 60, darf nicht kleiner als 1 Sekunde und größer als 43200 Sekunden (12 Stunden) sein.
Befehlsbeispiel:

Befehlssyntax:

AlarmPinTime - Befehl
: - Trennzeichen
30 - 30 Sekunden, um den Alarm-Pin zu aktivieren/deaktivieren.


DelayBeforeGuard- Die Zeit, bis das Gerät scharfgeschaltet wird, nachdem der entsprechende Befehl empfangen wurde.
Befehlsbeispiel:

Befehlssyntax:

DelayBeforeGuard-Befehl
: - Trennzeichen
25 - 25 Sekunden vor dem Scharfschalten


Verzögerung vorAlarm- Die Zeit, nach der eine „alarmierende“ SMS-Benachrichtigung gesendet wird, wenn der Alarm in diesem Zeitraum nicht deaktiviert wurde. Ersetzt durch erweiterte Befehle ab Version GSM_2017_08_10-12-17.hex
Befehlsbeispiel:

Befehlssyntax:

DelayBeforeAlarm - Befehl
: - Trennzeichen
40 - 40 Sekunden, bevor eine "Alarm"-Benachrichtigung gesendet wird


WatchPowerTime- Zeit in Minuten, nach der eine SMS-Nachricht über die Trennung der externen Stromquelle gesendet wird. Wenn die externe Stromversorgung vor Ablauf der eingestellten Zeit wiederhergestellt wird, wird die Nachricht nicht gesendet.
Befehlsbeispiel:

Befehlssyntax:

WatchPowerTime - Team
: - Trennzeichen
5 - 5 Minuten vor dem Senden einer SMS-Nachricht


Klingelzeit- Die Dauer des Alarm-Sprachanrufs, der Parameter kann einen Wert von 10 bis 255 Sekunden haben.
Befehlsbeispiel:

Befehlssyntax:

Klingelzeit - Befehl
: - Trennzeichen
40 - 40 beträgt die Anrufdauer 40 Sekunden, danach wird der nächste Teilnehmer angerufen.


Modem-ID- Erzwungene Installation des Modells des verwendeten Modems. Mögliche Werte: 0 - Automatische Modemerkennung, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Befehlsbeispiel:

Befehlssyntax:

ModemID - Befehl
: - Trennzeichen
2 - Modem-ID.


ExtDeviceTime- Die Anzahl der Sekunden, für die sich der Signalpegel am Steuerausgang des externen Geräts ändert.
Befehlsbeispiel:

Befehlssyntax:

ExtDeviceTime-Befehl
: - Trennzeichen
5 - 5 Sekunden


ExtDeviceLevelLow- Ein an Ausgang A3 angeschlossenes externes Gerät wird auf Low (GND) getrieben. Der Standardausgang ist hoch +5 V, bis ein Steuerbefehl für ein externes Gerät empfangen wird.
ExtDeviceLevelHigh- Ein an Ausgang A3 angeschlossenes externes Gerät wird von einem hohen Signalpegel (+5V) angesteuert. Der Ausgang wird standardmäßig auf GND Low gesetzt, bis ein Steuerbefehl für ein externes Gerät empfangen wird.

Sensor zurücksetzen- Zurücksetzen der Parameter der Sensoren des Port-Expanders

resetconfig- Werkseinstellungen zurückgesetzt

Telefon zurücksetzen- alle aus dem Speicher löschen Telefonnummern

Vollständiges Zurücksetzen- Einstellungen zurücksetzen, alle Telefonnummern aus dem Speicher löschen, den Standardwert des BalanceNum-Befehls wiederherstellen.

Klingeln an- Aktivieren der Benachrichtigung durch einen Anruf an die in der ersten Speicherzelle gespeicherte "Hauptnummer", wenn der Sensor ausgelöst wird. Entfernt seit Version GSM_2017_06_11-00-07.hex
Auflegen- Deaktivieren Sie die Benachrichtigung durch einen Anruf, wenn der Sensor ausgelöst wird. Entfernt seit Version GSM_2017_06_11-00-07.hex

SMSOn- Aktivieren Sie die SMS-Benachrichtigung, wenn der Sensor ausgelöst wird. Entfernt seit Version GSM_2017_08_10-12-17.hex
SMS ab- SMS-Benachrichtigung ausschalten, wenn der Sensor ausgelöst wird. Entfernt seit Version GSM_2017_08_10-12-17.hex

PIRON- Bewegungssensorverarbeitung aktivieren
PIR aus- Bewegungssensorverarbeitung deaktivieren

ReedSwitchOn- Aktivierung der Verarbeitung des Haupt-Reedsensors
ReedAbschaltung- Schalten Sie die Verarbeitung des Haupt-Reed-Sensors aus

WatchPowerOn- Schalten Sie die Steuerung der externen Stromversorgung ein, eine SMS-Nachricht über die Unterbrechung der externen Stromversorgung wird gesendet, sofern das Alarmsystem scharfgeschaltet ist. Seit Version GSM_2017_03_01-23-37 entfernt.

WatchPowerOn1- Schalten Sie die Steuerung der externen Stromversorgung ein, eine SMS-Nachricht über die Unterbrechung der externen Stromversorgung wird gesendet, sofern das Alarmsystem scharfgeschaltet ist.
WatchPowerOn2- Schalten Sie die externe Stromsteuerung ein, eine SMS-Nachricht über einen externen Stromausfall wird in jedem Fall gesendet

„Ausschalten“ ansehen- Schalten Sie die externe Stromsteuerung aus

GuardButtonOn- Steuerung des Alarms durch externe Geräte oder Taster ist freigegeben Ab Version GSM_2017_04_16-12-00 entfernt.
GuardButtonOn1- Funktion platzieren oder zurückziehen Schutz durch externe Geräte oder die Taste ist eingeschaltet
GuardButtonOn2- Funktion nur Auftritte durch externe Geräte oder durch Einschalten des Tasters scharf geschaltet wird, erfolgt das Unscharfschalten durch einen Anruf an das Gerät oder durch einen SMS-Befehl.
GuardButton Aus- Die Alarmsteuerung durch externe Geräte oder per Taste ist deaktiviert

PCFForceOn- Kontinuierliche Überwachung einer Gruppe aller Sensoren des Erweiterungsmoduls
PCFForceOff- Überwachung einer Gruppe aller Sensoren des Expanders nur, wenn das Gerät scharfgeschaltet ist

MainSensorLevelHigh- Eine Alarmbenachrichtigung wird gesendet, wenn am Eingang (D6) des Sensors ein Hochpegelsignal (+5 V) erscheint
MainSensorLevelLow- Eine Alarmbenachrichtigung wird gesendet, wenn ein Signal mit niedrigem Pegel (GND) am Eingang (D6) des Sensors erscheint
MainSensorLevelOff- Eingangssensorverarbeitung (D6) deaktiviert

SecondSensorLevelHigh- Eine Alarmbenachrichtigung wird gesendet, wenn am Eingang (A0) des Sensors ein Hochpegelsignal (+5 V) erscheint
SecondSensorLevelLow- Eine Alarmbenachrichtigung wird gesendet, wenn ein Signal mit niedrigem Pegel (GND) am Eingang (A0) des Sensors erscheint
SecondSensorLevelOff- Eingangssensorverarbeitung (A0) deaktiviert

MainDelayBeforeAlarm- die Zeit, nach der eine „Alarm“-SMS-Benachrichtigung gesendet wird, wenn der Hauptsensor (D6) ausgelöst wird, wenn der Alarm während dieser Zeit nicht deaktiviert wurde. Die Syntax ist die gleiche wie beim DelayBeforeAlarm-Befehl.
SecondDelayBeforeAlarm- die Zeit, nach der eine „Alarm“-SMS-Benachrichtigung gesendet wird, wenn ein zusätzlicher Sensor (A0) ausgelöst wird, wenn der Alarm in dieser Zeit nicht deaktiviert wurde. Die Syntax ist die gleiche wie beim DelayBeforeAlarm-Befehl.
PCFDelayBeforeAlarm- die Zeit, nach der eine „Alarm“-SMS-Benachrichtigung gesendet wird, wenn die Sensoren der Erweiterungsplatine (PCF8574) ausgelöst werden, wenn der Alarm während dieser Zeit nicht deaktiviert wurde. Die Syntax ist die gleiche wie beim DelayBeforeAlarm-Befehl.

GuardOn - Arm
GuardOff - Schutz entfernen

Öffnen - Steuerbefehl für externe Geräte

Info - Überprüfen Sie den Status. Als Antwort auf diese Nachricht wird eine SMS mit Informationen über die Nummer gesendet, von der aus die Sicherheit aktiviert / deaktiviert wurde

Pause – pausiert das System für die durch den Sleeptime-Befehl in Minuten eingestellte Zeit, das System reagiert nicht auf Sensorauslöser.

TestOn - der Testmodus ist eingeschaltet, die blaue LED blinkt.
TestOff - der Testmodus ist ausgeschaltet.

LedOff - schaltet die Standby-LED aus.
LedOn - schaltet die Standby-LED ein.

Geld - Guthabenanforderung.

ClearSms - Löschen Sie alle SMS aus dem Speicher

Konsolenbefehle (bis Version GSM_2017_04_24-13-22.hex) - werden im Arduino IDE Port Monitor eingetragen:

AddPhone - ähnlich dem AddPhone-SMS-Befehl

DeletePhone - ähnlich wie der SMS-Befehl DeletePhone

EditSensor - ähnlich dem SMS-Befehl EditSensor

ListPhone - gibt an den Portmonitor eine Liste der im Speicher gespeicherten Telefone aus

ResetConfig - ähnlich dem ResetConfig-SMS-Befehl

ResetPhone - ähnlich dem ResetPhone-SMS-Befehl

FullReset - ähnlich dem SMS-Befehl FullReset

ClearSms - ähnlich dem SMS-Befehl ClearSms

WatchPowerOn1 - ähnlich dem SMS-Befehl WatchPowerOn1
WatchPowerOn2 - ähnlich dem WatchPowerOn2-SMS-Befehl
WatchPowerOff - ähnlich dem WatchPowerOff-SMS-Befehl

GuardButtonOn - ähnlich dem GuardButtonOn-SMS-Befehl. Seit Version GSM_2017_04_16-12-00 entfernt
GuardButtonOn1 - ähnlich dem SMS-Befehl GuardButtonOn1
GuardButtonOn2 - ähnlich dem SMS-Befehl GuardButtonOn2
GuardButtonOff - ähnlich dem GuardButtonOff-SMS-Befehl

Memtest - ein Test des nichtflüchtigen Speichers des Geräts, alle Geräteeinstellungen werden zurückgesetzt, ähnlich wie beim FullReset-Befehl.

I2CScan - Suche und Initialisierung von unterstützten Geräten auf dem I2C-Bus.

ListConfig - Ausgabe der aktuellen Konfiguration des Geräts an den Portmonitor.

ListSensor - Ausgabe an den Portmonitor der aktuellen Sensorkonfiguration.

UPD. Bei Verwendung des Bewegungssensors, um Fehlalarme während des Modembetriebs zu vermeiden, ist es notwendig zwischen Stifte Masse und A0 Arduino Widerstand leisten Danke Freund
AllowPhone = ("70001234501", "70001234502", "70001234503", "70001234504", "70001234505") - Nummern, die zur Verwaltung der Sicherheit berechtigt sind.
AlarmPhone = ("70001234501", "70001234502") - Nummern zum Senden von SMS-Benachrichtigungen, wenn ein Sensor ausgelöst wird, und von Benachrichtigungen zum Deaktivieren oder Scharfschalten. Die erste Nummer in der Liste wird angerufen, wenn der Sensor ausgelöst wird, wenn der RingOn-Befehl ausgeführt wird, standardmäßig ist diese Option aktiviert. Dies geschieht, weil SMS-Nachrichten möglicherweise mit einer gewissen Verzögerung ankommen und der Anruf sofort durchgehen sollte.

Wenn ein Anruf von einer autorisierten Nummer oder eine SMS-Nachricht mit dem Befehl GuardOn / GuardOff eingeht, wird je nach aktuellem Schutzzustand eine SMS-Nachricht zum Scharf- oder Unscharfschalten an die im AlarmPhone-Array aufgeführten Nummern gesendet Eine SMS-Nachricht wird auch an die Nummer gesendet, von der der Anruf kam.

Wenn der Sensor ausgelöst wird SMS-Nachrichten werden an alle Nummern aus dem AlarmPhone-Array (Liste) gesendet und ein Sprachanruf wird an die erste Nummer aus diesem Array getätigt.

Lichtanzeige:
Die LED leuchtet rot – scharf.
LED leuchtet in grün- unscharf, aktiviert/deaktiviert durch SMS-Befehl LedOn/LedOff.
Die LED blinkt ständig blau - es zeigt an, dass mit dem Arduino alles in Ordnung ist, die Platine nicht aufgehängt ist, sie ausschließlich zum Debuggen verwendet wird, sie durch den SMS-Befehl TestOn / TestOff aktiviert / deaktiviert wird.
* Es gibt eine Funktion LedTest () im Code, sie blinkt mit einer blauen LED, sie dient nur zur Überwachung des Arduino, sie blinkt - es bedeutet, dass sie funktioniert, sie blinkt nicht - sie ist eingefroren. Habe noch nicht aufgelegt :)

Nicht aktuell!

Anschluss von 2 oder mehr Sensoren für offene Firmware (gilt nur für diese Firmware sketch_02_12_2016.ino)
Zum Anschluss weiterer Reedsensoren verwenden wir freie digitale Pins D2, D3, D5 oder D7. Schaltplan mit Zusatzsensor an D7.

Notwendige Firmware-Änderungen
... #define DoorPin 6 // Eingangsnummer verbunden mit dem Hauptsensor int8_t DoorState = 0; // Variable zum Speichern des Zustands des Hauptsensors int8_t DoorFlag = 1; // Variable zum Speichern des Zustands des Hauptsensors #define BackDoorPin 7 // Nummer des mit dem Zusatzsensor verbundenen Eingangs int8_t BackDoorState = 0; // Variable zum Speichern des Zustands des Zusatzsensors int8_t BackDoorFlag = 1; // Variable zum Speichern des Zustands des Zusatzsensors...
void setup() ( ... pinMode(DoorPin, INPUT); pinMode(BackDoorPin, INPUT); ...
... void Detect() ( // Werte von Sensoren lesen DoorState = digitalRead(DoorPin); BackDoorState = digitalRead(BackDoorPin); //Verarbeitung des Hauptsensors if (DoorState == LOW && DoorFlag == 0) ( DoorFlag = 1; Verzögerung (100); if (LedOn == 1) digitalWrite (GLed, LOW); Alarm (); ) if (DoorState == HIGH && DoorFlag == 1)( DoorFlag = 0; delay(100); ) //Zusätzlichen Sensor verarbeiten if (BackDoorState == LOW && BackDoorFlag == 0) ( BackDoorFlag = 1; delay(100); if (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); ) if (BackDoorState = = HIGH && BackDoorFlag == 1)( BackDoorFlag = 0; delay(100); ) ) ...

Und etwas anderes:
1. Es ist besser, Dioden zu verwenden, die für einen Strom von 2 A ausgelegt sind, da das Modul mit einem Strom von 1 A infiziert wird und wir den Arduino und das Modem noch mit etwas füttern müssen. In diesem Fall werden 1N4007-Dioden verwendet, wenn sie ausfallen, werde ich sie durch 2 A ersetzen.
2. Ich habe alle Widerstände für die LED auf 20 kOhm verwendet, um nachts nicht den ganzen Flur zu beleuchten.
3. Ich habe auch einen 20-kOhm-Widerstand an den Reed-Sensor zwischen dem GND-Pin und dem D6-Pin gehängt.

Das ist alles für jetzt. Vielen Dank für Ihre Aufmerksamkeit! :)

Ich plane, +207 zu kaufen Zu den Favoriten hinzufügen Die Rezension hat gefallen +112 +243

Der Frühling ist, wie Sie wissen, von allerlei Erschwernissen begleitet, und nun kroch die Haupt-„Erschwerung“ aus ihren Löchern auf die Straße, um sich anzueignen, was ihr nicht gehört. Damit wird das Thema Eigentumsschutz aktueller denn je.
Die Seite hat bereits mehrere Bewertungen zu hausgemachten -. Funktional sind sie natürlich, aber das haben sie alle gemeinsames Merkmal- abhängig von der Steckdose. Wenn dies bei Immobilien mit Stromanschluss kein Problem ist, was ist dann mit Immobilien, bei denen die Steckdose weit entfernt ist oder die Umgebung komplett stromlos ist? Ich entschied mich für den anderen Weg - um ein langlebiges, möglichst einfaches und netzunabhängiges Gerät zusammenzubauen, das die ganze Zeit schläft und beim Eindringen von Räubern hochfährt und das Telefon des Besitzers zurückruft. Signalisierung eines einfachen Weckrufs.

Artikel überprüfen

Gekauft:
1. Brotbrett einseitig 5x7 cm: getinaks- oder Glasfaser
* - Glasfaser ist viel besser als Getinaks.
2. Modul Neoway M590 - , mit PCB-Antenne -
3. Arduino Pro Mini "RobotDyn" ATmega168PA 8MHz 3,3V -
4. Lithium-Lade-Entlade-Steuerplatine -

Erhalten aus den Ruinen der Zivilisation:
1. Gestelle für die Platine, gesägt aus den Gehäusen der Geräte - 6 Stk.
2. Lithium-Flachbatterie 1300mAh
3. Heftklammern zur Befestigung des Kabels an der Wand
4. Radiergummi für Schreibwaren
5. Kupferdraht 1,5 mm dick
6. Instrumentenkoffer aus dem lokalen Radiomarkt - 1.5$
7. LED-Paar verschiedene Farben(von einem VHS-Player aufgenommen)
8. Antenne und Knopf mit Kappe (von einem WLAN-Router übernommen)
9. 4-poliger Klemmblock (von einem Dimmer übernommen)
10. Stromanschluss (von einem alten Ladegerät für 18650 übernommen)
11. 6-Pin-Anschluss (von einem DVD-Laufwerk übernommen)
12. Blechdose (z.B. von Kaffee)

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

Technische Eigenschaften:
Mikrocontroller: ATmega168PA
Betriebsspannung direkt: 0,8 - 5,5 V
Betriebsspannung durch den Stabilisator LE33: 3,3 V oder 5 V (je nach Modell)
Arbeitstemperatur:-40 °C… 105 °C
Eingangsspannung: 3,35-12 V (3,3-V-Modell) oder 5-12 V (5-V-Modell)
Digitale Ein-/Ausgänge: 14 (davon 6 als PWM-Ausgänge nutzbar: 3, 5, 6, 9, 10 und 11)
Analoge Eingänge: 6
Timer-Zähler: zwei 8-Bit und eine 16-Bit
Energiesparmodi: 6
Gleichstrom durch Eingang/Ausgang: 40mA
Flash-Speicher: 16 KB (2 für Bootloader verwendet)
RAM: 1 Kb
EEPROM: 512 Byte
Ressource zum Schreiben/Löschen des Speichers: 10.000 Flash/100.000 EEPROM
Taktfrequenz: 8 MHz (3,3-V-Modell) oder 16 MHz (5-V-Modell)
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)
I2C: A4 (SDA) und A5 (SCL)
UART-TTL: 0 (RX) und 1 (TX)
Datenblatt:

Die Wahl fiel eher zufällig auf diesen atmega. In einem Forum, in dem energieeffiziente Projekte diskutiert wurden, erhielt ich in den Kommentaren den Rat, genau den 168. Atmega zu verwenden.
Ich musste jedoch basteln, um ein solches Board zu finden, da sehr oft alle Lose mit 328 Atmegas bei einer Frequenz von 16 MHz überschwemmt wurden, die mit 5 V betrieben wurden. Für mein Projekt waren solche Merkmale von Anfang an überflüssig und umständlich, die Suche wurde komplizierter.
Als Ergebnis stieß ich bei eBay auf eine 3,3-Volt-Version des Pro Mini auf Atmega 168PA, und zwar nicht nur auf eine chinesische, sondern unter der Marke RobotDyn eines russischen Entwicklers. Ja, auch ich hatte zunächst, wie Sie, einen kleinen Zweifel. Aber vergeblich. Als das Projekt bereits zusammengestellt war und AliExpress eine obligatorische kostenpflichtige Lieferung für billige Waren einführte (danach gingen Pakete viel häufiger verloren), bestellte ich später einen regulären Pro Mini Atmega168 (ohne PA) 3,3 V 8 MHz. Ich habe mit beiden Platinen ein wenig mit Energiesparmodi experimentiert und in jede eine spezielle Skizze geflasht, die den Mikrocontroller in den maximalen Energiesparmodus versetzt hat, und das ist passiert:
1) Arduino Pro Mini "RobotDyn": ~250uA
2) Arduino Pro Mini "NoName": Wenn der Spannungsregler (RAW-Ausgang) mit Strom versorgt wird und die LED gelötet wird, beträgt die Stromaufnahme ~3,92 mA




- Wie Sie verstehen, beträgt der Unterschied im Stromverbrauch fast das 16-fache, was alles darauf zurückzuführen ist, dass der Moscow Pro Mini von NoName eine Menge Atmega168 + verwendet, von denen der MK selbst nur isst 20uA Strom (ich habe dies separat überprüft), der ganze Rest der Völlerei fällt auf den linearen Spannungswandler AMS1117 - das Datenblatt bestätigt dies nur:


Bei der Platine von RobotDyn ist die Anbindung schon etwas anders – das ist Atmega168PA+ – hier kommt bereits ein anderer LDO-Stabilisator zum Einsatz, dessen Eigenschaften in Sachen Energiesparen sich als angenehmer herausstellten:


Ich habe es nicht gelötet, daher kann ich nicht sagen, wie viel Strom der Atmega168PA in seiner reinen Form verbraucht. In diesem Fall hatte ich ~250uA bei Betrieb mit einem Nokia Lithium-Akku. Wenn Sie jedoch den AMS1117 mit dem NoName "der Moskauer Platine auslöten, dann ist der ATmega168 gewöhnlich, in seiner reinen Form, wie ich oben sagte, verbraucht 20uA.
Power-LEDs können mit etwas Scharfem abgeschlagen werden. Das ist kein Problem. Der Stabilisator wurde mit einem Fön gelötet. Allerdings hat nicht jeder einen Fön und die Fähigkeiten, damit zu arbeiten, daher haben beide oben genannten Optionen eine Daseinsberechtigung.

Neoway M590E-Modul

Technische Eigenschaften:
Frequenzen: EGSM900/DCS1800 Dualband oder GSM850/1900 oder Quadband
Empfindlichkeit:-107dBm
Maximale Sendeleistung: EGSM900 Klasse 4 (2 W), DCS1800 Klasse 1 (1 W)
Spitzenstrom: 2A
Arbeitsstrom: 210mA
Schlafstrom: 2,5mA
Arbeitstemperatur:-40 °C… +85 °C
Betriebsspannung: 3,3 V…4,5 V (empfohlen 3,9 V)
Protokolle: GSM/GPRS Phase2/2+, TCP/IP, FTP, UDP usw.
Internet: GPRS-KLASSE 10
Datenblatt:

Das billigste GSM-Modul, das auf dem Markt zu finden ist, meist gebraucht, nicht immer ausgelötet Chinesische Hände von Ausrüstung. Warum nicht immer schlau? Ja, alles wegen des Lötens mit einem Haartrockner - oft kommen diese Module zu Personen mit kurzgeschlossenem Plus und Minus, was einer der Gründe für ihre Funktionsunfähigkeit ist. Daher ist der erste Schritt, die Leistungskontakte für einen Kurzschluss zu klingeln.

Notiz. Ich möchte einen separaten, meiner Meinung nach wichtigen Punkt anmerken: Diese Module können mit einem runden Koaxialanschluss für die Antenne geliefert werden, mit dem Sie eine ernsthaftere Antenne separat bestellen und an das Modul anschließen können, ohne mit einem Tamburin zu tanzen . Und sie können ohne diesen Anschluss geliefert werden. Dies ist, wenn wir über die billigsten Sets sprechen. Wenn Sie sich nicht auf einen glücklichen Zufall verlassen wollen, dann gibt es etwas teurere Sets, bei denen dieser Anschluss vorhanden ist + das Kit kommt mit einer externen Antenne auf einer Textolite-Platine.

Dieses Modul ist auch vor der Stromversorgung launisch, da es in der Spitze bis zu 2 A Strom verbraucht und die mit dem Kit gelieferte Diode anscheinend so ausgelegt ist, dass sie die Spannung von 5 V senkt (weshalb sie auf der Platine selbst steht). 5V) auf 4,2V, aber nach den Beschwerden der Leute zu urteilen, macht er mehr Ärger als er nützt.
Angenommen, Sie haben dieses Modul bereits zusammengebaut, und anstelle einer Diode wird ein Jumper gelötet, da wir ihm keine Spannung von 5 V zuführen, sondern es direkt von einer Lithiumbatterie mit Strom versorgen, die innerhalb der zulässigen Spannung von 3,3 liegt -4,2 V.
Es muss irgendwie an den Computer angeschlossen und auf Funktionsfähigkeit überprüft werden. Für diesen Fall ist es besser, sich im Voraus zu kaufen - darüber werden wir mit dem Modul kommunizieren und Arduino-Boardsüber serielle Schnittstelle UART (USART).
Die Verbindung ist unten im Bild dargestellt (ich habe es so gut wie möglich gezeichnet):
TX-Modem >>> RX-Konverter
RX-Modem<<< TX конвертера
Batterie Plus - Modem Plus
Das Minus der Lithiumbatterie wird mit dem GND des Modems und dem GND des Konverters verbunden
Um das Modem zu starten, verbinden Sie den BOOT-Ausgang über einen 4,7-kΩ-Widerstand mit GND


Führen Sie in der Zwischenzeit das Programm auf dem Computer aus. Achten Sie auf die Einstellungen:
1) Wählen Sie den COM-Port aus, an dem der TTL-Konverter angeschlossen ist, in meinem Fall ist es COM4, ​​bei Ihnen kann es anders sein.
2) Wählen Sie die Baudrate. (Hier gibt es eine Nuance, da die Module selbst für unterschiedliche Geschwindigkeiten konfiguriert werden können, meistens 9600 Baud oder 115200 Baud. Hier müssen Sie empirisch auswählen, eine bestimmte Geschwindigkeit auswählen, eine Verbindung herstellen und den AT-Befehl senden, wenn Risse als Antwort auftreten , dann schaltet es sich aus , wählen Sie eine andere Geschwindigkeit und wiederholen Sie den Befehl, bis die Antwort OK ist).
3) Wählen Sie die Paketlänge (in diesem Fall 8 Bit), Paritätsbit deaktiviert (keine), Stoppbit (1).
4) Unbedingt ankreuzen +CR, und dann wird jedem Befehl, den wir am Ende an das Modul senden, automatisch ein Wagenrücklaufzeichen hinzugefügt - das Modul versteht nur Befehle mit diesem Zeichen am Ende.
5) Verbindung, hier ist alles klar, geklickt und wir können mit dem Modul arbeiten.

Wenn Sie auf „Verbindung“ klicken und dann das Modul starten, indem Sie BOOT über einen 4,7K-Widerstand gegen Masse anlegen, wird im Terminal zuerst die Meldung „MODEM:STARTUP“ angezeigt, dann nach einer Weile die Meldung „+ PBREADY" wird angezeigt, was bedeutet, dass die Telefonnummer gelesen wurde. Buch, auch wenn es leer sein kann:

Unter diesem Spoiler AT-Befehle mit Beispielen

Wir drucken den AT-Befehl - als Antwort sendet uns das Modul unseren Befehl, da der Echomodus aktiviert ist, und OK:

Lassen Sie uns den Status des Modems mit dem Befehl AT + CPAS überprüfen - als Antwort unser Team erneut + CPAS: 0 und OK.
0 - bedeutet, dass das Modul betriebsbereit ist, aber je nach Situation können andere Nummern angezeigt werden, z. B. 3 - eingehender Anruf, 4 - im Verbindungsmodus, 5 - Ruhemodus. Zu 1 und 2 habe ich nichts gefunden.

Das Ändern der Datenübertragungsrate über UART erfolgt mit dem Befehl AT + IPR = 9600 - dies ist der Fall, wenn Sie eine Geschwindigkeit von 9600 benötigen. Wenn eine andere, ähnlich wie beispielsweise AT + IPR = 19200 oder AT + IPR = 115200.

Lassen Sie uns das Netzwerksignal überprüfen. AT + CSQ, + CSQ kommt als Antwort: 22,1 - der Wert vor dem Komma hat einen Bereich von 0 ... 31 (115 ... 52 dB) - das ist der Signalpegel, je mehr, desto besser. Aber 99 bedeutet seine Abwesenheit. Der Wert nach dem Komma - Signalqualität 0 ... 7 - ist hier umgekehrt, je kleiner die Zahl, desto besser.

Schalten wir den Echomodus aus, indem wir den ATE0-Befehl senden, damit doppelte Befehle nicht stören. Dieser Modus wird mit dem ATE1-Befehl wieder eingeschaltet.

Zeigen Sie die AT+GETVERS-Firmwareversion an



Diese und viele andere Befehle können angezeigt werden

Board-Kombination

Wenn Pro Mini nicht schwer auf ein Steckbrett zu löten ist, dann ist die Situation mit einem GSM-Modul etwas komplizierter, weil. sein Kontaktkamm befindet sich nur auf einer Seite, und wenn er nur gelötet ist, hängt die andere Seite der Platine einfach in der Luft. Dann musste ich wieder nach Augenmaß weitere 3 Löcher in der Nähe von drei Ecken auf dem Brett bohren. Die Bereiche um jedes der Löcher herum wurden dann demaskiert. Der Einfachheit halber habe ich die getrennten Kabel vom Kamm auf das lötfreie Steckbrett (weiß) gelegt und, nachdem ich die GSM-Modulplatine darauf installiert hatte, normalerweise gelötet:

Später musste ich noch ein Loch machen, in meinem Fall am Buchstaben "I", wo "Made In China" steht, am Rand des Bretts.


So kam es, dass der hinzugefügte Kontakt, der im Wesentlichen GND ist, nahe an den GND der Pro Mini-Platine kam, und so wurde es möglich, die Masse des GSM-Moduls und des Pro Mini mit einem Tropfen Lötzinn (einem langen Kabel) zu verbinden in der Mitte und rechts davon ist die Pro-Mini-Leitung) - mit Pfeilen gekennzeichnet. Es ist natürlich schief geworden, aber jetzt hält es sicher:



Zwischen den Platinen war noch etwas Platz - ich habe eine Lithium-Entladungs-Ladesteuerplatine mit einem vorgelöteten Micro-USB-Anschluss und darin angelöteten Drähten platziert.

Der Schal tritt dort sehr eng ein, während das Leuchten der LEDs an der Seite durch ein kleines Loch im Gehäuse deutlich sichtbar ist.



Board-Racks

Um die Platine sicher im Gehäuse zu befestigen, musste ich einige Tage darüber nachdenken, wie dies umgesetzt werden könnte. Die Option mit Schmelzklebstoff wurde aus mehreren Gründen nicht in Betracht gezogen - er kann herunterfallen, sich verformen und vor allem würde sich das Design als schwierig zu demontieren herausstellen.
Ich kam zu dem Schluss, dass es hier am einfachsten und richtigsten wäre, Racks zu verwenden, die ich natürlich nicht hatte. Es gab jedoch ein paar nicht funktionierende Ladegeräte, aus denen ein langes Gestell mit einem Gewinde für selbstschneidende Schrauben herausgeschnitten wurde. Jedes Rack wurde in zwei Hälften gesägt und mit einer Feile auf ca. 9,5 mm bearbeitet - in dieser Höhe hat die unter der Platine befindliche Batterie einen ausreichenden Spielraum, ca. 2 mm - dies geschieht, damit sich die gelöteten Kontakte der Platine nicht berühren es mit ihren Spitzen und damit es möglich ist, ein Stück Schaumstoff zur Fixierung dazwischen zu legen.
Um die Platine direkt am Gehäuse zu befestigen, habe ich hier vier Streifen aus einer Kaffeedose geschnitten, an deren Enden ein Loch gebohrt und sie dann an denselben selbstschneidenden Schrauben befestigt, die in die Gestelle geschraubt werden. Sehen Sie sich das Foto unten an, um zu sehen, wie es aussieht.
Als nächstes werden auf der anderen Seite der Platine, also von oben, ein paar Pfosten angeschraubt, sodass der Deckel beim Schließen des Koffers leicht an diesen Pfosten anliegt und so eine zusätzliche Fixierung schafft. Etwas später stieß ich in diesem Fall auf ein Gebäude unter dem sowjetischen Propagandaradio (wenn es früher gefunden worden wäre, hätte ich alle Gestelle von hier genommen), wo ich ein paar mehr oder weniger geeignete Höhen fand, aber zuerst habe ich sie in der Mitte mit einem Bohrer unter selbstschneidenden Schrauben gebohrt. Dann schnitt er sie ab und beendete sie auch mit einer Feile, wobei er den Überschuss entfernte. Hier habe ich eine Feinheit - auf dem Foto sehen Sie, dass ein weißer Ständer von der Kante an die Getinax-Platine geschraubt ist und der andere weiße Ständer direkt an der Modulplatine ist, weil. Von einer Kante bedeckt die Modemplatine die untere Platine vollständig, und von der gegenüberliegenden Kante schaut die untere dagegen heraus. Gleichzeitig mussten in beide Bretter zusätzlich Löcher gebohrt werden, damit die Köpfe der selbstschneidenden Schrauben ungehindert passieren konnten.
Und schließlich muss sichergestellt werden, dass die Platine immer parallel zum Gehäuse ist - die Halterungen, mit denen Drähte und Kabel an der Wand befestigt werden, passen perfekt unter dieses Gehäuse, ich habe zuvor die Nägel von ihnen entfernt. Die Bügel haften mit ihrer konkaven Seite ohne Zusatzgeräte gut an der Platine, lediglich rechts neben der SIM-Karte stellte sich die Breite des Bügels als zu groß heraus und musste ebenfalls geschliffen werden.
Alle Details wurden nach Augenmaß und empirisch angepasst, unten ist ein Foto von allen oben genannten:



Anschlüsse. Leuchtdioden. Taste.

Da mir der Kamm ausgegangen war, musste ich den 6-poligen Stecker von der DVD-Laufwerksplatine demontieren, die ich dann an den Pro Mini gelötet habe, um die Platine bequem zu flashen. In der Nähe habe ich einen runden Stecker (Nokiev 3,5 mm) zum Laden von Lithium gelötet.

Der Körper des 6-poligen Steckers wurde leicht mit einer Feile bearbeitet, da seine Kanten leicht über den Körper hinausragten. Die Ladebuchse passt perfekt in die Gehäusewand.

Auf der anderen Seite der Platine habe ich einen Taster zum Zurücksetzen des Geräts und zwei LEDs zum Debuggen der Firmware gelötet - die rote LED ist mit dem GSM-Modul verbunden, die zweite grüne LED ist mit dem 10. Ausgang des Pro Mini verbunden - es ist einfacher für mich, das Programm zu debuggen.

Batterie-Upgrade

Ein leerer Nokian-Akku von Nokia-Telefonen ist nicht weniger verbreitet als der 18650, aber viele weigern sich einfach, ihn zu verwenden, weil es unpraktisch ist, Kontakte anzuschließen, die tief in den Akku selbst eingelassen sind. Es ist unerwünscht, sie zu löten, daher wurde beschlossen, das von diesen vorgeschlagene Verfahren zu verwenden, nämlich einen Kontaktblock aus einem Radiergummi und Kupferdraht (1,5 mm dick) herzustellen.
Zuerst habe ich ein Stück Radiergummi mit zwei Drähten mit zuvor abisolierten Enden durchbohrt und es an den Batteriekontakten so herausgefunden, dass der Abstand zwischen ihnen übereinstimmt.
er bog die enden, verzinnte sie mit einem lötkolben und zog sie an den langen enden etwas zurück, so dass die entstandenen kontakte im radiergummi versenkt wurden.



Batteriebeispiel:

Sie können die Klemmleiste mit einem Gummiband fixieren oder mit blauem Isolierband umwickeln, was ich am Ende getan habe.

Montage.

Der Hauptteil der Arbeit ist erledigt, es bleibt alles zu sammeln und zu reparieren.
Zwischen Akku und Platine habe ich ein Stück Moosgummi gelegt, damit es später nicht ins Gehäuse kriecht. Ich habe zusätzlich einen 2200 uF Kondensator eingelötet, um das Modul mit Strom zu versorgen.

Bei angeschlossenem Ladevorgang:

Rahmen. Externe Klemmleiste.

Der Koffer kam auf den lokalen Radiomarkt für etwa 1,5 Dollar, umgerechnet in Dollar, 95 x 60 x 25 mm groß, fast so groß wie eine Zigarettenschachtel. Ich habe ein paar Löcher hineingebohrt. Zuerst für eine 4-polige Klemmleiste, die von einem nicht funktionierenden Dimmer stammt.
Die beiden äußersten Kontakte habe ich komplett von Schrauben mit Dichtungen befreit, Löcher für längere Schrauben gebohrt, an denen die gesamte Klemmleiste am Gehäuse gehalten wird. Auf dem Gehäuse selbst sind natürlich die beiden äußersten Löcher groß und die beiden in der Mitte kleiner - durch sie werden Kontakte geführt, von denen eines mit dem VCC Pro Mini verbunden ist und der zweite Kontakt mit Stift 2.

Das Bohren von Löchern ist zwar auf den ersten Blick einfach, aber nicht weniger zeitaufwändig, da es sehr leicht zu übersehen ist, also habe ich es zuerst mit einem Bohrer mit kleinerem Durchmesser und dann mit einem größeren gemacht.

Für den Uhrenknopf nahm ich eine Kappe mit leicht konkaver Oberseite, so dass es bequem war, sie durch ein schmales Loch im Gehäuse mit einem Streichholz oder einer Büroklammer zu treffen.

Platine im Gehäuse mit angeschlossenem USB-TTL-Konverterkabel:

Apropos Antenne.
Die Antenne, wie Sie vielleicht im Laufe des Tests bemerkt haben, veränderte sich ständig, da ich mit verschiedenen selbstgebauten Antennen experimentierte. Anfangs war auf der Modulplatine ein runder Koaxialstecker, aber beim fünften Mal, als er für eine externe Antenne verwendet wurde, fiel er einfach auseinander, also denken Sie daran, dass er schwach ist. Infolgedessen habe ich die Textolite-Antenne aus dem alten Router herausgerissen und auf die Modulplatine gelötet, weil. Es fängt das Netz etwas besser auf als die Feder und der Draht.

Nun, fertig montiert mit angeschlossenem Ladegerät sieht das so aus:

Prüfen. Wie es funktioniert:

Neben Tests mit Antennen habe ich überprüft, wie sich der Alarm auf der Straße bei Frost -15 verhalten würde. Dazu habe ich einfach die gesamten Innereien in einen Behälter gelegt und über Nacht auf dem Balkon gelassen, der Wecker ging nicht zur gleichen Zeit an, der Grund stellte sich als allgemein einleuchtend heraus – Lithium mag keinen Frost. Bestätigt wurde dies durch einen weiteren Test, bei dem ich den Akku zu Hause gelassen habe, das Board durch lange Kabel auf die Straße brachte und es so einen Tag im gleichen Frost - Betrieb stehen ließ, als wäre nichts gewesen. Andererseits wäre es seltsam, wenn der Wecker nicht funktionieren würde. in den datenblättern für atmega, für das modul, für quarz - die zulässigen betriebstemperaturen betragen bis zu -40 grad.

Das Funktionsprinzip wird durch einen externen Interrupt organisiert, zunächst wird Pin 2 an VCC geschlossen und somit eine logische 1 am Ausgang aufrechterhalten, und der Controller schläft. Sobald der Kontakt unterbrochen ist und an Pin 2 eine 0 erscheint, wacht der Mikrocontroller auf, senkt den 3. Pin (an den der BOOT des Modems über einen Widerstand angeschlossen ist) auf Masse - das Modul startet, der MK fragt das Modul periodisch ab Bereitschaft, und sobald es das Netzwerk erreicht, sendet es sofort einen Anruf an die im Code angegebene Telefonnummer des Besitzers. Nach dem Abweisen des Anrufs schaltet sich das Gerät aus, ohne mehr endlose Anrufe zu senden, als viele chinesische Wecker sündigen.

Weitere Informationen

#enthalten #enthalten // Software-UART-Bibliothek SoftwareSerial gsm (7, 6); // RX(7), TX(6) void wakeUp()() // leerer Interrupt-Handler //////////////////////////// ////////// /////////////// 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(); // укладываем контроллер спать } }

Diagramm (ohne Lade-Entlade-Steuerplatine)



Schlussfolgerungen und Gedanken. Pläne.

Der Alarm wird im Land verwendet, ich bin mit der Arbeit zufrieden, aber mit weiterem Studium des AVR kommen immer mehr Ideen für seine weitere Modifikation. Arduino mit seiner Pseudosprache Wiring hat mich sehr verärgert, weil. Es gab einen unangenehmen Moment in der Arbeit. Als ich die Funktionen verwendet habe, um mit den digitalWrite();-Ports zu arbeiten; oder pinMode(); - dann hat das GSM-Modul aus irgendeinem Grund sehr oft aufgelegt. Aber es hat sich gelohnt, sie durch Tricks wie DDRB|=(1<Nur der Betrieb des direkten Zugriffs auf Ports ließ das Gerät so funktionieren, wie es beabsichtigt war.

Zum Energiesparen...
Das zusammengebaute Gerät hat vier volle Monate ohne Aufladen funktioniert und funktioniert weiter, obwohl es richtiger ist, „Schlafen“ zu sagen. Dies wird durch einen einfachen Neustart über die weiße Taste überprüft. Bei einem Stromverbrauch von 250 μA (durch den LE33-Stabilisator) und einem Akku von ~ 1430 mAh, obwohl in Ordnung, aufgrund der Nicht-Neuheit des Akkus werden wir auf 1000 mAh aufrunden, stellt sich heraus, dass das Gerät ungefähr schlafen kann 5,5 Monate ohne Aufladen. Wenn Sie den Stabilisator noch auslöten, kann die Betriebszeit sicher mit dem 10-fachen multipliziert werden. In meinem Fall ist dies jedoch nicht erforderlich, da Sie immer noch alle drei Monate das Guthaben von der SIM-Karte ausgeben müssen, gleichzeitig kann das Gerät überprüft und aufgeladen werden.
Das in der Rezension angegebene Beispiel zum Energiesparen ist noch lange nicht am Limit, denn. Den Angaben aus dem Datenblatt nach zu urteilen, ist es möglich, die Taktfrequenz des Mikrocontrollers (durch Einbau von Sicherungen) auf 1 MHz zu senken, und wenn eine Spannung von 1,8 V angelegt wird, sinkt der Verbrauch unter den Balken von 1 μA aktiver Modus. Sehr dumm! Wenn der MK jedoch vom internen RC-Generator getaktet wird, tritt ein weiteres Problem auf - der UART-Ether wird mit Müll und Fehlern verstopft, insbesondere wenn der Controller beheizt oder gekühlt wird.

Nach Fertigstellung...
1) Ein gewöhnlicher Kabelsatz zum Brechen ist nicht sehr praktisch. Ich habe vor, mit einem Hallsensor und einem Reedschalter zu experimentieren, obwohl über letzteren gesagt wird, dass er nicht sehr zuverlässig ist, da die darin enthaltenen Kontakte haften bleiben können.
2) Es wäre schön, die Möglichkeit hinzuzufügen, die "Besitzernummer" ohne Beteiligung eines Computers und Flashen zu ändern. Das wird schon mit EEPROM funktionieren müssen.
3) Probieren Sie Interrupts vom Watchdog-Timer aus, aber nicht nur aus Neugier, sondern damit der Mikrocontroller regelmäßig von selbst aufwacht, die Batteriespannung misst und den resultierenden Wert per SMS sendet, um zu wissen, wie niedrig die Batterie ist.
4) Ein Solarmodul kann das Aufladen des Geräts vollständig überflüssig machen, dies gilt insbesondere für Batterien mit geringer Kapazität.
5) Lange wollte ich LiFePo4-Akkus kaufen, die laut Bewertungen normalerweise Frost vertragen, aber während ich nach einer geeigneten Menge suchte, war der Frühling bereits unmerklich gekommen.
6) Arbeiten Sie an der ästhetischen Komponente

Welchen Pro Mini soll ich kaufen?
Wenn kein Fön vorhanden ist, dann Pro Mini "RobotDyn" Atmega168PA 3,3V, die LED mit etwas Scharfem aufnehmen und ~ 250 μA haben.
Wenn es einen Fön gibt, dann jede Platine, den Stabilisator und die Power-LED löten - Sie erhalten ~ 20 μA Stromverbrauch.

Das ist alles für jetzt, ich hoffe, die Rezension war interessant und nützlich.

Ich plane, +174 zu kaufen Zu den Favoriten hinzufügen Die Rezension hat gefallen +143 +278

Infrarot (IR)-Sensoren werden normalerweise zum Messen von Entfernungen verwendet, können aber auch zum Erkennen von Objekten verwendet werden. Indem wir mehrere IR-Sensoren an den Arduino anschließen, können wir einen Einbruchalarm erstellen.

Überprüfung

Infrarot (IR)-Sensoren werden normalerweise zum Messen von Entfernungen verwendet, können aber auch zum Erkennen von Objekten verwendet werden. IR-Sensoren bestehen aus einem Infrarotsender und einem Infrarotempfänger. Der Sender sendet Infrarotstrahlungsimpulse aus, während der Empfänger Reflexionen erkennt. Wenn der Empfänger eine Reflexion erkennt, bedeutet dies, dass sich in einiger Entfernung ein Objekt vor dem Sensor befindet. Wenn es keine Reflexion gibt, gibt es kein Objekt.

Der IR-Sensor, den wir in diesem Projekt verwenden werden, erkennt Reflexionen innerhalb eines bestimmten Bereichs. Diese Sensoren verfügen über ein kleines lineares ladungsgekoppeltes Bauelement (CCD), das den Winkel erkennt, in dem die IR-Strahlung zum Sensor zurückkehrt. Wie in der Abbildung unten gezeigt, sendet der Sensor einen Infrarotimpuls in den Weltraum, und wenn ein Objekt vor dem Sensor erscheint, wird der Impuls in einem Winkel zurück zum Sensor reflektiert, der proportional zum Abstand zwischen dem Objekt und dem Sensor ist. Der Sensorempfänger erkennt und gibt den Winkel aus, und anhand dieses Werts können Sie die Entfernung berechnen.

Indem wir ein paar IR-Sensoren an den Arduino anschließen, können wir einen einfachen Einbruchalarm machen. Wir werden Sensoren am Türrahmen anbringen und durch die richtige Ausrichtung der Sensoren können wir erkennen, wenn jemand durch die Tür geht. Wenn dies geschieht, ändert sich die Ausgabe des IR-Sensors, und wir werden diese Änderung erkennen, indem wir ständig die Ausgabe der Sensoren mit dem Arduino lesen. In diesem Beispiel wissen wir, dass ein Objekt durch die Tür geht, wenn der IR-Sensorausgang 400 überschreitet. Wenn dies geschieht, löst der Arduino einen Alarm aus. Um den Alarm zurückzusetzen, kann der Benutzer die Taste drücken.

Zubehör

  • 2 x IR-Abstandssensor;
  • 1 Arduino Mega 2560
  • 1 x Summer;
  • 1x Taster;
  • 1 x 470 Ohm Widerstand;
  • 1 x NPN-Transistor;
  • Pullover.

Schaltplan

Die Schaltung für dieses Projekt ist in der folgenden Abbildung dargestellt. Die Ausgänge der beiden IR-Sensoren sind mit den Pins A0 und A1 verbunden. Die anderen beiden Pins sind mit den 5V- und GND-Pins verbunden. Ein 12-Volt-Summer ist über einen Transistor mit Pin 3 verbunden, und eine Taste zum Deaktivieren des Alarms ist mit Pin 4 verbunden.


Das Foto unten zeigt, wie wir die Sensoren für dieses Experiment auf den Türrahmen geklebt haben. Bei Dauereinsatz würden Sie die Sensoren natürlich anders einbauen.


Installation

  1. Verbinden Sie die 5V- und GND-Pins der Arduino-Platine mit den Stromversorgungs- und GND-Pins der Sensoren. Sie können sie auch extern mit Strom versorgen.
  2. Verbinden Sie die Ausgangspins der Sensoren mit den Pins A0 und A1 der Arduino-Platine.
  3. Verbinden Sie Pin 3 des Arduino über einen 1K-Widerstand mit der Basis des Transistors.
  4. Legen Sie 12 V an den Kollektor des Transistors an.
  5. Verbinden Sie die positive Leitung des 12-V-Summers mit dem Emitter und die negative Leitung mit der Erdungsschiene.
  6. Verbinden Sie Pin 4 über einen Taster mit Pin 5V. Aus Sicherheitsgründen ist es immer am besten, dies über einen zusätzlichen kleinen Widerstand zu tun, um einen hohen Stromfluss zu vermeiden.
  7. Schließen Sie das Arduino-Board über ein USB-Kabel an Ihren Computer an und laden Sie das Programm mithilfe der Arduino IDE auf den Mikrocontroller hoch.
  8. Schalten Sie das Arduino-Board über das Netzteil, den Akku oder das USB-Kabel ein.

Der Code

const int Summer = 3; // Pin 3 ist der Ausgang zum Summer const int pushbutton=4; // Pin 4 ist der Tastereingang void setup() ( pinMode(buzzer,OUTPUT); // setze Pin 3 auf Ausgang pinMode(pushbutton,INPUT); // setze Pin 4 auf Input ) void loop() ( // read den Ausgang beider Sensoren und vergleiche das Ergebnis mit dem Schwellwert int sensor1_value = analogRead(A0); int sensor2_value = analogRead(A1); if (sensor1_value > 400 || sensor2_value > 400) ( while(true) ( ​​digitalWrite( Summer, HIGH) ; // Alarm aktivieren if(digitalRead(pushbutton) == HIGH) break; ) ) else ( digitalWrite(buzzer,LOW); // Alarm deaktivieren ) )

Video

Guten Tag 🙂 Heute sprechen wir über Signalisierung. Der Dienstleistungsmarkt ist voll von Firmen und Organisationen, die Sicherheitssysteme installieren und warten. Diese Firmen bieten dem Käufer eine große Auswahl an Alarmanlagen. Ihre Kosten sind jedoch alles andere als billig. Aber was ist mit einer Person, die nicht so viel persönliches Geld hat, das für eine Einbruchmeldeanlage ausgegeben werden kann? Ich denke, die Schlussfolgerung liegt nahe - tun Alarm ihr Hände. Dieser Artikel ist ein Beispiel dafür, wie Sie mit einem Arduino Uno-Board und einigen Magnetsensoren Ihr eigenes codiertes Sicherheitssystem erstellen können.

Das System kann deaktiviert werden, indem Sie das Passwort über die Tastatur eingeben und die Taste „ * ‘. Wenn Sie Ihr aktuelles Passwort ändern möchten, können Sie dies tun, indem Sie auf die Schaltfläche „ B', und wenn Sie den Vorgang überspringen oder abbrechen möchten, können Sie dies tun, indem Sie die Taste drücken ‘#’. Das System verfügt über einen Summer, um verschiedene Töne abzuspielen, wenn ein bestimmter Vorgang ausgeführt wird.

Das System wird durch Drücken der Taste „A“ aktiviert. Das System gibt 10 Sekunden Zeit, um den Raum zu verlassen. Nach 10 Sekunden wird der Alarm aktiviert. Die Anzahl der Magnetsensoren hängt von Ihrem eigenen Wunsch ab. Das Projekt umfasste 3 Sensoren (für zwei Fenster und eine Tür). Wenn das Fenster geöffnet wird, wird das System aktiviert und der Summeralarm wird aktiviert. Das System kann durch Eingabe eines Passworts deaktiviert werden. Wenn sich die Tür öffnet, gibt der Alarm der Person, die eintritt, 20 Sekunden Zeit, um das Passwort einzugeben. Das System verwendet einen Ultraschallsensor, der Bewegungen erkennen kann.

Video des Geräts

Handwerk Hergestellt für Informations-/Bildungszwecke. Wenn Sie es zu Hause verwenden möchten, müssen Sie es ändern. Schließen Sie die Steuereinheit in einem Metallgehäuse ein und sichern Sie die Stromleitung vor möglichen Beschädigungen.

Lass uns anfangen!

Schritt 1: Was wir brauchen

  • Platine Arduino uno;
  • kontrastreiches LCD-Display 16×2;
  • Tastatur 4×4;
  • 10~20kΩ Potentiometer;
  • 3 magnetische Sensoren (sie sind auch Reed-Schalter);
  • 3 2-polige Schraubklemmen;
  • Ultraschallsensor HC-SR04;

Wenn Sie ein System ohne Arduino bauen möchten, benötigen Sie außerdem Folgendes:

  • DIP-Header für atmega328 + Mikrocontroller atmega328;
  • 16 MHz Schwingquarz;
  • 2 Stk. 22pF Keramik, 2 Stk. 0,22 uF Elektrolytkondensator;
  • 1 PC. 10 kΩ Widerstand;
  • Steckdose für Strom (Gleichstrombuchse);
  • Brotbrett;
  • 5-V-Netzteil;

Und eine Box, um alles zu packen!

Instrumente:

  • Etwas, das eine Plastikbox durchschneiden kann;
  • Heißklebepistole;
  • Bohrer / Schraubendreher.

Schritt 2: Alarmdiagramm

Das Verbindungsschema ist recht einfach.

Kleine Klarstellung:

LCD mit hohem Kontrast:

  • Pin1 - Vdd auf GND
  • Pin2 - Vss bis 5 V;
  • Pin3 - Vo (zum zentralen Ausgang des Potentiometers);
  • Pin4 - RS zu Arduino-Pin 8;
  • Pin5 - RW auf GND
  • Pin6 - EN an Arduino-Pin 7;
  • Pin11 - D4 zu Arduino-Pin 6;
  • Pin12 - D5 zu Arduino-Pin 5;
  • Pin13 - D6 zu Arduino-Pin 4;
  • Pin14 - D7 zu Arduino-Pin 3;
  • Pin15 - Vee (zum rechten oder linken Ausgang des Potentiometers).

Tastatur 4×4:

Von links nach rechts:

  • Pin1 bis A5 Arduino-Pin;
  • Pin2 bis A4 Arduino-Pin;
  • Pin3 zum Arduino-Pin A3;
  • Pin4 zum Arduino-Pin A2;
  • Pin5 zu Arduino-Pin 13;
  • Pin6 zu Arduino-Pin 12;
  • Pin7 zu Arduino-Pin 11;
  • Pin8 zu Arduino-Pin 10.

Schritt 3: Firmware

Der Schritt zeigt den Code, der vom eingebauten !

Laden Sie das Codebender-Plugin herunter. Klicken Sie im Arduino auf die Schaltfläche "Ausführen" und flashen Sie Ihr Board mit diesem Programm. Das ist alles. Sie haben gerade den Arduino programmiert! Wenn Sie Änderungen am Code vornehmen möchten, klicken Sie auf die Schaltfläche „Bearbeiten“.

Hinweis: Wenn Sie die Codebender-IDE nicht zum Programmieren des Arduino-Boards verwenden, müssen Sie zusätzliche Bibliotheken in der Arduino-IDE installieren.

Schritt 4: Erstellen Sie Ihre eigene Steuerplatine

Sobald Sie Ihr neues Arduino Uno-Projekt erfolgreich erstellt und getestet haben, können Sie mit der Erstellung Ihres eigenen Boards beginnen.

Ein paar Tipps für einen erfolgreicheren Abschluss des Vorhabens:

  • Zwischen Pin 1 (Reset) und Pin 7 (Vcc) des Atmega328-Mikrocontrollers muss ein 10kΩ-Widerstand angeschlossen werden.
  • Ein 16-MHz-Quarz sollte an die Pins 9 und 10 mit der Bezeichnung XTAL1 und XTAL2 angeschlossen werden
  • Verbinden Sie jede Resonatorleitung mit 22pF-Kondensatoren. Verbinden Sie die freien Leitungen der Kondensatoren mit Pin 8 (GND) des Mikrocontrollers.
  • Vergessen Sie nicht, die zweite Stromleitung des ATmega328 mit der Stromversorgung zu verbinden, Pins 20-Vcc und 22-GND.
  • Weitere Informationen zu den Pins des Mikrocontrollers finden Sie im zweiten Bild.
  • Wenn Sie eine Stromversorgung mit einer Spannung von mehr als 6 V verwenden möchten, müssen Sie einen Linearregler LM7805 und zwei 0,22-uF-Elektrolytkondensatoren verwenden, die am Eingang und Ausgang des Reglers montiert werden sollten. Es ist wichtig! Legen Sie nicht mehr als 6V an die Platine!!! Andernfalls verbrennen Sie Ihren Atmega-Mikrocontroller und das LCD-Display.

Schritt 5: Legen Sie die Schaltung in das Gehäuse