У дома Хранене Самоделен gps приемник за кола. Как да направите PDA от автомобилен навигатор. Защо възниква идеята да направите glonas gps тракер със собствените си ръце

Самоделен gps приемник за кола. Как да направите PDA от автомобилен навигатор. Защо възниква идеята да направите glonas gps тракер със собствените си ръце

Приемникът извежда следните данни:

  1. Координати - географска ширина, дължина и надморска височина на точката, където е
  2. Средно време по Гринуич - часове, минути, секунди
  3. Общ брой сателити, открити от приемника
  4. Броят на сателитите, от които се получава сигналът.

Приемника има памет от 200 точки. Координатите на точка, определени от приемника в даден момент от време, могат да бъдат въведени в паметта, а също така е възможно да се запишат координатите на точки от географски карти в паметта на приемника.

С помощта на приемника можете да определите разстоянието и истинския (да не се бърка с магнитния) азимут от точката, в която се намира приемникът, до всяка точка, избрана от неговата памет.

EB-500 е перфектен за мобилни приложения поради малкия си размер и ниската консумация на ток.

Точността на координатите зависи от броя на сателитите, от които сигналът пристига в модула, трябва да има поне 3 от тях.

За откриване на сателити модулът използва 66 канала, докато ако антената е пасивна, консумира 28 mA. След като сателитите бъдат намерени, броят на каналите и следователно текущото потребление се намаляват.

Захранващо напрежение от 3 до 4,2 волта.

Комуникацията с модула се осъществява чрез два еквивалентни UART.

UART изводи - TX0, RX0 и TX1, RX1.

Светодиодът е свързан към изхода за състоянието на GPS чрез резистор. Докато връзката със сателитите не е установена на изхода, логическият 1-LED свети постоянно, когато се открият сателити, той мига с честота 1 Hz. След отстраняване на грешки във веригата, тя може да бъде премахната.

Изход V_RTC_3V3 – към този изход трябва да се подаде захранване, в противен случай модулът няма да стартира. Може да бъде свързан към захранването на модула, но е по-добре да свържете стандартна литиева батерия CR за 3 волта, тогава всички настройки ще бъдат запазени в паметта на модула дори след изключване на приемника. Консумацията на RTC е само 1 µA, така че батерията ще издържи дълго време.

Захранването се подава към щифта VIN_3V3.

Антената е свързана към щифта RF_INPUT. Пътят, свързващ изхода на модула към захранването на антената, трябва да бъде възможно най-къс със заземителна равнина отстрани. Имам пасивна антена

35*35 с многоъгълник под него 70*70. Започна безпроблемно дори в мъгла в горска поляна. И точността е доста добра.

Добрата активна антена е скъпа, добрият LNA не е евтин. Евтина китайска антена, в условия на силни смущения, се оказа по-лоша от пасивната, както можете да видите, усилвателят там не е съвсем нискошумен. В допълнение, той се захранва от минимум 3,3 волта и се захранва от модула към линията

2,8 V. Следователно е необходимо да прекъснете постоянното напрежение на щифта RF_INPUT с кондензатор, да отворите антената, да стартирате външно захранване - много проблеми.

Антената не трябва да се поставя до модула, за да не пречи шумът от модула.

Това са координатите на измерената точка на картата на GOOGLE. Разстоянието от стената на къщата до водата е 10 м. С приемника стояхме на около три метра от водата.

След като модулът е запоен към платката, VIN_3V3 и V_RTC_3V3 са свързани, антената е свързана и по светенето на светодиода сте убедени, че всичко работи за вас - трябва да проверите скоросттаUART обмен. Това е необходимо за програмиране на микроконтролера USAR (синхронен асинхронен трансивър).

Свържете RX1,TX1 или RX0,TX0 през MAX3232 (работи от 3 волта) с COM порта на компютъра. За USB можете да спойкате прехода към FT232RL - евтин надежден чип с драйвери за всички операционни системи. Работи ми веднага без никакви проблеми.

Проверете скоростта, с която модулът отговаря, според листа с данни, това е 9600, което работи за мен при 115200. Ако не реагира, прегледайте скоростите. За това не е необходим сигнал - светодиодът може да не мига. Използвам терминала в CVAVR или програмата Terminal v1.9b е безплатна и много удобна.

Обменът се извършва по протокол NMEA 0183.

Сбруята ATMEGA 16 е стандартна. Щифтът REZET се изтегля нагоре с резистор 10 kΩ. Тактовата честота се задава от кварцов резонатор 7.3728 MHz. Захранването се подава към ADC на микроконтролера чрез LC филтър - индуктор 10 μH, кондензатор 1 μF. Изводът за референтно напрежение на ADC AREF е свързан към захранващия извод на ADC. Конекторът за програматора не е показан на диаграмата. Порт B е свързан към LCD дисплей WH1604B - 4 реда по 16 знака. Тример резистор R2 20 kOhm регулира контраста. Бутонът на подсветката е с тактова честота, за да пести енергия от батерията.

