Projekto tikslas
Pagaminome GSM signalizaciją, kuri įsilaužimo atveju siųs SMS arba skambins nustatytu numeriu. Taip pat yra iki 3A išėjimas sirenai. Šis projektas skirtas visiems pradedantiems (ir ne tik) AT komandų srityje. GSM signalizacija universali – gali būti naudojama: automobilyje, namuose, biure, sode ir kt.
AT komandos – kas tai?
AT komandos – tai komandos, kuriomis galima valdyti mobilųjį telefoną per duomenų perdavimo kabelį. Yra bendros AT komandos, kurios tinka visiems telefonams, bei kiekvienas telefonas turi ir savo specifines komandas.
Didelis įvairių telefono modelių AT komandų archyvas yra surinktas šiame puslapyje.
Geriausias būdas išsiaiškinti, ar veikia AT komanda, išbandyti ją naudojant duomenų perdavimo kabelį - pasijungus telefoną prie personalinio kompiuterio, pasileisti Hyperterminal programą ir, jeigu įvestą komandą palaikys prijungtasis mobilus telefonas, jis atsiųs atsakymą OK.
AT komandų rinkinys
AT komandų lentelę rasite žinynų rubrikoje: http://www.elektronika.lt/reference/theme/276/1920/.
Teorinis įvadas
SMS kodavimas į PDU formatą
Jei yra būtinybė siųsti dinamines žinutes, čia galima sugeneruoti savo SMS į PDU formatą. Sugeneruotą kodą galima bus panaudoti siunčiant SMS žinutę. Įvedę SMS centro numerį; gavėjo, kuriam siųsite, numerį; kodavimą („Siemens C55“ veikia bet kuris); tekstą, kurį norite nusiųsti, ir spaudžiate „Užkoduoti“.
Turėjo gautis AT komanda su skaičiais. Jei paspausite „Užkoduoti“, nieko netaisę – gausite tokį kodą:
AT+CMGW=20 079173x0xxxxxxFx11000B9173x0xxxxxxFx0000AA06D4F29C1E9E03
// čia yra komanda įrašyti SMS į SIM kortelę
AT+CMGW=20
// čia yra oktetų skaičius gaunamas užkodavus SMS
=20
// skaičių seka yra užkoduota SMS žinutė PDU formate
[0791...E03]
AT komandos siuntimas per „Hyperterminal“ į mobilųjį telefoną
Sugeneruojame SMS žinutės PDU kodą, bandymui panaudosime:
SMSC: +37011111111
gavėjas: +37011111111
SMS tekstas: Testas
Prijungiame telefoną prie COM porto per duomenų kabelį. Nustatome komunikacijos parametrus:
DĖMESIO: „Siemens C35“ telefonas dirba tik prie 19200 boudrate!!!
Terminalo lange įvedame raides AT, jei telefonas atsako, jis atsiųs atsakymą OK.
Dabar įvedame komandą kuri išsaugos SMS žinutę SIM kortelėje:
//įvedus paspaudžiame ENTER atsiranda ženkliukas „>“
AT+CMGW=20
// nukopijavus ar įvedus skaičius spaudžiame CTRL+Z
>07917310111111F111000B917310111111F10000AA06D4F29C1E9E03
// telefonas atsiunčia atsakymą, kad SMS įrašyta
+CMGW: 4
Taip atrodo Terminale nusiųsta komanda:
Na, o jei SMS reikia išsiųsti, viskas tas pats, tik reikia kitos komandos:
//įvedus paspaudžiame ENTER atsiranda ženkliukas „>“
AT+CMGS=20
// nukopijavus ar įvedus skaičius spaudžiame CTRL+Z
>07917310111111F111000B917310111111F10000AA06D4F29C1E9E03
// telefonas atsiunčia atsakymą, kad SMS išsiųsta
+CMGW: 4
PDU formato atkodavimas į SMS
Nuskaičius SMS žinutę iš mobilaus telefono, Hyperterminal programoje atsiranda SMS žinutė, užkoduota PDU formate. Nukopijavus tą kodą, galima atkoduoti visus joje saugomus duomenis:
Principinė GSM signalizacijos schema
Schemą suprojektuota programa „Eagle 4.13“. Ši schema yra universali ir gali būti realizuota keliais skirtingais variantais. Schema turi vieną valdomą iki 3 A jėgos grandinę sirenai, 4 LED diodus indikacijai, vieną sisteminį LED, abipusį ryšį su mobiliuoju telefonu, bei 4 (-) tipo įėjimus. Mikrovaldiklis PIC16F84A-20 dirba 10 MHz dažniu.
Jei planuojate daryti mobilaus telefono akumuliatoriaus krovimo sistemą, reikia pagalvoti apie įtampos lygintuvą IC2, panaudojus L7805 jei telefono nekraunate, tai srovė nėra didelė, dėl to jis nekaista, bet įjungus krovimą, įtampa išaugo ir jis pradėjo kaisti, teko uždėti radiatorių, bet dėl viso pikto panaudokime 78S05 tipo lygintuvą, kuris atlaiko iki 2 A srovę. R5 2K7 varža skirta sumažinti įtampa telefono Rx įvade, nes padavus tiesiogiai 5 V impulsą, persikrauna telefono procesorių ir išjungia telefoną.
Panaudotos detalės:
C1 – 100n
C2 – 220u/16v
C3–C4 – 22p
C5 – 100u/16v
IC1 – PIC16F84AP-20
IC2 – 7805 (78S05)
LED1 – 5 mm (sisteminis)
LED2–LED5 – 3 mm (informaciniai)
Q1 – 10 MHz XT
Q3 – BD375
R5 – 2K7
R2,R7–R11 – 1k0
R1,R12–R14 – 4K7
X2–X3 – AK300/3
X4–X6 – AK300/2
Montažinė GSM signalizacijos schema
Suarchyvuoti visi schemos ir montažo („Eagle 4.11“) failai atsisiuntimui.
GSM signalizacijos panaudojimo būdai
Šio metu yra sukurtos pirmos dvi programinės įrangos versijos. Sistemai buvo panaudotas „Siemens C55“ mobilusis telefonas, kadangi jis gali dirbti 9600 bps RS232 ryšio greičiu, nes PIC16F84A maksimaliai gali dirbti tik 9600 bps RS232 sąsajos greičiu ( „Siemens C35i“ dirba prie 19200 bps!!!).
GSM signalizacija v0.1.0 (skambutis iš 4 zonų)
- 4 nepriklausomi įėjimai.
- 1 įėjimas su vėlinimu (durims).
- SMS ataskaita aktyvavus sistemą.
- LED ataskaita, į kurią zona buvo įsilaužta.
- Sisteminis LED.
- Jei sistemoje yra paveikusių įėjimų sistema signalizuoja tankiai mirksėdama Sisteminį LED.
- Galimybė redaguoti 1 įėjimo vėlinimo laiką.
- Galimybė redaguoti sistemos laukimo laiką prieš aktyvuojant.
- Galimybė redaguoti laiką tarp pakartotino skambinimo.
- Galimybė keisti gavėjo telefono numerį.
- Galimybė keisti ataskaitos SMS tekstą.
- Išėjimas sirenai.
- Galimybė redaguoti sirenos kaukimo laiką.
Pirmoji sistemos versija, buvo skirta tiems, kas nori taupyti pinigus.
Sistema turi 4 (-) įėjimus, kuriuos paveikus yra skambinama į užprogramuotą SIM kortelėje esantį numerį. Vienas įėjimas turi vėlinimo funkcija (galima koreguoti laiką), jis skirtas pajungti duris, kad atidarius galima būtų išjungti GSM modulį nesukėlus aliarmo. Sistema įjungiama įjungus maitinimo šaltinį. Sistema suderina telefono parametrus (išjungia: garsą, vibro skambuti, sumažina iki minimumo garsiakalbio garsą pokalbio metu). Tada sistema patikrina ar visos zonos yra tvarkingos, jei ne sisteminis LED pradeda mirksėti tankiai, suradus paveiktą zoną ir ja atitaisius sistema pradeda skaičiuoti užrakinimo laiką (galima derinti), sistemai užsirakinus nusiunčiama SMS žinutė savininkui, kad signalizacija aktyvi. Sisteminis LED pradeda mirksėti kas 1 sekundę.
Paveikus Nr.1 įėjimą, pradedamas skaičiuoti laikas, per kurį vartotojas turi išjungti signalizacijos maitinimą. Jei to nepadaroma per nustatytą laiką (galima derinti), sistema skambina sistemos savininkui. Paveikus bet kurį įėjimą, sistema parodo, kuris įėjimas buvo paveiktas, uždegdama jiems priskirtus LED diodus (sistema atsimena tol kol ji nebus perkrauta). Jei sistemos įėjimas yra paveiktas ir jis neatsistato (pav., langas atidarytas), sistema skambins savininkui, ir po nustatyto laiko vėl ir vėl skambins, tol kol nebus atstatyta į normalią padėtį. Jei įėjimas buvo paveiktas impulsu (atidarytas ir vėl uždarytas langas), sistema skambins savininkui į mobilųjį telefoną tik tol, kol bus paveiktas įėjimas. Šiuo atveju skambins tik vieną kartą, bet bus uždegtas to įėjimo informacinis LED ir galima bus matyti, kur buvo įsilaužta.
Suveikus bet kuriam įėjimui - suveikia sirena, jei įėjimas paveiktas neatsistato į normalią padėtį, sirena kaukia be perstojo, kol atsistato įėjimas ar išjungiama sistema. Jei atsistato - kaukia nustatytą laiką (galimybė redaguoti).
Naudojant IC-PROG programa galima prieš keliant programą suderinti vėlinimus kurie bus įrašyti į vidinį PIC EEPROM:
- 1 – 00h adresas: Sistemos aktyvavimo laikas, po sistemos įjungimo. Reikšmės „Decimal“ laukelyje įrašomas sekundžių kiekis, nuo 1–255 s.
- 2 – 01h adresas: Įėjime Nr.1 aktyvumo delsa, kuri leidžia išjungti sistemą per tam tikrą laiką (Durų pajungimas). „Decimal“ laukelyje įrašykite laiką sekundėmis, kiek laiko užteks atidarius duris išjungti sistemą, nuo 1–255 s.
- 3 – 02h adresas: Jei įėjimas paveiktas, sistema pirmą kartą praneša savininkui, ir visą laiką po nustatyto laiko pakartoja pranešimą. Čia galima nustatyti laiką po kiek sekundžių pakartoti signalizavimo ciklą, „Decimal“ laukelyje nuo 1–255 s (patartina palikti bent 20 s tarpą, nuo to priklausys kaip dažnai skambins ar rašys SMS).
- 4 – 03h adresas: Sirenos kaukimo laikas jei paveiktas jutiklis atsistatė į pradinę padėtį. Vienas vienetas atitinka 2 sekundes. Todėl įrašius 30 reiškia, kad sirena kauks 60 s. Nuo 1–255vnt., nuo 2 s – 510 s. „Decimal“ laukelyje įrašome vienetų skaičių nuo 1–255 vnt.
Pagal nutylėjimą, programoje naudojami vėlinimai jau yra nustatyta taip:
- 1 – 20 sekundžių.
- 2 – 20 sekundžių.
- 3 – 30 sekundžių.
- 4 – 30 (30x2, 60 sekundžių).
GSM signalizacija v0.1.1 (skambutis iš 4 zonų)
Ši versija yra tokia pati kaip v0.1.0 tik priduodant signalizaciją, pridavimo ataskaitos forma yra ne SMS žinutė, bet sistema „pamajakina“ balso pašto numeriu nustatytu telefono numeriu.
Ši versija skirta labai taupantiems pinigus.
GSM signalizacija v0.2.0 (4 skirtingi SMS iš 4 zonų)
Ši programos versija yra analogiška v0.1.0 versijai tik vietoj skambučių sistema siunčia SMS žinutes.
Žinutės yra saugomos SIM kortelėje todėl lengvai galima bus keisti gavėjo numerį, siunčiamą tekstą. Kiekvienai iš keturių Zonų galima pasidaryti skirtingus tekstus: „Virtuvė“, „Miegamasis“, „įsilaužta pro langą“ ir t. t.
Ši versija naudingesnė, jei yra aktualu žinoti kas vyksta objekte.
Geriausia turėti SIM kortelę, su kuria galite siųsti nemokamus SMS.
Šiai programinei įrangai reikalavimai yra tokie patys kaip ir v0.1.0 versijoje. Dėl to reikės atlikti visus darbus kaip ir su pirmąja versija.
- Galima siųsti SMS keturiems skirtingiems numeriams, priklausomai nuo paveikto įėjimo. Tai priklauso kaip bus išsaugota SMS.
Telefono ir SIM kortelės nustatymai
Pasigaminus schemą, reikia paruošti telefoną bei SIM kortelę darbui. Abiem programos variantams, tiek su skambinimu, tiek su SMS, reikalingi vienodi nustatymai, pateikti žemiau:
- Įdedame SIM kortelę į telefoną.
- Įjungiame telefoną.
- Išjungiame SMS ataskaitos funkciją.
- Ištriname visas SMS žinutes (inbox, outbox ir t.t.).
- Įvedame telefono numerį kuriam sistema skambins ar rašys SMS, išsaugome į SIM kortelės adresų knygą.
- Sukuriame naują SMS, įrašę tekstą kurį siųs paveikus 1 įėjimui. Pvz.: „Atidarytos durys“, „Suveikė pirma zona“ ir t. t.
- Išsiunčiame parašytą SMS į naujai įrašytą numerį.
- Kai SMS žinutė išsiusta, išsaugome ją į telefoną. Žinutė bus išsaugota kaip nr.1. SIM kortelės OUTBOX dėžutėje.
- Sukuriame vėl naują SMS. Įrašome tekstą kuri norime gauti paveikus 2 įėjimui.
- Išsiunčiame SMS tam numeriui kuriam bus siunčiami SMS paveikus 2 įėjimui.
- Kai žinutė išsiusta išsaugome ją į OUTBOX dėžutę.
- Sukuriame vėl naują SMS. Įrašome tekstą kuri norime gauti paveikus 3 įėjimui.
- Išsiunčiame SMS tam numeriui kuriam bus siunčiami SMS paveikus 3 įėjimui.
- Kai žinutė išsiusta išsaugome ją į OUTBOX dėžutę.
- Sukuriame vėl naują SMS. Įrašome tekstą kuri norime gauti paveikus 4 įėjimui.
- Išsiunčiame SMS tam numeriui kuriam bus siunčiami SMS paveikus 4 įėjimui.
- Kai žinutė išsiusta išsaugome ją į OUTBOX dėžutę.
- Sukuriame vėl naują SMS. Įrašome tekstą kuri norime gauti, kai signalizacija bus aktyvuota po sistemos įjungimo. Pvz.: „GSM signalizacija aktyvuota...“.
- Išsiunčiame SMS tam numeriui kuriam bus siunčiami SMS aktyvavus sistemą.
- Kai žinutė išsiusta išsaugome ją į OUTBOX dėžutę.
Žinučių gavėjas gali būti vienas arba 4 skirtingi numeriai (priklauso nuo numerio, kuris yra išsaugotas siunčiamoje SMS žinutėje). Žinučių turinį galima redaguoti ir išsaugoti OUTBOX dėžutėje.
Svarbu nepakeisti žinučių eiliškumo!!!
SMS žinučių išsidėstymas OUTBOX dėžutėje:
- SMS Nr. 1 – 1 Zona.
- SMS Nr. 2 – 2 Zona.
- SMS Nr. 3 – 3 Zona.
- SMS Nr. 4 – 4 Zona.
- SMS Nr. 5 – pranešimas, kad sistema aktyvuota.
Likusieji nustatymai:
- Pakeičiame BALSO PAŠTO numerį į tą kuriuo reiks skambinti paveikus įėjimams. (Jei programinė įranga v0.1.0).
- Išjungiame ekrano apšvietimą.
- Išjungiame telefoną, išimame akumuliatorių, įdedame atgal ir įjungiame telefoną.
- Patikrinkite ar neišsitrynė nustatytas balso pašto numeris.
Telefonas yra paruoštas darbui. Įvykdžius šiuos reikalavimus, sistema turi pradėti dirbti, be klaidų.
Sistemos paleidimas
Sujungus GSM sistemą ir įjungus maitinimo šaltinį, sistema patikrina ar sistema pasiruošusi aktyvuoti signalizaciją. Jei aktyvacijos metu buvo surastas paveiktas įėjimas(-ai), sistema tai signalizuoja tankiai junginėdama „Sisteminį LED“. Signalizacija laukia kol bus surastas(-i) paveikti įėjimai. Sistemai patikrinus, kad paveiktos zonos buvo sutvarkytos, pradedamas skaičiuoti aktyvavimo laikas, „Sisteminis LED“ dega pastoviai.
Praėjus aktyvavimo laikui, sistema atsiunčia savininkui SMS ataskaitą (SMS Nr.5), kad sistema buvo sėkmingai aktyvuota, „Sisteminis LED“ pradeda mirksėti lėtai.
Įsilaužimo signalizavimas
Paveikus įėjimą, signalizacija įjungia sirenos išėjimą, įjungia įėjimui priklausantį „Informacinį LED“, išsiunčia SMS ar skambina (priklauso nuo programinės įrangos versijos). Jei įėjimas liko paveikęs sistemą, pakartoja signalizavimo ciklą iš naujo, nustojus veikti įėjimui sistema išjungia sirenos išėjimą po nustatyto laiko. Jei „vienu“ metu paveikiami keli įėjimai, signalizacija užfiksuos tik vieną įėjimą, kuris buvo paveiktas pirmiausiai.
Sistemos atjungimas
Prijungus prie įėjimo Nr.1 duris, yra galimybė turėti vėlinimą. Per tą laiką, kol sistema lauks, galima spėti atjungti sistemos maitinimo šaltinį, taip išjungiant sistemą. Vėlinimo laiką pasiskaičiuokite prieš įkraudami programą į mikrovaldiklį. Laiko turi užtekti, kad spėtumėte pasiekti slaptą išjungimą. Sistemos išjungimui užtenka atjungti sistemos maitinimo šaltinį.
Programinė įranga
- GSMv0.1.0 (10 MHz, su skambinimo funkcija).
- GSMv10.1.1 (10MHz, „pamajakina“ priduodant).
- GSMV0.2.0 (10MHz, su SMS funkcija).
Programinės įrangos versija, skirta PIC mikrovaldikliams, kurie dirba 4 MHz dažniu (schemoje turi būti ir 4 MHz kvarcas):
Visiems turintiems idėjų, kaip galima patobulinti šią sistemą, ar kitaip galintys padėti, prašome pasisakyti forume (arba „Elektronika.lt“ forume).