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ą:
- stary telefon, najlepiej z interfejsem UART
- Arduino lub ATmega – https://nettigo.pl/products/251 lub http://nettigo.pl/products/107
- płytka stykowa – http://nettigo.pl/products/8
- kabelki do plytki stykowej, można je przylutować do padów w telefonie – http://nettigo.pl/products/13
- karta SIM
- Komputer
- Kabel do telefonu
- Cierpliwość :>
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.
(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.
Następnym krokiem jest połączenie szeregowe z modemem. użyjemy programu putty, ze względu na prostotę użycia.
Wklepujemy port szeregowy, podajemy prędkość transferu i klikamy “Open”
Powinien się nam ukazać pusty terminal, wpisujemy AT i patrzymy na efekty.
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 :>
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:
(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 :>
Aż się prosi, żeby dodać jakiś przykład wykorzystania :) Sam temat jest arcyciekawy!
Powiadomienie SMS o nowej przesyłce w skrzynce na listy? :D
i wizyta AT na widok kabelków wystających ze skrzynki na listy. get a life.
Sam zacząłem myśleć nad tym aby mieć powiadomienie SMS o przegrzaniu serwera :> mogę zaraz coś dopisać.
automatyczna sekretarka, jak np wyjedziesz na wakacje? :)
Jakby program w pythonie na kompie napisać to czemu by nie?
Ciekawe, da się to zastosować bez arduino? Ode mnie 5.
Owszem, piszesz program wysylajacy komendy AT i tyle :>
Bardzo fajny poradnik ale byłem nastawiony na to, że będzie to z gsm shieldem :) Ale i tak pjona!
GSM shielda bym w życiu nie kupił, nie za tą cenę.
Można wykorzystać moduł Siemensa TC35. Na Ebayu ceny zaczynają się od 29,85$. To już lepiej niż ponad 400 zł na shielda.
I tak gorzej niż telefon który mam za darmo/ z szuflady :>
Np. Nokia 3310 też się nada
Czy jest taka możliwość aby dzwoniąc na dany numer z odpowiedniego numeru otwierała się brama wjazdowa do garażu ?
Z dzonieniem z konkretnego numeru nie jestem pewien, zaraz sprawdzę.
EDIT: Nie, na putty pokazuje jedynie “RING”, ale za to można chyba byłoby to zrobić na SMS
EDIT2: Tu masz kod który kontroluje diody led pod arduino za pomocą komend AT, całkiem ciekawie rozwiązane – http://stackoverflow.com/questions/16055156/receiving-sms-using-gsm-and-controlling-led-using-arduino
Bardzo proste, zrobiłem coś takiego. Do arduino podpięty siemens 68i, odebranie połączenia z white-listy powoduje uruchomienie przekaźnika zwierającego klawisz na pilocie.
Teraz to przerabiam na raspi, z kilkoma dodatkowymi funkcjami.
kolego skoro nokia 3310 się nada to jak ją podłączyć pod usb
Da się – http://www.allpinouts.org/index.php/Nokia_3310
Tylko potrzebny jest konwerter FTDI lub Arduino z wyjętą ATmegą
EDIT: KOmentarz napisałem 3 razy bo nie chciały mi się one odświeżyć, już usunąłem :>
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ę.
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
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 :>
Na pewno obadam to wszystko tylko na razie nie mam czasu bo konstruuje LED Matrixa 24×8 ze zwykłych diód led :D
Nie wiesz może czy nokia 3510(bez “i”) też się nada? Bo 3310 mam w stanie idealnym, niczym nówka sztuka także szkoda mi coś do niej przylutowywać :D
Prossszz
http://www.cpkb.org/wiki/Nokia_3510_pinout
A jak z podłączeniem bezpośrednio pod arduino? Podłączamy tylko TX RX i zasilanie ofc?
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 :>
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.
Mogę to opisac jak rozpracuje moja nokie, na razie rozpracowuje wyjscia rx tx, jak to rozpracuje to moge napisac :)
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
Identyfikacji numeru na razie nie rozpracowalem, i chyba takowej nie ma, ale moznaby zrobic identyfikacje numeru w wiadomosci sms.
Jeśli chcesz, to moj skype to mrowned0, napisz, mogę na współdzieleniu pokazac jak to działa :)
Przez sms nie ma raczej sensu bo numer telefonu tylko ty znasz i to jest najlepszym zabezpieczeniem :D Dzięki ale na razie nie chcę :)
Jest mozliwość.
Włącza się ją komendą AT+CLIP=1
A widzisz, jednak jest i działa –
+CLIP: “+48(mój numer)”,145
Czyli teraz zostało znaleźć telefon z normalnym interfejsem UART i robimy np. otwieranie drzwi na telefon :>
W sumie to z arduino komunikacja powinna wygladać identycznie, prawda ? Udało się coś wymotać ? :D
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…
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.
Skoro już arduino to proponuję zapoznać się z jakąś fajną biblioteką która ułatwi operowanie na danych z modemu i wysyłanie komend, np: https://code.google.com/p/gsm-shield-arduino/
Ta biblioteka jest chyba w Arduino IDE, a Arduino było tu użyte jako konwerter USB-TTL, bo w Nokii magistrala F-Bus używa jakiegoś własnego protokołu.
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%”.
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 :>
Podałeś w Arduino 2 porty do podłączenia, wobec tego które porty z telefonu należy do niego podłączyć w tym celu?
Tx i Rx :) wpisz w guglu Nazwe telefonu i pinout, znajdziesz coś odpowiedniego. Ale nie łudź się że Ci zadziała.
Zależy od telefonu, nokia używa własnego protokołu f-bus, siemensy i SE powinny działać, właśnie szukam jakichś
EDIT:https://www.youtube.com/watch?v=43J5Ad7rg0I
Chętnych do zabawy z tanią alternatywą dla GSM shielda polecam zainteresować się starymi motorolkami: C257, C261, V175, V176, V177, C168, W220, i W375. podłączenie do arduino banalnie proste (mirco jack do wyjścia słuchawkowego). Moja motorola dziś zaczęła wysyłać mi smsy:)
tutaj mały tutorial (ang): http://jeffmurchison.com/blog/send-sms-from-your-arduino/
pozdrawiam!
Otóż to, teraz szukam jednej z nich, jak dorwę to napiszę o sterowaniu kilkoma rzeczami jednym smsem :>
Mam pytanie, jaką masz motorolę? Ja mam C261 i mi nie działa :(- dioda (Arduino) miga, ale nie wysyła sms-a.
Wiem, że minęły 3 miesiące ale masz dalej problem z C261? Ja właśnie kupiłem tak ową i działa świetnie.
Hej!
Czy ktoś może wie, czy da się to zrobić z telefonem Nokia 3120? Próbowałem go podłączyć do komputera, ale nie udało mi się. Pomocy. :)
Nie ten kabel lub cos z telefonem?
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!
A przestawiles telefon w tryb tekstowy?
Bo w PDU dość ciężko się pisze :>
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?
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ś.
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!
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
Witam mam taki problem, że po wpisaniu ATDT 123456789; zwraca mi NO CARRIER i nic nie dzwoni. Co to może być???
Zrobiłem wszystko tak jak pisze (tzn podpiąłem GND, RX i TX) i komenda at nie przeszła.