Между UART на модула и USART на микроконтролера е инсталирана микросхема ADUM1201 като галванична изолация. Максималната амплитуда на импулсите от модула, когато се гледа с осцилоскоп, е не повече от 2,8 V. Микроконтролерът възприема импулса като единица от 2,5 V. Микросхемата ще повиши амплитудата на импулса до 5 волта - захранващото напрежение на микроконтролера . За да избегнете сривове, по-добре е да инсталирате ADUM.

Чипът AT24C128 с електрически изтриваема и програмируема памет само за четене (EEPROM) с интерфейс на I2C шина е паметта на приемника, където ще се съхраняват данните от всички 200 точки, но повече за това по-късно. Изходите на CDL - серийна комуникационна синхронизация и CDA - серийно предаване на данни и адрес трябва да бъдат изтеглени към захранването с резистор 4,7-5,1 kΩ. WP-щифтът за защита от запис е свързан към GND. Щифтове A0, A1 - щифтовете за адресиране се използват, ако към шината са свързани няколко микросхеми, възможни са 4 комбинации. Имаме един чип, така че щифтовете A0, A1 са свързани към GND - адресът е нула.

На операционния усилвател е монтиран делител. Напрежението от батерията се разделя наполовина и се подава към ADC входа на микроконтролера - бит 0 на порт A, за да се контролира стойността на напрежението на литиевата батерия.

Клавиатурата за комуникация с приемника е монтирана на часовникови бутони. Бутоните READ и WRITE са с часовник. Ховър бутон - с фиксация. Резистори от 300 ома са необходими за ограничаване на тока, за да не се изгори случайно портът на микроконтролера.

Сега за мощността на приемника. Имам литиева батерия от 3,7 волта, когато е напълно заредена, около 4,15 V. За захранване на микроконтролер с 7,3728 MHz кварц и дисплей WH1604 са необходими 5 волта. Въпреки че листът с данни на дисплея има Vdd от 3 до 5 волта, нищо не се вижда със стандартната верига за контрол на контраста и захранващо напрежение от 3,3 волта.

Желателно е да приложите 3,3 волта към модула EB-500. На чипа LM2623 е монтиран 5-волтов регулатор на превключване с повишена мощност. Чипът LM2623 е проектиран специално за цифрово оборудване, има ниско ниво на шум и минимално свързване. Кондензаторите C4 и C5 са инсталирани допълнително за намаляване на шума.

Захранването на модула EB-500 се получава от изхода на линейния стабилизатор LP2980-3.3. Микросхема с много ниска собствена консумация, загубите по нея са максимум 50 mW, загрява много малко и получаваме стабилизирани 3,3 волта почти без шум.

Сега за програмата. Използван компилатор.

Протоколът NMEA 0183 съдържа много полезна информация, но ние се интересуваме само от координати, време, надморска височина, брой видими и използвани спътници. Затова избираме само 3 съобщения (необходимата информация е маркирана в червено):

1.$GPRMC,181057.000,A ,5542.2389,N,03741.6063,E,0.47,74.50,190311,A*51

Тук се интересуваме от знак номер 18 (започваме да броим от 0), ако е A, тогава данните са валидни (има сигнал), ако V е невалиден.

2.$GPGGA,181058 .000,5542.2389 ,N,03741.6063 ,E,1,8 ,1.34,115.0 ,M,14.6,M,*54

От тук вземаме почти цялата информация.

181058 .000 - време

5542.2389 ,N - географска ширина

03741.6063 ,E - дължина

1 - GPS фиксиране (0 = Невалидни данни, 1 = Фиксирана позиция, 2 = DGPS (подобрена точност))

8 - брой използвани сателити

1.34 - HDOP, хоризонтална точност

115,0 ,M - височина над морското равнище

14.6,M - Геоидална разлика - разлика между земен елипсоид WGS-84 и морско ниво (геоид)

Време от последната актуализация на DGPS, липсва.

3.$GPGSV,4,1, 13 ,28,65,075,17,26,53,202,37,15,50,278,17,27,39,290,24*7D

Тук се интересуваме от знаци номер 11 и 12.

13 - Общ брой видими сателити.

