Serwisy partnerskie:
Close icon
Serwisy partnerskie

Odbieranie SMS-ów za pomocą komend AT przy użyciu Arduino

Kompletny poradnik opisujący jak odbierać SMS za pomocą komend AT używając Sim900 i Arduino.
Article Image
1. Praktyczny Kurs Arduino - przewodnik po artykułach składających się na kurs 2. Czym jest Arduino? 3. Porównanie Arduino z Raspberry Pi 4. Instalacja sterownika Arduino w systemie Windows 5. Generowanie pliku hex w Arduino 6. Jak wgrać bootloader w Atmega328? 7. Rozpoczęcie pracy z oprogramowaniem Arduino 8. Rozpoczęcie programowania w Arduino 9. Programowe resetowanie Arduino 10. Wprowadzenie do Arduino UNO 11. Wprowadzenie do Arduino NANO 12. Wprowadzenie do Arduino Pro Mini 13. Wprowadzenie do Arduino Mega 2560 14. Wprowadzenie do Arduino Due 15. Wprowadzenie do Arduino Lilypad 16. Wprowadzenie do ATmega328 17. Biblioteka Arduino dla Proteusa 18. Projekt płytki drukowanej Arduino UNO dla Proteus ARES 19. Biblioteka Arduino Lilypad dla Proteusa 20. Odczyt z portu szeregowego Arduino 21. Projektowanie układów LCD z Arduino 22. Łączenie klawiatury z Arduino 23. Wartość ADC na LCD przy użyciu Arduino 24. Symulacja czujnika ultradźwiękowego w Proteusie 25. Połączenie czujnika ultradźwiękowego z Arduino 26. Wiele czujników ultradźwiękowych z Arduino 27. Czujnik temperatury 18B20 z Arduino 28. Jak używać 18B20 w Proteus ISIS? 29. Łączenie LM35 z Arduino w Proteusie 30. Współpraca siedmiosegmentowego wyświetlacza z Arduino w Proteusie 31. Łączenie czujnika PIR z Arduino 32. Współpraca czujnika płomienia z Arduino 33. Interfejs NRF24L01 z Arduino 34. NRF24L01+ i Arduino - Response Timed Out 35. Połączenie RFID RC522 z Arduino 36. Komunikacja Bluetooth z Arduino przy użyciu HC05 37. Sterowanie serwomotorem za pomocą Arduino w Proteusie 38. Projekt sterowania sygnalizacją świetlną przy użyciu Arduino 39. Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino 40. Inteligentny system oszczędzania energii 41. Komunikacja USB pomiędzy Androidem i Arduino 42. Automatyka domowa z użyciem XBee i Arduino 43. Domowy system bezpieczeństwa oparty na GSM 44. Wysyłanie SMS-ów za pomocą Arduino UNO i SIM900 45. Odbieranie SMS-ów za pomocą komend AT przy użyciu Arduino 46. Projekt rozpoznawania głosu przy użyciu EasyVR Shield 47. Rozpoczęcie pracy z programem EasyVR Commander 48. Połączenie EasyVR z Arduino UNO 49. Błąd szkolenia - niepowodzenie rozpoznawania w EasyVR 50. Połączenie XBee z komputerem 51. Wprowadzenie do modułu XBee 52. Interfejs XBee z Arduino 53. Rozpoczęcie pracy z kamerą Pixy 54. Jak zainstalować oprogramowanie kamery Pixy - PixyMon 55. Aktualizacja firmware kamery Pixy do najnowszej wersji 56. Jak wytrenować kamerę Pixy za pomocą komputera 57. Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino 58. Sterowanie prędkością obrotów silnika prądu stałego za pomocą Arduino
Rozwiń cały spis treści Zwiń spis treści

