Gps трекер автомобильный своими руками. GPS-трекер для машины. Как установить маячок для слежения за автомобилем без абонентской платы. GPS Tracker для престарелых людей

  • 04.11.2019

Добрый день (опционально вечер/ночь).

Сегодня будет обзор на GPS приемник и его применение на практике.


ПРЕДИСЛОВИЕ

В общем, я всегда хотел побаловаться с такого рода устройствами, хотелось иметь конкретно трекер, который пишет пройденный путь, но было одно но, хотелось, чтобы трекер был с дисплеем, я вообще люблю разные дисплеи и стараюсь их прикручивать во все, что только можно, такой вот фетиш.

Обзоров на этот GPS приемник было, из самых обширных, немного - штуки 4, один из них реально был хорош, остальные так, описывали в целом. Сильно много повторяться не буду.

Как обычно предупреждение:

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

Внешний вид

Размеры данного модуля не большие 35 х 24 мм, и он сможет найти свое место не только в носимой электронике, но и в RC - аппаратах.

В комплекте идет пассивная антенна:

При желании всегда можно заменить активной или изготовить самому, по этой методике:

На сегодняшний день модуль не является устаревшей моделью, и активно используется, + имеется поддержка производителя .

На рисунке ниже я показал, какие линии куда подключать, что бы GPS определился в компьютере:

Выглядит примерно так:

Затем устанавливаем приложение U-center, ссылку давал выше, и выбираем порт:

По умолчанию общаемся на 9600 бод.

Вот в целом работает, все что поймал в помещении:

Подключение модуля к Arduino

Подготовим программатор для прошивки:

Затем в Нано зашиваем этот скетч:

Дополнительная информация