Веднага след включване на приемника, ADC се стартира (чрез настройка на един до 6 бита от регистъра ADCSRA на микроконтролера ADC), за да се провери нивото на заряд на литиевата батерия. В процедурата за прекъсване, след завършване на преобразуването на ADC, 100 стойности от регистъра на данните се вземат и сумират, след което се изчислява средната стойност на напрежението на батерията. Ако напрежението на батерията е по-малко или равно на 3,2 волта, съобщението „ Ниска батерия". Максималното напрежение, до което може да се разреди батерията е 2,7 волта. По-добре е да закупите батерия с контролер за зареждане.

USART регистърът на микроконтролера е UCSRB=0x90, което означава, че пълното прекъсване на получаването е разрешено и приемникът е разрешен. Функцията за обработка на пълното прекъсване на получаване е както следва:

Данните се вземат от буферния регистър на UDR, при условие че (UCSRA&=0x18)==0, тоест регистърът UCSRA не съдържа флага за грешка при кадриране и флага за препълване. Ако приемникът е в режим на запис или четене (флаг=1), тогава данните просто се вземат от буфера на приемника USART, така че да няма препълване на буфера. Опитите за изключване на USART приемника за това време доведоха до загуба на комуникация с модула. Ако флаг = 0, данните, получени от буфера, се анализират. Ако се открие началото на реда - знакът $ в ASCII кода е 36, целият ред до края - код 13 (връщане на каретка) се поставя в gps масива. След това проверяваме знаци от gps, gps и gps, търсим комбинация от RMC, GGA или GSV, всички други съобщения се игнорират. Ако съобщението е RMC, променливата априравняват към елемента на gps масива, ако GSV - изчисляваме броя на видимите сателити от символите, разположени в gps и gps. Ако е GGA, преминаваме от функцията за обработка на прекъсвания към основната програма. В програмата първо проверяваме променливата А, ако е равно на 86, това е ASCII знак V - няма сигнал, на дисплея ще се покаже съобщението “ Няма сигнал

Ако променлива a = 65 - символ A, това означава, че се е появил сигнал. Ние извличаме от gps масива, където е поставено цялото GGA съобщение, всички данни, които ни интересуват. Изчисляваме времето, координатите, броя на спътниците, с които се осъществява комуникация, надморската височина. Всички тези данни, плюс броя на видимите сателити, изчислени в програмата за прекъсване, се поставят в буфери за извеждане към LCD дисплея и се показват на екрана на дисплея. Оказва се тази снимка:

Първият ред показва географската ширина на точката и броя на сателитите, с които е установена комуникация, има седем от тях. Вторият ред - дължина и броят на видимите спътници - 11. Третият ред - GMT време и надморска височина над морското или океанското ниво.

За да запишете данни, натиснете бутона "Запис". Всички данни се съхраняват във външен чип памет EEPROM AT24C128 с I2C шинен интерфейс. Паметта на чипа е организирана като 16384 думи от 8 бита всяка. Вътрешно 16384 байта памет са разделени на 256 страници по 64 байта всяка. Записът може да се извършва или байт по байт, или по страница. За опростяване на живота е избран записът на страницата. Адресът на чипа е един байт: трите най-значими бита на адреса AT24C винаги са 101, последният бит показва запис или четене. Ако нула пише, едно чете. Адресиране на паметта - два байта, старши битове от номера на страницата, ниски битове - номера на думата в тази страница. Оказва се, че номерата на страници от 0 до 255 са 8 бита плюс номера на думи в страница от 0 до 63 още 6 бита, така че 14 бита са необходими за адресиране на паметта. За да получим старшия байт, вземаме номера на страницата и го изместваме надясно с две позиции - двата най-значими бита ще бъдат нулирани, а 6-те най-значещи бита от адреса на страницата ще се преместят в шестте най-значещи. След това изместваме същия номер на страница наляво с шест позиции и получаваме малкия байт на адреса, където двата най-значещи бита са двата най-малко значими бита от адреса на страницата, останалите шест са нули. Сега трябва да запомните номера на адреса на външната памет за точката, която се записва. За целта използваме енергонезависимата памет на микроконтролера - EEPROM. За ATMEGA16 EEPROM е 512 байта. Поставяме два масива в EEPROM eeprom unsigned char ad и eeprom unsigned char opred. Рекламният масив сочи към свободна страница в паметта на AT24C128, единица означава, че страницата е заета, нула означава свободна. Например: ad=0 означава, че страница 20 от паметта на AT24C128 е свободна, а ако ad=1, значи е заета. Преди да запишем данни във външна памет, преминаваме през всички елементи на масива ad, като увеличаваме номера на елемента g от 0, докато се намери условието ad[g]=0. Адресът на страницата на външната памет ще бъде равен на g. Сега си спомняме съответствието на адреса на страницата с памет AT24C128 на номера на запомнената точка. opred[номер на точка]=g (адрес на страница с памет AT24C128). Ако е необходимо да изтриете тези точки, тогава запишете нула в ad[номер на точка за изтриване] и преместете номерата на елементите в масива opred, така че, като се започне от номера на точката, един повече от изтрития: opred[точка брой]= опред[точка номер-1] , а броят на общия брой записани точки се намалява с една. Ако е необходимо да изтрием всички данни от паметта, тогава нулираме броя на записаните точки и рекламния масив на нула. Когато нови данни се записват в паметта AT24C128, старите данни се изтриват. Променливият номер, показващ общия брой записани точки, също се намира в EEPROM на микроконтролера.

