У претходним водичима смо научили како повезати ГПС модул са рачунаром и како пратити возило помоћу ГСМ-а и ГПС-а. Такође смо направили систем за упозоравање на несреће у возилу користећи Ардуино и акцелерометар. Овде поново градимо исти пројекат, али овај пут ће се за откривање саобраћајне незгоде користити МСП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); }
Комплетан код и демо видео приказан је у наставку, можете проверити све функције у коду.