- Компоненте потребне:
- ГПС модул и његов рад:
- ГСМ модул:
- Акцелерометар:
- Објашњење кола:
- Објашњење:
- Објашњење програмирања:
У нашим претходним водичима научили смо о томе како повезати ГПС модул са рачунаром, како направити Ардуино ГПС сат и како пратити возило помоћу ГСМ-а и ГПС-а. Овде у овом пројекту ћемо изградити систем за узбуњивање незгода на бази Ардуина користећи ГПС, ГСМ и акцелерометар. Акцелерометар открива изненадну промену осе возила, а ГСМ модул на ваш мобилни телефон шаље поруку упозорења са локацијом незгоде. Локација незгоде се шаље у облику везе Гоогле Мап, изведене из географске ширине и дужине из ГПС модула. Порука такође садржи брзину возила у чворовима. Погледајте демо видеона крају. Овај пројекат упозоравања на несреће у возилу такође се може користити као систем праћења и још много тога, тако што ћете унети само неколико промена у хардвер и софтвер.
Компоненте потребне:
- Ардуино Уно
- ГСМ модул (СИМ900А)
- ГПС модул (СИМ28МЛ)
- Акцелерометар (АДКСЛ335)
- ЛЦД 16к2
- Напајање
- Повезивање жица
- 10 К-ПОТ
- Табла или ПЦБ
- Напајање 12в 1амп
Пре него што кренемо у пројекат, разговараћемо о ГПС-у, ГСМ-у и акцелерометру.
ГПС модул и његов рад:
ГПС је скраћеница од Глобал Поситионинг Систем и користи се за откривање географске ширине и дужине било које локације на Земљи, са тачним УТЦ временом (координирано универзалним временом). ГПС модул се користи за праћење локације несреће у нашем пројекту. Овај уређај прима координате са сателита сваке секунде, са временом и датумом. Претходно смо издвојили $ ГПГГА низ у Систему за праћење возила како бисмо пронашли координате географске ширине и дужине.
ГПС модул шаље податке који се односе на положај праћења у реалном времену и шаље толико података у НМЕА формату (погледајте снимак екрана испод). НМЕА формат се састоји од неколико реченица, у којима нам треба само једна реченица. Ова реченица почиње од $ ГПГГА и садржи координате, време и друге корисне информације. Овај ГПГГА се односи на податке о поправљању система глобалног позиционирања. Овде сазнајте више о НМЕА реченицама и читању ГПС података.
Координате можемо извући из $ ГПГГА низа бројањем зареза у низу. Претпоставимо да нађете $ ГПГГА низ и сачувате га у низу, а затим Латитуде можете пронаћи након два зареза, а Лонгитуде након четири зареза. Сада се та географска ширина и дужина могу ставити у друге низове.
Испод је $ ГПГГА стринг, заједно са његовим описом:
$ ГПГГА, 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
(Да бисте сазнали више о ГСМ модулу, овде погледајте наше различите ГСМ пројекте са разним микроконтролерима)
Акцелерометар:
Пин Опис акцелерометра:
- Вцц напајање од 5 волти требало би да се повеже на овај пин.
- Кс-ОУТ Овај пин даје аналогни излаз у к смеру
- И-ОУТ Овај пин даје аналогни излаз у правцу и
- З-ОУТ Овај пин даје аналогни излаз у правцу з
- ГНД Гроунд
- СТ Овај пин се користи за подешавање осетљивости сензора
Такође проверите и наше друге пројекте користећи Аццелерометер: Пинг Понг Гаме користећи Ардуино и Аццелерометер заснован на гестовима руком управљани робот.
Објашњење кола:
Кружне везе овог Пројекта система за узбуњивање возила су једноставне. Овде је Тк пин ГПС модула директно повезан са дигиталним пином 10 Ардуина. Коришћењем софтверске серијске библиотеке овде, дозволили смо серијску комуникацију на пиновима 10 и 11 и направили их Рк односно Тк, а Рк пин ГПС модула оставили отвореним. Подразумевано се пин 0 и 1 Ардуина користе за серијску комуникацију, али помоћу библиотеке СофтвареСериал можемо дозволити серијску комуникацију на другим дигиталним пиновима Ардуина. За напајање ГПС модула користи се напајање од 12 волти.
Прибадаче Тк и Рк ГСМ модула су директно повезане на пин Д2 и Д3 Ардуина. За ГСМ повезивање овде смо користили и серијску библиотеку софтвера. ГСМ модул се такође напаја напајањем од 12в. Ан Опциони ЛЦД је дата игле Д4, Д5, Д6 и Д7 су повезани са пин броја 6, 7, 8, и 9 Ардуино. Командни пин РС и ЕН ЛЦД-а повезани су пиновима 4 и 5 Ардуино-а, а РВ пин директно повезан са масом. Потенциометар се такође користи за подешавање контраста или осветљености ЛЦД екрана.
У овај систем је додат акцелерометар за откривање незгоде и његови излазни пинови к, и и з осе АДЦ су директно повезани са Ардуино АДЦ пином А1, А2 и А3.
Објашњење:
У овом пројекту, Ардуино се користи за контролу целокупног процеса помоћу ГПС пријемника и ГСМ модула. ГПС пријемник се користи за откривање координата возила, ГСМ модул се користи за слање упозоравајућег СМС-а са координатама и везом на Гоогле Мап. Акцелерометар, наиме АДКСЛ335, користи се за откривање незгода или изненадних промена било које осе. А опциони ЛЦД од 16к2 такође се користи за приказивање статусних порука или координата. Користили смо ГПС модул СИМ28МЛ и ГСМ модул СИМ900А.
Када смо спремни са нашим хардвером након програмирања, можемо га инсталирати у своје возило и напајати. Сад кад год се догоди несрећа, аутомобил се нагиње и акцелерометар мења своје вредности осе. Ове вредности чита Ардуино и проверава да ли се догоди било каква промена на било којој оси. Ако се догоди било каква промена, Ардуино чита координате извлачењем $ ГПГГА Стринга из података ГПС модула (ГПС рад је објашњен горе) и шаље СМС на унапред дефинисани број полицији или хитној помоћи или члану породице са координатама места места несреће. Порука такође садржи везу Гоогле Мап до места несреће, тако да се та локација може лако пратити. Када примимо поруку, потребно је само да кликнемо на везу и преусмерићемо на Гоогле мапу и тада ћемо видети тачну локацију возила. Брзина возила, у чворовима(1.852 КПХ), такође се шаље у СМС-у и приказује на ЛЦД панелу. Погледајте цео демо видео испод пројекта.
Овде у овом пројекту можемо подесити осетљивост акцелерометра стављањем мин и мак вредности у код.
Овде у демонстрацији су коришћене дате вредности:
#дефине минВал -50 #дефине МакВал 50
Али за боље резултате можете користити 200 уместо 50 или их можете подесити према својим захтевима.
Објашњење програмирања:
Комплетни програм је дат у наставку у одељку Цоде; овде укратко објашњавамо његове различите функције.
Прво смо укључили све потребне библиотеке или датотеке заглавља и прогласили разне променљиве за прорачун и складиштење података привременим.
Након овога креирали смо функцију воид инитМодуле (Стринг цмд, цхар * рес, инт т) за иницијализацију ГСМ модула и проверу његовог одговора помоћу АТ команди.
воид инитМодуле (Стринг цмд, цхар * рес, инт т) {вхиле (1) {Сериал.принтлн (цмд); Сериал1.принтлн (цмд); кашњење (100); вхиле (Сериал1.аваилабле ()> 0) {иф (Сериал1.финд (рес)) {Сериал.принтлн (рес); кашњење (т); повратак; } елсе {Сериал.принтлн ("Грешка"); }} кашњење (т); }}
Након овога, функцијом воид сетуп () покренули смо серијску комуникацију хардвера и софтвера, ЛЦД, ГПС, ГСМ модул и акцелерометар.
воид сетуп () {Сериал1.бегин (9600); Сериал.бегин (9600); лцд.бегин (16,2); лцд.принт („Упозорење о несрећи“); лцд.сетЦурсор (0,1); лцд.принт ("Систем"); кашњење (2000); лцд.цлеар ();…………………
Процес калибрације акцелерометра се такође врши у петљи за подешавање . У овоме смо узели неке узорке и затим пронашли просечне вредности за к осу, и осу и з осу. И спремите их у променљиву. Затим смо користили ове узорке вредности за читање промена у оси акцелерометра када се возило нагне (несрећа).
лцд.принт ("Цаллибратинг"); лцд.сетЦурсор (0,1); лцд.принт ("Аццелеромитер"); за (инт и = 0; и
После тога, у функцији воид лооп () , прочитали смо вредности осе акцелерометра и извршили прорачун за издвајање промена уз помоћ узорака који су узети у калибрацији. Ако су неке промене више или мање од дефинисаног нивоа, Ардуино шаље поруку на унапред дефинисани број.
воид лооп () {инт валуе1 = аналогРеад (к); инт валуе2 = аналогРеад (и); инт валуе3 = аналогРеад (з); инт кВалуе = ксампле-валуе1; инт иВалуе = исампле-валуе2; инт зВалуе = зсампле-валуе3; Сериал.принт ("к ="); Сериал.принтлн (кВалуе); Сериал.принт ("и ="); Сериал.принтлн (иВалуе); Сериал.принт ("з ="); Сериал.принтлн (зВалуе);…………………
Овде смо такође креирали и неке друге функције за различите сврхе попут воид гпсЕвент () за добивање ГПС координата, воид цоординате2дец () за издвајање координата из ГПС низа и њихово претварање у децималне вредности, воид схов_цоординате () за приказ вредности преко серијског монитора и ЛЦД, и на крају празно Сенд () за слање СМС упозорења на унапред дефинисани број.
Комплетан код и демо видео приказан је у наставку, можете проверити све функције у коду.