Circuits4you.com

modem GSM, telefony zapewniają niski koszt, dalekiego zasięgu, kanał komunikacji bezprzewodowej dla wbudowanych aplikacji opartych na mikrokontrolerach, które wymagają łączności, a nie wysokich szybkości transmisji danych. Maszyny takie jak lodówki przemysłowe, zamrażarki, HVAC, monitoring i automaty sprzedające, serwis pojazdów, system ostrzegania, system bezpieczeństwa, pilot zdalnego sterowania itp. może skorzystać z połączenia z modemem GSM.

ten samouczek opisuje, jak używać AVR do sterowania modemem GSM za pomocą komend AT. Interfejs pomiędzy modemem a hostem jest protokołem tekstowym zwanym AT-Commands. Polecenia te umożliwiają konfigurację Modemu GSM, wybieranie numeru, wysyłanie wiadomości tekstowych itp. Ta konkretna aplikacja łączy moduł AVR ATmega8 i SIM300, SIM900 za pomocą połączenia RS232. Większość modemów GSM posiada takie same komendy AT.

spis treści

• punkty do rozważenia przy wyborze modemu gsm
* interfejs do modemów GSM.
• implementacja zestawu AT-Command.• transmisja SMS, jak wysyłać i odbierać.

rodzaje modemów GSM

istnieje wiele modemów GSM dostępnych na rynku Simcom SIM300, SIM900 i Quectel M10. pozwala przejrzeć jego funkcje

punkty do rozważenia przy wyborze Modemu GSM

istnieją modemy GSM dostępne na rynku są to SIM300, SIM900 i SIM900A, Quectel M10 jest dużo niezawodne i trochę kosztowne. SIM300 jest starszym modemem teraz staje się absolutny.

  1. wymagania dotyczące zasilania
  2. dostępny interfejs UART (TTL) lub RS232
  3. Rozmiar
  4. Cena
  5. Interfejs Audio (MIC / SPK)

wymagania dotyczące zasilania

Większość modemów GSM wymaga do działania 4.2 V i są kompatybilne z 5V i 3.3 V niektóre modemy są również dostępne w 3.3 V. w zależności od wymagań mikrokontrolera wybierz odpowiedni modem. Modem gsm wymaga więcej prądu podczas wysyłania SMS, wykonywania połączeń oraz podczas rejestracji w sieci. Pamiętaj zawsze używaj zasilacza 2 Amp. Większość nowych ludzi popełnia błędy w wyborze prawidłowego zasilania, co spowoduje problem lub reset modemu podczas wysyłania wiadomości SMS.

dostępny interfejs UART (TTL) lub RS232

ponieważ używamy AVR ATmega8, preferujemy interfejs UART TTL. Większość modemów GSM posiada interfejs RS232 i UART (TTL).

niewiele Modemu GSM jest wyposażonych w interfejs USB, również podczas łączenia Modemu GSM z komputerem za pomocą interfejsu USB. Eliminuje potrzebę konwertera USB na serial, a kilka modemów jest zasilanych przez USB, więc nie ma potrzeby zewnętrznego zasilania.

Rozmiar, Cena

rozmiar i cena każdego modemu różnią się w zależności od zastosowania zewnętrznych komponentów przez producenta.

Interfejs Audio (MIC / SPK)

interfejs Audio jest wymagany, jeśli używasz modemu GSM do wykonywania połączeń lub do interfejsu z dekoderem DTMF do tworzenia systemu IVRS.

łączenie Modemu GSM

zanim połączymy ATmega8 z modemem GSM, rzućmy okiem na różne modemy GSM. Wszystkie te modemy GSM mają możliwość GPRS nie ma potrzeby oddzielnego modemu GPRS.

jak widać w tym modemie GSM Quectel M10, nie mamy dostępu do połączenia TTL (Rx, Tx) potrzebujemy konwertera poziomu RS232 zbudowanego przy użyciu MAX232.

Quectel M10
Quectel M10

SIM300 jest absolutny. Wykorzystuje regulator liniowy LM317 do zasilania, lepiej jest mieć konwerter DC-DC lub regulator przełączania, aby uzyskać najlepsze wyniki.

Modem SIM300
Modem SIM300

będziemy używać tego modemu GSM. Ma wyjście TTL Rx,Tx . Połączenie Modemu GSM z mikrokontrolerem to właśnie połączenie tych linii Rx, Tx z mikrokontrolerami UART.

