- Erforderliche Materialien
- Verwendete Software
- GSM-Modul
- Kommunikation mit dem GSM-Modul über AT-Befehle
- Schaltplan der Schnittstelle des ATMega16 GSM-Moduls
- Erstellen des Projekts für ATmega16 mit CodeVision
- Code und Erklärung
- Erstellen Sie das Projekt
- Laden Sie den Code auf Atmega16 hoch
Die Verwendung von GSM-Modulen ist besonders dann interessant, wenn für unser Projekt ein Fernzugriff erforderlich ist. Diese Module können alle Aktionen ausführen, die unser normales Mobiltelefon ausführen kann, z. B. Tätigen / Empfangen eines Anrufs, Senden / Empfangen einer SMS, Herstellen einer Internetverbindung über GPRS usw. Sie können auch ein normales Mikrofon und einen Lautsprecher an dieses Modul anschließen und sich auf Ihrem Modul unterhalten Mobiltelefongespräche. Dies öffnet Türen für viele kreative Projekte, wenn es mit einem Mikrocontroller verbunden werden könnte. Daher lernen wir in diesem Tutorial, wie wir das GSM-Modul (SIM900A) mit dem AVR-Mikrocontroller ATmega16 verbinden können, und demonstrieren dies durch Senden und Empfangen von Nachrichten mit dem GSM-Modul.
Erforderliche Materialien
- Atmega16
- GSM-Modul (SIM900 oder ein anderes)
- LCD Bildschirm
- Drück Knöpfe
- 10k Widerstände, Potentiometer
- Kabel anschließen
- 12V Adapter
- USBasp-Programmierer
- 10-poliges FRC-Kabel
Verwendete Software
Wir werden die CodeVisionAVR- Software zum Schreiben unseres Codes und die SinaProg- Software zum Hochladen unseres Codes auf Atmega16 mit dem USBASP-Programmierer verwenden.
Sie können diese Software über die angegebenen Links herunterladen:
CodeVisionAVR:
SinaProg:
Bevor wir uns mit den Schaltplänen und Codes befassen, lernen wir das GSM-Modul und seine Funktionsweise kennen.
GSM-Modul
Das GSM-Modul kann auch ohne Mikrocontroller im AT-Befehlsmodus verwendet werden. Wie oben gezeigt, wird das GSM-Modul mit einem USART-Adapter geliefert, der über ein MAX232-Modul direkt an den Computer angeschlossen werden kann, oder die Tx- und Rx-Pins können verwendet werden, um ihn an einen Mikrocontroller anzuschließen. Sie können auch die anderen Pins wie MIC +, MIC-, SP +, SP- usw. bemerken, an denen ein Mikrofon oder ein Lautsprecher angeschlossen werden kann. Das Modul kann von einem 12-V-Adapter über eine normale DC-Barrel-Buchse mit Strom versorgt werden.
Legen Sie Ihre SIM-Karte in den Steckplatz des Moduls ein und schalten Sie sie ein. Sie sollten feststellen, dass eine Betriebs-LED leuchtet. Warten Sie nun etwa eine Minute, und alle 3 Sekunden sollte eine rote (oder eine andere Farbe) LED einmal blinken. Dies bedeutet, dass Ihr Modul eine Verbindung mit Ihrer SIM-Karte herstellen konnte. Jetzt können Sie Ihr Modul mit dem Telefon oder einem beliebigen Mikrocontroller verbinden.
Mit dem GSM-Modul können Sie viele coole Projekte erstellen:
- Drahtloses Schwarzes Brett mit GSM und Arduino
- Automatischer Anrufbeantworter mit Arduino und GSM-Modul
- GSM-basierte Hausautomation mit Arduino
- PIR-Sensor und GSM-basiertes Sicherheitssystem
Überprüfen Sie hier auch alle GSM-bezogenen Projekte.
Kommunikation mit dem GSM-Modul über AT-Befehle
Wie Sie vielleicht erraten haben, kann das GSM-Modul über serielle Kommunikation kommunizieren und nur eine Sprache verstehen, nämlich „ AT-Befehle “. Was auch immer Sie dem GSM-Modul mitteilen oder fragen möchten, es sollte nur über AT-Befehle erfolgen. Zum Beispiel, wenn Sie wissen möchten, ob Ihr Modul aktiv ist. Sie sollten einen Befehl wie "AT" fragen (senden) und Ihr Modul antwortet "OK".
Diese AT-Befehle werden im Datenblatt ausführlich erläutert und finden Sie hier im offiziellen Datenblatt. Okay! Okay! Es handelt sich um ein 271-seitiges Datenblatt, und es kann Tage dauern, bis Sie es gelesen haben. Daher habe ich nachfolgend einige der wichtigsten AT-Befehle angegeben, damit Sie diese bald zum Laufen bringen können.
BEIM |
Antwortet mit OK zur Bestätigung |
AT + CPIN? |
Überprüfen Sie die Signalqualität |
AT + COPS? |
Suchen Sie den Namen des Dienstanbieters |
ATD96XXXXXXXX; |
Anruf an die spezifische Nummer, endet mit Semikolon |
AT + CNUM |
Suchen Sie die Nummer der SIM-Karte (funktioniert bei einigen SIM-Karten möglicherweise nicht) |
AN EINER |
Beantworten Sie den eingehenden Anruf |
ATH |
Hängen Sie den aktuellen eingehenden Anruf ab |
AT + COLP |
Eingehende Rufnummer anzeigen |
AT + VTS = (Nummer) |
DTMF-Nummer senden. Sie können eine beliebige Nummer auf Ihrer mobilen Tastatur für (Nummer) verwenden. |
AT + CMGR |
AT + CMGR = 1 liest die Nachricht an der ersten Position |
AT + CMGD = 1 |
Nachricht an erster Stelle löschen |
AT + CMGDA = "ALLE LÖSCHEN" |
Alle Nachrichten von der SIM löschen |
AT + CMGL = "ALL" |
Lesen Sie alle Nachrichten von der SIM-Karte |
AT + CMGF = 1 |
SMS-Konfiguration einstellen. "1" ist nur für den Textmodus |
AT + CMGS = "+91 968837XXXX" > CircuitDigest-Text
|
Sendet hier eine SMS an eine bestimmte Nummer 968837XXXX. Wenn Sie ">" sehen, geben Sie den Text ein. Drücken Sie Strg + Z, um den Text zu senden. |
AT + CGATT? |
So überprüfen Sie die Internetverbindung auf der SIM-Karte |
AT + CIPSHUT |
So schließen Sie die TCP-Verbindung, dh trennen Sie die Verbindung zum Internet |
AT + CSTT = "APN", "Benutzername", "Pass" |
Stellen Sie mit Ihrem APN und Pass-Schlüssel eine Verbindung zu GPRS her. Erhältlich beim Netzwerkanbieter. |
AT + CIICR |
Überprüfen Sie, ob die SIM-Karte ein Datenpaket enthält |
AT + CIFSR |
Holen Sie sich die IP des SIM-Netzwerks |
AT + CIPSTART = "TCP", "SERVER IP", "PORT" |
Wird zum Einstellen einer TCP-IP-Verbindung verwendet |
AT + CIPSEND |
Dieser Befehl wird verwendet, um Daten an den Server zu senden |
Hier verwenden wir die Befehle AT + CMGF und AT + CMGS, um Nachrichten zu senden.
Wenn Sie beim Empfang von Nachrichten ein GSM-Modul mit Arduino verwendet haben, können Sie mit dem Befehl + CMT: die Handynummer und die Textnachricht auf dem seriellen Monitor anzeigen. Die Textnachricht wird in der zweiten Zeile angezeigt (siehe Abbildung).
Wir werden diesen + CMT: -Befehl scannen, um zu überprüfen, ob eine Nachricht verfügbar ist oder nicht.
Schaltplan der Schnittstelle des ATMega16 GSM-Moduls
Die Verbindungen sind wie folgt
- Tx und Rx des GSM-Moduls an Rx (Pin14) bzw. Tx (Pin15) von Atmega16.
- Drücken Sie die Tasten auf PD5 (Pin19) und PD6 (Pin20).
- LCD-Anschlüsse:
- RS - PA 0
- R / W - PA1
- DE - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Erstellen des Projekts für ATmega16 mit CodeVision
Nach der Installation von CodeVisionAVR und SinaProg Software , folgen Sie den Schritten unten, um Projekt und das Schreiben von Code zu erstellen:
Bereits hochgeladen
Schritt 1. CodeVision öffnen Klicken Sie auf Datei -> Neu -> Projekt . Das Bestätigungsdialogfeld wird angezeigt. Klicken Sie auf Ja
Schritt 2. Der CodeWizard wird geöffnet. Klicken Sie auf die erste Option, dh AT90 , und klicken Sie auf OK.
Schritt 3: - Wählen Sie Ihren Mikrocontroller-Chip, hier nehmen wir Atmega16L wie gezeigt.
Schritt 4: - Klicken Sie auf USART . Wählen Sie Empfänger und Sender aus, indem Sie darauf klicken. Wie nachfolgend dargestellt:
Schritt 5: - Klicken Sie auf Alphanumerisches LCD und wählen Sie Unterstützung für alphanumerisches LCD aktivieren .
Schritt 6: - Klicken Sie auf Programm -> Generieren, Speichern und Beenden . Jetzt ist mehr als die Hälfte unserer Arbeit abgeschlossen
Schritt 7: - Erstellen Sie einen neuen Ordner auf dem Desktop, damit unsere Dateien im Ordner verbleiben. Andernfalls werden wir auf das gesamte Desktop-Fenster verteilt. Benennen Sie Ihren Ordner wie gewünscht, und ich schlage vor, zum Speichern von Programmdateien denselben Namen zu verwenden.
Wir werden nacheinander drei Dialogfelder haben, um Dateien zu speichern.
Machen Sie dasselbe mit den beiden anderen Dialogfeldern, die angezeigt werden, nachdem Sie das erste gespeichert haben.
Nun sieht Ihr Arbeitsbereich so aus.
Der größte Teil der Arbeit wird mit Hilfe des Assistenten erledigt. Jetzt müssen wir nur noch Code für GSM schreiben.
Code und Erklärung
Alle Header-Dateien werden nach dem Erstellen des Projekts automatisch angehängt. Sie müssen lediglich die Header-Datei delay.h einfügen und alle Variablen deklarieren. Der vollständige Code ist am Ende dieses Tutorials angegeben.
#einschließen
Erstellen Sie eine Funktion zum Empfangen von Daten aus dem UDR-Register. Diese Funktion gibt empfangene Daten zurück.
unsigned char receive_value (void) { while (! (UCSRA & (1 <)
Kommen Sie zu der while- Schleife, in der wir zwei if- Anweisungen erstellen, eine zum Senden von Nachrichten und eine zum Empfangen. Die Senden-Taste ist mit PIND6 von ATmega verbunden und die Empfangs-Nachrichtentaste mit PIND5.
Wenn PIND6 (Send Button) zuerst gedrückt wird, wird die if- Anweisung ausgeführt und alle Befehle zum Senden der Nachricht werden einzeln ausgeführt.
while (1) { // lcd_clear (); lcd_putsf ("Send-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Receive-> buttn 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Senden einer Nachricht…"); für (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); für (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Wenn Sie erhalten von Nachricht - Taste gedrückt wird, während (b! = ‚+‘) Schleife prüft, ob CMT - Befehl vorhanden ist oder nicht. Wenn vorhanden, wird die zweite while- Schleife ausgeführt und geht zur zweiten Zeile des Befehls und druckt die Nachricht nacheinander auf das LCD.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Receiving Msg…"); b = receive_value (); while (b! = '+') { b = receive_value (); } b = receive_value (); if (b == 'C') { b = receive_value (); … ..
Diese Schleife führt das Programm in die zweite Befehlszeile und speichert die Nachricht im Array.
while (b! = 0x0a) { b = receive_value (); } für (b = 0; b <3; b ++) { c = receive_value (); msg = c; } .. ..
Diese for- Schleife dient zur Anzeige der Meldung auf dem LCD.
für (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // PRINT IN lcd delay_ms (10); }}
Der vollständige Code mit Demo-Video ist unten angegeben. Jetzt müssen wir unser Projekt erstellen.
Erstellen Sie das Projekt
Klicken Sie wie gezeigt auf das Projekt- Symbol erstellen.
Nach dem Erstellen des Projekts wird im Ordner Debug-> Exe eine HEX-Datei generiert, die sich in dem Ordner befindet, den Sie zuvor zum Speichern Ihres Projekts erstellt haben. Wir werden diese HEX-Datei verwenden, um mit der Sinaprog-Software in Atmega16 hochzuladen.
Laden Sie den Code auf Atmega16 hoch
Schließen Sie Ihre Schaltkreise gemäß dem angegebenen Diagramm an das Programm Atmega16 an. Schließen Sie die eine Seite des FRC-Kabels an den USBASP-Programmierer an und die andere Seite wird wie unten beschrieben mit den SPI-Pins des Mikrocontrollers verbunden:
- Pin1 der FRC-Buchse -> Pin 6, MOSI von Atmega16
- Pin 2 mit Vcc von atmega16 verbunden, dh Pin 10
- Pin 5 mit Reset von atmega16 verbunden, dh Pin 9
- Pin 7 mit SCK von atmega16 verbunden, dh Pin 8
- Pin 9 mit MISO von atmega16 verbunden, dh Pin 7
- Pin 8 mit GND von atmega16 verbunden, dh Pin 11
Wir werden die oben generierte Hex-Datei mit dem Sinaprog hochladen. Öffnen Sie sie und wählen Sie Atmega16 aus dem Dropdown-Menü Gerät. Wählen Sie die HEX-Datei wie gezeigt aus dem Ordner Debug-> Exe aus.
Klicken Sie nun auf Programm und Ihr Code wird in ATmega16 Microcontroller gebrannt.
Sie sind fertig und Ihr Mikrocontroller ist programmiert. Drücken Sie einfach die Tasten, um die Nachrichten von GSM und ATmega16-Mikrocontroller zu senden und zu empfangen.
Der vollständige Code und das Demonstrationsvideo sind unten angegeben.