- Wymagane materiały
- Użyte oprogramowanie
- Moduł GSM
- Komunikacja z modułem GSM za pomocą poleceń AT
- Schemat obwodu interfejsu modułu GSM ATMega16
- Tworzenie projektu dla ATmega16 przy użyciu CodeVision
- Kod i wyjaśnienie
- Zbuduj projekt
- Prześlij kod do Atmega16
Moduły GSM są interesujące w użyciu, zwłaszcza gdy nasz projekt wymaga zdalnego dostępu. Moduły te mogą wykonywać wszystkie czynności, które mógłby wykonywać nasz zwykły telefon komórkowy, takie jak wykonywanie / odbieranie połączeń, wysyłanie / odbieranie wiadomości SMS, łączenie się z Internetem za pomocą GPRS itp. Możesz również podłączyć normalny mikrofon i głośnik do tego modułu i rozmawiać przez połączenia komórkowe. Otworzy to drzwi dla wielu kreatywnych projektów, jeśli można go połączyć z mikrokontrolerem. Dlatego w tym samouczku dowiemy się, w jaki sposób możemy połączyć moduł GSM (SIM900A) z mikrokontrolerem AVR ATmega16 i zademonstrować to wysyłając i odbierając wiadomości za pomocą modułu GSM.
Wymagane materiały
- Atmega16
- Moduł GSM (SIM900 lub dowolny inny)
- wyświetlacz LCD
- Wciskać przyciski
- Rezystory 10k, potencjometr
- Przewody łączące
- Adapter 12V
- Programator USBasp
- 10-pinowy kabel FRC
Użyte oprogramowanie
Będziemy używać oprogramowania CodeVisionAVR do pisania naszego kodu i oprogramowania SinaProg do przesyłania naszego kodu do Atmega16 za pomocą programatora USBASP.
Możesz pobrać te programy z podanych linków:
CodeVisionAVR:
SinaProg:
Zanim przejdziemy do schematów i kodów, poznajemy moduł GSM i jego działanie.
Moduł GSM
Moduł GSM może być używany nawet bez mikrokontrolera dzięki zastosowaniu trybu komend AT. Jak pokazano powyżej, moduł GSM jest dostarczany z adapterem USART, który można podłączyć bezpośrednio do komputera za pomocą modułu MAX232 lub można użyć pinów Tx i Rx do podłączenia go do mikrokontrolera. Możesz również zauważyć inne piny, takie jak MIC +, MIC-, SP +, SP- itp., Do których można podłączyć mikrofon lub głośnik. Moduł może być zasilany za pomocą adaptera 12 V przez normalne gniazdo DC.
Włóż kartę SIM do gniazda modułu i włącz go, powinieneś zauważyć zapaloną diodę LED. Teraz poczekaj około minuty i powinieneś zobaczyć czerwona (lub jakikolwiek inny kolor) dioda LED migająca raz na 3 sekundy. Oznacza to, że moduł był w stanie nawiązać połączenie z kartą SIM. Teraz możesz przystąpić do łączenia modułu z Telefonem lub dowolnym Mikrokontrolerem.
Możesz zbudować wiele fajnych projektów za pomocą modułu GSM, takich jak:
- Bezprzewodowa tablica ogłoszeń wykorzystująca GSM i Arduino
- Automatyczna sekretarka przy użyciu Arduino i modułu GSM
- Automatyka domowa oparta na GSM wykorzystująca Arduino
- Czujnik PIR i system bezpieczeństwa oparty na GSM
Sprawdź również wszystkie projekty związane z GSM tutaj.
Komunikacja z modułem GSM za pomocą poleceń AT
Jak można się domyślić, moduł GSM może komunikować się za pośrednictwem komunikacji szeregowej i rozumieć tylko jeden język, czyli „ polecenia AT ”. Cokolwiek chcesz powiedzieć lub zapytać moduł GSM, powinno to być tylko za pomocą poleceń AT. Na przykład, jeśli chcesz wiedzieć, czy Twój moduł jest aktywny. Powinieneś zapytać (wysłać) polecenie typu „AT”, a Twój moduł odpowie „OK”.
Te polecenia AT są dobrze wyjaśnione w arkuszu danych i można je znaleźć tutaj, w oficjalnym arkuszu danych. W porządku! W porządku! Jest to 271 stronicowy arkusz danych i przeczytanie go może zająć kilka dni. Dlatego poniżej podałem kilka najważniejszych poleceń AT, abyś mógł to wkrótce uruchomić.
W |
Odpowiedzi z OK na potwierdzenie |
AT + CPIN? |
Sprawdź jakość sygnału |
AT + COPS? |
Znajdź nazwę usługodawcy |
ATD96XXXXXXXX; |
Połączenie z konkretnym numerem kończy się średnikiem |
AT + CNUM |
Znajdź numer karty SIM (może nie działać na niektórych kartach SIM) |
ATA |
Odbierz połączenie przychodzące |
ATH |
Zakończ bieżące połączenie przychodzące |
AT + COLP |
Pokaż numer połączenia przychodzącego |
AT + VTS = (liczba) |
Wyślij numer DTMF. Możesz użyć dowolnego numeru na klawiaturze telefonu komórkowego dla (numer) |
AT + CMGR |
AT + CMGR = 1 czyta wiadomość na pierwszej pozycji |
AT + CMGD = 1 |
Usuń wiadomość na pierwszej pozycji |
AT + CMGDA = „DEL ALL” |
Usuń wszystkie wiadomości z karty SIM |
AT + CMGL = „WSZYSTKO” |
Przeczytaj wszystkie wiadomości z karty SIM |
AT + CMGF = 1 |
Ustaw konfigurację SMS. „1” dotyczy tylko trybu tekstowego |
AT + CMGS = „+91 968837XXXX” > Tekst CircuitDigest
|
Wysyła SMS na podany tutaj numer 968837XXXX. Gdy zobaczysz „>”, zacznij wprowadzać tekst. Naciśnij Ctrl + Z, aby wysłać tekst. |
AT + CGATT? |
Sprawdzanie połączenia internetowego na karcie SIM |
AT + CIPSHUT |
Aby zamknąć połączenie TCP, czyli rozłączyć się z Internetem |
AT + CSTT = „APN”, „nazwa użytkownika”, „hasło” |
Połącz się z GPRS za pomocą APN i klucza dostępu. Można uzyskać od dostawcy sieci. |
AT + CIICR |
Sprawdź, czy karta SIM ma pakiet danych |
AT + CIFSR |
Uzyskaj adres IP sieci SIM |
AT + CIPSTART = „TCP”, „SERVER IP”, „PORT” |
Służy do ustawiania połączenia TCP IP |
AT + CIPSEND |
To polecenie służy do wysyłania danych do serwera |
Tutaj użyjemy komendy AT + CMGF i AT + CMGS do wysyłania wiadomości.
Jeśli korzystałeś z modułu GSM z Arduino, podczas odbierania wiadomości możesz użyć polecenia + CMT: aby wyświetlić numer telefonu komórkowego i wiadomość tekstową na monitorze szeregowym. Wiadomość tekstowa pojawia się w drugiej linii, jak pokazano na rysunku.
Przeskanujemy to polecenie + CMT:, aby sprawdzić, czy wiadomość jest dostępna, czy nie.
Schemat obwodu interfejsu modułu GSM ATMega16
Połączenia będą następujące
- Tx i Rx modułu GSM odpowiednio do Rx (Pin14) i Tx (Pin15) Atmega16.
- Przyciski do PD5 (styk 19) i PD6 (styk 20).
- Połączenia LCD:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Tworzenie projektu dla ATmega16 przy użyciu CodeVision
Po zainstalowaniu CodeVisionAVR i SinaProg oprogramowanie , wykonaj poniższe czynności, aby utworzyć projekt i pisania kodu:
Już przesłane
Krok 1. Otwórz CodeVision Kliknij Plik -> Nowy -> Projekt . Pojawi się okno dialogowe potwierdzenia. Kliknij Tak
Krok 2. CodeWizard otworzy się. Kliknij pierwszą opcję, tj. AT90 , i kliknij OK.
Krok 3: - Wybierz chip mikrokontrolera, tutaj weźmiemy Atmega16L, jak pokazano.
Krok 4: - Kliknij USART . Wybierz Odbiornik i Nadajnik , klikając je. Jak pokazano niżej:
Krok 5: - Kliknij Alphanumeric LCD i wybierz Enable Alphanumeric LCD support .
Krok 6: - Kliknij Program -> Wygeneruj, zapisz i wyjdź . Teraz ponad połowa naszej pracy jest zakończona
Krok 7: - Stwórz nowy folder na pulpicie, aby nasze pliki pozostały w folderze, w przeciwnym razie będziemy rozproszeni po całym oknie pulpitu. Nazwij swój folder, jak chcesz, a sugeruję użycie tej samej nazwy do zapisywania plików programu.
Będziemy mieć trzy okna dialogowe jedno po drugim do zapisywania plików.
Zrób to samo z pozostałymi dwoma oknami dialogowymi, które pojawią się po zapisaniu pierwszego.
Teraz twój obszar roboczy wygląda tak.
Większość naszej pracy wykonujemy z pomocą Kreatora. Teraz musimy napisać kod tylko dla GSM.
Kod i wyjaśnienie
Wszystkie pliki nagłówkowe są automatycznie dołączane po utworzeniu projektu, wystarczy dołączyć plik nagłówkowy delay.h i zadeklarować wszystkie zmienne. Kompletny kod znajduje się na końcu tego samouczka.
#zawierać
Utwórz funkcję do odbioru danych z rejestru UDR. Ta funkcja zwróci otrzymane dane.
unsigned char received_value (void) { while (! (UCSRA & (1 <
Przyjdź do while pętli, w której możemy stworzyć dwa czy oświadczenia, jeden do wysyłania wiadomości i inne do odbioru. Przycisk Wyślij jest połączony z PIND6 ATmega, a przycisk odbioru wiadomości z PIND5.
Kiedy PIND6 (przycisk wysyłania) zostanie naciśnięty jako pierwszy, jeśli instrukcja zostanie wykonana, a wszystkie polecenia do wysłania wiadomości zostaną wykonane jedno po drugim.
while (1) { // lcd_clear (); lcd_putsf ("Wyślij-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Odbierz-> przycisk 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Wysyłanie wiadomości…"); for (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); for (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Jeśli przycisk Odbierz wiadomość jest wciśnięty, pętla (b! = '+') Sprawdza, czy polecenie CMT jest obecne, czy nie. Jeśli jest obecny, drugi natomiast pętla wykona i przejść do drugiego wiersza polecenia i wydrukować wiadomość na jednym LCD o jeden.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Odbieranie wiadomości…"); b = otrzymana_wartość (); while (b! = '+') { b = otrzymana_wartość (); } b = otrzymana_wartość (); if (b == 'C') { b = received_value (); ... ..
Ta pętla przenosi program do drugiej linii poleceń i przechowuje wiadomość w tablicy.
while (b! = 0x0a) { b = otrzymana_wartość (); } for (b = 0; b <3; b ++) { c = received_value (); msg = c; } .. ..
To dla pętli jest wyświetlenie komunikatu na wyświetlaczu LCD.
for (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // PRINT IN lcd delay_ms (10); }
Kompletny kod wraz z filmem demonstracyjnym znajduje się poniżej, teraz musimy zbudować nasz projekt.
Zbuduj projekt
Kliknij ikonę Zbuduj projekt, jak pokazano.
Po zbudowaniu projektu w folderze Debug-> Exe generowany jest plik HEX, który znajduje się w folderze utworzonym wcześniej do zapisania projektu. Użyjemy tego pliku HEX do przesłania do Atmega16 za pomocą oprogramowania Sinaprog.
Prześlij kod do Atmega16
Podłącz swoje obwody zgodnie z podanym schematem do programu Atmega16. Podłącz jedną stronę kabla FRC do programatora USBASP, a drugą połączysz do pinów SPI mikrokontrolera, jak opisano poniżej:
- Pin1 złącza żeńskiego FRC -> Pin 6, MOSI Atmega16
- Pin 2 podłączony do Vcc atmega16 czyli Pin 10
- Pin 5 podłączony do resetowania atmega16 czyli Pin 9
- Pin 7 podłączony do SCK atmega16 czyli Pin 8
- Pin 9 podłączony do MISO atmega16 czyli Pin 7
- Pin 8 podłączony do GND atmega16 czyli Pin 11
Załadujemy powyższy plik Hex za pomocą Sinaprog, więc otwórz go i wybierz Atmega16 z rozwijanego menu Urządzenie. Wybierz plik HEX z folderu Debug-> Exe, jak pokazano.
Teraz kliknij Program, a twój kod zostanie wypalony w mikrokontrolerze ATmega16.
Skończyłeś i Twój mikrokontroler jest zaprogramowany. Wystarczy nacisnąć przyciski, aby wysyłać i odbierać wiadomości z mikrokontrolera GSM i ATmega16.
Pełny kod i film demonstracyjny znajduje się poniżej.