Circuits4you.com

GSM-modemet, telefoner giver en billig, lang rækkevidde, trådløs kommunikationskanal til indlejrede, mikrocontroller-baserede applikationer, der har brug for forbindelse snarere end høje datahastigheder. Maskiner såsom industrielle køleskabe, frysere, HVAC, overvågnings-og salgsautomater, køretøjsservice, advarselssystem, sikkerhedssystem, fjernbetjening osv. kunne drage fordel af at være tilsluttet et GSM-modem.

denne vejledning beskriver, hvordan du bruger en AVR til at styre et GSM-modem ved hjælp af AT-kommandoer. Grænsefladen mellem modem og vært er en tekstprotokol kaldet AT-kommandoer. Disse kommandoer muliggør opsætning af GSM-modem, opkald, tekstbeskeder osv. Denne særlige applikation forbinder et AVR ATmega8 og SIM300, SIM900 modul ved hjælp af en RS232-forbindelse. De fleste GSM-modemer har samme AT-kommandoer.

indhold

• typer af GSM-Modem
• punkter at overveje, mens du vælger GSM-modem
• Interface til GSM-modemer.
• implementering af AT-kommando sæt.
* PDU streng kompression og dekompression.
* SMS transmission, hvordan man sender og modtager.

typer af GSM-modemer

der er mange GSM-modemer er tilgængelige i markedet Simcom SIM300, SIM900 og Kvectel M10. lad os gennemgå dens funktioner

punkter at overveje, mens du vælger GSM-Modem

der er Maj GSM-modemer tilgængelige på markedet, disse er SIM300, SIM900 og SIM900A, Kvectel M10 er meget pålidelig og lidt dyr. SIM300 er ældre modem nu bliver det absolut.

  1. strømforsyningskrav
  2. tilgængelig grænseflade UART(TTL) eller RS232
  3. størrelse
  4. pris
  5. lydgrænseflade (MIC / SPK)

strømforsyningskrav

de fleste GSM-modemer kræver 4.2 V for at fungere, og de er kompatible med 5V og 3.3 V nogle modemer er også tilgængelige i 3.3 V. afhængigt af dit mikrocontroller-krav skal du vælge korrekt modem. GSM-modem kræver mere strøm, mens du sender SMS, foretager opkald og under registrering på netværket. Husk altid at bruge 2 Amp strømforsyning. De fleste nye mennesker laver fejl ved valg af korrekt strømforsyning, dette vil medføre problem eller nulstilling af modem, mens du sender SMS.

tilgængelig grænseflade UART(TTL) eller RS232

da vi bruger AVR ATmega8, foretrækker vi TTL UART-Interface. De fleste GSM-Modem har RS232 og UART (TTL) Interface.

få GSM-Modem leveres med USB-Interface også, når du interfacing GSM-Modem med PC Brug USB-Interface. Det eliminerer behovet for USB til seriel konverter, og få modemer er USB-drevne, så der ikke er behov for ekstern strømforsyning.

størrelse, pris

størrelse og pris på hvert modem varierer afhængigt af producentens brug af eksterne komponenter.

Audio Interface (MIC/SPK)

Audio interface er påkrævet, hvis du bruger GSM Modem til at foretage opkald eller til interface med DTMF dekoder til at gøre IVRS system.

GSM-modem interface

før vi forbinder ATmega8 med GSM-modem, lad os se på forskellige GSM-modemer. Disse alle GSM-modem har GPRS-kapacitet, der er ikke behov for separat GPRS-modem.

som du ser i dette Kvectel M10 GSM-modem, har vi ikke adgang til ttl-forbindelse, vi har brug for RS232 Level converter konstrueret ved hjælp af MAKS232.

Kvektel M10
Kvektel M10

SIM300 er absolut, vi får muligvis ikke dette på markedet. Det bruger LM317 lineær regulator til at gøre sin strømforsyning, er det bedre at have DC-DC konverter eller skifte regulator for de bedste resultater.

SIM300 Modem
SIM300 Modem

vi skal bruge dette GSM-modem. Det er at have TTL rk,tk Output . Interfacing af GSM-Modem med mikrocontroller er bare at forbinde disse linjer med mikrocontrollere UART.

