Projekte

Gewusst wie: Senden einer SMS mit PIC16F628A und SIM900A

Best Notification App For Android: Join App to Share Notifications, SMS, Files Between ALL Devices!! (Oktober 2018).

Anonim

Gewusst wie: Senden einer SMS mit PIC16F628A und SIM900A


In diesem Artikel zeige ich Ihnen eine Möglichkeit, eine SMS mit einem PIC 16F628A und einem SIMCOM SIM900A Modul zu senden.

In einem früheren Artikel habe ich ein Firmware-Upgrade für mein GSM-Modul durchgeführt, damit es bei einem europäischen Dienstanbieter registriert wird. In diesem Artikel habe ich kurz an AT-Befehlen und Anweisungen gekratzt.

In diesem Artikel werde ich einen Schritt weiter gehen. Ich werde eine SMS mit meinem PIC 16F628A senden.

Vollständiges Steckbrett.

Bedarf

Um das Beste aus diesem Artikel herauszuholen, benötigen Sie Folgendes:

  • SIMCOM SIM900A Modul, aktualisiert, um sich bei einem europäischen Service Provider registrieren zu können.
  • Ein Computer mit MPLAB X und der XC8-Compiler.
  • Ein PIC 16F628A und ein MAX232.
  • Eine Möglichkeit, deinen PIC zu programmieren, verwende ich einen PICkit 3.
  • Steckbrett, Überbrückungsdrähte und ein LCD.
  • Teile aus der Stückliste.

Einführung

Wenn das SIM900A-Modul hochgefahren wird, passiert eine Menge Dinge. Eine davon ist, dass das Modul versucht, sich in einem Netzwerk zu registrieren. Wenn es erfolgreich in einem Netzwerk registriert ist, können wir SMS senden, SMS empfangen und den Namen des Dienstanbieters abrufen. Das Hauptziel für diesen Artikel ist es, eine SMS an eine vordefinierte Nummer zu senden. Um den Namen des Dienstleisters zu erhalten, ist ein Bonus.

Das Modul kommuniziert mit der umgebenden Schaltung mit TTL oder mit dem integrierten MAX232 IC. Ich werde die MAX232-Schnittstelle verwenden. Das bedeutet, dass die gesamte Kommunikation mit dem PIC UART erfolgt und alle unsere Befehle vom PIC mit printf zum UART-Port gesendet werden.

Hardware

Ich habe mein Steckbrett so verbunden:

Klicken Sie auf das Bild für die volle Auflösung.

Da ich einen MAX232 benutze, kann ich damit sehen und beheben, was der Mikrocontroller an das GSM-Modul sendet. Dazu trenne ich das GSM-Modul, verbinde mein serielles Kabel und öffne GtkTerm. Baudeinstellung: 9600-8-N-1.

Verbindung mit einem Computer zur Fehlerbehebung.

Dies sendet der Mikrocontroller an das GSM-Modul. Die ersten drei Zeilen dienen nur dazu, zu überprüfen, ob die serielle Kommunikation funktioniert und um zu sehen, was ich sende. Die letzten beiden Zeilen sind Anweisungen für das GSM-Modul.

Ich bekomme keine Antwort vom GSM-Modul, da es nicht verbunden ist.

Stückliste

Dies ist ein Screenshot des bom.ulp von EagleCAD.

Software

Obwohl die Software kommentiert ist, werde ich hier einige Teile durchgehen. Wenn der PIC eingeschaltet wird, wird eine kurze Willkommensnachricht angezeigt. Dann beginnt ein Countdown von 15 Sekunden. Ich habe diesen Countdown aus zwei Gründen gesetzt:

  1. Lassen Sie das GSM-Modul registriert werden.
  2. Eine visuelle Anzeige, die dem Benutzer zeigt, dass etwas passiert und der PIC funktioniert.

Wenn der Countdown beendet ist, sendet der PIC den Befehl:

 AT + CPOL? \ R \ n 

Es ist wichtig Carriage Return - Neue Zeile, die \ r \ n hinzuzufügen. Dies weist das Modul an, die Textzeichenfolge auszuführen, die in dem Modulpuffer angekommen ist.

Das Modul gibt dann die Zeichenfolge zurück:

 + CPOL: 1, 0, "N NetCom", 1, 0, 1 

Dies bedeutet, dass das Modul bei NetCom registriert ist. NetCom ist der Name des Service Providers. Es ist dieser Name, den wir auf dem LCD anzeigen möchten. Jetzt müssen wir den Namen aus der Zeichenfolge extrahieren. Die Art, wie ich das tue, ist, die ganze Zeichenfolge in ein Array zu lesen. Dann suche ich nach den "-Zeichen". Wenn die "-Zeichen" gefunden werden, speichere ich ihre Position in einem anderen Array. Das nenne ich "start and stop". Dann verwende ich die Werte von "Start und Stopp", um die dazwischen liegenden Zeichen auf dem LCD anzuzeigen. Vielleicht nicht die tollste Art, es zu tun, aber es ist einfach.

Um die SMS zu senden, muss ich noch einige AT-Befehle senden.

Zuerst sende ich den Befehl:

 AT + CMGF = 1 \ r \ n 

Dies ist das SMS-Nachrichtenformat auswählen. Die 1 weist das Modul an, in den Textmodus zu wechseln.

Zweitens, ich sende den Befehl:

 AT + CMGS = "Empfänger" \ r \ n 

"Empfänger" ist die Nummer, an die ich eine Nachricht senden möchte.

Drittens sende ich den Befehl:

 Nachricht von PIC16F628A \ r \ n 

Dies ist die eigentliche Nachricht. Da die Nachricht mehrere Zeichen enthält, einschließlich Leerzeichen, gibt es eine nette Möglichkeit, dem Modul mitzuteilen, wo das Ende der Nachricht liegt. Ich muss das EOF-Zeichen senden, was zufällig CTRL-Z ist.

 printf ("% c", 26); 

Dies ist das EOF-Zeichen in der regulären ASCII-Tabelle. Das Modul sendet nun die Nachricht.

Verwenden Sie diesen Link, um Dokumente zum SIM900A-Modul zu finden.

Herunterladen

Sie können den c-source code über den Link herunterladen.

Code herunterladen

Fazit

Sie sollten nun in der Lage sein, den Namen Ihres Dienstanbieters abzurufen und eine SMS mit dem SIM900A-Modul in einem europäischen Netzwerk zu senden.

Bilder und Video

Gib diesem Projekt einen Versuch für dich selbst! Holen Sie sich die Stückliste.