У претходним водичима смо научили како повезати ГПС модул са рачунаром и како пратити возило помоћу ГСМ-а и ГПС-а. Такође смо направили систем за упозоравање на несреће у возилу користећи Ардуино и акцелерометар. Овде поново градимо исти пројекат, али овај пут ће се за откривање саобраћајне незгоде користити МСП430 лансирна рампа и сензор вибрација. Дакле, овај пројекат ће такође рећи о повезивању сензора вибрације са МСП430 лансирном плочом. Овде можете пронаћи још пројеката МСП430.
Овде модул сензора за вибрације детектује вибрације возила и шаље сигнал на лансирну плочу МСП430. Тада МСП430 преузима податке са ГПС модула и шаље их корисничком мобилном телефону путем СМС-а користећи ГСМ модул. ЛЕД ће такође светлити као сигнал за узбуну, овај ЛЕД може бити замењен неким алармом. Локација незгоде се шаље у облику везе Гоогле Мап, изведене из географске ширине и дужине из ГПС модула. Погледајте демо видео на крају.
![]()
ГПС модул шаље податке који се односе на положај праћења у реалном времену и шаље толико података у НМЕА формату (погледајте снимак екрана испод). НМЕА формат се састоји од неколико реченица, у којима нам треба само једна реченица. Ова реченица почиње од $ ГПГГА и садржи координате, време и друге корисне информације. Овај ГПГГА се односи на податке о поправљању система глобалног позиционирања. Овде сазнајте више о НМЕА реченицама и читању ГПС података.
Координате можемо извући из $ ГПГГА низа бројањем зареза у низу. Претпоставимо да нађете $ ГПГГА низ и сачувате га у низу, а затим Латитуде можете пронаћи након два зареза, а Лонгитуде након четири зареза. Сада се та географска ширина и дужина могу ставити у друге низове.

