Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Update 6. Juli 2018: Eine 3G/2G-Version dieses Projekts mit SIM5320 ist hier verfügbar
Update: 19. Mai 2015: Verwenden Sie die pfodParser-Bibliothek Version 2.5 oder höher. Es behebt ein gemeldetes Problem, bei dem der Schild nach dem Einschalten nicht genügend Zeit hat, um sich mit dem Netzwerk zu verbinden
Einführung
Wie unterscheidet sich die pfodSMS-Fernbedienung von anderen Implementierungen:-
- Es ist zuverlässig – Befehle werden immer beantwortet und verlorene Nachrichten werden erneut angefordert
- Es ist sicher – verwendet 128-Bit-Passwortschutz
- Es erfordert keine Webservice-Konten von Drittanbietern – benötigt nur eine aktive SIM-Karte (ohne PIN)
- Es ist anpassbar – Sie können pfodDesigner verwenden, um Ihr eigenes benutzerdefiniertes Menü zu erstellen
- Es ist ganz einfach – der pfodDesigner generiert den gesamten Code. Sie müssen keine Codierung vornehmen.
- Es ist flexibel – alle pfod-Bildschirme sind per SMS verfügbar, wie Untermenüs, Mehrfach- und Einzelauswahlliste, Texteingabe, Datenprotokollierung und Plotten.
Wie die SMS-Verbindung zuverlässig hergestellt wird, erfahren Sie im pfodSMS-Nachrichtendesign. Einzelheiten zur 128-Bit-Sicherheit finden Sie unter Challenge and Response Security for internet connected pfodDevices. Siehe pfodDesigner, Android / Arduino-Menüs leicht gemacht für Details zum Entwerfen Ihres eigenen benutzerdefinierten Menüs. Siehe die pfodSpecification.pdf für die Details aller pfod-Nachrichten und -Bildschirme, die Sie selbst hinzufügen können.
Beispielprojekt – SMS Warmwasserregelung
Als Beispielprojekt beschreibt diese Anleitung, wie Sie Ihren Warmwasserbereiter per SMS ein- und ausschalten und prüfen, ob er ein- oder ausgeschaltet ist. Sie benötigen einen Elektriker, um es zu installieren.
Schritt 1: Schnellstart - SMS-Fernbedienung
Hier ist eine Kurzanleitung zum Erstellen Ihrer eigenen SMS-Warmwassersteuerung.
- Kaufen Sie die Teile auf dieser Liste..
- Installieren Sie die Arduino IDE Version 1.5.8 und laden Sie die pfodParser-Bibliothek herunter und installieren Sie sie.
- Laden Sie den kostenlosen pfodDesigner herunter.
- Gestalten Sie Ihr benutzerdefiniertes Menü, um einen digitalen Eingang über einen Menüschieberegler auf Ihrem Android-Handy ein- und auszuschalten.
- Generieren Sie den Code und wählen Sie SeeedStudio SIM900 GPRS Shield als Verbindung aus. (Es gibt auch eine Option für das IteadStudio SIM900-Shield).
- Übertragen Sie den generierten Code von Ihrem Handy auf die IDE (siehe pfodAppForAndroidGettingStarted.pdf für Details), fügen Sie Ihr geheimes Passwort hinzu, kompilieren Sie und laden Sie ihn auf den Arduino Mega 2560 herunter.
- Installieren Sie Ihre SIM-Karte in der GPRS-Abschirmung und stecken Sie die Abschirmung in den Mega 2560. Stellen Sie sicher, dass die seriellen Verbindungen wie oben gezeigt auf Hardware Serial eingestellt sind.
- Verbinden Sie den digitalen Ausgang mit dem Festkörper- oder normalen Relais zwischen D3 und GND (oder einem beliebigen Pin, den Sie im pfodDesigner gewählt haben). Weitere Informationen zu Relais finden Sie unter So fügen Sie Relais zu Arduino hinzu.
- Versorgen Sie den Mega mit USB-Strom. Der Bibliothekscode schaltet den GPRS-Schild für Sie ein.
- Installieren Sie pfodApp auf Ihrem Android-Handy und richten Sie eine SMS-Verbindung zur Sim-Telefonnummer des Schilds ein. (Weitere Informationen finden Sie in der Datei pfodAppForAndroidGettingStarted.pdf). Legen Sie das Passwort für die Verbindung fest, falls Sie eines hinzugefügt haben.
- Stellen Sie eine Verbindung her und sehen Sie sich Ihr benutzerdefiniertes Menü per SMS an. Klicken Sie auf die Schaltfläche, um das Relais ein- oder auszuschalten.
- Bitten Sie Ihren Elektriker, das Relais in Ihrem Warmwasserkreislauf zu installieren und das USB-Netzteil zu verdrahten, um den Mega und die Abschirmung mit Strom zu versorgen
Schritt 2: Weitere Details
pfodDesigner
Der pfodDesigner generiert den gesamten Code, den Sie zum Ein- und Ausschalten des Halbleiterrelais oder eines anderen Relais benötigen, aber die SMS-Verbindung in der pfodParser-Bibliothek unterstützt alle pfod-Bildschirme, sodass Sie nach dem Start Untermenüs, numerische Schieberegler, Multi-Text-Schieberegler, Texteingabebildschirme, Datenprotokollierung und Plotten alles per SMS. In der pfodSpecification.pdf finden Sie alle unterstützten Bildschirme und Meldungen.
Der generierte Code ist hier. Es hat keine Eingabeaufforderung und nur einen einzigen Schalter, um die Nachricht kurz zu halten. Lange Menüs werden über mehrere SMS-Nachrichten versendet, deren Ankunft länger dauert. Wenn Sie ein langes Menü haben, übernimmt der SMS-Verbindungscode in der pfodParser-Bibliothek all dies für Sie.
Um Ihrer SMS-Verbindung ein Passwort hinzuzufügen, ändern Sie die Zeile
parser.connect(&pfodSMS); // Parser mit SMS streamto so etwas wie parser.connect(&pfodSMS, F("173057F7A706AF9BBE65D51122A14CEE")) verbinden;
aber verwenden Sie Ihr eigenes Passwort mit bis zu 32 Hex-Ziffern, 0..9 A.. F. Passwörter, die kürzer als 32 Hex-Ziffern sind, werden mit Nullen aufgefüllt. Siehe A Simple Wifi/Internet pfodDevice with 128bit security (Arduino), um zu erfahren, wie Sie ein zufälliges Passwort generieren und es an einen QR-Code zur einfachen Eingabe auf Ihrem Android ausgeben. Siehe auch pfodAppForAndroidGettingStarted.pdf
Der pfodDesigner generiert auch Code für Bluetooth- und WLAN-Verbindungen über Seriell und Ethernet über SPI, alle mit optionaler 128-Bit-Sicherheit
pfodApp
Das erste, was Sie erkennen müssen, ist, dass SMS langsam ist und möglicherweise überhaupt nicht ankommt oder nicht in der richtigen Reihenfolge ankommt. Wenn Sie sich also mit pfodApp verbinden, dauert es eine Weile, bis eine SMS-Antwort erfolgt. Wenn die Nachricht verloren geht oder sich verzögert, sendet pfodApp sie automatisch nach 3 Minuten erneut. Nach 5 solcher Wiederholungen teilt Ihnen die pfodApp mit, dass die Verbindung unterbrochen wurde. Sie können die 3-Minuten-Zeit im Verbindungsbearbeitungsbildschirm der pfodApp anpassen.
Wenn Sie ein Passwort hinzufügen, gibt es sechs SMS-Nachrichten (drei in jede Richtung), bevor das Hauptmenü von der pfodApp empfangen wird. Diese zusätzlichen Nachrichten treten nur bei der ersten Verbindung auf, danach gibt es keine zusätzlichen Nachrichten, wenn ein Kennwort verwendet wird. Beginnen Sie also ohne Passwort, um zu sehen, ob alles funktioniert, und fügen Sie das Passwort später hinzu.
SMS/GPRS-Schild
Mögliche Probleme sind SIM-Karten, die durch PIN-Nummern geschützt sind oder nicht berechtigt sind, sich mit dem Netzwerk zu verbinden. Die pfod-Bibliothek schaltet den GPRS-Schild automatisch ein und sucht nach der 'Anrufbereit'-Antwort. Wenn diese Antwort nicht eintrifft, schaltet sich die Bibliothek ab und versucht es erneut. Wenn Sie also sehen, dass die Betriebsanzeige auf dem GPRS-Schild 20 Sekunden lang leuchtet und dann erlischt, liegt ein Problem bei der Verbindung mit dem Netzwerk vor. Nehmen Sie die SIM heraus und versuchen Sie es in einem normalen Telefon. Stellen Sie sicher, dass Sie nicht zur Eingabe einer PIN-Nummer aufgefordert werden.
Wenn dies nicht das Problem ist, müssen Sie das Start-Debugging wie unten beschrieben aktivieren, um zu sehen, was passiert.
Stromversorgung des Mega / GPRS-Shields
Der Schirm zieht bis zu 2A gepulst und bis zu 0,5A kontinuierlich. Bei einer angenommenen 12V Batterieversorgung übersteigen die 0,5A die Kapazität des Mega Bordnetzes. Daher sollte dieses Schild NICHT vom 7V bis 12V Eingang des Mega mit Strom versorgt werden. Die Alternative besteht darin, den Mega und das Schild über den USB-Anschluss mit Strom zu versorgen. Ich habe eine 1A USB-Versorgung verwendet. Zum Testen habe ich einen von Belkin betriebenen Hub (F4U020) verwendet, um zu verhindern, dass übermäßiger Strom aus dem USB-Anschluss meines Computers gezogen wird.
Für eine 12-V-Batterieversorgung schlage ich vor, ein hochwertiges Kfz-USB-5-V-Ladegerät mit 1 A oder höher zu verwenden. Ein hochwertiges Automotive USB-5V-Netzteil sollte so ausgelegt sein, dass es Überspannungsspitzen, die in elektrischen Fahrzeugsystemen auftreten, verarbeiten kann und daher für die meisten 12V-Ladesysteme geeignet sein sollte.
Halbleiterrelais
Da dieses Beispielprojekt einen Warmwasserbereiter (eine ohmsche Last) steuert, ist ein Halbleiterrelais ideal. Wenn Sie Motoren ein- oder ausschalten, Generatoren starten usw., sprechen Sie mit Ihrem Elektriker über ein geeignetes Relais für die Aufgabe. Wenn Sie ein Hochleistungsrelais benötigen, können Sie einen kleinen Relaisantrieb auf der Arduino-Platine verwenden, um das Leistungsrelais ein- und auszuschalten.
Es gibt viele Ausführungen von Halbleiterrelais. Stellen Sie sicher, dass Sie einen kaufen, der den Strom und die Spannung Ihrer Heizung verarbeiten kann und von 5 V DC und einigen Milliampere gesteuert werden kann, die vom Arduino-Ausgangspin verfügbar sind. Der hier verwendete FOTEK SSR-40 DA schaltet bis zu 380 VAC bei 40 Ampere und wird von mehr als 3 V DC gesteuert und benötigt weniger als 7 mA.
Sie müssen einen Kühlkörper verwenden und einen DÜNNEN Schmierfilm mit Kühlkörperpaste oder Wärmeleitpaste auf die Rückseite des Halbleiterrelais auftragen, bevor Sie es mit dem Kühlkörper verschrauben. Die Idee ist, die Oberfläche vollständig mit der dünnsten Schicht der Kopfsenkenmasse zu bedecken, um die mikroskopisch kleinen Täler in der Metalloberfläche auszufüllen. Beim Einschalten fällt der Halbleiterschalter um 1,6 V ab, was 16 Watt Wärme bei 10 Ampere erzeugt. Der Kühlkörper muss diese Wärme abführen, daher muss er an freier Luft und nicht in einer Plastikbox montiert werden.
Verzögerungen sind böse
Das GPRS-Schild liefert jederzeit SMS-Nachrichten über die serielle Verbindung und Ihre Hauptschleife () muss cmd = parser.parse () aufrufen; oft, um die seriellen Daten zu verarbeiten, bevor der 64-Byte-Puffer im Arduino-Bibliothekscode voll ist und Daten verloren gehen.
Sie müssen also Ihre Hauptschleife () schnell laufen lassen. Sie sollten niemals delay() verwenden und überprüfen, ob keine der von Ihnen verwendeten Bibliotheken Verzögerungen enthält. Bei Verwendung der Standardbaudrate von 19200 des SIM900 über Hardware Serial habe ich es nicht für notwendig befunden, die Puffergröße im Arduino-Bibliothekscode zu erhöhen. Ich verwende keine Software Serial, nur Serial und Serial1, Hardware Serial Verbindungen, und fast alle Nachrichten, die die pfodApp sendet, sind sehr klein, 10 oder 12 Byte. Sie können jedoch die Arduino-Puffergröße erhöhen, wenn Sie möchten, indem Sie die Definition in HardwareSerial.h von #define SERIAL_BUFFER_SIZE 64 auf #define SERIAL_BUFFER_SIZE 128 ändern
Was ich jedoch festgestellt habe, war, dass ich, wenn ich die Debug-Ausgabe aktiviert habe, wie unten beschrieben, eine sehr schnelle Baudrate für die Terminalverbindung haben musste, da sonst die Verzögerung durch das Senden von Debug-Nachrichten an das Terminal dazu führte, dass Teile der SMS-Nachrichten übersehen wurden.
Installation
Ich habe eine Schraubklemmenabschirmung hinzugefügt, damit ich etwas zum Anschließen der Solid State-Relaisdrähte hatte. Ich habe den Controller noch nicht von meinem Elektriker einbauen lassen. Es muss in eine isolierte Box gesteckt werden, aber mit einem Kühlkörper, der durch einen Schlitz herausragt und mit dem Warmwasserkabel verbunden ist.
Schritt 3: Vorschläge für weitere Verbesserungen – Warnungen, Datenprotokollierung und Plotting
Das obige Beispielprojekt zeigt nur, wie Wasser ein- oder ausgeschaltet ist und ermöglicht Ihnen, es umzuschalten. Aber die SMS-Verbindung verarbeitet alle pfod-Nachrichten (siehe pfodSpecification.pdf)
Wenn Sie Ihrem Arduino einen Temperatursensor hinzufügen, können Sie die Temperatur auch überwachen und in regelmäßigen Abständen Messwerte zurücksenden. Um einen Datenwert zurückzusenden, ist das gleiche für Bluetooth, WLAN oder SMS. Fügen Sie einfach den Code wie im folgenden Beispiel hinzu. Weitere Informationen und Beispiele für die Datenprotokollierung und das Plotten finden Sie unter Datenprotokollierung und -darstellung.
parser.println(Zeit);parser.print(', ');parser.println(Temperatur);
Wenn die pfodSMS-Bibliothek die neue Zeile von println() sieht, sendet sie die Rohdaten als SMS. Lassen Sie auf Ihrem Handy einfach pfodApp im Hintergrund laufen und Ihr Handy benachrichtigt Sie, wenn eine SMS empfangen wird. Öffnen Sie die pfodApp erneut, um sie in den Vordergrund zu bringen, und öffnen Sie dann den Rohdatenbildschirm aus dem Menü des Mobiltelefons, um die Daten anzuzeigen. Hinweis: Die pfodSMS-Nachrichten sind UTF-8-Zeichen zusammen mit Verbindungs- und Nachrichtennummern, kodiert mit einer Base64-Kodierung, damit sie nicht wie normaler Text aussehen. Siehe pfodSMS-Nachrichtendesign für alle Details.
Sie können denselben Vorgang verwenden, um eine Warnung zu senden, wenn sich etwas aus der Ferne ändert. d.h. parser.println(F("Außentemperatur unter 0℃"));Hinweis: das ℃ UTF-8-Zeichen in der Zeichenfolge. pfodSMS übergibt alle UTF-8-Zeichen an die pfodApp.
Schritt 4: Debuggen während der Verwendung der SMS-Verbindung in der PfodParser-Bibliothek
Der pfodDesigner generiert Code, der funktioniert, aber vielleicht möchten Sie Ihren eigenen zusätzlichen Code debuggen oder sehen, was passiert, während der GPRS-Schild startet oder SMS-Nachrichten empfängt. Es gibt ein paar Ansätze, die Sie verfolgen können.
Debuggen Ihres eigenen Codes
Wenn Sie Ihren eigenen Code debuggen, können Sie einfach die pfodSMS-Zeile auskommentieren und den Parser mit Serial verbinden und dann den GPRS-Schild entfernen und den Mega vom Arduino-Terminal ausführen. d.h. ändere setup() zu
//pfodSMS.init(&Seriell, 9); // GPRS-Schild nicht starten parser.connect(&Serial); // Parser mit Serial statt SMS-Stream verbinden
Dann können Sie vom Arduino-Terminal aus {.} eingeben, um das Mega dazu zu bringen, zum Hauptmenü zurückzukehren, und dann den Befehl zurücksenden, den Sie ausführen möchten, z. {A`1} zum Einschalten des Relais und {A`0} zum Ausschalten. (Die pfodApp sendet diese Nachrichten normalerweise für Sie, wenn Sie auf den Schieberegler klicken.) Fügen Sie dann zusätzliches Debugging parser.println() hinzu, um zu überwachen, was der zusätzliche Code tut, den Sie hinzugefügt haben.
Überwachung des GPRS-Schildes
Wenn Sie sehen möchten, was der GPRS-Schild macht. Wie es startet, SMS-Nachrichten empfängt usw. Dann müssen Sie die Abschirmungsverkabelung ändern, verbinden Sie es mit dem Mega Serial1 (seriell) und geben Sie die serielle (USB) Verbindung für die Debug-Ausgabe an den Arduino IDE-Monitor frei.
Um die GPRS-Abschirmung mit dem Mega 2560 Serial1 zu verbinden, entfernen Sie die oben gezeigten Links und fügen Sie die Drähte zu den TX1- und RX1-Pins des Mega hinzu.
Ändern Sie dann den setup()-Code in
Void setup () { Serial1.begin (19200); // ändere Serial in Serial 1 Serial.begin (57600); // Beachten Sie die schnelle Baudrate für den seriellen USB-Port // zum Arduino IDE-Monitor. for (int i=3; i>0; i--) {// warten Sie ein paar Sekunden, um zu sehen, ob wir programmiert werden delay(1000); } pinMode (cmd_A_pin, AUSGANG); pfodSMS.setDebugStream(&Seriell); // muss dies vor pfod_SMS.init // oder einem anderen pfod_SMS-Methodenaufruf tun // Initialisieren Sie die SMS und verbinden Sie den Parser // ändern Sie die nächste Zeile in Serial1 pfodSMS.init(&Serial1, 9); // Seeed GPRS-Schild V2 mit Serial1 anstelle von Serial parser.setDebugStream (&Serial) verbinden; // muss dies tun, bevor parser.connect // oder eine andere Parser-Methode aufgerufen wird parser.connect(&pfodSMS); // Parser mit SMS-Stream verbinden }
Jetzt können Sie einige der Debug-Einstellungen in der pfodParser-Bibliothek am Ende der Datei pfodSMS_SIM900.cpp auskommentieren.
Wenn Sie beispielsweise #define DEBUG_SETUP auskommentieren, wird (in den Debug-Stream) ausgedruckt, was passiert, während das GPRS-Schild eingeschaltet und für den Empfang von SMS-Nachrichten vorbereitet wird.
Wenn Sie #define DEBUG nicht kommentieren, erhalten Sie viele Informationen zu den empfangenen SMS-Nachrichten.
Das ist es !