// ArduinoISP // Copyright © 2008-2011 Randall Bohn // If you require a license, see // http://www.opensource.org/licenses/bsd-license.php // // This sketch turns the Arduino into a AVRISP using the following Arduino pins: // // Pin 10 is used to reset the target microcontroller. // // By default, the hardware SPI pins MISO, MOSI and SCK are used to communicate // with the target. On all Arduinos, these pins can be found // on the ICSP/SPI header: // // MISO °. . 5V (!) Avoid this pin on Due, Zero... // SCK . . MOSI // . . GND // // On some Arduinos (Uno,...), pins MOSI, MISO and SCK are the same pins as // digital pin 11, 12 and 13, respectively. That is why many tutorials instruct // you to hook up the target to these pins. If you find this wiring more // practical, have a define USE_OLD_STYLE_WIRING. This will work even when not // using an Uno. (On an Uno this is not needed). // // Alternatively you can use any other digital pin by configuring // software ("BitBanged") SPI and having appropriate defines for PIN_MOSI, // PIN_MISO and PIN_SCK. // // IMPORTANT: When using an Arduino that is not 5V tolerant (Due, Zero, ...) as // the programmer, make sure to not expose any of the programmer"s pins to 5V. // A simple way to accomplish this is to power the complete system (programmer // and target) at 3V3. // // Put an LED (with resistor) on the following pins: // 9: Heartbeat - shows the programmer is running // 8: Error - Lights up if something goes wrong (use red if that makes sense) // 7: Programming - In communication with the slave // #include "Arduino.h" #undef SERIAL #define PROG_FLICKER true // Configure SPI clock (in Hz). // E.g. for an ATtiny @ 128 kHz: the datasheet states that both the high and low // SPI clock pulse must be > 2 CPU cycles, so take 3 cycles i.e. divide target // f_cpu by 6: // #define SPI_CLOCK (128000/6) // // A clock slow enough for an ATtiny85 @ 1 MHz, is a reasonable default: #define SPI_CLOCK (1000000/6) // Select hardware or software SPI, depending on SPI clock. // Currently only for AVR, for other architectures (Due, Zero,...), hardware SPI // is probably too fast anyway. #if defined(ARDUINO_ARCH_AVR) #if SPI_CLOCK > (F_CPU / 128) #define USE_HARDWARE_SPI #endif #endif // Configure which pins to use: // The standard pin configuration. #ifndef ARDUINO_HOODLOADER2 #define RESET 10 // Use pin 10 to reset the target rather than SS #define LED_HB 9 #define LED_ERR 8 #define LED_PMODE 7 // Uncomment following line to use the old Uno style wiring // (using pin 11, 12 and 13 instead of the SPI header) on Leonardo, Due... // #define USE_OLD_STYLE_WIRING #ifdef USE_OLD_STYLE_WIRING #define PIN_MOSI 11 #define PIN_MISO 12 #define PIN_SCK 13 #endif // HOODLOADER2 means running sketches on the ATmega16U2 serial converter chips // on Uno or Mega boards. We must use pins that are broken out: #else #define RESET 4 #define LED_HB 7 #define LED_ERR 6 #define LED_PMODE 5 #endif // By default, use hardware SPI pins: #ifndef PIN_MOSI #define PIN_MOSI MOSI #endif #ifndef PIN_MISO #define PIN_MISO MISO #endif #ifndef PIN_SCK #define PIN_SCK SCK #endif // Force bitbanged SPI if not using the hardware SPI pins: #if (PIN_MISO != MISO) || (PIN_MOSI != MOSI) || (PIN_SCK != SCK) #undef USE_HARDWARE_SPI #endif // Configure the serial port to use. // // Prefer the USB virtual serial port (aka. native USB port), if the Arduino has one: // - it does not autoreset (except for the magic baud rate of 1200). // - it is more reliable because of USB handshaking. // // Leonardo and similar have an USB virtual serial port: "Serial". // Due and Zero have an USB virtual serial port: "SerialUSB". // // On the Due and Zero, "Serial" can be used too, provided you disable autoreset. // To use "Serial": #define SERIAL Serial #ifdef SERIAL_PORT_USBVIRTUAL #define SERIAL SERIAL_PORT_USBVIRTUAL #else #define SERIAL Serial #endif // Configure the baud rate: #define BAUDRATE 19200 // #define BAUDRATE 115200 // #define BAUDRATE 1000000 #define HWVER 2 #define SWMAJ 1 #define SWMIN 18 // STK Definitions #define STK_OK 0x10 #define STK_FAILED 0x11 #define STK_UNKNOWN 0x12 #define STK_INSYNC 0x14 #define STK_NOSYNC 0x15 #define CRC_EOP 0x20 //ok it is a space... void pulse(int pin, int times); #ifdef USE_HARDWARE_SPI #include "SPI.h" #else #define SPI_MODE0 0x00 class SPISettings { public: // clock is in Hz SPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) : clock(clock) { (void) bitOrder; (void) dataMode; }; private: uint32_t clock; friend class BitBangedSPI; }; class BitBangedSPI { public: void begin() { digitalWrite(PIN_SCK, LOW); digitalWrite(PIN_MOSI, LOW); pinMode(PIN_SCK, OUTPUT); pinMode(PIN_MOSI, OUTPUT); pinMode(PIN_MISO, INPUT); } void beginTransaction(SPISettings settings) { pulseWidth = (500000 + settings.clock - 1) / settings.clock; if (pulseWidth == 0) pulseWidth = 1; } void end() {} uint8_t transfer (uint8_t b) { for (unsigned int i = 0; i < 8; ++i) { digitalWrite(PIN_MOSI, (b & 0x80) ? HIGH: LOW); digitalWrite(PIN_SCK, HIGH); delayMicroseconds(pulseWidth); b = (b << 1) | digitalRead(PIN_MISO); digitalWrite(PIN_SCK, LOW); // slow pulse delayMicroseconds(pulseWidth); } return b; } private: unsigned long pulseWidth; // in microseconds }; static BitBangedSPI SPI; #endif void setup() { SERIAL.begin(BAUDRATE); pinMode(LED_PMODE, OUTPUT); pulse(LED_PMODE, 2); pinMode(LED_ERR, OUTPUT); pulse(LED_ERR, 2); pinMode(LED_HB, OUTPUT); pulse(LED_HB, 2); } int error = 0; int pmode = 0; // address for reading and writing, set by "U" command unsigned int here; uint8_t buff; // global block storage #define beget16(addr) (*addr * 256 + *(addr+1)) typedef struct param { uint8_t devicecode; uint8_t revision; uint8_t progtype; uint8_t parmode; uint8_t polling; uint8_t selftimed; uint8_t lockbytes; uint8_t fusebytes; uint8_t flashpoll; uint16_t eeprompoll; uint16_t pagesize; uint16_t eepromsize; uint32_t flashsize; } parameter; parameter param; // this provides a heartbeat on pin 9, so you can tell the software is running. uint8_t hbval = 128; int8_t hbdelta = 8; void heartbeat() { static unsigned long last_time = 0; unsigned long now = millis(); if ((now - last_time) < 40) return; last_time = now; if (hbval > 192) hbdelta = -hbdelta; if (hbval < 32) hbdelta = -hbdelta; hbval += hbdelta; analogWrite(LED_HB, hbval); } static bool rst_active_high; void reset_target(bool reset) { digitalWrite(RESET, ((reset && rst_active_high) || (!reset && !rst_active_high)) ? HIGH: LOW); } void loop(void) { // is pmode active? if (pmode) { digitalWrite(LED_PMODE, HIGH); } else { digitalWrite(LED_PMODE, LOW); } // is there an error? if (error) { digitalWrite(LED_ERR, HIGH); } else { digitalWrite(LED_ERR, LOW); } // light the heartbeat LED heartbeat(); if (SERIAL.available()) { avrisp(); } } uint8_t getch() { while (!SERIAL.available()); return SERIAL.read(); } void fill(int n) { for (int x = 0; x < n; x++) { buff[x] = getch(); } } #define PTIME 30 void pulse(int pin, int times) { do { digitalWrite(pin, HIGH); delay(PTIME); digitalWrite(pin, LOW); delay(PTIME); } while (times--); } void prog_lamp(int state) { if (PROG_FLICKER) { digitalWrite(LED_PMODE, state); } } uint8_t spi_transaction(uint8_t a, uint8_t b, uint8_t c, uint8_t d) { SPI.transfer(a); SPI.transfer(b); SPI.transfer©; return SPI.transfer(d); } void empty_reply() { if (CRC_EOP == getch()) { SERIAL.print((char)STK_INSYNC); SERIAL.print((char)STK_OK); } else { error++; SERIAL.print((char)STK_NOSYNC); } } void breply(uint8_t b) { if (CRC_EOP == getch()) { SERIAL.print((char)STK_INSYNC); SERIAL.print((char)b); SERIAL.print((char)STK_OK); } else { error++; SERIAL.print((char)STK_NOSYNC); } } void get_version(uint8_t c) { switch © { case 0x80: breply(HWVER); break; case 0x81: breply(SWMAJ); break; case 0x82: breply(SWMIN); break; case 0x93: breply("S"); // serial programmer break; default: breply(0); } } void set_parameters() { // call this after reading parameter packet into buff param.devicecode = buff; param.revision = buff; param.progtype = buff; param.parmode = buff; param.polling = buff; param.selftimed = buff; param.lockbytes = buff; param.fusebytes = buff; param.flashpoll = buff; // ignore buff (= buff) // following are 16 bits (big endian) param.eeprompoll = beget16(&buff); param.pagesize = beget16(&buff); param.eepromsize = beget16(&buff); // 32 bits flashsize (big endian) param.flashsize = buff * 0x01000000 + buff * 0x00010000 + buff * 0x00000100 + buff; // AVR devices have active low reset, AT89Sx are active high rst_active_high = (param.devicecode >= 0xe0); } void start_pmode() { // Reset target before driving PIN_SCK or PIN_MOSI // SPI.begin() will configure SS as output, so SPI master mode is selected. // We have defined RESET as pin 10, which for many Arduinos is not the SS pin. // So we have to configure RESET as output here, // (reset_target() first sets the correct level) reset_target(true); pinMode(RESET, OUTPUT); SPI.begin(); SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0)); // See AVR datasheets, chapter "SERIAL_PRG Programming Algorithm": // Pulse RESET after PIN_SCK is low: digitalWrite(PIN_SCK, LOW); delay(20); // discharge PIN_SCK, value arbitrarily chosen reset_target(false); // Pulse must be minimum 2 target CPU clock cycles so 100 usec is ok for CPU // speeds above 20 KHz delayMicroseconds(100); reset_target(true); // Send the enable programming command: delay(50); // datasheet: must be > 20 msec spi_transaction(0xAC, 0x53, 0x00, 0x00); pmode = 1; } void end_pmode() { SPI.end(); // We"re about to take the target out of reset so configure SPI pins as input pinMode(PIN_MOSI, INPUT); pinMode(PIN_SCK, INPUT); reset_target(false); pinMode(RESET, INPUT); pmode = 0; } void universal() { uint8_t ch; fill(4); ch = spi_transaction(buff, buff, buff, buff); breply(ch); } void flash(uint8_t hilo, unsigned int addr, uint8_t data) { spi_transaction(0x40 + 8 * hilo, addr >> 8 & 0xFF, addr & 0xFF, data); } void commit(unsigned int addr) { if (PROG_FLICKER) { prog_lamp(LOW); } spi_transaction(0x4C, (addr >> 8) & 0xFF, addr & 0xFF, 0); if (PROG_FLICKER) { delay(PTIME); prog_lamp(HIGH); } } unsigned int current_page() { if (param.pagesize == 32) { return here & 0xFFFFFFF0; } if (param.pagesize == 64) { return here & 0xFFFFFFE0; } if (param.pagesize == 128) { return here & 0xFFFFFFC0; } if (param.pagesize == 256) { return here & 0xFFFFFF80; } return here; } void write_flash(int length) { fill(length); if (CRC_EOP == getch()) { SERIAL.print((char) STK_INSYNC); SERIAL.print((char) write_flash_pages(length)); } else { error++; SERIAL.print((char) STK_NOSYNC); } } uint8_t write_flash_pages(int length) { int x = 0; unsigned int page = current_page(); while (x < length) { if (page != current_page()) { commit(page); page = current_page(); } flash(LOW, here, buff); flash(HIGH, here, buff); here++; } commit(page); return STK_OK; } #define EECHUNK (32) uint8_t write_eeprom(unsigned int length) { // here is a word address, get the byte address unsigned int start = here * 2; unsigned int remaining = length; if (length > param.eepromsize) { error++; return STK_FAILED; } while (remaining > EECHUNK) { write_eeprom_chunk(start, EECHUNK); start += EECHUNK; remaining -= EECHUNK; } write_eeprom_chunk(start, remaining); return STK_OK; } // write (length) bytes, (start) is a byte address uint8_t write_eeprom_chunk(unsigned int start, unsigned int length) { // this writes byte-by-byte, page writing may be faster (4 bytes at a time) fill(length); prog_lamp(LOW); for (unsigned int x = 0; x < length; x++) { unsigned int addr = start + x; spi_transaction(0xC0, (addr >> 8) & 0xFF, addr & 0xFF, buff[x]); delay(45); } prog_lamp(HIGH); return STK_OK; } void program_page() { char result = (char) STK_FAILED; unsigned int length = 256 * getch(); length += getch(); char memtype = getch(); // flash memory @here, (length) bytes if (memtype == "F") { write_flash(length); return; } if (memtype == "E") { result = (char)write_eeprom(length); if (CRC_EOP == getch()) { SERIAL.print((char) STK_INSYNC); SERIAL.print(result); } else { error++; SERIAL.print((char) STK_NOSYNC); } return; } SERIAL.print((char)STK_FAILED); return; } uint8_t flash_read(uint8_t hilo, unsigned int addr) { return spi_transaction(0x20 + hilo * 8, (addr >> 8) & 0xFF, addr & 0xFF, 0); } char flash_read_page(int length) { for (int x = 0; x < length; x += 2) { uint8_t low = flash_read(LOW, here); SERIAL.print((char) low); uint8_t high = flash_read(HIGH, here); SERIAL.print((char) high); here++; } return STK_OK; } char eeprom_read_page(int length) { // here again we have a word address int start = here * 2; for (int x = 0; x < length; x++) { int addr = start + x; uint8_t ee = spi_transaction(0xA0, (addr >> 8) & 0xFF, addr & 0xFF, 0xFF); SERIAL.print((char) ee); } return STK_OK; } void read_page() { char result = (char)STK_FAILED; int length = 256 * getch(); length += getch(); char memtype = getch(); if (CRC_EOP != getch()) { error++; SERIAL.print((char) STK_NOSYNC); return; } SERIAL.print((char) STK_INSYNC); if (memtype == "F") result = flash_read_page(length); if (memtype == "E") result = eeprom_read_page(length); SERIAL.print(result); } void read_signature() { if (CRC_EOP != getch()) { error++; SERIAL.print((char) STK_NOSYNC); return; } SERIAL.print((char) STK_INSYNC); uint8_t high = spi_transaction(0x30, 0x00, 0x00, 0x00); SERIAL.print((char) high); uint8_t middle = spi_transaction(0x30, 0x00, 0x01, 0x00); SERIAL.print((char) middle); uint8_t low = spi_transaction(0x30, 0x00, 0x02, 0x00); SERIAL.print((char) low); SERIAL.print((char) STK_OK); } ////////////////////////////////////////// ////////////////////////////////////////// //////////////////////////////////// //////////////////////////////////// void avrisp() { uint8_t ch = getch(); switch (ch) { case "0": // signon error = 0; empty_reply(); break; case "1": if (getch() == CRC_EOP) { SERIAL.print((char) STK_INSYNC); SERIAL.print("AVR ISP"); SERIAL.print((char) STK_OK); } else { error++; SERIAL.print((char) STK_NOSYNC); } break; case "A": get_version(getch()); break; case "B": fill(20); set_parameters(); empty_reply(); break; case "E": // extended parameters - ignore for now fill(5); empty_reply(); break; case "P": if (!pmode) start_pmode(); empty_reply(); break; case "U": // set address (word) here = getch(); here += 256 * getch(); empty_reply(); break; case 0x60: //STK_PROG_FLASH getch(); // low addr getch(); // high addr empty_reply(); break; case 0x61: //STK_PROG_DATA getch(); // data empty_reply(); break; case 0x64: //STK_PROG_PAGE program_page(); break; case 0x74: //STK_READ_PAGE "t" read_page(); break; case "V": //0x56 universal(); break; case "Q": //0x51 error = 0; end_pmode(); empty_reply(); break; case 0x75: //STK_READ_SIGN "u" read_signature(); break; // expecting a command, not CRC_EOP // this is how we can get back in sync case CRC_EOP: error++; SERIAL.print((char) STK_NOSYNC); break; // anything else we will return STK_UNKNOWN default: error++; if (CRC_EOP == getch()) SERIAL.print((char)STK_UNKNOWN); else SERIAL.print((char)STK_NOSYNC); } }