Dzisiaj, jak sama nazwa wskazuje, będę pisał o tym jak odbierać SMS-y za pomocą komend AT używając SIM900 i Arduino. Zamieściłem już poradnik Wysyłanie SMS-ów za pomocą Arduino UNO i Sim900 więc teraz sprawdzimy, jak robić rzecz odwrotną. Wysyłanie SMS jest dość proste. Wystarczy napisać kilka komend AT i napisać wiadomość, którą chcemy wysłać i nacisnąć Ctrl + Z, a zostanie ona wysłana. Ale odbieranie wiadomości tekstowych na ekranie SIM900 jest trochę trudne, ponieważ teraz trzeba umieścić weryfikator, kiedy użytkownik wyśle wiadomość. Tak więc, idealnie byłoby gdybyśmy otrzymywali powiadomienie, kiedy ktoś wyślę wiadomość do modułu SIM900. Dzisiaj, szczegółowo zajmiemy się tym jak odbierać SMS-y za pomocą komend AT.

Teraz, po otrzymaniu powiadomienia, istnieje potrzeba przeczytania wiadomości, a także dowiedzenia się, kto wysłał tę wiadomość. Zatem zajmiemy się dzisiaj również tym. Sprawdzimy najpierw, czy za każdym razem, gdy ktoś wyśle wiadomość do naszego modułu SIM900, zostaniemy o tym powiadomieni, a następnie wyodrębnimy wiadomość i numer telefonu komórkowego nadawcy. Zaprojektowaliśmy ten kod po wielu wysiłkach, dlatego nie jest on darmowy. Ale ustawiliśmy bardzo niską kwotę 20 dolarów, tak że studenci inżynierii mogą również łatwo go kupić. Możemy również połączyć naszą płytkę GSM z innymi mikrokontrolerami np. mikrokontroler PIC jak również mikrokontrolerem 8051.

Zamieściłem również poradnik dot. odbierania SMS-ów z SIM900 i mikrokontrolerem PIC oraz jak wysłać SMS za pomocą mikrokontrolera PIC więc jeśli pracujemy z mikrokontrolerem PIC to trzeba rzucić na niego okiem. Zacznijmy więc od tego, jak odbierać SMS-y za pomocą komend AT przy użyciu SIM900 i Arduino.

Należy również sprawdzić bibliotekę GSM dla Proteusa. Używając tej biblioteki można łatwo symulować swój moduł GSM w Proteus ISIS. Ponadto, warto również zajrzeć do poradnika jak wysyłać SMS z Sim900D w Proteus ISIS, w którym zaprojektowałem symulację wysyłania SMS-ów w Proteus ISIS.

Odbieranie SMS-ów za pomocą komend AT przy użyciu SIM900 i Arduino

Istnieje wiele modułów GSM dostępnych na rynku, więc nie ma znaczenia, którego z nich używamy, chyba że ma w sobie moduł SIM900.

Wyjaśniłem w moim poprzednim poście, że wszystkie moduły GSM działają na komendach AT, więc tutaj przede wszystkim będziemy mieli spojrzenie na właśnie te komendy i będziemy ich używać do odbierania SMS-ów.

  1. ATE0 – służy do wyłączenia Echo nakładki (shield) GSM.
  2. AT – wyłącznie po to, aby sprawdzić, czy moduł GSM działa prawidłowo.
  3. AT + CMGF = 1 – konwertuje styl komunikatu na tekst. Innymi słowy informujemy naszą nakładkę, że oczekujemy wiadomości tekstowej.
  4. AT+CNMI=1,2,0,0,0 – zaalarmuje naszą nakładkę GSM i teraz, gdy tylko otrzyma wiadomość, automatycznie wyśle alert na port szeregowy.

Użyjemy tych czterech komend w naszym kodzie i będziemy mogli odbierać wiadomości tekstowe w nakładce GSM.

Pamiętajmy, że aby wykonać każdą z powyższych komend AT, musimy po niej wstawić Enter.

Poniżej znajduje się pierwsza faza kodu i, jak widać, w tym kodzie po prostu wysyłamy wymienione wcześniej cztery komendy szeregowo z Arduino do nakładki GSM.

Są to dwie funkcje, które pokazałem poniżej. Pierwsza z nich, to Config(), która po prostu wysyła komendy szeregowo. Następnie druga funkcja – Response(), która jest wywoływana po każdej komendzie AT, odbiera odpowiedź tej komendy AT.

Więc, tutaj mamy częściowy kod dla projektu jak odbierać SMS używając Sim900 i Arduino oraz komend AT.

