Własny modem GSM do Arduino

Własny modem GSM do Arduino

Witam ponownie, tym razem zajmiemy się stworzeniem możliwości wysyłania SMS i dzwonienia z arduino. Możliwości są bardzo ciekawe: powiadamianie o przesyłkach w skrzynce na listy,sterowanie oświetleniem za pomocą SMSa, włączanie ekspresu do kawy SMSem lub podłączenie arduino do pc i telefonu do syntezatora mowy, w celu otrzymania nagłówków e-maili w trakcie rozmowy :>

Potrzebne nam będą:

Zaczniemy od zdobycia telefonu. Ja posługuję się Nokią 6230i którą dostałem za darmo :>

Następnie podłączamy telefon do komputera. Mój komputer automatycznie wykrył telefon i zainstalował niezbędne sterowniki.

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

IMAG0006(chciałem złapać i telefon i screena, więc macie zdjęcie z telefonu :>)

Wśród sterowników znalazł się „USB Modem #3. Ta trójka wzięła się z poprzednich eksperymentów z modemem :>

Następnie sprawdzamy port modemu. Wchodzimy do panelu sterowania, menadżer urządzeń i w zakładce „Modemy” powinien pojawić się nasz telefon.

1

Następnym krokiem jest połączenie szeregowe z modemem. użyjemy programu putty, ze względu na prostotę użycia.

3

 

Wklepujemy port szeregowy, podajemy prędkość transferu i klikamy „Open”

Powinien się nam ukazać pusty terminal, wpisujemy AT i patrzymy na efekty.

4

Jak (nie) widać, nie pojawiają się znaki które wpisaliśmy. Jest na to sposób, wpisujemy ATE1 i modem zwróci nam wszystkie znaki które otrzyma :>

5

 

Ok, po wpisani komendy AT modem powinien odpowiedzieć OK, co oznacza, ze modem powinien działać. Dla testu zadzwońmy do samych siebie wpisując komendę ATDT (nr telefonu);

Oczywiście pamiętamy o średniku na końcu.

Tu macie pełen spis komend AT – http://www.modemhelp.net/basicatcommand.shtml

To tyle ze sprawdzania telefonu, czas na podlaczenie do Arduino.

Niestety, sam na razie nie zająłem się podłączaniem telefonu do arduino, ale w internetach można znaleźć dane techniczne telefonów, na przykład dla tej nokii 6230i datasheet można znaleźć tu – http://www.cpkb.org/wiki/Nokia_6230i_pinout

Kabelki lutujemy lub podłączamy do telefonu, z drugiej strony wpinamy w płytkę stykową, łączymy z arduino do pinów 2(rx) i 3 (tx) podłączamy nasz modem i wgrywamy na arduino szkic do GSM shielda „Make voice call”  , odpalamy serial monitor i postępujemy zgodnie z instrukcjami.

A dla was specjalnie odczyt wiadomości z telefonu – komenda AT+CMGL=”REC UNREAD”

Po jej wklepaniu pewnie zobaczycie same cyferki – spokojnie, to tylko tryb PDU widomosci, na tryb tekstowy zmieniamy komendą AT+CMGF=1.

Po zmianie trybu zobaczymy coś takiego:

6

(nieco się wkurzyłem bo do screena nie chciało mi odczytać wiadomości, uparte bydle :> )

Arduino można tutaj wykorzystać jako konwerter TTL-USB, po wyjęciu ATmegi z niej lub po napisaniu programu:

#include <SoftwareSerial.h> //dołączamy SS, dodający dodatkowe porty UART

SoftwareSerial mySerial(10, 11); // RX, TX na pinach  10 i 11

void setup() //konfiguracja
{
// Open serial communications and wait for port to open:
Serial.begin(9600);

// inicjalizujemy mySerial:
mySerial.begin(9600)
}

void loop() //główna pętla
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read()); //zapętlenie odczytu, odczyt z jednego portu idzie na drugi
}

Można też wykorzystać kabel FTDI, taki jak w starych kablach do komórek, np. kabel CA-42 lub DKU-5 (podróbki czasem nie chca działać, wyjątkiem jest Prolific PL2302)

 

To by było na tyle, jeśli mam coś poprawić to piszcie, nie usuwajcie tematu, w miarę możliwości poprawię to co jest źle i postaram się wyjaśnić nieścisłości.

Pozdrowienia i życzę sukcesów z waszymi modemami :>

 

Ocena: 4.38/5 (głosów: 68)
Nettigo - patron działu Elektronika

Podobne posty

Arduino ethernet device

Arduino ethernet device

