помогите понять GPS

exolon
Offline
Зарегистрирован: 20.05.2015

доброва времяни суток

собрал небольшой 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 протокл это делать вроде как позваляет но я немогу пока панять как мне его использовать в скетче,

может кто подсказать как это сделать ?

wallera
Offline
Зарегистрирован: 22.07.2015

Как я понял вы хотите загнать дуину в спячку ,после того как оный вывел данные(координаты, время и пр.) на дисплей.

Вопрос : будить чем собираетесь? програмно ?, если глубоий сон, то  разбудить можно только аппаратно , подав сигнал на ногу

прерывания. СОВЕТ  - почитайте про прерывания и режимы сна Меги 328 , думаю там собачка порылась.

Я в своих проектах из сна вывожу подачей сигнала  на(ногу) прерывания , и друже, последите за русским языком, хромает....

Еще вопрос: какой ГПС ПРИЕМНИК?

Какой протокол на выходе приемника NMЕА0183, или бинарный? думаю пляс надо от этой печи начинать.

Осенило, а зачем дуину загонять в сон? она в рабочем режиме кушает 4-5 мА , а GpS приемники в рабочем режиме 20-30мА . если вы загоните в спячку и приемник, то потом придется ждать когда он очнется, горячий старт 3-5 сек, теплый 20-30 сек, холодный до минуты, неясен смысл ваших деяний....да  и на картинке фары у дисплея не выключены(до40мА)...

exolon
Offline
Зарегистрирован: 20.05.2015

смысл экономии очень прост, мне он не нужен постоянно и аккамулятор маленький, обновление раз в минуту или в 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/");

или я чего то не допонимаю но пока не получается прикрутить это

wallera
Offline
Зарегистрирован: 22.07.2015

Для начала  подключи гпску через  usb-uart адаптер к компу, используя программу терминал ,
у тебя будут валится сообщения Nmea .  Надо отправить гпске сообщение $PMTK161,1*29 +0Аh + 0Dh , загнать приемник в спящий режим
,в терминал перестанут валится данные NMEA,
потом другой $PMTK.... какой-то командой попробовать его разбудить. Программу-терминал лучше использовать ту , которая может
отправлять не по одному символу, а одним махом строку  (типа отправить макрос),
Прога - Terminal v1.9b by Br@y++ я ее пользую , надо, пришли почту , я кину   

+0Аh + 0Dh это перевод строки в ASCII в HEX

exolon
Offline
Зарегистрирован: 20.05.2015

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

wallera
Offline
Зарегистрирован: 22.07.2015

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

exolon
Offline
Зарегистрирован: 20.05.2015

увы скорее трещине на дорожке, есть http://misc.ws/2013/11/08/touch-screen-shield-for-arduino-uno/ от основного проэкта хочу его прикрутить с самодельной ардуино на Atmega128, пока воюю с этой проблемой, результуа пока нет, но надеюсь на лучшие