Spisu treści:

Samouczek Arduino Cellular Shield: 9 kroków (ze zdjęciami)
Samouczek Arduino Cellular Shield: 9 kroków (ze zdjęciami)

Wideo: Samouczek Arduino Cellular Shield: 9 kroków (ze zdjęciami)

Wideo: Samouczek Arduino Cellular Shield: 9 kroków (ze zdjęciami)
Wideo: Arduino 18: PŁYTKA EDUKACYJNA 2024, Lipiec
Anonim
Samouczek dotyczący tarczy komórkowej Arduino
Samouczek dotyczący tarczy komórkowej Arduino

Arduino Cellular Shield umożliwia wykonywanie połączeń telefonicznych oraz wysyłanie wiadomości tekstowych. Mózgiem tej tarczy jest SM5100B, który jest solidnym modułem komórkowym zdolnym do wykonywania wielu zadań większości standardowych telefonów komórkowych. Ta osłona wymaga użycia karty SIM do połączenia z siecią komórkową. Poniższy samouczek to samouczek dotyczący inicjowania tarczy, a także wysyłania i odbierania wiadomości tekstowych oraz połączeń telefonicznych. Aby dowiedzieć się więcej o funkcjonalności modułu, zapoznaj się z arkuszami danych na stronie produktu Sparkfun.

Krok 1: Idź po rzeczy

Idź po rzeczy
Idź po rzeczy

Będziesz potrzebować:

(x1) Ekran komórkowy (x1) Nagłówki Arduino z możliwością układania w stos (x1) Antena czterozakresowa (x1) Arduino Uno

(Zauważ, że niektóre z linków na tej stronie są linkami partnerskimi. Nie zmienia to kosztu produktu dla Ciebie. Wszelkie dochody, które otrzymuję, inwestuję ponownie w tworzenie nowych projektów. Jeśli potrzebujesz sugestii dotyczących alternatywnych dostawców, proszę o kontakt wiedzieć.)

Krok 2: Nagłówki lutowane

Nagłówki lutowane
Nagłówki lutowane
Nagłówki lutowane
Nagłówki lutowane
Nagłówki lutowane
Nagłówki lutowane

Włóż nagłówki do osłony i przylutuj je na miejsce.

Krok 3: Wstaw

Wstawić
Wstawić
Wstawić
Wstawić

Włóż szpilki nagłówka do gniazd w Arduino.

Krok 4: Sprzedawca

Sprzedawca
Sprzedawca

Połączenie kabla antenowego z modułem SM5100B zwykle nie jest zbyt dobre. Przelutuj każde połączenie kabla z modułem, aby zapewnić łączność.

Krok 5: Podłącz antenę

Podłącz antenę
Podłącz antenę
Podłącz antenę
Podłącz antenę

Przykręć antenę do kabla antenowego.

Krok 6: Włóż kartę SIM

Włóż kartę SIM
Włóż kartę SIM
Włóż kartę SIM
Włóż kartę SIM
Włóż kartę SIM
Włóż kartę SIM
Włóż kartę SIM
Włóż kartę SIM

Włóż kartę SIM do gniazda karty SIM.

Krok 7: Zainicjuj

Zainicjuj
Zainicjuj

Uruchom następujący kod na Arduino:

/*

SparkFun Cellular Shield - Przykładowy szkic Pass-Through SparkFun Electronics Napisany przez Ryana Owensa 3/Opis: Ten szkic został napisany w celu połączenia Arduino Duemillanove z Cellular Shield od SparkFun Electronics. Osłonę komórkową można kupić tutaj: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Na tym szkicu polecenia szeregowe są przekazywane z programu terminala do modułu komórkowego SM5100B; a odpowiedzi z modułu komórkowego są umieszczane w terminalu. Więcej informacji znajduje się w komentarzach do szkicu. Aby korzystać z urządzenia, należy włożyć aktywowaną kartę SIM do uchwytu karty SIM na płytce! Ten szkic wykorzystuje bibliotekę NewSoftSerial napisaną przez Mikala Harta z Arduiniana. Bibliotekę można pobrać pod tym adresem URL: https://arduiniana.org/libraries/NewSoftSerial/ Ten kod jest objęty licencją Creative Commons Attribution License. Więcej informacji można znaleźć tutaj: https://creativecommons.org/licenses/by/3.0/ (Swobodnie korzystaj z naszego kodu! Pamiętaj tylko, aby podać nam kredyt tam, gdzie jest to należne. Dzięki!) */ #include //Dołącz NewSoftSerial biblioteka do wysyłania poleceń szeregowych do modułu komórkowego. #include //Używane do manipulacji ciągami znaków char przychodzących_char=0; //Zatrzyma przychodzący znak z portu szeregowego. OprogramowanieKomórka szeregowa(2, 3); //Utwórz „fałszywy” port szeregowy. Pin 2 to pin Rx, pin 3 to pin Tx. void setup() { //Zainicjuj porty szeregowe do komunikacji. Serial.początek(9600); komórka.początek(9600); //Zacznijmy! Serial.println("Uruchamianie komunikacji SM5100B…"); } void loop() { //Jeśli znak pochodzi z modułu komórkowego… if(cell.available() >0) { przychodzący_char=cell.read(); //Pobierz znak z komórkowego portu szeregowego. Serial.print(znak_przychodzący); //Drukuj przychodzący znak do terminala. } //Jeśli znak pochodzi z terminala do Arduino… if(Serial.available() > 0) { przychodzący_znak = Serial.read(); // Pobierz znak wychodzący z terminala if(incoming_char == '~') // Jeśli jest to tylda… initial_char = 0x0D; // …przekonwertuj na znak powrotu karetki else if(incoming_char == '^') // Jeśli jest to karetka w górę… initial_char = 0x1A; // …przekonwertuj na ctrl-Z cell.print(znak_przychodzący); // Wyślij znak do modułu komórkowego. Serial.print(znak_przychodzący); // Echo z powrotem do terminala } } /* SM5100B Szybkie odniesienie do zestawu poleceń AT *O ile nie zaznaczono inaczej, polecenia AT są kończone przez naciśnięcie klawisza 'enter'. 1.) Upewnij się, że wybrano odpowiednie pasmo GSM dla twojego kraju. Dla USA pasmo musi być ustawione na 7. Aby ustawić pasmo użyj komendy: AT+SBAND=7 2.) Po włączeniu Arduino z zainstalowaną nakładką sprawdź czy moduł odczytuje i rozpoznaje kartę SIM. Przy otwartym oknie terminala i ustawionym na port Arduino i 9600 bud. włącz Arduino. Sekwencja startowa powinna wyglądać mniej więcej tak: Uruchamianie komunikacji SM5100B… +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, „ME”, 1 Komunikacja z modułem rozpoczyna się po wyświetleniu pierwszej linii. Druga linia komunikacji +SIND:10 informuje nas, czy moduł widzi kartę SIM. Jeśli karta SIM zostanie wykryta, co drugie pole to 1; jeśli karta SIM nie zostanie wykryta, każde inne pole to 0. 3.) Poczekaj na połączenie sieciowe przed rozpoczęciem wysyłania poleceń. Po odpowiedzi +SIND: 10 moduł automatycznie rozpocznie próbę połączenia z siecią. Poczekaj, aż otrzymasz następujące odpowiedzi: +SIND: 11 +SIND: 3 +SIND: 4 Odpowiedź +SIND z modułu komórkowego informuje o stanie modułu. Oto krótkie zestawienie znaczeń odpowiedzi: 0 Karta SIM usunięta 1 Karta SIM włożona 2 Melodia dzwonka 3 Moduł AT jest częściowo gotowy 4 Moduł AT jest całkowicie gotowy 5 Identyfikator zwolnionych połączeń 6 Zwolnione połączenie, którego ID= 7 Usługa sieciowa jest dostępne dla połączeń alarmowych 8 Utracono sieć 9 Dźwięk włączony 10 Pokaż stan każdej książki telefonicznej po frazie początkowej 11 Zarejestrowany w sieci Po zarejestrowaniu się w sieci możesz rozpocząć interakcję. Oto kilka prostych i przydatnych poleceń na początek: Aby wykonać połączenie: Polecenie AT - ATDxxxyyyzzzz Numer telefonu w formacie: (xxx)yyy-zzz try ---- cell.print("ATDxxxyyyzzzz"); Jeśli wykonujesz rozmowę telefoniczną, zapoznaj się z arkuszem danych urządzenia, aby podłączyć mikrofon i głośnik do tarczy. Aby wysłać wiadomość tekstową: AT polecenie - AT+CMGF=1 To polecenie ustawia tryb wiadomości tekstowej na 'text'. AT polecenie = AT+CMGS="xxxyyyzzzz"(powrót karetki)'Tekst do wysłania'(CTRL+Z) To polecenie jest nieco mylące w opisie. Numer telefonu w formacie (xxx)yyy-zzzz znajduje się w cudzysłowie podwójnym. Po zamknięciu notowań naciśnij „enter”. Następnie wprowadź tekst do wysłania. Zakończ polecenie AT, wysyłając CTRL+Z. Ta postać nie może zostać wysłana z terminala Arduino. Użyj alternatywnego programu terminalowego, takiego jak Hyperterminal, Tera Term, Bray Terminal lub X-CTU. Moduł SM5100B potrafi znacznie więcej! Sprawdź arkusze danych na stronie produktu, aby dowiedzieć się więcej o module.*/Otwórz port szeregowy w terminalu. Na komputerze Mac można to zrobić, wpisując: screen /dev/tty.usbmodemfa131 9600 (zastąp tty.usbmodemfa131 adresem szeregowym Arduino)Poczekaj, aż zwrócona zostanie następująca sekwencja: Uruchamianie komunikacji SM5100B… +SIND: 3 +SIND: 4 +SIND: 11 (Jeśli ta sekwencja nie zostanie zwrócona, sprawdź kody błędów wymienione na dole powyższego kodu i odpowiednio debuguj. Może być konieczne ustawienie modułu do użytku w Ameryce Północnej -- patrz poniżej -- zanim zarejestruje się w sieci (tj. +SIND 11))Wyślij następujące polecenia do portu szeregowego: Wyślij to do użytku w Ameryce Północnej: AT+SBAND=7 Ustaw aktualny czas - rr/mm/dd: AT+CCLK="13/05/15, 11: 02:00” Wyślij połączenie testowe: ATD4155551212