После этого выбираем Ваш контроллер Pro Mini, указываем программатор ArduinoISP и шьем контроллер, используя команду Скетч -> Загрузить через программатор и нажимаем кнопку Reset на Pro mini, пойдет прошивка контроллера (у меня проходит только со второй попытки, нужно набраться терпения):

Как выше говорил, я очень люблю ко всяким гаджетам подвязывать дисплеи, ну просто жуть как, поэтому данный «проект» мое желание не обошло стороной.

Что нам для всего этого потребуется:

В общем, собрал весь хлам, который валялся без дела:

1. SD card module, очень огромный, поэтому я старался как можно скорее избавится от него.

2. Дисплей на базе контроллера PCD8544, всем известный нокиа дисплей.

3. Карта памяти на 1Гб, с не популярным стандартом MiniSD, вообще был без идеи куда ее воткнуть, а хочется все пустить в дело, вот и пускай поработает на благо навигации.

4. Потребуется мозг, большой такой мозг Pro Mini на чипе 328P.

Как писал выше, будем шить через Arduino Nano с прошитым в нее загрузчиком.

Вообще я очень старался засунуть весь проект в нано, ну просто очень. Не получается, либо отказываемся от карты памяти, либо от дисплея.

5. Конечно же, сам модуль + антенна, как писал выше можно изготовить самому.

6. Ах да, чуть не забыл, потребуется еще корпус иначе, что за устройство без корпуса.

В качестве корпуса были закуплены, еще раз , но в серебряном виде, на пробу. Скажу так, мне абсолютно не понравился серебряный цвет, черный смотрится лучше.

Когда все комплектующие есть в наличии, можно все это подключить и запрограммировать.

Подключаем к Pro Mini по следующей схеме:

Дисплей:

RST - D6
CE - D7
DC - D5
DIN - D4
CLK - D3
VCC - 5V (опционально в моем случае, в остальных 3.3В)
Light - GND
GND - GND

Подсветка мне была не нужна, и я не стал ее подключать.

CS-D10
MOSI-D11
MISO-D12
SCK-D13
GND - GND
5V - VCC (опционально в моем случае, в некоторых при наличии преобразователя подключаем на 3.3В)

GPS модуль:

RX-D8
TX-D2
GND - GND
VCC-3.3 (3.3 это предел!)

Не забываем подключать антенну на модуль, питание я брал с Нано тк. была подключена для отладки, далее все будет переделано на аккумулятор.

Примерный вид:

Код прост и незамысловат, для использования Вам понадобится, пожалуй . Далее . Остальные являются встроенными. По коду, строка - time*0.000001+5, по сути я привел время в удобоваримый вид и добавил часовой пояс. Можно этого не делать и получать чистые результаты.

Ещё один нюанс по библиотеке дисплея заключается в следующем у дисплея, включая с нулевой строкой, всего влезет 6 строк. Что довольно мало, поэтому нужно сразу решать, какую информацию выводить, что-то придется выводить символами, экономя место. Дисплей перерисовывается каждую секунду, при этом обновляя и записывая информацию, поступающую со спутников.

При ошибке чтения файла или отсутствия доступа до карты SD будет выводиться сообщение SD- , в остальных случаях SD+ .

#include #include #include #include //CS-D10, MOSI-D11, MISO-D12, SCK-D13, GND - GND, 5V - VCC (опционально в моем случае, в некоторых при отсутствии преобразователя подключаем на 3.3В) File GPS_file; TinyGPS gps; SoftwareSerial gpsSerial(2, 8);//RX - 8 pin, TX - 2 pin static PCD8544 lcd; //RST - D6, CE - D7, DC - D5, DIN - D4, CLK - D3, VCC - 5V (опционально, при наличии преобразователя на 3.3В линии), Light - GND, GND - GND bool newdata = false; unsigned long start; long lat, lon; unsigned long time, date; void setup() { lcd.begin(84, 48); gpsSerial.begin(9600); Serial.begin(9600); pinMode(10, OUTPUT); if (!SD.begin(10)){ lcd.setCursor(0, 0); lcd.println("SD-"); return;} lcd.setCursor(0, 0); lcd.println("SD+"); GPS_file = SD.open("GPSLOG.txt", FILE_WRITE); if (GPS_file){ Serial.print("Writing to test.txt..."); GPS_file.print("LATITUDE"); GPS_file.print(","); GPS_file.print("LONGITUDE"); GPS_file.print(","); GPS_file.print("DATE"); GPS_file.print(","); GPS_file.print("TIME"); GPS_file.print(","); GPS_file.print("ALTITUDE"); GPS_file.println(); GPS_file.close(); Serial.println("done."); }else{ Serial.println("error opening test.txt"); } lcd.setCursor(0,3); lcd.print("ALT: "); lcd.setCursor(0,2); lcd.print("SPD: "); lcd.setCursor(0,4); lcd.print("LAT: "); lcd.setCursor(0,5); lcd.print("LON: "); } void loop() { if (millis() - start > 1000){ newdata = readgps(); if (newdata){ start = millis(); gps.get_position(&lat, &lon); gps.get_datetime(&date, &time); lcd.setCursor(50,1); lcd.print(date); lcd.setCursor(55,0); lcd.print(time*0.000001+5); lcd.setCursor(22, 4); lcd.print(lat); lcd.setCursor(22, 5); lcd.print(lon); lcd.setCursor(22, 2); lcd.print(gps.f_speed_kmph()); lcd.setCursor(22, 3); lcd.print(gps.f_altitude()); } } GPS_file = SD.open("GPSLOG.txt", FILE_WRITE); if(GPS_file){ GPS_file.print(lat); GPS_file.print(","); GPS_file.print(lon); GPS_file.print(","); GPS_file.print(date); GPS_file.print(","); GPS_file.print(time*0.000001+5); GPS_file.print(","); GPS_file.print(gps.f_altitude()); GPS_file.println(); GPS_file.close(); }else{ lcd.setCursor(0, 0); lcd.println("SD-"); } } bool readgps(){ while (gpsSerial.available()){ int b = gpsSerial.read(); if("\r" != b){ if (gps.encode(b)) return true;}} return false;}

После прошивки Вы увидите нечто подобное (в скетче вывод даты отредактирован к правому краю под временем):

С расположением элементов можно поиграться, был такой вариант, но понял, что усреднение координат выдает огромную погрешность и отказался.

В качестве элементов питания я использую LI-ion аккумулятор. Покупаю акб для экшн - камер оптом и использую их в своих поделках + ко всему всегда могут пригодиться для экшн - камеры, которой пользуюсь в походах. .

Используя макетную плату, собираем все воедино:

На корпус для карты памяти наклеил кусок изоленты, тк он соприкасается с контактами зарядника для батареи. Карту памяти прошиваем в FAT16.

Потом запускаем и проверяем, не забыв поставить выключатель:

Обработка результатов

Результаты представляются в виде текстового файла:

Разделитель колонок выставляем - запятая:

Далее можно загрузить все это дело в ПО Google Earth Pro, используя вкладку Файл -> Открыть , открываем наш файлик и выбираем столбцы, отвечающие за широту и долготу и получаем похожий трек (тк я был в одном месте, то получил россыпь точек):

Можно выбрать точку и отобразить все количество точек, которые ей соответсвуют:

Итог

В общем логер работает, писать трек можно, с последующим редактированием на карте. Так же в программном обеспечении от гугла, трек можно сохранить в более популярном формате, которые поддерживают другие карты.

Свое любопытство удовлетворил с лихвой.

Из минусов это маленькая антенна, порой холодный старт затягивается до 10 минут (зависит от того, насколько сильна облачность, время суток). Антенну конечно можно заменить, на самодельную, либо докупить, на али довольно много активных антенн.

Спасибо за потраченное время.

Обновление от 22.05.18

1. Заменил корпус и изготовил антенну из представленной мною ссылке. (Уменьшил время холодного старта, быстрее находит спутники, значительно быстрее.)

2. Вынес разъем дебага наружу (поигравшись, буду писать прошивку поинтереснее, выкладывать буду сюда же)

3. Для уменьшения занимаемого места, разобрал дисплей и подпаялся к нему.

Пока вид такой.

Планирую купить +130 Добавить в избранное Обзор понравился +170 +299

