Mobilaus telefono pajungimas prie mikrokontrolerio

Kilo mintis pabandyti pasijungti prie mikrokontrolerio mobilų telefoną, kad pabandyti, kaip galima skambinti ir priimti skambučius, siųsti ir gauti SMS ir t.t. Tam tikslui namuose radau seną, bet veikiantį, telefoną – SIEMENS C35. Jis puikiai tinka tokiems tikslams. Problemų kėlė tik jo visiškai miręs akumuliatorius, o be jo, vien nuo pakrovėjo, telefonas neveikia.

Šis telefonas valdomas AT komandomis, kurių aprašymą nesunku rasti internete. Pirmiausiai pabandžiau pasijungti prie kompiuterio. Tai pakankamai paprasta, reikia tik suderinti RS232 lygius. Dažniausiai tam naudojama MAX232. Pasijungus prie kompiuterio jau galima iš terminalo mėginti siuntinėti įvairias komandas į telefoną ir gauti atsakymus. Kai kurios komandos iš karto aišku kaip veikia, kai kurios nelabai. Labiausiai komplikuotas SMS siuntimas. Pasirodo, tai neina padaryt parašius paprasčiausiai tekstą, kurį norima išsiųsti. SMS koduojama PDU formatu, kuris, kaip paaiškėjo, ganėtinai keistas. Čia teko nemažai pasukti galvą, kol pavyko susigaudyti. Formatas pakankamai supainiotas, net keista, kam reikėjo taip daryt. Be to, pati SMS žinutė dar perkoduojama į 7 bitų formatą. Tai daroma tam, kad žinutės ilgis gali būti 140 baitų, o perkodavus į 7 bitus, gaunama 160 simbolių. Nors teoriškai turėtų siųsti ir 8 bitų formatu, bet man to padaryt nepavyko, bent jau NOKIA žinutę gauna, tačiau pareiškia, kad atidaryti neįmanoma. Siunčiant 7 bitų formatu viskas tvarkoje. Pabandymui gana patogu naudoti konverterį, kurių ne vienas yra veikiančių tiesiog online. Parašius žinutę ir tel. nr. gaunam SMS PDU formatu.

Tolimesniems bandymams paėmiau mega8 mikrokontrolerį. Pirmiausia bandžiau Proteus simuliatoriuje. Labai patogu bandyti tokią programą, nes yra simuliuojamas realus COM portas, prie kurio ir bus realiai prijungtas telefonas. Reiškia visos komandos siunčiamos simuliatoriuje, patenka į telefoną, atsakymai irgi ateina į simuliatorių. Tai labai palengvina programavimą. Užduotis buvo padaryti, kad programa atpažintų skambinantįjį (pagal nr.), atmestų skambutį, ir išsiųstų jam atitinkamą SMS. Jei skambinančiojo numeris nežinomas, skambutis irgi atmetamas ir jam išsiunčiamas kitas SMS. SMS žinutės PDU formatu irgi buvo formuojamos programoje. Tai padaryt buvo sunkiausia. Kaip jau minėjau, PDU formatas keistas. Pvz. kam numeryje kaitalioti skaičius vietomis niekaip nesuprantu. Norint padaryti perkodavimą į 7 bitus reikėjo irgi nemažai pagalvot. Bet visgi pagaliau tai pradėjo veikt.

c35.jpg

Pabandžius telefoną pajungti realiai prie mikrokontrolerio paaiškėjo, kad niekas neveikia. Pirma kilusi mintis: kadangi naudojau vidinį mikrokontrolerio generatorių, tai galėjo būti taip, kad neatitinka RS232 greičiai. Nors pajungus prie kompiuterio viskas veikė. Pabandžius panaudoti „teisingą“ kvarcą (su kuriuo greičio paklaida – 0), pradėjo veikt. Taigi, naudojant RS232, ypač didesniais greičiais, reikia atsižvelgti į tai, kad kvarcą naudoti būtina, kitaip gali būti sunkiai paaiškinamų problemų…

Be aprašytų funkcijų bandžiau ir kitas, tai SMS nuskaitymas iš telefono, adresų knygos nuskaitymas ir naujų įrašų įrašymas, skambučių melodijų ir jų garsumo kaitaliojimas. Visa tai veikia, ir padaryti daug paprasčiau nei PDU…

This entry was posted in Elektronika, Programavimas. Bookmark the permalink.

4 Responses to Mobilaus telefono pajungimas prie mikrokontrolerio

  1. Audrius says:

    Sveikas. gal gali programos kodu pasidalinti. Darau toki projekteli kur turetu siusti sms. Tik as randu pavyzdziu PIC’ams o noreciau daryti su atmega. Dekui

  2. ReM says:

    PIC ar AVR – jokio skirtumo nėra. Juk čia grynai programinis dalykas, pavyzdys gali būti kad ir kompui, visai tas pats. Aš irgi rinkau visokius pavyzdžius. Niekas netiko, bet idėjų tai davė pakankamai. Palieku ir kitiems teisę sugaišti daugybę laiko paieškoms internete…

  3. Audrius says:

    Sveikas dar karta. Pasirasiau pagaliau programa ir ji ant proteus veikia. Bet iskilo problema jungiant prie atmegos. Reikia jungti per duomenu kabeli (kur prie pc jungias) ar teisiogiai prie telefono Tx Rx Gnd kontaktu. Dekui uz pagalba

  4. ReM says:

    Tiesiogiai. Tačiau, priklausomai nuo telefono, reikia pasižiūrėti kokie ten lygiai. Gali būti, kad ne daugiau 3,3V.

Leave a Reply

Your email address will not be published. Required fields are marked *