Krok 8: Wiadomości tekstowe

Wiadomości SMS
Wiadomości SMS

Pobierz i zainstaluj SerialGSM w swojej bibliotece Arduino.

Aby wysłać wiadomość tekstową, odwiedź samouczek dotyczący modułu komórkowego Tronixstuff i użyj przykładowego kodu 26.3:https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

Jeśli chcesz uruchomić przykładowy kod, aby otrzymać tekst, podłącz diodę LED do pinu 8 i połącz ją szeregowo z rezystorem 220 omów do masy.

Aby wysłać wiadomość tekstową, odwiedź samouczek dotyczący modułu komórkowego Tronixstuff i użyj przykładowego kodu 26.5:https://tronixstuff.wordpress.com/2011/01/19/tutorial-arduino-and-gsm-cellular-part-one/

Wyślij do modułu komórkowego jedno z następujących poleceń:

//włącza diodę LED #a1

//wyłącza diodę LED #a0

Krok 9: Głos

Głos
Głos
Głos
Głos
Głos
Głos

Podłącz mikrofon i głośnik do ekranu za pomocą uziemionego kabla audio. Środkowy przewód sygnałowy powinien iść do zacisków plus audio, a ekranowanie do odpowiednich zacisków ujemnych na ekranie. Kable te należy podłączyć podobnie po stronie mikrofonu i głośnika.