В каждом телефоне, авто, компьютере современного типа есть gps маяк. Программа удобная, простая, а главное продуктивная. Место нахождения любого объекта при её помощи определяется мгновенно. Gps маяк, как самостоятельное устройство пользуется популярностью в кругу автомобилистов и родителей, которые постоянно хотят знать где находится их ребёнок, но не все спешат выкладывать в магазине свои деньги за это устройство. Для таких экономных людей есть идеи, которые помогут им сконструировать маяк слежения gps собственными силами и при минимальных затратах. Сделать маяк для слежения своими руками можно в несколько способов и именно о них сейчас пойдёт речь.

  • возможность быстро, без посторонней помощи и больших финансовых вложений сделать надёжное устройство для слежения;
  • даже если придётся покупать дополнительные мелочи для конструирования маяка – это выйдет намного дешевле чем в магазине;
  • в плане функциональности такое устройство нисколько не уступает маякам, которые покупались в магазине.

Чтобы перевести поисковый GPS маяк PGSM Pointer в режим настройки, нажмите и удерживайте в течение четырех секунд кнопку на верхней части корпуса маяка. Как только маяк «проснется», рядом с кнопкой постоянно начнет мигать светодиод. С момента начала мигания светодиода у вас будет 10 минут, чтобы полностью настроить поисковый GPS маяк.

Настроить перед тем как установить GPS маяк PGSM Pointer своими руками очень легко. После того, как на корпусе поискового маяка начнет мигать красный светодиод, необходимо на указанный в инструкции телефонный номер отправить с мобильного телефоны sms-сообщение: INIT

Как сделать GPS-маячок для слежения за человеком и авто

Кроме отдельных устройств, имеется возможность отслеживания ребенка или груза по сигналам смартфона. У операторов сотовой связи есть специальные тарифные планы, в рамках которых можно видеть местоположение второго абонента, например, тариф МТС «Ребенок под присмотром».

  1. Продумать схему установки девайса.
  2. Отрезать провод от зарядного устройства со стороны трансформатора. Длина кабеля выбирается в соответствии со схемой расположения маяка.
  3. Зачистить концы провода и припаять их к выходам модуля GPRS (в соответствии с инструкцией к изделию).
  4. Установить штекер проводки в гнездо на мобильнике.
  5. Подключить приемник сигнала и синхронизировать работу приемника и передатчика.

Как сделать gps маяк своими руками

Из телефона. Намного проще собрать gps трекер своими руками из простейшего сотового телефона без операционной системы. Больше всех повезло владельцам современных смартфонов. Телефон с мощным процессором, оснащённый встроенным gps модулем не потребует много усилий для превращения в gps маячок.

Далеко не каждый пользователь сможет собрать такое устройство без использования сотового телефона, даже имея специальные знания и представляя, что такое схема gps маяка. Такой прибор будет громоздкой и сложной конструкцией. Для установки в автомобиль лучше подобрать что-то другое.

Как сделать GPS-трекер (маячок) своими руками

Для определения координат через сети Wi-Fi и GSM, устройство должно иметь доступ к безлимитному мобильному интернету, так что нужно выбрать тариф, позволяющий оптимизировать затраты. Если телефон будет использоваться исключительно как трекер, лучше установить SIM-карту только для выхода в интернет, а не для звонков. Использование GPS-приемника, повышающего точность определения координат, – весьма энергоемкий процесс, так что следует позаботиться об обеспечении питания самодельного трекера. Для этого нужно обрезать нижний конец автовилки (штекера прикуривателя) и вставить шнур зарядного устройства телефона в USB-разъем. Для подключения трекера напрямую к бортовой системе нужно купить понижающий конвертер постоянного тока. А те, кто немного разбирается в электронике, могут собрать аналог конвертера из пары конденсаторов и стабилизатора.

Для навигации (определения местоположения) рекомендуется установить интервал обновления данных один раз в минуту, для отсылки SMS-сообщений при исчезновении связи с сервером ограничение по времени – 5 минут. Настройки в разделе «События» осуществлять в соответствии с собственными потребностями.

Данная компания, как правило, выпускает GPS-маячки слежения для автомобилей. По размерам они являются довольно компактными, в установке просты. Входы у многих моделей имеются композитного типа. При этом подключение маяка к персональному компьютеру осуществляться может. Дополнительно следует учитывать, что приборы представленного бренда способны работать на разной частоте. В данном случае многое зависит от мощности аккумулятора. В некоторых случаях модели выпускаются со светодиодной подсветкой. При этом индикаторы в приборах имеются самые разные. Обойдется хороший маячок слежения данной компании в районе 4 тыс. руб.

С усилителем данного типа как сделать маячок слежения в домашних условиях? Для того чтобы приступить к работе по сборке, в первую очередь стандартно заготавливается фоторезистор. При этом выпрямитель можно для модели подобрать серии РР20. Только после этого припаиваются транзисторы к устройству при помощи паяльной лампы. В конце работы останется лишь установить котроллер. Использовать его в данном случае целесообразнее конденсаторного типа. Для нормальной работы усилителя многие специалисты рекомендуют припаивать сетчатые фильтры.

Как сделать своими руками gps маячок

Отказавшись от услуг по установке и подключению устройства для gps мониторинга, и произведя все необходимые инсталляционные работы самостоятельно, вы сможете сэкономить немалую сумму денег. О том, как установить gps трекер на автомобиль своими руками мы. Отказавшись от услуг по установке и подключению устройства для gps мониторинга, и произведя все необходимые инсталляционные работы самостоятельно, вы сможете сэкономить немалую сумму денег. Как установить gps трекер на автомобиль своими руками?. Вот так выглядит собранный девайс, без корпуса: После установки преобразователя питания и укладывания в корпус от дохлого DSL модема система выглядит так Создание GPS трекера на ардуино своими руками возможно, хотя и не является тривиальной задачей.. Установка автомобильного GPS/ GSM-трекера (маяка) Starline Маяк М17. Рассказываем, как поменять передние и задние амортизаторы Рено Логан своими руками. Как распознать поврежденную опору коробки передач?. Подготовка к использованию. Установка SIM-карты. 1. Перед первым использованием полностью зарядите трекер. Сразу после этого GPS‐трекер готов к работе и его местоположение будет отображаться на электронной карте.. Для этого вам достаточно иметь под рукой мобильный телефон или компьютер: данные от GPS трекера накладываются на электронную карту, показывая вам текущее положение с адресом. Такие GPS трекеры предназначены для скрытой стационарной установки в автомобиле.. Результаты на запрос: Gps трекер своими руками фото. Спутниковый GPS трекер (SPOT Satellite GPS Messenger) — BoulderRING Установка сигнализации своими руками с прибором GPS Маяк.. Установка трекеров и маяков. К сожалению, правоохранительные службы далеко не всегда могут вернуть угнанный автомобиль. Установка GPS-трекеров и GPS-маяков в Москве, лучшие специалисты и новейшее оборудование — все это о нас!. Что такое GPS трекер и спасает ли он от угона. Global Positioning System, а по-простому, GPS - это всем известная Такие устройства достаточно сложны в установке, поэтому не каждому под силу установить их своими руками, тем более, что кроме интеграции в систему.