Poniżej opisany projekt przedstawia „wrap” biblioteki EtherCard https://github.com/njh/EtherCard.Biblioteka EtherCard bardzo ładnie rozwiązuje konfigurację modułu ethernet…

55 komentarzy do “Własny modem GSM do Arduino

  • Mam do wszystkich prośbę – jeśli chcecie dać mniej niż 4 gwiazdki to ich nie dawajcie, napiszcie co mam poprawić, i jeśli nie poprawię to dopiero dajcie stosowną ocenę.

    Odpowiedz
  • Dobrze że w końcu ktoś poruszył ten temat :) Jeśli chodzi o mnie to byłbym bardzo wdzięczny jeśli ktoś opisał by obszernie kontrolowanie nokii 3310 itp. która by wysyłała i odbierała sms’y. Znalazłem dobrze opisany poradnik http://www.insidegadgets.com/2013/01/12/how-to-use-nokia-f-bus-to-send-an-sms-message/ ale niestety aż tak dobrze nie znam angielskiego aby z niego wszystko zrozumieć :D Jeśli ktoś się tego podejmie to stawiam piwo albo nawet flaszkę :D

    Odpowiedz
    • Kawałek wyżej podałem stronę, gdzie podane były wyjścia RX/TX w nokii 3310, Te wyjścia podpinamy do konwertera FTDI lub ARrduino bez ATmegi i można z niej korzystać tak jak w tym poradniku :>
      Z kolei odbieranie SMSów to wesoła sprawa, aby odczytać SMS potrzeba komendy AT+CMGL=”ALL” która wyświetli wszystkie wiadomości, lub zamiast ALL dać REC UNREAD, co wyświetli nieprzeczytane. Można by wtedy napisać zautomatyzowany program na ATmege, który wysyłałby komende przez UART, po czym szukałby jakiegoś znaku który nie pojawia się w danych wiadomości jak numer czy status wiadomości, jak np. a lub inna mala litera, po czym następnie sprawdzałby następny znak, czy jest to 0 lub 1, na podstawie tego można by określać zmienne w programie, które miałyby wpływ na jakieś inne funkcje.
      A wysyłanie w porównaniu z tym to już proste, AT+CMGF=1 a potem AT+CMGS=(numer tel), chociaż mój telefon buntuje się w trakcie wysyłania SMS dlatego tego nie opisałem :>

      Uff rozpisałem się, jeśli jeszcze jakieś pytania to wal :>

      Odpowiedz
    • Zasilania nie, tylko masę (GND) i RX/TX
      Powodzenia, dziś się przemogłem i wlutowałem sobie kabelki z sygnałami do mojej nokii, właśnie sprawdzam co z tego wyjdzie :>

      Odpowiedz
  • Super by było gdyby kolega opisał jak sterować czymś za pomocą sms.
    np. wysyłasz sms „zapal diode, 1,2,6,
    a w arduino sie zapalają te diody, a później diody zamienić na jakieś poważniejsze urządzenia.

    Odpowiedz
      • No i taki artykuł ucieszył by wielu :) Sam chętnie bym zrobił sobie centralkę alarmową z nokii i arduino :D Albo włączać czajnik elektryczny bądź inne urządzenie. A jest możliwość przy takim połączeniu w identyfikacji dzwoniącego? Powiedzmy że jak zadzwonisz ze swojego drugiego telefonu to wykona jakąś akcje typu zapali diodę czy odpali przekaźnik? A jak zadzwoni ktoś inny to nic się nie wydarzy.
        Chętnie bym „sygnałem” uruchamiał sobie komputer oraz otwierał domofon kiedy wracam do domu :D

        Odpowiedz
    • Jeszcze nie, moj kabel ftdi cos odmawia współpracy, muszę wykorzystac arduino do tego. Wieczorem moze napisze czy wyszlo :)
      EDIT: Nic nie wyszło, bo nokia używa własnego protokołu jeśli podłączy się kable wewnątrz telefonu… Muszę skombinować jakiegoś SE…

      Odpowiedz
      • Trzebabyłoby rozpracować magistralę FBUS :D powodzenia życzę, wszystko w języku angielskim i nie każdy telefon się do tego nada, więc baj baj cheap gsm shield ;). Reasumując, awykonalne to to nie jest, ale daj Ci panie Boże zdrowie.. spędzam już nad tym drugi dzień i okazuje się że żaden z 10 telefonów nie będzie współpracował ze mną w prosty sposób.

        Odpowiedz
      • Zgadza się, ale można dzięki niej napisać własny „wrapper” komend AT, albo sterować pinami arduino za pomocą sms-ów, np „Digital8 On” ustawia wyjście na high, a „Analog3 read” odczytuje nam wartość z analoga i wysyła smsa zwrotnego z surową wartością, albo np „odczyt z czujnika światła: 80%”.

        Odpowiedz
        • Podawałem już wyżej jeden gotowy projekt który po odebraniu wiadomości z zawartością „a1b1c1d1” włączał kolejno 4 diody, możnaby to lekko przerobić aby mógł wysyłać SMS zwrotny :>

          Odpowiedz
      • Mam kabelek firmy Foof, model CA-42. Udało mi się podłączyć telefon tak, że Oxygen Phone Manager II go wykrywa, można kopiować z niego kontakty, wiadomości itp. PuTTy z kolei po wpisaniu AT daje OK, po wpisaniu ATI1 wyświetla numer IMEI, po wpisaniu ATI, wyświetla: NOKIA.

        Wpisanie jakiejkolwiek innej komendy daje Error :( Tak samo miałem z Nokią 6020… Coś nie tak pewnie robię. Jakieś pomysły? Dzięki!

        Odpowiedz
  • A czy ktoś próbował przerobić kabel DKU-2 (identyczna końcówka jak DKU-5) z USB na rs232? Chcę podłączyć Nokię 6100 pod Arduino, kupiłem już max232n, kondensatory i mam zamiar sklecić układ… Czy do samego podłączenia Nokii nie potrzebuję budować żadnego układu, tylko wyprowadzić tx rx gnd z DKU-2?

    Odpowiedz
  • Dostałem z alledrogo Motorolę C261 za 1zł. Bez baterii, i ładowarki ale problemu nie ma – podłączyłem pod zasilacz ATX, dokładnie pod linię 5V. Telefon ma wbudowany jack ale w wersji micro. Jeśli ktoś był w posiadaniu tego telefonu lub podobnego i chciał postępować wg. schematu, ze strony, do której link podesłał Jarek tj.
    http://jeffmurchison.com/blog/send-sms-from-your-arduino/
    to podsyłam opis pinów (załącznik).
    Na stornie jest kod ale z drobnymi lukami. Kod ten pozwala wysyłać sms’a po przyciśnięciu przycisku ale… jeśli chcecie zrobić więcej niż jedno wejście i każde z rożną treścią w sms’ie to kod ten się nie sprawdzi. Myślę nad centralką alarmową i na razie podłączyłem przycisk – test, czujnik temperatury, czujnik ruchu – zrobiony z odświeżacza do powietrza oraz parę włączników, które umieszczę w drzwiach pomieszczenia. Na uruchomienie każdego z „czujników” dostaję innego sms’a np. „Wysoka temperatura: (odczyt w stC)”, „Otwarto drzwi nr 2” itp.
    Już wyjaśniam w czym problem z kodem – pierwszy sms jakiego wysyła centralka zostaje zapisany w jakimś buforze AT i później przy aktywowaniu drugiego z czujników dostajecie znów to samo, z mojej obserwacji aż do restartu komórki i usunięciu sms’ów ręcznie, po czym znów to samo się dzieje.
    Trzeba dodać w kodzie po wysłaniu sms’a i przerwie a przed zgaszeniem led’y na pinie 13:
    mySerial.println(„AT+CMGL=”ALL””);// odczytuje wszystkie sms’y
    delay(1000);// przerwa, ja dałem sekundę, wydaje mi się wystarczająco i działa.
    mySerial.println(„AT+CMGD=1,4”); // czyści wszystkie sms’y, nie tylko ten z indeksem 1.

    Czekam teraz na ruch, kogoś z Was aby ktoś rozpracował wysyłanie sms’ów do modemu w celu uruchomienia czegoś.

    Odpowiedz
  • Artykuł jest słaby, bo wprowadza w błąd, robi złudną nadzieję łatwego użycia starej Nokii jako gsm shieldu. Z tego co zdążyłem się już zorientować, nie da się używać AT komend wprost z mikrokontrolera poprzez rx/tx z Nokiami, bo one mają FBUS, a to inny protokół. Nawet Atmel wspomina o tym np w tym dokumencie:
    http://www.atmel.com/Images/doc8016.pdf

    Tytuł artykułu to „Własny moduł GSM do Arduino”, a niżej napisane „Niestety, sam na razie nie zająłem się podłączaniem telefonu do arduino…”. Bez komentarza!

    Odpowiedz
  • Nareszcie coś poprawiłeś, fajnie by było gdybyś wstawił więcej zdjęć

    BTW chciałem zrobić artykuł o podłączeniu tego pod Arduino ale jak to dasz zdjęcia jak podłączyć to nie będę musiał :D

    Odpowiedz

Odpowiedz

anuluj

Własny modem GSM do Arduino

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?