Записът върви така:

Натиснете и задръжте за 50 ms (закъснение от 50 ms - защита срещу отскачане на контакта е инсталирана на всички бутони) бутона "ЗАПИС". На екрана на първия ред се изписва: “ Tточки: (точка №)”записан номер на точка в EEPROM на микроконтролерапри което увеличено. Ако номерът на точката е по-голям от 200, съобщението „ памет зает” и приемникът излиза от режим на запис. Във втория ред трябва да въведете името на точката от клавиатурата до 16 знака от цифри и малки букви от руската азбука. Принципът на въвеждане е същият като при мобилен телефон: натиснете бутона на клавиатурата, докато се появи желаният знак. В случай на печатна грешка, символът се изтрива с хеш. Изводите на клавиатурата са свързани към битове 3,4,5 на порт D и битове 2,3,4,5 на порт C. Битовете на порт D са конфигурирани като изходи, битовете на порт C като изтеглящи входове. Ниско ниво се прилага към битовете на порт D с честота 5 ms и се чете стойността на битовете на порт C. Например, ако нула се приложи към PIND.3 и се появи логическа нула на PINC.2, тогава бутонът K4 е активен - 3 дежж.Бутонът е активен за 2,2 секунди - 16-битовият таймер T1 стартира на честота 28800 Hz, когато се появи нула на съответния бит на порт C. Когато таймерът премине стойността 65535, се генерира прекъсване и програмата тръгва във функцията за обработка на прекъсване при препълване на таймера. Ако друг бутон стане активен преди изтичането на 2,2 секунди, тогава, както в случай на препълване на таймера, таймерът спира и всички стойности, въведени на предишния активен бутон, се нулират. След като напишете името на точката, натиснете *. Третият ред показва съобщението „ Текуща точка?” Ако трябва да запомните точката, определена от приемника в даден момент, натиснете *, на дисплея ще се покаже съобщението „ Точката е записана” и приемникът излиза от режим на запис. Ако координатите са въведени от картата, след това натиснете #, екранът показва заявката „ Географска ширина?”Въведете координатите на географската ширина осем цифри без точки - 49˚52"16.54" се въвеждат като 49521654, след което натиснете *, показва се подканата “ Географска дължина?” се въвежда и географската дължина, вместо 36˚18"51.57" - 36185157 и след това *.

Дисплеят показва съобщението „Точката е записана” и приемникът излиза от режим на запис. При писане на координати от картата стойността на височината не се записва, а при четене на координатите на тази точка височината е нула. Записването в EEPROM AT24C128 страница по страница е както следва:

  1. Формира се стартово условие - преход от високо към ниско състояние на извода SDA при високо ниво на извода SCL.
  2. Предава се байтът с адрес на чипа 10100000, последният бит е 0 - запис.
  3. Първият байт от адреса на паметта се предава, след това вторият байт от адреса на паметта.
  4. Прехвърлят се байтове данни, адресите на думите в страницата се увеличават. Промени в щифта SDA възникват, когато щифтът SCL е нисък.
  5. Генерира се условие за спиране - преход от ниско към високо на щифта SDA, докато щифтът SCL е висок.

За да прочетете данни от паметта на приемника, натиснете бутона „Четене“ (в този случай се чете логическа нула от 7-ия бит на порт C) и на дисплея се изписва: „ точка:". Набираме номера на координатната точка, която искаме да прочетем, и натискаме *. Координатите на нашата точка се показват на екрана. Когато въвеждате номер на точка в режим на четене, на клавиатурата са налични само числа. Ако бъде въведено число, което надвишава броя на записаните точки, съобщението „ Няма данни“, тогава се връща съобщението: „ точка:". Ако в паметта на устройството няма записани данни, когато натиснете бутона „Прочетете“, съобщението „ Няма данни” и устройството излиза от режим на четене. Ние четем от EEPROM AT24C128 така: условията за стартиране, спиране и адресирането са същите като при запис. Адресът, на който се записват координатите на точката на четене (в програмата номерът на тази точка се указва от променливата nomer_1), се намира в opred EEPROM масива на микроконтролера. Висок адресен байт ще бъде opred>>2, нисък opred<<6. Только после передачи второго байта с адресом памяти посылается байт с адресом микросхемы 10100001, где последний бит 1 – чтение. В программе чтение идет побайтно, сначала считываются байты с названием точки. Считывается байт, по номеру кода в считанном байте определяется строка, содержащая код знакогенератора LCD модуля и символ соответствующий этому коду выводится на экран, затем младший байт адреса памяти инкременируется. Так выводятся 16 символов названия точки. Затем считываются байты с данными широты, долготы и высоты точки. После считывания очередного байта младший байт адреса памяти инкременируется. Все считанные параметры помещаются в буферы для вывода на LCD и выводятся на экран дисплея:

Можете да превъртате данните във възходящ ред на номерата на точки с цифрата 2 на клавиатурата, в низходящ ред с нула. Излезте от режим на четене #. В режим на четене данните могат да се изтриват една точка наведнъж или всички наведнъж. Показваме на екрана точката, чиито данни трябва да бъдат изтрити, и натискаме *. В края на първия ред се появява "Страница” За потвърждение *, ако не - #. Ако трябва да изтриете всички данни, натиснете последователно *, “Страница" , щракнете върху 1, вместо върху "Страница"появява се" Всичко?”ако потвърждението е *, не - щракнете върху #. При изтриване в EEPROM масива на микроконтролера - ad, сочещ към свободен адрес на страница в паметта AT24C128, се записва нула в елемента с номер, равен на адреса на страницата в AT24C128 на изтритата точка. Данните от тази страница се изтриват, когато на нея се записват други данни, така че не изключвайте приемника в режим на запис, докато не се появи съобщението “Точката е записана”.

Приемникът има режим на насочване. Този режим определя разстоянието и истинския пеленг от точката, в която се намира приемникът, до която и да е точка, избрана от паметта на приемника. За да прехвърлите приемника в режим на насочване, натиснете бутона „Насочване“, докато от втория бит на порт D се чете логическа нула. Дисплеят подканва „ точка:” трябва да въведете номера на разстоянието на точката и азимута, към който ще се изчислява, и да натиснете *. Координатите на тази точка се поставят в масива kr, разположен в EEPROM на микроконтролера. Екранът на дисплея показва номера и името на точката, след което съобщението „ напътствие” и екранът на дисплея става както следва:

Азимутът (287˚1 "48") се показва в началото на четвъртата линия, последван от разстоянието до интересуващата ни точка (3284 метра). Така че можете да ходите по азимут, освен ако, разбира се, няма компас. Магнитна деклинация - разликата между магнитния и истинския азимут е посочена на много карти. Формулите, използвани за изчисляване на азимута и разстоянието, са взети от учебник по геодезия и са преработени, за да работят с плаваща променлива. Координатите на точката на насочване се съхраняват в енергонезависимата памет на микроконтролера, следователно, ако оставите натиснат бутона „Насочване“ и изключите устройството, след включване на устройството, насочването към същата точка ще продължи. За да смените точката на насочване, трябва да отпуснете бутона, да изчакате да се появи сигналът и да наберете номера на новата точка.

Дизайнът на устройството, разбира се, оставя много да се желае, но това, което се случи, се случи.

Що се отнася до предпазителите, имам програмиран само BODEN - веригата за нулиране е активирана, когато захранващото напрежение намалее и SUT1 - контролира режима на стартиране на тактовия генератор, когато веригата за нулиране е активирана. Останалите не са програмирани, тоест са равни на единица.

Списък на радио елементи

Обозначаване Тип Деноминация Количество ЗабележкаМагазинМоят бележник
Схема 1.
U1 RS-232 интерфейс IC

MAX3232

1 Към бележника
EB1 GPS модулЕВ-5001 Към бележника
D1 Светодиод 1 Към бележника
C1-C5, C12 Кондензатор0,1uF6 Към бележника
C8 Кондензатор100 pF1 Към бележника
C9, C10 Кондензатор4,7uF2 Към бележника
C11 Кондензатор0,01uF1 Към бележника
R7 Резистор 1 Към бележника
J1 конекторRS-2321 Към бележника
Антена1 Конектор за антена 1 Към бележника
L1 Индуктор 1 Към бележника
В 1 Захранване на батерията3 V1 Към бележника
Схема 2.
U2 микроконтролер 1 Към бележника
AD1 ЧипADUM12011 Към бележника
OS1 Операционен усилвател 1 Към бележника
AT1 ЧипAT24C1281 Към бележника
C6, C7 Кондензатор0,15uF2 Към бележника
C13, C17 Кондензатор0,1uF2 Към бележника
C14, C16 Кондензатор22 pF2 Към бележника
C15 Кондензатор1 uF1 Към бележника
R1, R3 Резистор