SIM900A modem GSM
SIM900A modem gsm

połączenia modemu gsm z ATmega8

połączenie Modemu GSM
połączenie Modemu GSM

polecenia AT

protokół używany przez modemy GSM do konfiguracji i sterowania jest oparty na zestawie poleceń AT. Polecenia specyficzne dla modemu GSM są dostosowane do usług oferowanych przez modem GSM, takich jak: wiadomości tekstowe, wywołanie podanego numeru telefonu, usuwanie lokalizacji pamięci itp. Ponieważ głównym celem tego kursu jest pokazanie, jak wysyłać i odbierać wiadomości tekstowe, tylko podzbiór zestawu AT-Command musi zostać zaimplementowany. European Telecommunication Standard Institute (ETSI) GSM 07.05 definiuje interfejs AT-Command dla modemów kompatybilnych z GSM. W tym samouczku wybrane polecenia są wybierane i prezentowane krótko w tej sekcji. Ten podzbiór poleceń umożliwi modemowi wysyłanie i odbieranie wiadomości SMS.

polecenia można wypróbować, podłączając modem GSM do jednego z portów COM komputera. Użyj hyper terminala lub dowolnego oprogramowania terminala szeregowego, aby wydawać polecenia AT modemowi GSM.

polecenie opis
w sprawdź, czy interfejs szeregowy i modem GSM działają.
ATE0 Wyłącz echo, mniejszy ruch na linii szeregowej.
AT + CMTI wyświetlanie nowych przychodzących wiadomości SMS.
AT + CPMS wybór pamięci SMS.
AT + CMGF format ciągu SMS, sposób ich kompresji.
AT + CMGR odczytaj nową wiadomość z podanej lokalizacji pamięci.
na+CMGS Wyślij wiadomość do danego odbiorcy.
AT + CMGD Usuń wiadomość.

Status (AT)

polecenie „AT” jest żądaniem statusu używanym do testowania, czy kompatybilny modem jest podłączony i czy interfejs szeregowy działa poprawnie.

polecenie: „AT”
odpowiedź: „OK”
podłączone i działające
odpowiedź: „ERROR”
linia szeregowa OK Modem error

Echo off (ATE0)

polecenie „ATE0” służy do konfiguracji komunikacji. Domyślnie modemy GSM są ustawione na echo każdego odebranego polecenia z potwierdzeniem.

przy wyłączonym echo,” ATE0 „modem odpowiedziałby” OK „podczas wykonywania”AT”. Polecenie echo off zmniejszy ruch na linii szeregowej. Polecenie „ATE1″ponownie włączy echo.

ATE0

zawsze trzymaj echo off „ATE0”, aby uprościć komunikację szeregową ze sterownikiem.

AT+CMGF Wybierz Format wiadomości SMS

polecenie „AT+CMGF” służy do Ustawienia formatu wejściowego i wyjściowego wiadomości SMS. Dostępne są dwa tryby:

• tryb PDU: odczyt i wysyłanie wiadomości SMS odbywa się w specjalnym zakodowanym formacie.

• Tryb tekstowy: odczyt i wysyłanie wiadomości SMS odbywa się w postaci zwykłego tekstu.

zawsze Ustaw tryb tekstowy dla uproszczenia

przy+CMGF=1

0 to tryb PDU, 1 to tryb tekstowy.

Odczyt wiadomości(AT+CMGR)

polecenie „AT+CMGR” służy do odczytu wiadomości z podanej lokalizacji pamięci. Wykonanie „AT + CMGR”zwraca wiadomość at z wybranej pamięci .

na przykład odczyt z Lokalizacji 1

AT+CMGR=1

zapis Wiadomości do pamięci(AT+CMGW)

polecenie to umożliwia użytkownikowi wysyłanie wiadomości SMS.

AT+CMGW=1 //zapisuje wiadomość do lokalizacji 1

Wyślij wiadomość SMS z magazynu (AT+CMSS)

wysyła zapisane wiadomości sms.

AT+CMSS=1 //Wyślij SMS z Lokalizacji 1

wysyłanie SMS za pomocą kodu mikrokontrolera AVR

w podprogramie main() zainicjuj szeregowe i wywołaj SendSMS (), aby wysłać 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);}

wysyłanie SMS za pomocą 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);}

teraz jest jasne, że teraz może wysyłać SMS za pomocą mikrokontrolera Arduino i AVR z prostym interfejsem szeregowym z modemem GSM.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.