Circuits4you.com

de GSM-modem, telefoons biedt een laag kosten, lange afstand, draadloos communicatiekanaal voor embedded, microcontroller gebaseerde toepassingen die connectiviteit in plaats van hoge datasnelheden nodig. Machines zoals industriële koelkasten, diepvriezers, HVAC, controle en automaten, voertuigdienst, waarschuwingssysteem, beveiligingssysteem, afstandsbediening enz. zou kunnen profiteren van een verbinding met een GSM-modem.

deze tutorial beschrijft hoe u een AVR kunt gebruiken om een GSM-modem te besturen met AT-commando ‘ s. De interface tussen modem en host is een tekstueel protocol genaamd AT-commando ‘ s. Deze commando ‘ s inschakelen GSM modem setup, dialing, tekstberichten etc. Deze specifieke toepassing verbindt een AVR ATmega8 en SIM300, SIM900 module met behulp van een RS232 aansluiting. De meeste GSM-modems hebben dezelfde AT-commando ‘ s.

inhoud

* typen GSM-Modem
* aandachtspunten bij het kiezen van GSM-modem
* Interface met GSM-modems.
* implementatie van AT-Command set.
* PDU string compressie en decompressie.
* SMS-transmissie, hoe te verzenden en ontvangen.

typen GSM-Modems

er zijn veel GSM-modems beschikbaar in de markt Simcom SIM300, SIM900 en Quectel M10. bij het kiezen van GSM-Modem

kunnen GSM-modems op de markt verkrijgbaar zijn, dit zijn SIM300, SIM900 en SIM900A, Quectel M10 is veel betrouwbaar en een beetje duur. SIM300 is ouder modem nu wordt het absoluut.

  1. Voeding eis
  2. Beschikbaar UART interface(TTL) of RS232
  3. Grootte
  4. Prijs
  5. Audio-interface (MIC/SPK)

Voeding Eis

de Meeste GSM-modem nodig 4,2 V te bedienen en ze zijn compatibel met 5V en 3.3v sommige modems zijn ook beschikbaar in 3.3 V. afhankelijk van je microcontroller eis kies de juiste modem. GSM modem vereist meer stroom tijdens het verzenden van SMS, het maken van gesprekken en tijdens het registreren op het netwerk. Onthoud altijd gebruik 2 Amp voeding. De meeste nieuwe mensen maken fouten bij het selecteren van de juiste voeding dit zal problemen of modem reset veroorzaken tijdens het verzenden van SMS.

beschikbare interface uart (TTL) of RS232

omdat we AVR ATmega8 gebruiken, geven we de voorkeur aan TTL UART-Interface. De meeste GSM Modem hebben RS232 en uart (TTL) Interface.

weinig GSM-Modem wordt ook geleverd met een USB-Interface, wanneer u een GSM-Modem interfacen met een PC USB-Interface gebruikt. Het elimineert de noodzaak van USB naar seriële converter en weinig modems zijn USB-aangedreven, dus geen behoefte aan externe voeding.

grootte, prijs

grootte en prijs van elk modem variëren afhankelijk van het gebruik van externe componenten door de fabrikant.

Audio-Interface (MIC/SPK)

Audio-interface is vereist als u GSM-Modem gebruikt om te bellen of om te communiceren met DTMF-decoder voor het maken van IVR-systemen.

GSM Modem Interfacing

voordat we ATmega8 verbinden met GSM modem laten we eens kijken naar verschillende GSM Modems. Deze alle GSM-modem hebben GPRS-mogelijkheid er is geen aparte gprs-modem nodig.

zoals u ziet in deze Quectel M10 GSM modem, hebben we geen toegang tot TTL (Rx, Tx) verbinding.we hebben RS232 Level converter nodig die is geconstrueerd met MAX232.

Quectel M10
Quectel M10

SIM300 is absoluut. Het gebruikt LM317 lineaire regelgever om zijn voeding te maken, is het beter om gelijkstroom-gelijkstroom-convertor of schakelende regelgever voor beste resultaten te hebben.

SIM300 Modem
SIM300 Modem

we gaan dit GSM-modem gebruiken. Het heeft TTL Rx,Tx uitgang . Interfacing van GSM Modem met microcontroller is gewoon het aansluiten van deze Rx, Tx lijnen met Microcontrollers UART.

SIM900A GSM-modem
SIM900A GSM-modem