20 kOhm

2 Към бележника
R2 Тример резистор20 kOhm1 Към бележника
R4 Резистор

10 ома

1 Към бележника
R5, R6 Резистор

4,7 kOhm

2 Към бележника
R8 Резистор

10 kOhm

1 Към бележника
Y1 Кварцов резонатор7.3728MHz1 Към бележника
L2 Индуктор10 µH1 Към бележника
DS1 ЛСД дисплейWH1604B1 Към бележника
К1 Тактичен бутон 1

Мисля, че за повечето от вас няма да е откритие, че по-голямата част от съвременните автомобилни навигатори са базирани на Windows CE, но самата операционна система е внимателно скрита от производителя от игривите ръце на потребителя, така че той да не прави нищо излишно .

Това беше направено чрез прост, но радикален метод - замяна на собствената графична обвивка на Windows CE с обвивка от производителя на устройството, която стартира при стартиране на Windows. От една страна, това е добре - удобно меню, основните функции се стартират с 1-2 клика, глупости с една дума. Но от друга страна, потребителят е ограничен само от функционалността, която производителят е решил да предостави, възможността за инсталиране на собствени програми не е предоставена. Инсталирането на триумфа на справедливостта обаче е много просто, всичко, от което се нуждаете, е GPS навигатор, кабел за данни, компютър, който може да работи с устройства Win CE в режим Active Sync и няколко минути свободно време.

внимание!Тази инструкция не е универсална, но помага в повечето случаи. Отклонението от стъпките и творческите експерименти могат да оставят вашия навигатор в неработещо състояние, което може да бъде излекувано само чрез мигане. Ако нямате идея защо трябва да го правите – не го правете, защото не ви пука!

И така, както каза Гагарин: "Да вървим!":

Ако нещо не е ясно, ето снимка, където е подчертано всичко, от което се нуждаете:

Основното нещо е да не докосвате нищо друго, в противен случай шансът да получите полумъртво парче желязо е много голям.

В резултат на тези прости действия ще получите напълно функционален PDA от навигатора, на който можете лесно да инсталирате всички приложения, от които се нуждаете. Дребно, но приятно.

З.Й. В никакъв случай! Чуваш ли? При никакви обстоятелства! Дори да сте пияни, убити с камъни или инжектирани (подчертайте, ако е подходящо), не задавайте парола в Windows. И само да видя какво ще стане!

Пълнофункционалното PDA ще ви бъде полезно, дори ако изучавате основите на SLR фотографията, винаги можете да напишете няколко инструкции и съвети за любители фотографи на него, така че те винаги да са ви под ръка.

Въпреки факта, че днес на пазара можете да намерите огромно разнообразие от GPS устройства с различни ценови категории и функционалност, не всеки е готов веднага да купи готово навигационно устройство и предпочита да го направи сам. Ако е необходимоТрудно е да се каже, но без съмнение е възможно.

Можете да направите свой собствен навигатор по два различни начина. За първото ще ви трябва най-простото мобилно устройство, GPS предавател и батерия. Струва си да предупредим веднага, че няма смисъл да го разглеждаме подробно, тъй като ще ви отнеме много проблеми и време, за да сглобите домашен навигатор по този начин, и най-важното е, че трябва да сте добре запознати с електрониката и познават основите на системното програмиране - не всеки има такива умения. В допълнение, такъв навигатор е труден за използване, изпращайки съобщение до сателита, той ще получи в отговор координатите, които ще трябва да бъдат насложени върху картата.

Вторият начин е по-прост и всеки може да го направи - GPS навигатор, направен с помощта на лаптоп. Какво ще е необходимо за това? Първо, самият лаптоп, и второ, GPS приемник, например, вграден в модерен мобилен телефон.

GPS приемникът се свързва чрез някой от интерфейсите ( WiFi , Bluetoothили USB) на лаптоп. Почти всеки днес има последното, освен това дори най-простият нетбук или таблет ще бъде достатъчен за навигатор.

Преди да свържете GPS модула, трябва да се уверите, че компютърът има подходящия софтуер, който ще го поддържа. Намирането и изтеглянето му от интернет няма да е трудно, тъй като изборът тук е невъобразимо голям. Някои програми са подходящи за извънградски пътувания на дълги разстояния, някои, напротив, за пътувания из града. Ако компютърът има достъп до интернет, можете също да инсталирате програми, които предоставят информация за трафика.