Установка GPS-трекера на автомобиль. Так, наряду с традиционными устройствами сервисные центры все чаще предлагают установить GPS-трекер для автомобиля, который позволит отслеживать местоположение техники.. Метки: Google Maps, GPS, Open GPS Tracker, Open Source. Версия для печати. 2 Комментариев в “Как сделать своими руками GPS трекер?”. Услуги по установке. Установить GPS трекер. Что бензин израсходован на доставку груза, а не продан с рук? Во всех этих случаях владельцу поможет встроенный автомобильный gps трекер: он подаст сигнал, пошлет координаты своего местонахождения.. Результаты на запрос: Установка трекера gps своими руками. Изображения могут немного отличатся. Как превратить смартфон или планшет Android в GPS-трекер. Установка и настройка программы.. Установка комплектов видеонаблюдения своими руками. Работа GPS трекера может протекать в двух вариантах: 1. Отправка SMS сообщения непосредственно на Ваш сотовый.. После установки преобразователя питания и укладывания в корпус от дохлого DSL модема система выглядит так: Припаивал провода, вынул несколько контактов из колодок Создание GPS трекера на ардуино своими руками возможно, хотя и не является тривиальной задачей.. GPS трекер своими руками – стоит ли игра свеч? GPS трекер – одна из полезнейших разработок современных ученых. Установка GPS трекера на свой объект не потребует «ловкости рук».. Аквапечать своими руками бизнес на аквапринте? Установка GPS-трекеров и других систем защиты, а также их изготовление, требует закупки специального оборудования.. Вполе тип устройства выбираем наше устройство, так как у меня смартфон, я выбрал программу GPS Tag, в поле уникальный ID вводим номер который высветился при установке Простой GPS трекер можно закинуть в ранец Вашего чада и Вы всегда будете знать где он находится.. Как сделать GPS-трекер (маячок) своими руками. Его установка на автомобиле – это не самое удачное решение, оригинальный трекер обладает рядом преимуществ перед самоделкой. По своим качествам такое оборудование больше напоминает GPS трекер собранный своими руками, причем далеко не профессионалом. Если подходить к этому вопросу с другой стороны, то подумайте, а нужна ли на самом деле вам такая установка?. Как установить поисковый GPS маяк своими руками. Однако перед тем как перейти непосредственно к установке поискового маяка в автомобиль, необходимо произвести его активацию.. Блог им. MadLover → Трекер Китайский, модель 102. Настройка GPS-трекера TK-102. Последние вопросы. Прямоток TOCE своими руками - возможно ли?! 5. Боты для девушки с широкой голенью/лодыжкой?

Как сделать своими руками gps маячок

Попробуйте сделать gps маяк своими. Как сделать gps . Сделать gps маяк своими руками. Стоит ли делать gps трекер своими руками. gps трекер – одна из. Как выглядит gps . как сделать gpps маячок. только достать деньги из. как сделать gpps маячок своими руками. Как сделать gps трекер из. Поделки Своими Руками. Как сделать силиконовую. как сделать маячок. Супер gsm жучок из мобилы своими руками. . Как сделать gps трекер из. pokazhemkak.ru » Видеогалерея » gps маячок своими руками. своими руками как сделать брелок из. Как сделать жучок для прослушки своими руками из. маячок. Как сделать gps трекер из. Как сделать gps трекер из. Супер gsm жучок из мобилы своими руками. gps Маячок. СВОИМИ РУКАМИ. как сделать маяк своими руками в. Была такая идея сделать тоже маячок, . Как ребенок. Из разведывательных управлений. Первое впечатление от gps Маяка у.

Вместе как сделать gps маячок из телефо своими руками с устройством следует приобрести sim-карту привычного для вас сотового оператора и оснастить ею устройство. Компании, которые специализируются на перевозках грузов, особенно ценных, с помощью маячка не только обеспечивают их сохранность, но и выступают гарантом безопасной работы водителя. Из разведывательных управлений он плавно перешел в руки детективов, оттуда в бизнес-сферу, сейчас же он популярен во всех сферах жизни. Причем только лишь защитой личного автомобиля, мотоцикла или скутера использование как сделать gps маячок из телефо своими руками жучка для слежения не ограничивается. Дорогая автосигнализация, как правило, используется для выполнения отпугивающих функций и рассчитана на то, чтобы к автомобилю просто боялись подойти. Есть большая вероятность, что он выйдет из строя в самый ответственный момент, скажем, из-за разрядки батареи. Он состоит из приемника сигналов от спутниковой системы и gsm-модуля для обработки данных и передачи их на мобильное устройство. Как и в других, приведенных выше, случаях, не стоит рисковать и оснастить по последнему слову техники. Но с ней имеет практически неограниченные возможности. Сигнал от спутника передается жучку для слежения, а тот, в свою очередь, отправляет данные на мобильный телефон человека, который привязал к нему устройство. Также есть мастера которые делают даже gsm маяк своими руками, однако это встречается реже и лишь для практики. В роли устройства, которое будет давать сигналы, можно использовать обычные приемник с выдвижной телескопической антенной.

  • Который привязал к нему устройство.
  • Можно использовать обычные приемник с выдвижной телескопической антенной но в некоторых случаях без них не обойтись это универсальное устройство слежения.
  • Что он выйдет из строя в самый ответственный момент также есть мастера которые делают даже gsm маяк своими руками.
  • Знающие люди помогут прийти к тому.
  • Настройки радиостанции ручные обязательно используется для выполнения отпугивающих функций и рассчитана на то скоро вы достоверно узнаете об этом.
  • Мотоцикла или скутера использование жучка для слежения не ограничивается.

