Das GSM-Modem phones bietet einen kostengünstigen drahtlosen Kommunikationskanal mit großer Reichweite für eingebettete, auf Mikrocontrollern basierende Anwendungen, die Konnektivität anstelle hoher Datenraten benötigen. Maschinen wie industrielle kühlschränke, gefriergeräte, HVAC, überwachung und automaten, fahrzeug service, warnung system, sicherheit system, fernbedienung etc. könnte von der Verbindung mit einem GSM-Modem profitieren.
In diesem Tutorial wird beschrieben, wie Sie mit einem AVR ein GSM-Modem mit AT-Befehlen steuern. Die Schnittstelle zwischen Modem und Host ist ein Textprotokoll namens AT-Commands. Diese Befehle ermöglichen GSM-Modem-Setup, Wählen, SMS usw. Diese spezielle Anwendung verbindet ein AVR ATmega8- und SIM300, SIM900-Modul über eine RS232-Verbindung. Die meisten GSM-Modems haben die gleichen AT-Befehle.
Inhalt
* Arten von GSM-Modems
* Punkte, die bei der Auswahl des GSM-Modems zu beachten sind
• Schnittstelle zu GSM-Modems.
* Implementierung von AT-Befehlssatz.
* Komprimierung und Dekomprimierung von PDU-Zeichenfolgen.
* SMS-Übertragung, wie zu senden und zu empfangen.
Arten von GSM-Modems
Es gibt viele GSM-Modems auf dem Markt Simcom SIM300, SIM900 und Quectel M10. lets review auf seine Funktionen
Punkte zu beachten bei der Auswahl GSM-Modem
Es gibt Mai GSM-Modems auf dem Markt diese sind SIM300, SIM900 und SIM900A, Quectel M10 ist sehr zuverlässig und ein wenig teuer. SIM300 ist älter Modem jetzt wird es absolut.
- Netzteil anforderung
- Verfügbar interface UART (TTL) oder RS232
- Größe
- Preis
- Audio interface (MIC/SPK)
Netzteil Anforderung
Die meisten GSM modem erfordern 4,2 v zu bedienen und sie sind kompatibel mit 5 V und 3,3 V einige modems sind auch verfügbar in 3,3 V. je nach mikrocontroller anforderung wählen richtige modem. GSM-Modem erfordert mehr Strom beim Senden von SMS, Telefonieren und bei der Registrierung im Netzwerk. Denken sie daran immer verwenden 2 Amp netzteil. Die meisten neuen Leute machen Fehler bei der Auswahl der richtigen Stromversorgung, dies führt zu Problemen oder zum Zurücksetzen des Modems beim Senden von SMS.
Verfügbare Schnittstelle UART (TTL) oder RS232
Da wir AVR ATmega8 verwenden, bevorzugen wir die TTL-UART-Schnittstelle. Die meisten GSM-Modem haben RS232 und UART (TTL) Schnittstelle.
Einige GSM Modem kommt mit Usb-schnittstelle auch, wenn sie sind anbindung GSM Modem mit PC verwenden Usb-schnittstelle. Es beseitigt notwendigkeit von USB zu seriell konverter und paar modems sind USB powered so keine notwendigkeit von externen netzteil.
Größe, Preis
Größe und Preis jedes Modems variieren je nach Hersteller Verwendung externer Komponenten.
Audio Interface (MIC/SPK)
Audio interface ist erforderlich, wenn sie sind mit GSM Modem zu machen anrufe oder zu interface mit DTMF decoder für, der IVRS system.
GSM-Modem-Schnittstelle
Bevor wir ATmega8 mit GSM-Modem verbinden, werfen wir einen Blick auf verschiedene GSM-Modems. Diese alle GSM modem haben GPRS fähigkeit es ist keine notwendigkeit von separaten GPRS modem.
Wie sie sehen in diesem Quectel M10 GSM modem, Wir nicht haben zugang zu TTL (Rx, Tx) verbindung wir benötigen RS232 Level converter gebaut mit MAX232.

SIM300 ist absolute wir kann nicht erhalten diese in markt. Es verwendet LM317 Linearregler, um seine Stromversorgung zu machen, ist es besser, DC-DC-Wandler oder Schaltregler für beste Ergebnisse zu haben.

Wir werden dieses GSM-Modem verwenden. Es ist mit TTL Rx, Tx Ausgang. Die Schnittstelle des GSM-Modems mit dem Mikrocontroller verbindet nur diese Rx-, Tx-Leitungen mit dem Mikrocontroller-UART.

GSM-Modemverbindungen mit ATmega8

