помогите понять GPS
- Войдите на сайт для отправки комментариев
доброва времяни суток
собрал небольшой GPS приёмник и небольшой тестовый стендик
и вот такой тестовый скетч
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#define rxGPS 9
#define txGPS 10
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7);
// long lat,lon;
int counter = 0;
SoftwareSerial gpsSerial(rxGPS,txGPS);
TinyGPSPlus gps;
void setup(){
gpsSerial.begin(9600); // connect gps sensor
display.begin();//инициолизация дисплея
display.setContrast(50);//контрастность 60
display.display();//показать буфер на дисплее
display.clearDisplay(); //очистить дисплей
}
void loop(){
while(gpsSerial.available()){ // check for gps data
if(gps.encode(gpsSerial.read())){ // encode gps data
display.print("SATS: ");
display.println(gps.satellites.value());
display.print("N: ");
display.println(gps.location.lat(), 6);
display.print("W: ");
display.println(gps.location.lng(), 6);
display.print("ALT: ");
display.println(gps.altitude.meters());
display.print("SPEED: ");
display.println(gps.speed.mps());
display.print("Hour:");
display.print(gps.time.hour()); display.print(":");
display.print(gps.time.minute()); display.print(":");
display.println(gps.time.second());
display.display();
delay(20000);
display.clearDisplay();
}
}
}
всё хорошо, но мне бы хотелось чтобы во время простоя модуль уходил в режим сна и просыпался когда его опрашивают в библиотеки TyniGps я не нашол никаких комманд ждя этого а PMTK протокл это делать вроде как позваляет но я немогу пока панять как мне его использовать в скетче,
может кто подсказать как это сделать ?
Как я понял вы хотите загнать дуину в спячку ,после того как оный вывел данные(координаты, время и пр.) на дисплей.
Вопрос : будить чем собираетесь? програмно ?, если глубоий сон, то разбудить можно только аппаратно , подав сигнал на ногу
прерывания. СОВЕТ - почитайте про прерывания и режимы сна Меги 328 , думаю там собачка порылась.
Я в своих проектах из сна вывожу подачей сигнала на(ногу) прерывания , и друже, последите за русским языком, хромает....
Еще вопрос: какой ГПС ПРИЕМНИК?
Какой протокол на выходе приемника NMЕА0183, или бинарный? думаю пляс надо от этой печи начинать.
Осенило, а зачем дуину загонять в сон? она в рабочем режиме кушает 4-5 мА , а GpS приемники в рабочем режиме 20-30мА . если вы загоните в спячку и приемник, то потом придется ждать когда он очнется, горячий старт 3-5 сек, теплый 20-30 сек, холодный до минуты, неясен смысл ваших деяний....да и на картинке фары у дисплея не выключены(до40мА)...
смысл экономии очень прост, мне он не нужен постоянно и аккамулятор маленький, обновление раз в минуту или в 5 минут или в секунду всё будит зависить от надобноси или вообще режим сна на пол дня, использую SIM28ml с внешней активной антеной
снимаю я с него NMEA как понятно это всё обрабатывает ардуино и выдаёт конечные данные а не $GPGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M,,,,0000*18
я пологаю что в PMTK протоколах это есть
$PMTK161,0*28/r/n/ проснуться
$PMTK161,1*29/r/n/ уснуть
и много всего интересного
http://www.sabreadv.com/wp-content/uploads/SIM28ML_Hardware-Design_V1.01.pdf
понимаю строчка должна выглядить так gpsSerial.write("$PMTK161,0*28/r/n/");
или я чего то не допонимаю но пока не получается прикрутить это
Для начала подключи гпску через usb-uart адаптер к компу, используя программу терминал ,
у тебя будут валится сообщения Nmea . Надо отправить гпске сообщение $PMTK161,1*29 +0Аh + 0Dh , загнать приемник в спящий режим
,в терминал перестанут валится данные NMEA,
потом другой $PMTK.... какой-то командой попробовать его разбудить. Программу-терминал лучше использовать ту , которая может
отправлять не по одному символу, а одним махом строку (типа отправить макрос),
Прога - Terminal v1.9b by Br@y++ я ее пользую , надо, пришли почту , я кину
+0Аh + 0Dh это перевод строки в ASCII в HEX
да если вводить комманды PMTK на прямую всё работает, правда с 26Mah падает до 12Mah немного не то что мне нужно но это может быть связанно с активной антенной, буду пробовать в скетче, к сожалению у меня умер дисплей на шилде, буду делать на новом
Да, возможно ативная антенна ням=ням хорошо делает, а дисплей попробуй разобрать и помыть спиртиком резинку и контакты- иногда помогает.Гпску можно через мосфет ключи запитать, обрубая по-полной питание
увы скорее трещине на дорожке, есть http://misc.ws/2013/11/08/touch-screen-shield-for-arduino-uno/ от основного проэкта хочу его прикрутить с самодельной ардуино на Atmega128, пока воюю с этой проблемой, результуа пока нет, но надеюсь на лучшие