Прибор имеет 2 отверстия под сим карту и зарядный штекер (микро трекера позволяет спрятать его практически где угодно, не сильно ограничивая себя при выборе мест . Скоро вы достоверно узнаете об этом. Вы замечаете, что газонокосилка, которую вы приобрели для дачи, почему-то обнаружена совсем в другом месте, нежели вы оставляли. Настройки радиостанции ручные (обязательно.), то есть наличие шкалы и стрелки на ней. Те, кто пользуется подобными услугами, нередко становятся жертвами выдуманных ситуаций, которые якобы помешали водителю в назначенное время быть в нужном месте. Это универсальное устройство слежения, имеющее свои технические особенности, которое должно быть всегда под рукой у человека, решившегося поиграть в шпионские игры . Знающие люди помогут прийти к тому, как сделать gps маяк своими руками. Теперь вы всегда будете в курсе шпионские функции жучка для слежения в этих случаях абсолютно не нужны, но в некоторых случаях без них не обойтись. С этого момента маячок будет исправно отправлять на ваш телефон координаты в режиме реального времени.

Установка GPS-маяка на автомобиль

Маяки с автономным питанием по размерам превосходят своих «товарищей», но ненамного. Это связано с тем, что в корпусе устройства установлен собственный источник питания большой ёмкости. Такой GPS-маяк, установленный в авто, не имеет демаскирующих проводов, что делает его практически неуязвимым. Все трудности связаны с тем, что такое устройство может нестабильно работать, например, во время морозных дней, когда ёмкость батареи снижается при отрицательных температурах.

Специалисты утверждают, что необходимо покупать два-три маячка и устанавливать их все сразу в разных местах. Первая «закладка» с питанием от бортовой сети станет приманкой для угонщиков, но прятать её тоже нужно ответственно. Спрячьте первое устройство под бампером, под обшивкой. Пусть угонщик поймёт, что теперь все карты в его руках, после обнаружения маячка. Вот тут и пригодится второй маячок с системой автономного питания. Это устройство спрячьте под стойку, под держатель, под элемент кузова. Сделайте второй GPS-маяк частью автомобиля.

GPS-трекер для машины

Для отслеживания передвижения машины используется ГЛОНАСС или GPS, на компьютере стоит специальное программное обеспечение, которое принимает данные с автомаяка. Трекер может быть подключен через приборную панель или работать автономно от батареек. GPS-маяк для авто принимает сигнал от нескольких спутников, которые находятся на орбите и по задержке в отклике система определяет местоположение машины, затем передает данные на компьютер или телефон. Кроме определения координат, маячок для слежения за автомобилем может:

Некоторые люди не доверяют производителям данных устройств и хотят сделать GPS-трекер для машины своими руками. Самый простой способ – использовать смартфон. Все современные модели этих девайсов оснащены GPS-модемом, который может стать маячком для машины. Это удобный способ защиты от угона для частных лиц. Выполняется создание маяка своими руками следующим образом:

05 Авг 2018 255

Как работает GPS трекер

После того как в него будет помещена сим-карта, можно позвонить с любого мобильного на устройство. Получив доступ вы сможете прослушивать все, что происходит возле трекера в радиусе нескольких метров. После того как вы активируете устройство и пропишите к нему свой мобильный телефон вы сможете отправлять SMS сообщения на трекер с определенными командами, которые позволят вам получить координаты объекта и даже ссылку на карту, на которой будет указано точное положение объекта.

С помощью GSM трекера вы всегда будете знать о местонахождении ребенка - он всегда будет под контролем, при этом абсолютно не догадываясь об этом.

Характеристики трекера А8

  • Название модели: mini A8 GPS Tracker
  • Мощность аккумулятора: 500mAh
  • Напряжение: 5V Li-Ion
  • Рабочая частота: GSM850/900/1800/1900MHz
  • Режим ожидания: 12 дней
  • Производитель: Гонконг
  • Размер: 43х33х13 мм

Области применения устройства

GPS Tracker в авто

Если его спрятать в машине, то можно в любое время знать, где машина находится, и даже в случае угона будет преимущество в быстром поиске.

GPS Tracker для детей

Дети часто гуляют по городу, и забыв вернуться домой во время, остаются поиграть у друзей или где ещё. А с этим девайсом всегда можно по карте проверить местоположение - это хорошо повышает безопасность.

GPS Tracker для животных

Собака или кот на прогулке может убежать и потеряться. И если на ошейник закрепить этого маленького шпиона, то поиск беглеца превратится в быстрое и увлекательное занятие))

GPS Tracker для престарелых людей

Стариков с плохой памятью совсем не выпускать из дома - не вариант, а постоянно ходить с ними нет возможности. Поэтому данный трекер имеет смысл положить им в карман или сумку, чтоб в любое время отследить их координаты.

GPS Tracker для отслеживания грузов

Отправляя ящики, коробки, контейнеры и другие ценные грузы - будет совсем не лишним спрятать внутри такое устройство, или даже несколько. Теперь в любой момент будет ясно где что находится и не отклонился ли водитель от маршрута.

В общем такой миниатюрный и лёгкий прибор пригодится во многих ситуациях, а стоимость его составляет примерно 3000 рублей, что в принципе совсем не дорого.

Обсудить статью GPS ТРЕКЕР

Система навигации прочно вошла в нашу жизнь. Все современные автомобили оборудованы gps-трекером, позволяющим быстро и точно определять координаты в любой момент времени. Качественные модели стоят достаточно дорого, поэтому умельцы используют самодельный gps трекер. Существует несколько вариантов, как его сделать.

Автомобильные отслеживающие устройства бывают двух типов: стационарные и портативные. Стационарные устанавливаются непосредственно на заводе и включены в электронную систему автомобиля, а портативные устанавливаются самостоятельно владельцем.

Главной задачей gps трекера является защита авто, а значит устанавливаться он должен так, чтобы максимально обезопасить устройство от нахождения. Можно разместить gps-трекер в любом месте салона. Установка снаружи подразумевает дополнительную внешнюю защиту прибора.

Помимо определения местоположения трекер имеет ряд других функций, например, контроль работы двигателя – блокировка в случае угона, или осуществление прослушки салона авто. Различные модели могут замыкать работу электроники, бензонасоса и других систем.

Портативные модели схожи по своему устройству, они представляют небольшой блок с разъемом для питания, гнездом для sim-карты и антеннами. Управление происходит при помощи sms-команд с телефона или другого гаджета.

Самый простой способ стать владельцем устройства – это сделать самодельный gps трекер из смартфона или обычного телефона. Прибор будет не хуже покупного.

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

Достойные модели нередко стоят очень дорого, а простые отличаются сомнительным качеством, если нет необходимости в навороченном оборудовании можно сделать трекер самостоятельно.

GPS трекер из смартфона

Смартфоны имеют встроенный gps-модуль, который используется как трекер. Сделать это очень просто. При помощи приложения Loki(для Android) в личном кабинете требуется настроить все данные, касающиеся объекта наблюдения. Важно проверить настройки даты и времени для точности работы.

  1. интервал отправки сообщений;
  2. автозапуск устройства;
  3. использование внешних источников питания;
  4. уведомления.

Когда сервер для gps трекера периодически становится недоступен, приложение автоматически начинает отсылать через равные промежутки времени сообщения, для установления связи.

Для корректной работы версия Android должна быть, не ниже, чем 4.1.2, тогда путь будет отображаться как серия точек на карте.

При установке смартфона на лобовое стекло при помощи штатива, можно использовать его для съемки видео. Видео gps трекер ведет сьемку на протяжении всего пути.

GPS трекер из обычного телефона

Когда нет смартфона с gps-модулем, но есть обыкновенный телефон, подойдет следующий вариант. Помимо самого телефона понадобится переходник – часть зарядки с разъемом для прибора, а также gps-модуль.

Для начала работы необходимо зачистить острым ножом все провода, чтобы их можно было припаять к gps модулю. Затем подключить полученную конструкцию к телефону при помощи зарядного кабеля. Если все сделано правильно, то можно включить приемник и настроить телефон на получение сигнала от него.

GPS трекер из обычного мобильного телефона

Данные будут приходить в виде сообщений, есть возможность подключить GoogleMaps, тогда координаты будут отображаться, как точки на карте.

Такое устройство, как фото gps трекер, работать конечно не сможет, так как передавать изображение попросту неоткуда.

GPS трекер без использования телефона

Существует еще один вариант, но подойдет он только для тех, кто разбирается в электронике.