void Config()
{
delay(1000);
Serial.print("ATE0r");
Response();
Serial.print("ATr");
Response();
Serial.print("AT+CMGF=1r");
Response();
Serial.print("AT+CNMI=1,2,0,0,0r");
Response();
}

void Response()
{
int count = 0;
Serial.println();
while(1)
{
if(Serial.available())
{
char data =Serial.read();
if(data == 'K'){Serial.println("OK");break;}
if(data == 'R'){Serial.println("GSM Not Working");break;}
}
count++;
delay(10);
if(count == 1000){Serial.println("GSM not Found");break;}

}
}

Odpowiedź na te komendy jest pokazana poniżej na stronie Monitor szeregowy Arduino.

Na każdą komendę AT otrzymujemy odpowiedź "OK" z nakładki GSM.


 
Teraz wiemy, że wysłaliśmy wszystkie cztery komendy AT i nasz ekran GSM jest gotowy do odbierania wiadomości tekstowych i poinformuje nas o tym.

Tak więc, gdy wyślemy wiadomość do naszej nakładki GSM, otrzyma ona powiadomienie, takie jak pokazano na poniższym rysunku:

Każda wiadomość odbierana przez moduł SIM900 zaczyna się od "+CMT", po nim znajduje się numer telefonu komórkowego nadawcy, a na końcu treść wiadomości, która w naszym wypadku brzmi "www.TheEngineeringProjects.com"

Wyodrębnijmy więc teraz numer telefonu komórkowego oraz treść tekstu z tego łańcucha CMT.

Pobieranie tekstu SMS i numeru telefonu nadawcy

Do tej pory dowiedzieliśmy się, jak odbierać SMS-y za pomocą komend AT przy użyciu Sim900 i Arduino oraz wysyłać powiadomienia przez monitor szeregowy.

Teraz musimy umieścić pewne weryfikatory w naszym kodzie, abyśmy byli w stanie uzyskać wymagane dane z tego łańcucha.

Aby to zrobić, najpierw zapiszemy ten ciąg CMT do tablicy, którą nazwałem RcvdMsg[index].

Ale przed zapisaniem danych do tego łańcucha, najpierw trzeba się upewnić, że rzeczywiście otrzymujemy żądany ciąg. Jest przecież możliwe, że otrzymujemy jakieś śmieciowe wartości.

Tak więc, umieściłem najpierw weryfikację, która szuka naszych czterech znaków "+CMT", a kiedy dostajemy te znaki na naszym terminalu szeregowym, upewniamy się, że mamy gotowy ciąg. Zrobiłem więc indeks = 0 i zacząłem odbierać ciąg.

Następną rzeczą, którą trzeba zrobić, jest upewnienie się, że mamy kompletny ciąg znaków. Była to naprawdę trudna część, ponieważ nie ma znaku końca w ciągu.

Użyłem więc do tego celu znaku "n" null. Jeśli sprawdzimy ciąg znaków, możemy zobaczyć, że otrzymujemy dwa znaki null w całym ciągu.

Umieściłem weryfikację, sprawiającą kiedy dostanę dwa znaki null. Oznacza to, że dostałem kompletny ciąg więc przestaję otrzymywać ciąg.

Po tym po prostu liczę znaki. W moim łańcuchu numer telefonu komórkowego nadawcy jest na pozycjach od 4 do 16. Zrobiłem zatem pętlę i zapisałem ją w innej tablicy. Podobnie zrobiłem dla tekstu wiadomości.

Teraz, kiedy wysyłam wiadomość po wgraniu tego końcowego kodu do mojej płytki Arduino, otrzymuję poniższy wynik na moim monitorze szeregowym.

Fajne, prawda? Tak więc, teraz mamy oddzielony cały tekst, jak również numer telefonu komórkowego nadawcy z naszego łańcucha GSM i możemy go używać gdziekolwiek chcemy.

Możemy użyć tego numeru telefonu komórkowego w kodzie poprzedniego artykułu. Może również wysłać odpowiedź z jakimś tekstem z powrotem oraz możemy przesłać komunikat nieodebranego połączenia do użytkownika. Co tylko chcemy.