GSM-modem-verbindingen met ATmega8

GSM-Modem-Interfacing
GSM-Modem-Interfacing

AT-opdrachten

het protocol dat door GSM-modems wordt gebruikt voor de installatie en controle is gebaseerd op de AT commando set. De GSM – modem specifieke commando ‘ s zijn aangepast aan de diensten die door een GSM-modem worden aangeboden, zoals: SMS-berichten, een bepaald telefoonnummer bellen, geheugenlocaties verwijderen enz. Aangezien het belangrijkste doel van deze tutorial is om te laten zien hoe je tekstberichten verzendt en ontvangt, hoeft alleen een subset van DE AT-Command set te worden geïmplementeerd. Het European Telecommunication Standard Institute (ETSI) GSM 07.05 definieert de AT-Command interface voor GSM-compatibele modems. In deze tutorial worden enkele geselecteerde commando ‘ s gekozen, die kort in deze sectie worden gepresenteerd. Dit commando subset zal de modem in staat stellen om SMS-berichten te verzenden en te ontvangen.

de commando ‘ s kunnen worden uitgeprobeerd door een GSM-modem aan te sluiten op een van de COM-poorten van de PC. Gebruik hyper terminal of een seriële Terminal Software om AT commando ‘ s te geven aan GSM Modem.

opdracht beschrijving
controleer bij of seriële interface en GSM-modem werken.
ATE0 schakel echo uit, minder verkeer op seriële lijn.
AT + CMTI weergave van nieuwe inkomende SMS.
AT + CPMS selectie van SMS-geheugen.
AT + CMGF SMS string formaat, hoe ze worden gecomprimeerd.
op+CMGR lees nieuw bericht van een bepaalde geheugenlocatie.
AT + CMGS stuur een bericht naar een bepaalde ontvanger.
AT + CMGD bericht verwijderen.

Status (AT)

het commando “AT” is een statusaanvraag die wordt gebruikt om te testen of een compatibele modem is aangesloten en of de seriële interface goed werkt.

Commando: “AT”
antwoord: “OK”
verbonden en werkend
antwoord: “ERROR”
Serial line OK modem error

Echo off (ATE0)

het commando “ATE0” wordt gebruikt om de communicatie te configureren. GSM-modems zijn standaard ingesteld op echo van elk ontvangen commando terug met een bevestiging.

met echo uit, “ATE0″, zou het modem” OK “hebben geantwoord bij het uitvoeren van”AT”. Het echo off commando zal het verkeer op de seriële lijn verminderen. Het & Amp; Quot; ATE1 & amp; quot; commando zal echo weer inschakelen.

ATE0

houd echo altijd uit “ATE0” om seriële communicatie met controller te vereenvoudigen.

AT + CMGF select SMS Message Format

het commando “AT + CMGF” wordt gebruikt om het invoer-en uitvoerformaat van SMS-berichten in te stellen. Er zijn twee modi beschikbaar:

* PDU-modus: het lezen en verzenden van SMS gebeurt in een speciaal gecodeerd formaat.

* tekstmodus: het lezen en verzenden van SMS gebeurt in platte tekst.

Stel het altijd in op tekstmodus voor eenvoud

bij + CMGF = 1

0 is PDU-modus, 1 is tekstmodus.

gelezen bericht (AT+CMGR)

het commando “AT+CMGR” wordt gebruikt om een bericht van een bepaalde geheugenlocatie te lezen. Uitvoering van “AT + CMGR” geeft een bericht terug op uit geselecteerd geheugen .

bijvoorbeeld lezen vanaf locatie 1

AT + CMGR = 1

bericht naar geheugen schrijven (AT+CMGW)

dit commando stelt de gebruiker in staat om SMS-berichten te verzenden.

AT + CMGW = 1 / / schrijft bericht naar locatie 1

verstuur SMS bericht vanuit Opslag (AT+CMS)

verstuurt opgeslagen sms.

AT+CMS=1 //SMS verzenden vanaf locatie 1

SMS verzenden met behulp van AVR Microcontroller Code

in uw main() subroutine initialiseer serieel en bel sendSMS() om SMS te verzenden

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 verzenden met behulp van Arduino

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);}

nu is het duidelijk dat we nu SMS kunnen verzenden met behulp van Arduino en AVR Microcontroller met eenvoudige seriële interface met GSM modem.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.