Circuits4you.com

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.

  1. Netzteil anforderung
  2. Verfügbar interface UART (TTL) oder RS232
  3. Größe
  4. Preis
  5. 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.

 Quectel M10
Quectel M10

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.

 SIM300 Modem
SIM300 Modem

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.

SIM900A GSM-Modem
SIM900A GSM-Modem

GSM-Modemverbindungen mit ATmega8

 GSM-Modemschnittstelle
GSM-Modemschnittstelle

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.