Opublikuję tekst o tym jak wysłać połączenie przy użyciu SIM900 w następnym poście.

Podkreśliłem wszystkie funkcje w kodzie.

Jak zawsze powtarzam, najpierw zrozum, a potem pisz samodzielnie i popełniaj błędy, aby się nauczyć.

Wykaz elementów
Ilość
Symbol
Nazwa/opis/gdzie kupić

Artykuł Receive SMS with AT Commands using Arduino opracowano w wersji polskiej na podstawie współpracy z portalem www.theengineeringprojects.com.

1. Praktyczny Kurs Arduino - przewodnik po artykułach składających się na kurs 2. Czym jest Arduino? 3. Porównanie Arduino z Raspberry Pi 4. Instalacja sterownika Arduino w systemie Windows 5. Generowanie pliku hex w Arduino 6. Jak wgrać bootloader w Atmega328? 7. Rozpoczęcie pracy z oprogramowaniem Arduino 8. Rozpoczęcie programowania w Arduino 9. Programowe resetowanie Arduino 10. Wprowadzenie do Arduino UNO 11. Wprowadzenie do Arduino NANO 12. Wprowadzenie do Arduino Pro Mini 13. Wprowadzenie do Arduino Mega 2560 14. Wprowadzenie do Arduino Due 15. Wprowadzenie do Arduino Lilypad 16. Wprowadzenie do ATmega328 17. Biblioteka Arduino dla Proteusa 18. Projekt płytki drukowanej Arduino UNO dla Proteus ARES 19. Biblioteka Arduino Lilypad dla Proteusa 20. Odczyt z portu szeregowego Arduino 21. Projektowanie układów LCD z Arduino 22. Łączenie klawiatury z Arduino 23. Wartość ADC na LCD przy użyciu Arduino 24. Symulacja czujnika ultradźwiękowego w Proteusie 25. Połączenie czujnika ultradźwiękowego z Arduino 26. Wiele czujników ultradźwiękowych z Arduino 27. Czujnik temperatury 18B20 z Arduino 28. Jak używać 18B20 w Proteus ISIS? 29. Łączenie LM35 z Arduino w Proteusie 30. Współpraca siedmiosegmentowego wyświetlacza z Arduino w Proteusie 31. Łączenie czujnika PIR z Arduino 32. Współpraca czujnika płomienia z Arduino 33. Interfejs NRF24L01 z Arduino 34. NRF24L01+ i Arduino - Response Timed Out 35. Połączenie RFID RC522 z Arduino 36. Komunikacja Bluetooth z Arduino przy użyciu HC05 37. Sterowanie serwomotorem za pomocą Arduino w Proteusie 38. Projekt sterowania sygnalizacją świetlną przy użyciu Arduino 39. Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino 40. Inteligentny system oszczędzania energii 41. Komunikacja USB pomiędzy Androidem i Arduino 42. Automatyka domowa z użyciem XBee i Arduino 43. Domowy system bezpieczeństwa oparty na GSM 44. Wysyłanie SMS-ów za pomocą Arduino UNO i SIM900 45. Odbieranie SMS-ów za pomocą komend AT przy użyciu Arduino 46. Projekt rozpoznawania głosu przy użyciu EasyVR Shield 47. Rozpoczęcie pracy z programem EasyVR Commander 48. Połączenie EasyVR z Arduino UNO 49. Błąd szkolenia - niepowodzenie rozpoznawania w EasyVR 50. Połączenie XBee z komputerem 51. Wprowadzenie do modułu XBee 52. Interfejs XBee z Arduino 53. Rozpoczęcie pracy z kamerą Pixy 54. Jak zainstalować oprogramowanie kamery Pixy - PixyMon 55. Aktualizacja firmware kamery Pixy do najnowszej wersji 56. Jak wytrenować kamerę Pixy za pomocą komputera 57. Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino 58. Sterowanie prędkością obrotów silnika prądu stałego za pomocą Arduino
Rozwiń cały spis treści Zwiń spis treści
AUTOR
Źródło
www.theengineeringprojects.com
Udostępnij
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"