След като свържете навигатора към компютъра, трябва да изчакате, докато системата го открие, ако са необходими допълнителни драйвери, те трябва да бъдат инсталирани. Не е необходимо да търсите, можете просто да зададете автоматично търсене в Интернет. Устройството е идентифицирано - можете да стартирате навигационната програма и да се уверите, че устройството е видимо за него. Ако всичко е наред, домашният GPS навигатор е готов, ако има проблеми, трябва да се задълбочите в настройките на софтуера.

Независимо дали си струва да направите навигатор със собствените си ръце или е по-добре да го купите, всеки решава по свое усмотрение. Във всеки случай, както в първия, така и във втория случай, ще трябва да положите малко усилия и да отделите време.

След няколко експеримента с arduino, реших да направя прост и не много скъп GPS тракер с изпращане на координати чрез GPRS към сървъра.
Използван Arduino Mega 2560 (Arduino Uno), SIM900 - GSM / GPRS модул (за изпращане на информация към сървъра), GPS приемник SKM53 GPS.

Всичко беше закупено на ebay.com, в размер на около 1500 рубли (около 500 рубли arduin, малко по-малко - GSM модул, малко повече - GPS).

GPS приемник

Първо трябва да разберете как да работите с GPS. Избраният модул е ​​един от най-евтините и опростени. Производителят обаче обещава батерия за запазване на сателитни данни. Според листа с данни, студеният старт трябва да отнеме 36 секунди, но в моите условия (10-ти етаж от перваза на прозореца, няма сгради точно до него) отне цели 20 минути. Следващият старт обаче е вече 2 минути.

Важен параметър на устройствата, свързани към arduino, е консумацията на енергия. Ако претоварите преобразувателя на Arduino, той може да изгори. За използвания приемник максималната консумация на енергия е 45mA при 3,3v. Защо в спецификацията се посочва силата на тока при напрежение, различно от необходимото (5V), за мен е загадка. Преобразувателят на Arduino обаче ще издържи 45 mA.

Връзка
GPS не се управлява, въпреки че има RX пин. За какво - не се знае. Основното нещо, което можете да правите с този приемник, е да четете NMEA данни от TX пин. Нива - 5V, само за ардуино, скорост - 9600 бода. Свързвам VIN към VCC на arduino, GND към GND, TX към RX на съответния сериен номер. Прочетох данните първо ръчно, след това с помощта на библиотеката TinyGPS. Изненадващо всичко се чете. След като преминах към Uno, трябваше да използвам SoftwareSerial и тогава започнаха проблеми - част от символите на съобщението бяха загубени. Това не е много критично, тъй като TinyGPS прекъсва невалидните съобщения, но е доста неприятно: можете да забравите за честота от 1 Hz.

Кратка бележка за SoftwareSerial: няма хардуерни портове на Uno (освен този, свързан към USB Serial), така че трябва да използвате софтуерния. Така че може да получава данни само на щифт, на който платката поддържа прекъсвания. В случая на Uno това са 2 и 3. Освен това само един такъв порт може да получава данни наведнъж.

Ето как изглежда "тестовият стенд".

GSM приемник/предавател


Сега започва по-интересната част. GSM модул - SIM900. Поддържа GSM и GPRS. Нито EDGE, да не говорим за 3G, не се поддържат. За прехвърляне на координатни данни това вероятно е добре - няма да има забавяния и проблеми при превключване между режими, плюс GPRS вече е почти навсякъде. За някои по-сложни приложения обаче това може да не е достатъчно.

Връзка
Модулът се управлява и през серийния порт, със същото ниво - 5V. И тук вече имаме нужда от RX и TX. Модулът е щит, тоест той е инсталиран на arduino. Освен това той е съвместим както с mega, така и с uno. Скоростта по подразбиране е 115200.

Събираме на Mega и тогава ни очаква първата неприятна изненада: TX щифтът на модула попада на 7-ия пин на mega. Прекъсванията не са налични на 7-ия пин на мегата, което означава, че ще трябва да свържете 7-ия пин, да речем, с 6-ия пин, на който са възможни прекъсвания. Така ще пропилеем един пин на ардуиното за нищо. Е, за мега това не е много страшно - все пак има достатъчно щифтове. Но за Uno това вече е по-трудно (напомням ви, че има само 2 пина, които поддържат прекъсвания - 2 и 3). Като решение на този проблем може да се предложи модулът да не се инсталира на arduino, а да се свърже с кабели. След това можете да използвате Serial1.

След свързване се опитваме да „говорим“ с модула (не забравяйте да го включите). Избираме скоростта на порта - 115200, като е добре всички вградени серийни портове (4 на mega, 1 на uno) и целият софтуер да работят с еднаква скорост. По този начин може да се постигне по-стабилно предаване на данни. Защо - не знам, макар че предполагам.