Испод је $ ГПГГА стринг, заједно са његовим описом:
$ ГПГГА, 104534.000,7791.0381, Н, 06727.4434, Е, 1,08,0.9,510.4, М, 43.9, М,, * 47 $ ГПГГА, ХХММСС.ССС, ширина, Н, дужина, Е, ФК, НОС, ХДП, надморска висина, М, висина, М,, подаци о контролној суми
|
Идентификатор |
Опис |
|
$ ГПГГА |
Подаци о поправкама система глобалног позиционирања |
|
ХХММСС.ССС |
Време у сатима минутним секундама и милисекундама. |
|
Географска ширина |
Ширина (координата) |
|
Н. |
Правац Н = Север, С = Југ |
|
Земљописна дужина |
Географска дужина (координата) |
|
Е. |
Правац Е = Исток, З = Запад |
|
ФК |
Исправите податке о квалитету |
|
НОС |
Број сателита који се користе |
|
ХДП |
Хоризонтално разређивање прецизности |
|
Домет |
Надморска висина (метри изнад нивоа мора) |
|
М. |
Метар |
|
Висина |
Висина |
|
Контролна сума |
Подаци о контролној суми |
ГСМ модул
СИМ900 је комплетни четворопојасни ГСМ / ГПРС модул који купац или хобиста може лако да угради. СИМ900 ГСМ модул пружа индустријски стандардни интерфејс. СИМ900 пружа ГСМ / ГПРС 850/900/1800 / 1900МХз перформансе за глас, СМС и податке са малом потрошњом енергије. Лако је доступан на тржишту.
- СИМ900 дизајниран је помоћу једночиповог процесора који интегрише језгро АМР926ЕЈ-С
- Четверопојасни ГСМ / ГПРС модул у малој величини.
- ГПРС омогућен
![]()
АТ команде
АТ значи ПАЖЊА. Ова наредба се користи за управљање ГСМ модулом. Постоје неке наредбе за позивање и размену порука које смо користили у многим нашим претходним ГСМ пројектима са Ардуином. За тестирање ГСМ модула користили смо АТ команду. Након пријема АТ Цомманд ГСМ модула одговорите са ОК. То значи да ГСМ модул ради у реду. Испод су неке АТ команде које смо овде користили у овом пројекту:
АТЕ0 За искључивање одјека
АТ + ЦНМИ = 2,2,0,0,0
АТД
АТ + ЦМГФ = 1
АТ + ЦМГС = "Мобилни број"
>> Сада можемо да напишемо нашу поруку
>> Након писања поруке
Цтрл + З шаље наредбу за поруку (26 у децималном облику).
ЕНТЕР = 0к0д у ХЕКС-у
(Да бисте сазнали више о ГСМ модулу, овде погледајте наше различите ГСМ пројекте са разним микроконтролерима)
Модул сензора вибрација
У овом пројекту МСП430 система за узбуну користили смо модул сензора за вибрације који открива вибрације или изненадне модулације. Модул сензора вибрација даје дигитални излаз ХИГХ / ЛОВ логику у зависности од модула. У нашем случају користили смо активни ВИСОКИ модул логичког сензора вибрација. Значи кад год сензор вибрације детектује вибрацију, даће ВИСОКУ логику микроконтролеру.
![]()
Објашњење кола
Кружне везе овог Пројекта система за узбуњивање возила су једноставне. Овде је Тк пин ГПС модула директно повезан са дигиталним пин бројем П1_1 МСП430 Лаунцхпад (хардверски серијски) и 5в се користи за напајање ГПС модула. Коришћењем софтверске серијске библиотеке овде, дозволили смо серијску комуникацију на пиновима П_6 и П1_7, те их учинили Рк и Тк респективно и повезали на ГСМ модул. За напајање ГСМ модула користи се напајање од 12 волти. Вибрације сензор је повезан на П1_3. ЛЕД се такође користи за индикацију откривања незгоде. Остали прикључци су приказани на схеми кола.
![]()
![]()
Објашњење програмирања
Програмирање за овај пројекат је једноставно, осим ГПС дела. Комплетна шифра дата је на крају пројекта. За писање или компајлирање кода у МСП430 користили смо Енергиа ИДЕ који је компатибилан са Ардуино. Већина функције Ардуино ИДЕ може се користити директно у овом Енергиа ИДЕ-у.
Дакле, прво смо укључили потребне библиотеке и декларисали пин и променљиве.
#инцлуде
Дата функција се користи за очитавање сигнала сензора вибрације. Ова функција ће филтрирати и мале или лажне вибрације.
#дефине цоунт_мак 25 цхар СенсорРеад (инт пин) // читање св са дебоунце { цхар цоунт_лов = 0, цоунт_хигх = 0; до { делаи (1); иф (дигиталРеад (пин) == ХИГХ) { цоунт_хигх ++; цоунт_лов = 0; } остало { цоунт_хигх = 0; цоунт_лов ++; } } вхиле (цоунт_лов <цоунт_мак && цоунт_хигх <цоунт_мак); иф (цоунт_лов> = цоунт_мак) ретурн ЛОВ; иначе се враћа ХИГХ; }
Испод функција открива вибрацију и позива функцију гпсЕвент () да добије ГПС координате и на крају позове функцију Сенд () за слање СМС-а.
воид лооп () { иф (СенсорРеад (вибратионСенсор) == ХИГХ) { дигиталВрите (лед, ХИГХ); гпсЕвент (); Сенд (); дигиталВрите (лед, ЛОВ); кашњење (2000); } }
Дата функција одговорна је за преузимање ГПС низова из ГПС модула, извлачење координата из њих и њихово претварање у децимални формат.
воид гпсЕвент () { цхар гпсСтринг; цхар тест = "РМЦ"; и = 0; вхиле (1) { вхиле (Сериал.аваилабле ()) // Серијски долазни подаци са ГПС-а { цхар инЦхар = (цхар) Сериал.реад (); гпсСтринг = инЦхар; // складиштимо долазне податке са ГПС-а у привремени низ стр и ++; иф (и <4) { иф (гпсСтринг! = тест) // проверимо да ли је десни низ и = 0; }
инт степен = 0; степен = гпсСтринг-48; степен * = 10; степен + = гпсСтринг-48; инт минут_инт = 0; минут_инт = гпсСтринг-48; минут_инт * = 10; минут_инт + = гпсСтринг-48; инт минут_дец = 0; минут_дец + = (гпсСтринг-48) * 10000; минут_дец + = (гпсСтринг-48) * 1000; минут_дец + = (гпсСтринг-48) * 100; минут_дец + = (гпсСтринг-48) * 10; минут_дец + = (гпсСтринг-48); флоат минут = ((флоат) минут_инт + ((флоат) минут_дец / 100000.0)) / 60.0; ширина = ((плутајући) степен + минута);
И на крају, функција Сенд () се користи за слање СМС-а на кориснички број који је уметнут у овај део кода.
воид Сенд () { ГСМ.принт ("АТ + ЦМГС ="); ГСМ.принт ('"'); ГСМ.принт (" 961 **** 059 "); // унесите свој број мобитела ГСМ.принтлн ('"'); кашњење (500); // ГСМ.принт ("Латитуде:"); // ГСМ.принтлн (географска ширина); ГСМ.принтлн („Несрећа се догодила“); кашњење (500); // ГСМ.принт ("географска дужина:"); // ГСМ.принтлн (логитуде); ГСМ.принтлн ("Кликните на везу да бисте видели локацију"); ГСМ.принт („хттп://мапс.гоогле.цом/мапс?&з=15&мрт=ип&т=к&к=“); ГСМ.принт (ширина, 6); ГСМ.принт ("+"); ГСМ.принт (логитуде, 6); ГСМ.врите (26); кашњење (4000); }
Комплетан код и демо видео приказан је у наставку, можете проверити све функције у коду.