SIM900A GSM-modem
SIM900A GSM-modem

GSM-modemforbindelser med ATmega8

GSM-Modemgrænseflade
GSM-Modemgrænseflade

at-kommandoer

protokollen, der bruges af GSM-modemer til opsætning og kontrol, er baseret på at-kommandosættet. De GSM-modemspecifikke kommandoer er tilpasset de tjenester, der tilbydes af et GSM-modem, såsom: tekstbeskeder, opkald til et givet telefonnummer, sletning af hukommelsesplaceringer osv. Da hovedformålet med denne tutorial er at vise, hvordan man sender og modtager tekstbeskeder, skal kun en delmængde af at-kommandosættet implementeres. Det Europæiske Institut for Telekommunikationsstandard (ETSI) GSM 07.05 definerer at-Command-grænsefladen for GSM-kompatible modemer. I denne tutorial vælges nogle valgte kommandoer og præsenteres kort i dette afsnit. Denne kommandoundersæt gør det muligt for modemet at sende og modtage SMS-beskeder.

kommandoerne kan afprøves ved at forbinde et GSM-modem til en af PC ‘ ens COM-porte. Brug hyper terminal eller et hvilket som helst serielt terminalprogram til at give AT-kommandoer til GSM-Modem.

kommando beskrivelse
Kontroller, om seriel grænseflade og GSM-modem fungerer.
ATE0 slå ekko fra, mindre trafik på seriel linje.
at + CMTI visning af nye indgående SMS.
at + CPMS valg af SMS-hukommelse.
at + CMGF SMS-strengformat, hvordan de komprimeres.
at + CMGR Læs ny besked fra en given hukommelsesplacering.
at + CMGS Send besked til en given modtager.
at + CMGD Slet besked.

Status (at)

kommandoen “at” er en statusanmodning, der bruges til at teste, om et kompatibelt modem er tilsluttet, og at den serielle grænseflade fungerer korrekt.

kommando: “at”
svar:”OK”
tilsluttet og arbejder
svar: “ERROR”
Serial line OK modem error

Echo off (ATE0)

kommandoen “ATE0” bruges til at konfigurere kommunikationen. Som standard er GSM-modemer indstillet til at ekko enhver modtaget kommando tilbage med en bekræftelse.

med echo off, “ATE0”, ville modemet have svaret “OK”, når man udførte “AT”. Echo off-kommandoen reducerer trafikken på serielinjen. Kommandoen” ATE1 ” aktiverer echo igen.

ATE0

hold altid echo fra “ATE0” for at forenkle seriel kommunikation med controller.

at+CMGF vælg SMS-Beskedformat

kommandoen “at+CMGF” bruges til at indstille input-og outputformat for SMS-beskeder. To tilstande er tilgængelige:

• PDU-tilstand: læsning og afsendelse af SMS sker i et specielt kodet format.

• teksttilstand: læsning og afsendelse af SMS sker i almindelig tekst.

Indstil det altid til teksttilstand for enkelhed

at+CMGF=1

0 er PDU-tilstand, 1 er teksttilstand.

læs besked(at+CMGR)

kommandoen “at+CMGR” bruges til at læse en besked fra en given hukommelsesplacering. Udførelse af “at+CMGR” returnerer en meddelelse på fra den valgte hukommelse .

for eksempel læsning fra Placering 1

at+CMGR=1

Skriv besked til hukommelsen(at+CMGV)

denne kommando gør det muligt for brugeren at sende SMS-beskeder.

at+CMG=1 //skriver besked til placering 1

Send SMS-besked fra Lager (at+CMS)

sender gemt sms.

at+CMSS=1 //Send SMS fra Placering 1

SMS-afsendelse ved hjælp af AVR-mikrocontroller-kode

i din hoved() subroutine Initialiser seriel og ring sendSMS() for at sende SMS

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

afsendelse af SMS ved hjælp af 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 er det klart, at at vi nu kan sende sms ved hjælp af Arduino og AVR microcontroller med simpel seriel grænseflade med GSM-modem.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.