Inhaltsverzeichnis:
- Schritt 1: Stromversorgung
- Schritt 2: Digitale Eingänge
- Schritt 3: Digitale Ausgänge
- Schritt 4: Mikrocontroller-Oszillator
- Schritt 5: Anzeige-LEDs
- Schritt 6: Mikroprozessor-Reset-Schaltung
- Schritt 7: SIM800L-Modul
- Schritt 8: Der Mikrocontroller
- Schritt 9: SRAM-Speicher optimieren
- Schritt 10: Größe des seriellen Softwarepuffers
- Schritt 11: Herstellung der PC-Platine
- Schritt 12: Montage der PC-Platine
- Schritt 13: Programmierung des AtMega328p
- Schritt 14: Anschließen des Geräts
- Schritt 15: Ersteinrichtung
- Schritt 16: SMS-Befehle
Video: Arduino basierte GSM / SMS-Fernbedienung - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
! ! ! NOTIZ !
Da der lokale Mobilfunkmast in meiner Nähe aufgerüstet wird, kann ich dieses GSM-Modul nicht mehr verwenden. Der neuere Tower unterstützt keine 2G-Geräte mehr. Daher kann ich dieses Projekt nicht mehr unterstützen.
Bei einer so großen Auswahl an GSM-Modulen für den Bastler haben die meisten von uns aufgehört, eines zu kaufen. Ich habe lokal ein SIM800L-Modul gekauft und am Ende mit den verschiedenen Befehlen des Moduls gespielt.
Mit dem Arduino Uno und der Arduino IDE konnte ich meine Ideen in die Realität umsetzen. Dies war nicht einfach, da das EINZIGE GRÖSSTE PROBLEM die Beschränkung von nur 2 KB SRAM war. Nach vielen Recherchen im Internet und verschiedenen Foren konnte ich diese Einschränkung überwinden.
Verschiedene Programmiertechniken, ein viel besseres Verständnis des Arduino-Compilers und die Verwendung der SIM-Karte und des EEPROM für zusätzlichen Speicher haben dieses Projekt gerettet. Nach einigen Änderungen am Code wurde ein stabiler Prototyp gebaut und über einen Zeitraum von einer Woche getestet.
Ein Nachteil des begrenzten SRAM war, dass das Gerät nicht mit einem Display und Benutzertasten ausgestattet werden konnte. Dies führte zu einer kompletten Neufassung des Codes. Ohne Benutzeroberfläche blieb die einzige Möglichkeit, das Projekt fortzusetzen, die Verwendung von SMS-Nachrichten zur Konfiguration des Geräts und der Benutzer.
Dies erwies sich als ein spannendes Projekt, und im Laufe der Entwicklung kamen weitere Futures hinzu.
Mein Hauptziel war es, beim Arduino Uno oder in diesem Fall beim ATMEGA328p zu bleiben und keine SMD-Komponenten zu verwenden. Dadurch wird es für die breite Öffentlichkeit einfacher, die Einheit zu kopieren und zu bauen.
Spezifikation des Geräts:
- Am Gerät können maximal 250 Benutzer programmiert werden
- Vier digitale Ausgänge
- Vier digitale Eingänge
- Jeder Ausgang kann als PULSE- oder ON/OFF-Ausgang konfiguriert werden
- Ausgangsimpulsdauer einstellbar zwischen 0,5.. 10 Sekunden
- Jeder Eingang kann so konfiguriert werden, dass er bei Änderungen von AUS zu EIN ausgelöst wird.
- Jeder Eingang kann so konfiguriert werden, dass er bei Änderungen von EIN zu AUS ausgelöst wird
- Jede Eingangsverzögerungszeit kann zwischen 0 Sekunden und 1 Stunde eingestellt werden
- SMS-Nachrichten für Änderungen an den Eingängen können an 5 verschiedene Benutzer gesendet werden
- Namen und Statustext für jeden Eingang können vom Benutzer festgelegt werden
- Namen und Statustext für jeden Ausgang können vom Benutzer eingestellt werden
- Das Gerät kann so konfiguriert werden, dass es Meldungen zum SIM-Kartensaldo über USSD-Nachrichten empfängt.
- Alle Benutzer können E/A-Statusaktualisierungen des Geräts anfordern
- Alle Benutzer können einzelne Ausgänge über SMS-Nachrichten steuern
- Jeder Benutzer kann einzelne Ausgänge steuern, indem er das Gerät anruft
Sicherheitsvorrichtungen
- Die Ersteinrichtung des Geräts kann nur am Gerät vorgenommen werden.
- Die Ersteinrichtung kann nur vom MASTER USER durchgeführt werden
- Befehle für die Ersteinrichtung werden nach zehn Minuten automatisch deaktiviert.
- Nur Anrufe und SMS von bekannten Benutzern können das Gerät steuern
- Benutzer können nur die ihnen vom MASTER USER zugewiesenen Ausgänge bedienen
Andere Eigenschaften
- Anrufe zu diesem Gerät sind kostenlos, da der Anruf nie beantwortet wird.
- Wenn das Gerät angerufen wird, wird der Anruf erst nach 2 Sekunden abgebrochen. Dies ist eine Bestätigung für den Anrufer, dass das Gerät auf den Anruf reagiert hat.
- Wenn der SIM-Karten-Dienstanbieter USSD-Nachrichten unterstützt, können Guthabenabfragen durch den MASTER USER erfolgen. Die USSD-Nachricht mit dem Saldo wird dann an den MASTER USER weitergeleitet.
Schritt 1: Stromversorgung
Damit das Gerät an Standard-Sicherheitssysteme (Alarmanlagen, elektrische Garagentore, elektrische Tormotoren) angeschlossen werden kann, wird das Gerät mit 12 V DC gespeist, die normalerweise bei solchen Systemen zur Verfügung stehen.
Die Stromversorgung erfolgt an den Klemmen 12V IN und 0V und ist durch eine 1A-Sicherung geschützt. Zusätzliche 12V OUT-Anschlüsse sind verfügbar und werden ebenfalls durch die Sicherung geschützt.
Die Diode D1 schützt das Gerät gegen Verpolung von Anschlüssen auf den 12V-Leitungen.
Die Kondensatoren C1 und C2 filtern jegliches Rauschen auf den 12-V-Versorgungsleitungen heraus. Die 12-V-Versorgung wird verwendet, um die Relais des Geräts zu versorgen.
Die 5V-Versorgung besteht aus einem LM7805L-Spannungsregler und gibt stabile +5V aus, die für das SIM800L GSM-Modul sowie den Mikroprozessor benötigt werden. Die Kondensatoren C3 und C4 filtern jegliches Rauschen heraus, das auf der +5V-Versorgungsleitung vorhanden sein könnte. Es wurden relativ große Elektrolytkondensatoren verwendet, da das SIM800L GSM-Modul beim Senden ziemlich viel Strom verbraucht.
Am Spannungsregler ist kein Kühlkörper erforderlich.
Schritt 2: Digitale Eingänge
Die digitalen Eingangssignale sind alle 12V und müssen mit dem 5V-Mikrocontroller verbunden werden. Dazu werden Optokoppler verwendet, um die 12V-Signale vom 5V-System zu trennen.
Der 1K Eingangswiderstand begrenzt den Eingangsstrom zum Optokoppler auf ca. 10mA.
Aus Platzgründen war auf der Platine kein Platz für 5V Pullup-Widerstände vorhanden. Der Mikrocontroller ist so eingerichtet, dass er schwache Pullups der Eingangspins ermöglicht.
Ohne Signal am Eingang (LOW) des Optokopplers fließt kein Strom durch die Optokoppler-LED. Damit ist der Optokoppler-Transistor ausgeschaltet. Der schwache Pull-Up des Mikrocontrollers zieht den Kollektor auf fast 5 V und wird vom Mikrocontroller als logisches HIGH angesehen.
Wenn 12 V (HIGH) an den Eingang des Optokopplers angelegt werden, fließen etwa 10 mA durch die Optokoppler-LED. Somit wird der Optokopplertransistor eingeschaltet. Dadurch wird der Kollektor auf fast 0 V heruntergezogen und vom Mikrocontroller als logisch LOW betrachtet.
Beachten Sie, dass der vom Mikrocontroller gesehene Eingang im Vergleich zum 12-V-Eingang invertiert ist.
Normaler Code zum Lesen des Eingangspins sieht wie folgt aus:
boolescher Input = digitalRead (Eingangspin);
Um das invertierte Signal zu korrigieren, verwenden Sie den folgenden Code:
boolescher Input = !digitalRead(inputpin); // Beachten Sie das ! vor dem lesen
Jetzt entspricht der vom Mikrocontroller gesehene Eingang dem Eingang am 12-V-Eingang.
Der letzte Eingangskreis besteht aus 4 digitalen Eingängen. Jeder Eingang ist mit Klemmen auf der Leiterplatte verbunden.
Schritt 3: Digitale Ausgänge
Normalerweise ist es bei einer Schaltung, die nur eine minimale Anzahl von Relais ansteuert, am besten, eine Transistortreiberschaltung wie gezeigt zu verwenden. Es ist einfach, kostengünstig und effektiv.
Die Widerstände bieten Pull-Down auf Masse und eine Begrenzung des Transistorbasisstroms. Der Transistor wird verwendet, um den Strom zu erhöhen, der zum Ansteuern eines Relais verfügbar ist. Mit nur 1 mA vom Mikrocontroller-Pin kann der Transistor eine Last von 100 mA schalten. Mehr als genug für die meisten Relaistypen. Die Diode ist eine Rücklaufdiode, die den Stromkreis während des Relaisschaltens vor Hochspannungsspitzen schützt. Der zusätzliche Vorteil dieser Schaltung besteht darin, dass die Betriebsspannung des Relais von der Spannung des Mikrocontrollers abweichen kann. Anstelle eines 5V-Relais kann man also jede Gleichspannung von bis zu 48V verwenden.
Vorstellung des ULN2803
Je mehr Relais ein Projekt benötigt, desto höher ist die Komponentenanzahl. Dies erschwert das PCB-Design und kann wertvollen PCB-Platz verbrauchen. Die Verwendung eines Transistor-Arrays wie des ULN2803 wird jedoch definitiv dazu beitragen, die PCB-Größe klein zu halten. Der ULN2803 ist ideal geeignet für 3,3-V- und 5-V-Eingänge von einem Mikrocontroller und kann Relais bis zu 48 V DC ansteuern. Dieser ULN2803 verfügt über 8 einzelne Transistorschaltungen, wobei jede Schaltung mit allen Komponenten ausgestattet ist, die zum Schalten eines Relais erforderlich sind.
Der letzte Ausgangskreis besteht aus einem ULN3803, der 4 12-V-DC-Ausgangsrelais ansteuert. Jeder Kontakt des Relais ist an den Anschlüssen der Platine verfügbar.
Schritt 4: Mikrocontroller-Oszillator
Oszillatorschaltung
Der Mikrocontroller benötigt einen Oszillator, um richtig zu funktionieren. Um das Arduino Uno-Design beizubehalten, verwendet die Schaltung den standardmäßigen 16-MHz-Oszillator. Zwei Optionen stehen zur Verfügung:
Kristall
Diese Methode verwendet einen Quarz, der mit zwei Ladekondensatoren verbunden ist. Dies ist die häufigste Option.
Resonator
Ein Resonator besteht im Wesentlichen aus einem Quarz und zwei Ladekondensatoren in einem einzigen 3-Pin-Gehäuse. Dies reduziert die Anzahl der Komponenten und erhöht den verfügbaren Platz auf der PC-Platine.
Um die Komponentenanzahl so gering wie möglich zu halten, habe ich mich für einen 16MHz-Resonator entschieden.
Schritt 5: Anzeige-LEDs
Was wäre eine Schaltung ohne LEDs? Auf der Platine wurden 3mm LEDs vorgesehen.
1K-Widerstände werden verwendet, um den Strom durch die LED auf weniger als 5 mA zu begrenzen. Bei Verwendung von 3 mm High-Bright-LEDs ist die Helligkeit hervorragend.
Zur einfachen Interpretation der Status-LEDs werden zwei Farben verwendet. Durch die Kombination der beiden LEDs mit blinkenden Anzeigen können aus nur zwei LEDs viele Informationen gewonnen werden.
Rote LED
Die rote LED wird verwendet, um Fehlerzustände, lange Verzögerungen und eventuelle falsche Befehle anzuzeigen.
Grüne LED
Die grüne LED wird verwendet, um fehlerfreie und/oder korrekte Eingaben und Befehle anzuzeigen.
Schritt 6: Mikroprozessor-Reset-Schaltung
Aus Sicherheitsgründen stehen einige Funktionen des Gerätes nur in den ersten 10 Minuten nach dem Einschalten des Gerätes zur Verfügung.
Mit einer Reset-Taste muss die Stromversorgung des Geräts nicht ausgeschaltet werden, um das Gerät zurückzusetzen.
Wie es funktioniert
Der 10K-Widerstand hält die RESET-Leitung nahe bei 5V. Wenn die Taste gedrückt wird, wird die RESET-Leitung auf 0 V gezogen, wodurch der Mikrocontroller im Reset gehalten wird. Wenn die Taste losgelassen wird, kehrt die RESET-Leitung zu %v zurück, wodurch der Mikrocontroller zurückgesetzt wird.
Schritt 7: SIM800L-Modul
Herzstück des Gerätes ist das GSM-Modul SIM800L. Dieses Modul verwendet nur 3 I/O-Pins am Mikrocontroller.
Das Modul ist über eine standardmäßige serielle Schnittstelle mit dem Mikrocontroller verbunden.
- Alle Befehle an das Gerät werden über die serielle Schnittstelle mit Standard-AT-Befehlen gesendet.
- Bei einem eingehenden Anruf oder beim Empfang einer SMS werden die Informationen über die serielle Schnittstelle als ASCII-Text an den Mikrocontroller gesendet.
Aus Platzgründen wird das GSM-Modul über einen 7-poligen Header mit dem PC Board verbunden. Dies erleichtert das Entfernen des GSM-Moduls. Dies ermöglicht dem Benutzer auch, die SIM-Karte an der Unterseite des Moduls einfach einzulegen/zu entnehmen.
Eine aktive SIM-Karte ist erforderlich und die SIM-Karte muss in der Lage sein, SMS-Nachrichten zu senden und zu empfangen.
Aufbau des SIM800L GSM-Moduls
Beim Einschalten des Geräts wird der Reset-Pin des GSM-Moduls für eine Sekunde auf Low gezogen. Dadurch wird sichergestellt, dass das GSM-Modul erst nach Stabilisierung der Spannungsversorgung anläuft. Der Neustart des GSM-Moduls dauert einige Sekunden. Warten Sie also 5 Sekunden, bevor Sie AT-Befehle an das Modul senden.
Um sicherzustellen, dass das GSM-Modul für die korrekte Kommunikation mit dem Mikrocontroller konfiguriert ist, werden beim Start die folgenden AT-Befehle verwendet:
BEI
verwendet, um festzustellen, ob ein GSM-Modul verfügbar ist
AT+CREG?
Abfrage dieses Befehls, bis das GSM-Modul im Mobilfunknetz registriert ist
AT+CMGF=1
Stellen Sie den SMS-Nachrichtenmodus auf ASCII ein
AT+CNMI=1, 2, 0, 0, 0
Wenn SMS verfügbar ist, senden Sie die SMS-Details an die serielle Schnittstelle des GSM-Moduls
AT+CMGD=1, 4
Löschen Sie alle auf der SIM-Karte gespeicherten SMS
AT+CPBS=\"SM
Setzen Sie das Telefonbuch des GSM-Moduls auf die SIM-Karte
AT+COPS=2, dann AT+CLTS=1, dann AT+COPS=0
Stellen Sie die Uhrzeit des GSM-Moduls auf die Uhrzeit des Mobilfunknetzes ein
Warten Sie 5 Sekunden, bis die Zeit eingestellt ist
AT+CUSD=1
Aktivieren Sie die USSD-Messaging-Funktion
Schritt 8: Der Mikrocontroller
Der Mikrocontroller ist ein Standard AtMega328p, der gleiche wie beim Arduino Uno. Der Code ist somit mit beiden vergleichbar. Um eine einfache On-Board-Programmierung zu ermöglichen, ist auf der Platine ein 6-poliger Programmier-Header verfügbar.
Die verschiedenen Abschnitte des Geräts sind mit dem Mikroprozessor verbunden und umfassen Folgendes:
- Vier digitale Eingänge
- Vier digitale Ausgänge
- Der Oszillator
- Zwei Anzeige-LEDs
- Rücksetzschaltung
- SIM800L GSM-Modul
Die gesamte Kommunikation zum und vom GSM-Modul erfolgt mit der Funktion SoftwareSerial(). Diese Methode wurde verwendet, um den seriellen Hauptport für die Arduino-IDE während der Entwicklungsphase freizugeben.
Mit nur 2 KB SRAM und 1 KB EEPROM reicht der Speicher nicht aus, um mehr als ein paar Benutzer zu speichern, die mit dem Gerät verbunden werden können. Um den SRAM freizugeben, werden alle Benutzerinformationen auf der SIM-Karte des GSM-Moduls gespeichert. Mit dieser Anordnung kann das Gerät bis zu 250 verschiedene Benutzer bedienen.
Konfigurationsdaten des Geräts werden im EEPROM gespeichert, wodurch Benutzerdaten und Systemdaten voneinander getrennt werden.
Es stehen noch mehrere freie I/O-Pins zur Verfügung. Die Möglichkeit, ein LCD-Display und/oder eine Tastatur hinzuzufügen, war jedoch aufgrund der großen Menge an SRAM, die von den Empfangs- und Sendepuffern der SoftWareSerial() verwendet wird, nicht möglich.
Da das Gerät keine Benutzeroberfläche besitzt, werden alle Einstellungen und Benutzer mit SMS-Nachrichten programmiert.
Schritt 9: SRAM-Speicher optimieren
Schon früh in der Entwicklungsphase meldete die Arduino-IDE beim Kompilieren des Codes einen geringen SRAM-Speicher. Um dies zu überwinden, wurden verschiedene Methoden verwendet.
Begrenzen Sie die über die serielle Schnittstelle empfangenen Daten
Das GSM-Modul meldet alle Nachrichten an den Mikrocontroller über die serielle Schnittstelle. Beim Empfang einiger SMS-Nachrichten kann die Gesamtlänge der empfangenen Nachricht 200 Zeichen überschreiten. Dies kann schnell den gesamten auf dem AtMega-Chip verfügbaren SRAM verbrauchen und führt zu Stabilitätsproblemen.
Um dies zu verhindern, werden nur die ersten 200 Zeichen JEDER vom GSM-Modul empfangene Nachricht verwendet. Das folgende Beispiel zeigt, wie dies durch das Zählen der empfangenen Zeichen in der Variablen Counter geschieht.
// nach Daten von der seriellen Schnittstelle der Software suchen
//---------------------------------------------------------- RxString = ""; Zähler = 0; Während (SSerial.available ()) { Verzögerung (1); // kurze Verzögerung, um Zeit zu geben, um neue Daten in den Puffer zu legen // Neues Zeichen abrufen RxChar = char(SSerial.read()); // die ersten 200 Zeichen zum String hinzufügen if (Counter < 200) { RxString.concat (RxChar); Zähler = Zähler + 1; } }
Reduzieren des Serial.print()-Codes
Obwohl der Arduino Serial Monitor während der Entwicklung praktisch ist, kann er viel SRAM verbrauchen. Der Code wurde mit möglichst wenig Serial.print()-Code entwickelt. Nachdem ein Codeabschnitt auf Funktion getestet wurde, wurde der gesamte Serial.print()-Code aus diesem Teil des Codes entfernt.
Mit Serial.print (F((""))-Code
Viele Informationen, die normalerweise auf dem Arduino Serial Monitor angezeigt werden, sind sinnvoller, wenn Beschreibungen hinzugefügt werden. Nehmen Sie das folgende Beispiel:
Serial.println ("Warten auf bestimmte Aktionen");
Die Zeichenfolge "Warten auf bestimmte Aktionen" ist festgelegt und kann nicht geändert werden.
Während der Kompilierung des Codes wird der Compiler die Zeichenfolge "Warten auf bestimmte Aktionen" in den FLASH-Speicher aufnehmen.
Außerdem erkennt der Compiler, dass die Zeichenfolge eine Konstante ist, die von der Anweisung "Serial.print" oder "Serial.println" verwendet wird. Beim Hochfahren des Mikros wird diese Konstante auch im SRAM-Speicher abgelegt.
Durch die Verwendung des "F"-Präfixes in Serial.print()-Funktionen teilt es dem Compiler mit, dass dieser String nur im FLASH-Speicher verfügbar ist. In diesem Beispiel enthält die Zeichenfolge 28 Zeichen. Dies sind 28 Bytes, die im SRAM freigegeben werden können.
Serial.println (F ("Warten auf bestimmte Aktionen"));
Diese Methode gilt auch für die SoftwareSerial.print()-Befehle. Da das GSM-Modul mit AT-Befehlen arbeitet, enthält der Code zahlreiche SoftwareSerial.print("xxxx")-Befehle. Mit dem Präfix "F" wurden fast 300 Byte SRAM freigegeben.
Verwenden Sie nicht den seriellen Hardware-Port
Nach dem Code-Debugging wurde der serielle Hardware-Port deaktiviert, indem ALLE Serial.print()-Befehle entfernt wurden. Dadurch wurden einige zusätzliche Bytes an SRAM freigegeben.
Ohne irgendwelche Serial.print()-Befehle im Code wurden zusätzliche 128 Byte SRAM zur Verfügung gestellt. Dazu wurde der serielle Hardware-Port aus dem Code entfernt. Dadurch wurden die 64-Byte-Sende- und 64-Byte-Empfangspuffer aufgefüllt.
// Serial.begin (9600); // serieller Hardware-Port deaktiviert
EEPROM für Strings verwenden
Für jeden Ein- und Ausgang mussten drei Strings gespeichert werden. Dies sind der Kanalname, die Zeichenfolge, wenn der Kanal eingeschaltet ist, und die Zeichenfolge, wenn der Kanal ausgeschaltet ist.
Mit insgesamt 8 I/O-Kanälen werden ihre
- 8 Strings mit den Kanalnamen, jeweils 10 Zeichen lang
- 8 Strings mit der Beschreibung des Kanals On, jeweils 10 Zeichen lang
- 8 Strings mit der Beschreibung des Kanals Off, jeweils 10 Zeichen lang
Dies zeigt bis zu 240 Byte SRAM an. Anstatt diese Strings im SRAM zu speichern, werden sie im EEPROM gespeichert. Dadurch wurden zusätzliche 240 Byte SRAM frei.
String mit den richtigen Längen deklarieren
Variablen werden normalerweise am Anfang des Codes deklariert. Ein häufiger Fehler beim Deklarieren einer String-Variablen besteht darin, dass wir den String nicht mit der richtigen Anzahl von Zeichen deklarieren.
String GSM_Nr = "";
String GSM_Name = ""; String GSM_Msg = "";
Während des Startvorgangs weist der Mikrocontroller diesen Variablen keinen Speicher im SRAM zu. Dies kann später zu Instabilität führen, wenn diese Zeichenfolgen verwendet werden.
Um dies zu verhindern, deklarieren Sie die Strings mit der richtigen Anzahl von Zeichen, die der String in der Software verwendet.
String GSM_Nr = "1000000000";
Zeichenfolge GSM_Name = "2000000000"; String GSM_Msg = "3000000000";
Beachten Sie, dass ich die Strings nicht mit denselben Zeichen deklariert habe. Wenn Sie diese Strings alle mit "1234567890" deklarieren, sieht der Compiler den gleichen String in den drei Variablen und weist nur einem der Strings genügend Speicher im SRAM zu.
Schritt 10: Größe des seriellen Softwarepuffers
Im folgenden Code werden Sie feststellen, dass bis zu 200 Zeichen von der seriellen Schnittstelle der Software gelesen werden können.
// nach Daten von der seriellen Schnittstelle der Software suchen
//---------------------------------------------------------- RxString = ""; Zähler = 0; Während (SSerial.available ()) { Verzögerung (1); // kurze Verzögerung, um Zeit zu geben, um neue Daten in den Puffer zu legen // Neues Zeichen abrufen RxChar = char(SSerial.read()); // die ersten 200 Zeichen zum String hinzufügen if (Counter < 200) { RxString.concat (RxChar); Zähler = Zähler + 1; } }
Dies erfordert auch einen Puffer von mindestens 200 Byte für die serielle Softwareschnittstelle. Standardmäßig ist der Puffer des seriellen Software-Ports nur 64 Byte groß. Um diesen Puffer zu vergrößern, suchen Sie nach der folgenden Datei:
SoftwareSerial.h
Öffnen Sie die Datei mit einem Texteditor und ändern Sie die Puffergröße auf 200.
/******************************************************************************
* Definitionen ************************************************ *****************************/ #ifndef _SS_MAX_RX_BUFF #define _SS_MAX_RX_BUFF 200 // RX-Puffergröße #endif
Schritt 11: Herstellung der PC-Platine
Das PC-Board wurde mit der Freeware-Version von Cadsoft Eagle entwickelt (ich glaube, der Name hat sich geändert).
- PC Board ist ein einseitiges Design.
- Es werden keine oberflächenmontierten Komponenten verwendet.
- Alle Komponenten sind auf der Leiterplatte montiert, einschließlich des SIM800L-Moduls.
- Es sind keine externen Komponenten oder Anschlüsse erforderlich
- Drahtbrücken sind unter den Komponenten versteckt, um ein saubereres Aussehen zu erzielen.
Ich verwende die folgende Methode, um PC-Boards zu machen:
- Das Bild der Leiterplatte wird auf Press-n-Peel mit einem Laserdrucker gedruckt.
- Das Press-n-Peel wird dann auf ein sauberes Stück PC-Platine gelegt und mit etwas Klebeband befestigt.
- Das Leiterplattenbild wird dann vom Press-n-Peel auf die leere Leiterplatte übertragen, indem die Leiterplatte durch einen Laminator geführt wird. Für mich funktionieren 10 Durchgänge am besten.
- Nachdem die Leiterplatte auf Raumtemperatur abgekühlt ist, wird das Press-n-Peel langsam von der Leiterplatte abgehoben.
- Die Leiterplatte wird dann mit in heißem Wasser gelösten Ammoniumpersulfat-Kristallen geätzt.
- Nach dem Ätzen werden der blaue Press-n-Peel und der schwarze Toner entfernt, indem die geätzte Leiterplatte mit etwas Aceton gereinigt wird.
- Das Brett wird dann mit einem Dremel. zugeschnitten
- Löcher für alle Durchgangslochkomponenten werden mit einem 1-mm-Bohrer gebohrt.
- Die Schraubanschlüsse werden mit einem 1,2-mm-Bohrer gebohrt.
Schritt 12: Montage der PC-Platine
Die Montage erfolgt, indem zuerst die kleinsten Komponenten hinzugefügt und dann zu den größten Komponenten vorgearbeitet werden.
Alle in diesem Instructable verwendeten Komponenten, mit Ausnahme des SIM800-Moduls, wurden von meinem lokalen Lieferanten bezogen. Denkt an sie dafür, dass sie immer auf Lager sind. Bitte werfen Sie einen Blick auf ihre südafrikanische Websie:
www.shop.rabtron.co.za/catalog/index.php
HINWEIS! Zuerst die beiden Jumper unter dem ATMEGA328p IC verlöten
Die Reihenfolge ist wie folgt:
- Widerstände und Diode
- Reset-Knopf
- IC-Sockel
- Spannungsregler
- Kopfstifte
- Kleine Kondensatoren
- LEDs
- Sicherungshalter
- Klemmenblöcke
- Relais
- Elektrolytkondensator
Vor dem Einsetzen der ICs das Gerät an 12V anschließen und alle Spannungen auf Richtigkeit prüfen.
Bedecken Sie abschließend die Kupferseite der Leiterplatte mit etwas Klarlack, um sie vor Witterungseinflüssen zu schützen.
Wenn der Lack getrocknet ist, setzen Sie die ICs ein, aber lassen Sie das GSM-Modul, bis der AtMega programmiert ist.
Schritt 13: Programmierung des AtMega328p
# # Firmware-Upgrade auf Version 3.02 # #
SMS-Versand an MASTER USER aktiviert, wenn das Gerät wieder mit Strom versorgt wird
Ich verwende ein Arduino Uno mit einem Programmierschild, um das Gerät zu programmieren. Weitere Informationen zur Verwendung eines Arduino Uno als Programmierer finden Sie in diesem Instructable:
Arduino UNO als AtMega328P-Programmierer
Das GSM-Modul muss von der Platine entfernt werden, um Zugriff auf den Programmierkopf zu erhalten. Achten Sie beim Entfernen des GSM-Moduls darauf, das Antennenkabel nicht zu beschädigen.
Verbinden Sie das Programmierkabel zwischen dem Programmiergerät und dem Gerät mit dem Programmierkopf auf der Platine und laden Sie die Skizze auf das Gerät hoch.
Die externe 12-V-Versorgung wird zum Programmieren des Geräts nicht benötigt. Die PC-Platine wird über das Programmierkabel vom Arduino mit Strom versorgt.
Öffnen Sie die angehängte Datei in der Arduino IDE und programmieren Sie sie auf das Gerät.
Entfernen Sie nach der Programmierung das Programmierkabel und stecken Sie das GSM-Modul ein.
Das Gerät ist jetzt einsatzbereit.
Schritt 14: Anschließen des Geräts
Alle Anschlüsse an das Gerät erfolgen über die Schraubklemmen.
Stromversorgung des Geräts
Stellen Sie sicher, dass Sie eine registrierte SIM-Karte in das GSM-Modul eingelegt haben und dass die SIM-Karte SMS senden und empfangen kann.
Schließen Sie ein 12-V-DC-Netzteil an den 12V-Eingang und einen der 0-V-Anschlüsse an. Nach dem Einschalten leuchtet die rote LED auf der PC-Platine. In etwa einer Minute sollte sich das GSM-Modul mit dem Mobilfunknetz verbunden haben. Die rote LED erlischt und eine rote LED am GSM-Modul blinkt schnell.
Sobald diese Stufe erreicht ist, kann das Gerät konfiguriert werden.
Eingangsanschlüsse
Die digitalen Eingänge arbeiten mit 12V. Um einen Eingang einzuschalten, müssen 12 V an den Eingang angelegt werden. Das Entfernen der 12V schaltet den Eingang aus.
Ausgangsanschlüsse
Jeder Ausgang besteht aus einem Wechslerkontakt. Verdrahten Sie jeden Kontakt nach Bedarf.
Schritt 15: Ersteinrichtung
Die Ersteinrichtung des Geräts muss durchgeführt werden, um sicherzustellen, dass alle Parameter auf die Werkseinstellungen zurückgesetzt und die SIM-Karte so konfiguriert ist, dass sie Benutzerinformationen im richtigen Format akzeptiert.
Da alle Befehle SMS-basiert sind, benötigen Sie ein weiteres Telefon, um die Einrichtung durchzuführen.
Für die Ersteinrichtung müssen Sie sich am Gerät befinden.
Stellen Sie die MASTER USER-Telefonnummer ein
Da nur der MASTER USER das Gerät konfigurieren kann, muss dieser Schritt zuerst durchgeführt werden.
- Das Gerät muss mit Strom versorgt werden.
- Drücken Sie die Reset-Taste und lassen Sie sie wieder los und warten Sie, bis die rote LED auf der Platine erlischt.
- Die NET-LED am GSM-Modul blinkt schnell.
- Das Gerät ist nun bereit, die anfänglichen Setup-Befehle zu akzeptieren. Dies muss innerhalb von 10 Minuten erfolgen.
- Senden Sie eine SMS-Nachricht mit MASTER, Beschreibung an die Telefonnummer des Geräts.
- Bei Empfang blinkt die grüne LED auf der Platine zweimal.
- Der MASTER USER ist nun programmiert.
Setzen Sie das Gerät auf die Werkseinstellungen zurück
Nachdem der MASTER USER programmiert wurde, müssen die Einstellungen des Geräts auf die Werkseinstellungen zurückgesetzt werden.
- Senden Sie eine SMS-Nachricht nur mit CLEARALL an die Telefonnummer des Geräts.
- Bei Empfang blinken die grüne und rote LED auf der Platine abwechselnd einmal pro Sekunde. Das Gerät wurde mit den werkseitigen Standardeinstellungen wiederhergestellt.
- Alle Einstellungen wurden auf die Werkseinstellungen zurückgesetzt.
- Drücken Sie die Reset-Taste und lassen Sie sie wieder los, um das Gerät neu zu starten.
Formatieren der SIM-Karte
Der letzte Schritt besteht darin, alle auf der SIM-Karte gespeicherten Informationen zu löschen und sie für die Verwendung in diesem Gerät zu konfigurieren.
- Drücken Sie die Reset-Taste und lassen Sie sie wieder los und warten Sie, bis die rote LED auf der Platine erlischt.
- Die NET-LED am GSM-Modul blinkt schnell.
- Das Gerät ist nun bereit, die anfänglichen Setup-Befehle zu akzeptieren. Dies muss innerhalb von 10 Minuten erfolgen.
- Senden Sie eine SMS-Nachricht nur mit ERASESIM an die Telefonnummer des Geräts.
- Bei Empfang blinkt die grüne LED auf der Platine dreimal.
Das Gerät ist nun konfiguriert und betriebsbereit.
Schritt 16: SMS-Befehle
Es gibt drei verschiedene Arten von Befehlen, die vom Gerät verwendet werden. Alle Befehle werden per SMS gesendet und haben alle das folgende Format:
BEFEHL,,,,,
- Bei allen Befehlen außer den NORMAL USER-Befehlen muss die Groß-/Kleinschreibung beachtet werden.
- Bei Parametern wird die Groß-/Kleinschreibung nicht beachtet.
Befehle für die Ersteinrichtung
MEISTER, Name
Als MASTER USER-Rufnummer wird die Telefonnummer des SMS-Absenders verwendet. Hier kann eine Beschreibung für die Einheit hinzugefügt werden.
ALLES LÖSCHEN
Setzen Sie das Gerät auf die Werkseinstellungen zurück
CLEARSIM
Alle Daten von der SIM-Karte löschen
ZURÜCKSETZEN
Starten Sie das Gerät neu
MASTER USER Befehle zum Konfigurieren des Geräts
AUSSENMODUS, c, m, t HINWEIS ! ! ! NOCH NICHT IMPLEMENTIERT
Stellen Sie bestimmte Kanäle so ein, dass sie PULSED-, TIMED- oder LATCHING-Ausgänge haben. t ist die Zeitdauer in Minuten für TIMED-Ausgaben
IMPULS, cccc
Stellen Sie bestimmte Kanäle auf PULSED-Ausgänge ein. Wenn nicht gesetzt, werden die Kanäle als LATCHING-Ausgänge eingestellt.
PULSETIME, tStellt die Impulsausgabedauer in Sekunden ein (0.. 10s)
EINGABE, cccc
Stellen Sie Kanäle ein, die ausgelöst werden müssen, und senden Sie eine SMS-Nachricht, wenn sich der Status von AUS auf EIN ändert
EINGANG, cccc
Stellen Sie Kanäle ein, die ausgelöst werden müssen, und senden Sie eine SMS-Nachricht, wenn sich der Status von EIN auf AUS ändert
INTIME, c, t
Legt die Eingangsverzögerungszeit für die Erkennung von Statusänderungen in Sekunden fest
INTEXT, ch, name, an, aus
Legen Sie den Namen jedes Eingangskanals fest, Text ein und aus.
OUTTEXT, ch, Name, an, aus
Legen Sie den Namen jedes Ausgangskanals fest, Text ein und aus.
Hinzufügen, Standort, Nummer, Calloutputs, SMSoutputs, Inputs
Benutzer zur SIM-Karte am Speicherort hinzufügen, wobei dem Benutzer die Ausgangs- und Eingangskanäle zugewiesen sind
Entf, Standort
Benutzer aus SIM-Kartenspeicher 'Standort' löschen
Kanal Name
Impulsausgabe mit dem Namen ChannelName
ChannelName, onText oder ChannelName, offText
Schaltet den Ausgang mit dem Namen von ChannelName und onText/offText. ein/aus
Normale Benutzerbefehle zur Steuerung des Geräts
????E/A-Statusaktualisierung anfordern. Status-SMS wird an den Absender gesendet.
Kanal Name
Impulsausgabe mit dem Namen ChannelName
Kanalname, onText
Schaltet den Ausgang mit dem Namen von ChannelName und dem Statustext onText ein
ChannelName, offText Schaltet die Ausgabe mit dem Namen von ChannelName und dem Statustext offText aus
Eine genauere Beschreibung der Befehle finden Sie im beigefügten PDF-Dokument.
Empfohlen:
Einen Arduino-Gitarren-Tuner herstellen – wikiHow
So bauen Sie einen Arduino-Gitarren-Tuner: Dies sind die Anweisungen, um einen Gitarren-Tuner aus einem Arduino und mehreren anderen Komponenten zu machen. Mit Grundkenntnissen in Elektronik und Codierung können Sie dieses Gitarrenstimmgerät herstellen. Zuerst müssen Sie wissen, was die Materialien sind. Ma
ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: 9 Schritte
ALARMA ARDUINO CON SENSOR DE MOVIMIENTO, SIRENA Y AVISO AL TLF. MÓVIL: Este proyecto consiste en a alarma básica que Detecta presencia, activa una sirena de 108dB y visa al usuario mediante un SMS (opcional). Permite también el control remoto básico por parte del usuario a través de SMS (encendido, apagado, reinicio
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Arduino-Programmierung über das Handy -- Arduinodroid -- Arduino-Ide für Android -- Blinzeln: 4 Schritte
Arduino-Programmierung über das Handy || Arduinodroid || Arduino-Ide für Android || Blink: Bitte abonnieren Sie meinen Youtube-Kanal für weitere Videos…… Arduino ist ein Board, das direkt über USB programmiert werden kann. Es ist sehr einfach und günstig für College- und Schulprojekte oder sogar für Produktprototypen. Viele Produkte bauen zunächst darauf für i
LTE CAT-M1 GSM IoT Sensors Network T - 15 Minuten.: 5 Schritte
LTE CAT-M1 GSM IoT Sensors Network… T - 15 Minuten.: Am 08. April 2018 gab R&D Software Solutions srl [itbrainpower.net] der Öffentlichkeit die Ankündigung des xyz-mIoT von itbrainpower.net Shield bekannt - das erste und kompakteste IoT-Board, das die Vielseitigkeit der ARM0-Mikrosteuerung kombiniert