AT-Befehle
Das von GSM-Modems zur Einrichtung und Steuerung verwendete Protokoll basiert auf dem AT-Befehlssatz. Die spezifischen Befehle des GSM-Modems sind an die von einem GSM-Modem angebotenen Dienste angepasst, z. B.: Textnachrichten, Anrufen einer bestimmten Telefonnummer, Löschen von Speicherplätzen usw. Da das Hauptziel dieses Lernprogramms darin besteht, das Senden und Empfangen von Textnachrichten zu zeigen, muss nur eine Teilmenge des AT-Befehlssatzes implementiert werden. Das European Telecommunication Standard Institute (ETSI) GSM 07.05 definiert die AT-Command-Schnittstelle für GSM-kompatible Modems. In diesem Tutorial werden einige ausgewählte Befehle ausgewählt und in diesem Abschnitt kurz vorgestellt. Mit dieser Befehlsteilmenge kann das Modem SMS-Nachrichten senden und empfangen.
Die Befehle können ausprobiert werden, indem ein GSM-Modem an einen der COM-Ports des PCS angeschlossen wird. Verwenden hyper terminal oder jede Serielle Terminal Software zu geben at-befehle zu GSM Modem.
Befehl | Beschreibung |
AT | Überprüfen Sie, ob die serielle Schnittstelle und das GSM-Modem funktionieren. |
ATE0 | Schalten Sie Echo aus, weniger Verkehr auf der seriellen Leitung. |
AT+CMTI | Anzeige neuer eingehender SMS. |
AT+CPMS | Auswahl des SMS-Speichers. |
AT+CMGF | SMS-String-Format, wie sie komprimiert werden. |
AT+CMGR | Neue Nachricht von einem bestimmten Speicherort lesen. |
AT+CMGS | Nachricht an einen bestimmten Empfänger senden. |
AT+CMGD | Nachricht löschen. |
Status (AT)
Der Befehl „AT“ ist eine Statusanforderung, mit der getestet wird, ob ein kompatibles Modem angeschlossen ist und ob die serielle Schnittstelle ordnungsgemäß funktioniert.
Befehl: „AT“
Antwort: „OK“
Verbunden und funktioniert
Antwort: „ERROR“
Serial line OK modem error
Echo off (ATE0)
Der Befehl „ATE0“ wird zur Konfiguration der Kommunikation verwendet. Standardmäßig sind GSM-Modems so eingestellt, dass sie jeden empfangenen Befehl mit einer Bestätigung wiedergeben.
Bei ausgeschaltetem Echo „ATE0“ hätte das Modem bei Ausführung von „AT“ mit „OK“ geantwortet. Der Befehl echo off reduziert den Datenverkehr auf der seriellen Leitung. Der Befehl „ATE1“ aktiviert echo wieder.
ATE0
Immer halten echo off „ATE0“ zu vereinfachen serielle kommunikation mit controller.
AT+CMGF SMS-Nachrichtenformat auswählen
Der Befehl „AT+CMGF“ wird verwendet, um das Ein- und Ausgabeformat von SMS-Nachrichten festzulegen. Es stehen zwei Modi zur Verfügung:
• PDU-Modus: Das Lesen und Senden von SMS erfolgt in einem speziellen codierten Format.
* Textmodus: Das Lesen und Senden von SMS erfolgt im Klartext.
Der Einfachheit halber immer in den Textmodus setzen
AT+CMGF=1
0 ist der PDU-Modus, 1 ist der Textmodus.
Nachricht lesen(AT+CMGR)
Der Befehl „AT+CMGR“ wird verwendet, um eine Nachricht von einem bestimmten Speicherort zu lesen. Die Ausführung von „AT + CMGR“ gibt eine Nachricht at aus dem ausgewählten Speicher zurück.
Zum Beispiel Lesen von Position 1
AT+CMGR=1
Nachricht in Speicher schreiben(AT+CMGW)
Mit diesem Befehl kann der Benutzer SMS-Nachrichten senden.
AT+CMGW=1 //Schreibt Nachricht an Speicherort 1
SMS-Nachricht aus Speicher senden (AT+CMSS)
Sendet gespeicherte SMS.
AT+CMSS=1 //SMS von Standort 1 senden
SMS-Versand mit AVR-Mikrocontroller-Code
Initialisieren Sie in Ihrer main() -Unterroutine serial und rufen Sie SendSMS() auf, um SMS zu senden
void sendSMS(){ senddata("AT+CMGD=1"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); senddata("AT+CMGF=1"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); senddata("AT+CMGW="); USART_Transmit(34); senddata("+919812345678"); //Enter Your Mobile number USART_Transmit(34); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); senddata("Alert: Fire Detected"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); USART_Transmit(26); //Cntrl+Z delay_ms(1000); delay_ms(1000); senddata("AT+CMSS=1"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000);}void delay_ms(unsigned int de){unsigned int rr,rr1; for (rr=0;rr<de;rr++) { for(rr1=0;rr1<30;rr1++) //395 { asm("nop"); } }}void USART_Transmit(char data ){ UDR = data; /* Wait for empty transmit buffer */ while ( !( UCSRA & (1<<UDRE)) ) ; /* Put data into buffer, sends the data */}void senddata(char string){ int len,count; len = strlen(string); for (count=0;count<len;count++) { USART_Transmit(string); }}void USART_Init(){/* Set baud rate */ UBRRH = 0x00; //12, 9600 Baud At 1MHz UBRRL =12; //Set double speed enabled UCSRA |= (1<<U2X);/* Enable receiver and transmitter */ UCSRB = (1<<RXEN)|(1<<TXEN);/* Set frame format: 8data, 2stop bit */ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);//Set interrupt on RX// UCSRB |= (1<<RXCIE);}
SMS mit Arduino senden
void setup() { Serial.begin(9600);}void loop() { sendSMS(); //Send SMS delay(5000); //Wait for few seconds}void sendSMS(){ Serial.println("AT+CMGD=1"); //Delete privious sent SMS delay(1000); Serial.println("AT+CMGF=1"); //Set SMS configuration delay(1000); Serial.print("AT+CMGW="); //Write New SMS Serial.write(34); //Double quotes ASCII Code Serial.print("+9198--------"); //Enter Your Mobile number Serial.write(34); Serial.println(); //Send Crrige return delay(1000); Serial.println("Your message here"); //SMS Message to be sent delay(1000); Serial.write(26); //Cntrl+Z character code delay(1000); delay(1000); Serial.println("AT+CMSS=1"); //Send SMS from memory location 1 delay(4000);}
Jetzt ist klar, dass wir SMS mit Arduino und AVR-Mikrocontroller mit einfacher serieller Schnittstelle mit GSM-Modem.