И така, ние пишем примитивен код за препращане на данни между серийни портове, изпращаме atz, мълчание в отговор. Какво стана? А, малки и малки букви. ATZ, добре сме. Ура, модулът ни чува. Защо не ни се обадите, ако проявявате интерес? ATD +7499 ... Стационарният телефон звъни, от ардуиното излиза пушек, лаптопът е изсечен. Arduino изгоря. Беше лоша идея да го захранваш с 19 волта, въпреки че пише, че може да работи от 6 до 20V, препоръчва се 7-12V. В листа с данни на GSM модула не се казва никъде за консумацията на енергия при натоварване. Е, Мега отива в склада за части. Със затаен дъх включвам лаптопа, който получи + 19V през линията + 5V от USB. Работи и дори USB не изгоря. Благодаря на Lenovo за защитата.

След като преобразувателят изгоря, потърсих консумирания ток. И така, пик - 2А, типичен - 0,5А. Това очевидно е извън силата на преобразувателя Arduino. Имате нужда от отделна храна.

Програмиране
Модулът предоставя широки възможности за пренос на данни. Започвайки от гласови повиквания и SMS и завършвайки, всъщност, GPRS. Освен това, за последното е възможно да се изпълни HTTP заявка с помощта на AT команди. Ще трябва да изпратите няколко, но си заслужава: всъщност не искате да генерирате заявка ръчно. Има няколко нюанса при отваряне на канал за предаване на данни чрез GPRS - помните ли класическия AT + CGDCONT = 1, "IP", "apn"? И така, тук имате нужда от същото нещо, но малко по-хитро.

За да получите страница на конкретен URL адрес, изпратете следните команди:
AT+SAPBR=1,1 //Отворен оператор (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //тип връзка - GPRS AT+SAPBR=3,1,"APN","интернет" //APN, за Megaphone - интернет AT+HTTPINIT //Инициализиране на HTTP AT+HTTPPARA="CID",1 //Идентификатор на оператор за използване. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Действителен URL адрес, след sprintf с координати AT+HTTPACTION=0 //Заявка данни чрез GET метод //изчакване на отговор AT+HTTPTERM //спиране на HTTP

В резултат на това, ако има връзка, ще получим отговор от сървъра. Тоест всъщност вече знаем как да изпращаме данни за координати, ако сървърът ги получи чрез GET.

Хранене
Тъй като е лоша идея GSM модулът да се захранва от преобразувателя Arduino, както разбрах, беше решено да се купи преобразувател 12v-> 5v, 3A от същия ebay. Модулът обаче не обича 5V мощност. Преминаваме към хака: свързваме 5V към щифта, от който 5V идва от arduino. Тогава вграденият преобразувател на модула (много по-мощен от преобразувателя на Arduino, MIC 29302WU) ще направи това, от което модулът се нуждае от 5V.

сървър

Сървърът написа примитивен - съхраняване на координати и рисуване на Yandex.maps. В бъдеще е възможно да се добавят различни функции, включително поддръжка за много потребители, статус "включен / невключен", състоянието на системите на автомобила (запалване, фарове и т.н.), дори е възможно да се контролира автомобилът системи. Разбира се, със съответната поддръжка на тракера, който плавно се превръща в пълноценна аларма.

Полеви изпитания

Ето как изглежда сглобеното устройство без калъфа:

След инсталиране на захранващия преобразувател и поставянето му в кутията от мъртъв DSL модем, системата изглежда така:

Запоих проводниците, извадих няколко контакта от подложките на ардуино. Те изглеждат така:

Свързах 12V в колата, карах из Москва, получих пистата:


Точките на пистата са доста далеч една от друга. Причината е, че изпращането на данни през GPRS отнема сравнително дълго време и в този момент координатите не се четат. Това е явна програмна грешка. Той се третира, първо, чрез изпращане на пакет от координати наведнъж с времето, и второ, чрез асинхронна работа с GPRS модула.

Времето за търсене на сателити на пътническата седалка на автомобил е няколко минути.

заключения

Създаването на GPS тракер на arduino със собствените си ръце е възможно, макар и не тривиална задача. Основният въпрос сега е как да скриете устройството в колата, така че да не е изложено на вредни фактори (вода, температура), да не е покрито с метал (GPS и GPRS ще бъдат екранирани) и да не е особено забележимо. Засега просто лежи в купето и се свързва към гнездото на запалката.

Е, все още трябва да поправите кода за по-плавна следа, въпреки че тракерът вече изпълнява основната задача.

Използвани устройства

  • Arduino Mega 2560
  • Ардуино Уно
  • GPS SkyLab SKM53
  • SIM900 базиран GSM/GPRS щит
  • DC-DC 12v->5v 3A преобразувател

Ново в сайта

>

Най - известен