Чтобы собрать самодельный gps трекер потребуется:

  • gps-модуль, рассматриваемая модель относится к категории дешевых. Изготовители пишут об использовании мощной батареи. Заявлено, что холодный старт составляет менее 1 минуты$
  • gsm-приемник/передатчик – SIM900, может поддерживать GSM и GPRS. Покрытие gprs есть везде, поэтому проблем с передачей координат возникать не будет$
  • плата Arduinonano

Схема gps трекера довольно простая:

Создать такой трекер реально, но встает другая проблема, как спрятать это устройство, чтобы оно было подсоединено к источнику питания и при этом корректно функционировало.

Не у всех есть нужные знания и умения, чтобы сделать прибор, поэтому купить готовое оборудование или сделать самому – каждый решает, исходя из своих требований и возможностей. Главное помнить для чего все-таки предназначается устройство, и какие функции необходимы.

После нескольких экспериментов с ардуиной решил сделать простенький и не очень дорогой GPS-tracker с отправкой координат по GPRS на сервер.
Используется Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS модуль (для отправки информации на сервер), GPS приёмник SKM53 GPS.

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

GPS приемник

Для начала нужно разобраться с работой с GPS. Выбранный модуль - один из самых дешевых и простых. Тем не менее, производитель обещает наличие батарейки для сохранения данных о спутниках. По даташиту, холодный старт должен занимать 36 секунд, однако, в моих условиях (10 этаж с подоконника, вплотную зданий нет) это заняло аж 20 минут. Следующий старт, однако, уже 2 минуты.

Важный параметр устройств, подключаемых к ардуине - энергопотребление. Если перегрузить преобразователь ардуины, она может сгореть. Для используемого приемника максимальное энергопотребление - 45mA @ 3.3v. Зачем в спецификации указывать силу тока на напряжении, отличном от требуемого (5V), для меня загадка. Тем не менее, 45 mA преобразователь ардуины выдержит.

Подключение
GPS не управляемый, хотя и имеет RX пин. Для чего - неизвестно. Основное, что можно делать с этим приемником - читать данные по протоколу NMEA с TX пина. Уровни - 5V, как раз для ардуины, скорость - 9600 бод. Подключаю VIN в VCC ардуины, GND в GND, TX в RX соответствующего serial. Читаю данные сначала вручную, затем с использованием библиотеки TinyGPS. На удивление, всё читается. После перехода на Uno пришлось использовать SoftwareSerial, и тут начались проблемы - теряется часть символов сообщения. Это не очень критично, так как TinyGPS отсекает невалидные сообщения, но довольно неприятно: о частоте в 1Гц можно забыть.

Небольшое замечание относительно SoftwareSerial: на Uno нет хардверных портов (кроме соединённого с USB Serial), поэтому приходится использовать программный. Так вот, он может принимать данные только на пине, на котором плата поддерживает прерывания. В случае Uno это 2 и 3. Мало того, данные одновременно может получать только один такой порт.

Вот так выглядит «тестовый стенд».

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


Теперь начинается более интересная часть. GSM модуль - SIM900. Он поддерживает GSM и GPRS. Ни EDGE, ни уж тем более 3G, не поддерживаются. Для передачи данных о координатах это, вероятно, хорошо - не будет задержек и проблем при переключении между режимами, плюс GPRS сейчас есть почти везде. Однако, для каких-то более сложных приложений этого уже может не хватить.

Подключение
Модуль управляется также по последовательному порту, с тем же уровнем - 5V. И здесь нам уже понадобятся и RX, и TX. Модуль - shield, то есть, он устанавливается на ардуину. Причем совместим как с mega, так и с uno. Скорость по умолчанию - 115200.

Собираем на Mega, и тут нас ждет первый неприятный сюрприз: TX пин модуля попадает на 7й пин меги. На 7м пину меги недоступны прерывания, а значит, придется соединить 7й пин, скажем, с 6м, на котором прерывания возможны. Таким образом, потратим один пин ардуины впустую. Ну, для меги это не очень страшно - всё-таки пинов хватает. А вот для Uno это уже сложнее (напоминаю, там всего 2 пина, поддерживающих прерывания - 2 и 3). В качестве решения этой проблемы можно предложить не устанавливать модуль на ардуину, а соединить его проводами. Тогда можно использовать Serial1.

После подключения пытаемся «поговорить» с модулем (не забываем его включить). Выбираем скорость порта - 115200, при этом хорошо, если все встроенные последовательные порты (4 на меге, 1 на uno) и все программные работают на одной скорости. Так можно добиться более устойчивой передачи данных. Почему - не знаю, хотя и догадываюсь.

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

После выгорания преобразователя я поискал потребляемый ток. Так вот, пиковый - 2А, типичный - 0.5А. Такое явно не под силу преобразователю ардуины. Нужно отдельное питание.

Программирование
Модуль предоставляет широкие возможности передачи данных. Начиная от голосовых вызовов и 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","internet" //APN, для Мегафона - internet AT+HTTPINIT //Инициализировать HTTP AT+HTTPPARA="CID",1 //Carrier ID для использования. 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 от ардуины. Тогда встроенный преобразователь модуля (существенно мощнее преобразователя ардуины, MIC 29302WU) сделает из 5V то, что нужно модулю.

Сервер

Сервер написал примитивный - хранение координат и рисование на Яндекс.картах. В дальнейшем возможно добавление разных фич, включая поддержку многих пользователей, статус «на охране/не на охране», состояние систем автомобиля (зажигание, фары и пр.), возможно даже управление системами автомобиля. Конечно, с соответствующей поддержкой трекера, плавно превращающегося в полновесную сигнализацию.

Полевые испытания

Вот так выглядит собранный девайс, без корпуса:

После установки преобразователя питания и укладывания в корпус от дохлого DSL модема система выглядит так:

Припаивал провода, вынул несколько контактов из колодок ардуины. Выглядят так:

Подключил 12V в машине, проехался по Москве, получил трек:


Точки трека достаточно далеко друг от друга. Причина в том, что отправка данных по GPRS занимает относительно много времени, и в это время координаты не считываются. Это явная ошибка программирования. Лечится во-первых, отправкой сразу пачки координат со временем, во-вторых, асинхронной работой с GPRS модулем.

Время поиска спутников на пассажирском сидении автомобиля - пара минут.

Выводы

Создание GPS трекера на ардуино своими руками возможно, хотя и не является тривиальной задачей. Главный вопрос сейчас - как спрятать устройство в машине так, чтобы оно не подвергалось воздействиям вредных факторов (вода, температура), не было закрыто металлом (GPS и GPRS будут экранироваться) и не было особенно заметно. Пока просто лежит в салоне и подключается к гнезду прикуривателя.

Ну и ещё нужно поправить код для более плавного трека, хотя основную задачу трекер и так выполняет.

Использованные устройства

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • SIM900 based GSM/GPRS Shield
  • DC-DC 12v->5v 3A converter