Aby zainicjować połączenie głosowe, prześlij następujący kod:

//**********************************************************************************

// WYKONAJ POŁĄCZENIE // // BUFOROWANIE KODU NA PODSTAWIE: // // //********************************************************************************** #include #define BUFFSIZ 90 //Set up buffer array char at_buffer[BUFFSIZ]; char buffidx; //Network state variables int network_registered; int network_AT_ready; //Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Will hold the incoming character from the Serial Port. char incoming_char=0; //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin. SoftwareSerial cell(2, 3); void setup() { //Initialize Arduino serial port for debugging. Serial.begin(9600); //Initialize virtual serial port to talk to Phone. cell.begin(9600); //Hello World. Serial.println("Starting SM5100B Communication…"); delay(1000); //Set initial network state network_registered = 0; network_AT_ready = 0; } //Read AT strings from the cellular shield void readATString(void) { char c; buffidx= 0; // start at begninning for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; return; } if (c == '\n') { continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; return; } at_buffer[buffidx++]= c; } } } //Process the AT strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("network Network Not Available"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("network Registered"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* If called for the first time, loop until network and AT is ready */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } //LET'S MAKE A PHONE CALL! if(firstTimeInOtherLoop == 1){ //Change the 10 digit phone number to whatever you wish cell.println("ATD4155551212"); firstTimeInOtherLoop = 0; } }

To receive a voice call upload the following code

//**********************************************************************************

// ANSWER A CALL // // BUFFERING CODE BASED UPON: // // //************************************************** ************************************ #include #define BUFFSIZ 90 //Ustaw tablicę bufora char at_buffer [BUFFSIZ]; buffidx zwęglania; //Zmienne stanu sieci int network_registered; int network_AT_ready; //Zmienne stanu kodu int firstTimeInLoop = 1; int pierwszyCzasInOtherLoop = 1; int x; //Zatrzyma przychodzący znak z portu szeregowego. char przychodzący_znak=0; //Utwórz „fałszywy” port szeregowy. Pin 2 to pin Rx, pin 3 to pin Tx. OprogramowanieKomórka szeregowa(2, 3); void setup() { //Zainicjuj port szeregowy Arduino do debugowania. Serial.początek(9600); //Zainicjuj wirtualny port szeregowy, aby rozmawiać z telefonem. komórka.początek(9600); //Witaj świecie. Serial.println("Uruchamianie komunikacji SM5100B…"); opóźnienie (1000); //Ustaw początkowy stan sieci network_registered = 0; sieć_AT_gotowa = 0; } //Odczytaj ciągi AT z tarczy komórkowej void readATString(void) { char c; buffidx= 0; // zacznij od początku for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; powrót; } if (c == '\n') { kontynuuj; } if ((buffidx == BUFFIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; powrót; } at_buffer[buffidx++]= c; } } } //Przetwarzaj ciągi AT void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("Sieć sieciowa niedostępna"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("Zarejestrowana sieć"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("sieć AT gotowa"); } } void loop() { /* Jeśli wywołane po raz pierwszy, wykonaj pętlę, aż sieć i AT będą gotowe */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); PrzetwarzajATString(); } } if(firstTimeInOtherLoop == 1){ //Szukaj połączenia przychodzącego if(strstr(at_buffer, "+CPAS: 3") != 0) { //Odbierz telefon cell.println("ATA"); firstTimeInOtherLoop = 0; } } }

Obraz
Obraz

Czy uważasz to za przydatne, zabawne lub zabawne? Obserwuj @madeineuphoria, aby zobaczyć moje najnowsze projekty.

Zalecana: