www.kn34pc.com

Форум на силистренските радиолюбители
Дата и час: 21 Май 2025, 02:51

Часовете са според зоната UTC + 2 часа




Напиши нова тема Отговори на тема  [ 4 мнения ] 
Автор Съобщение
МнениеПубликувано на: 27 Май 2024, 11:52 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1571
Местоположение: Силистра
Инфо:
NMEA sentence information:
https://aprs.gids.nl

GPS fix data and undulation
https://docs.novatel.com/OEM7/Content/Logs/GPGGA.htm
https://docs.novatel.com/OEM7/Content/Logs/GPRMC.htm

GGA - Global Positioning System Fix Data
https://gpsd.gitlab.io/gpsd/NMEA.html#_ ... m_fix_data


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 27 Май 2024, 12:09 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1571
Местоположение: Силистра
UBX-G6010-ST свързана към USART1 в STM32F100C8T6, изход (засега) към USART3.
Засега изходът повтаря входа (ехо).
Трябва да науча МК да декодира ...
Като първа задача: точно време.

Харесал съм си $GPGGA и $GPRMC. Примерна извадка на данните:
$GPGGA,083836.00,8888.88888,N,88888.88888,E,1,04,4.25,45.7,M,34.7,M,,*62
$GPRMC,083837.00,A,8888.8888888,N,88888.88888,E,0.519,,230524,,,GPZDA,,,,,00,0

Текущото време UTC е в hhmmss.ss: 083836.00, декущата дата е в dd/mm/yy: 230524


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 28 Май 2024, 11:58 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1571
Местоположение: Силистра
"Ръчно" сглобен начин, но работи :smile.
Код за потвърждение:
uint8_t buf[500] = {0};
uint8_t clock[8] = {0};
bool ok = false;
---
while (1) {
  HAL_UART_Receive(&huart1, buf, sizeof(buf), 1000);

  // $GPGGA,083836.00,8888.88888,N,88888.88888,E,1,04,4.25,45.7,M,34.7,M,,*62

  for (uint16_t i = 0; i < 500; i++)
    if (buf[i] == '$') {
      i++;
      if (buf[i] == 'G') {
        i++;
        if (buf[i] == 'P') {
          i++;
          if (buf[i] == 'G') {
            i++;
            if (buf[i] == 'G') {
              i++;
              if (buf[i] == 'A') {
                i++;
                if (buf[i] == ',') {
                  i++;
                  clock[0] = buf[i + 0];
                  clock[1] = buf[i + 1];
                  clock[2] = buf[i + 2];
                  clock[3] = buf[i + 3];
                  clock[4] = buf[i + 4];
                  clock[5] = buf[i + 5];
                  clock[6] = '\r';
                  clock[7] = '\n';
                  ok = true;
                  break;
                }
              }
            }
          }
        }
      }
    }

  if (ok) {
    HAL_UART_Transmit(&huart3, clock, sizeof(clock), 1000);
    ok = false;
  }

  buf[0] = ' ';
  clock[0] = ' ';

  HAL_Delay(50);
}

Текущо UTC време в HHMMSS, засега в char масив.
Два часа си "цъка" към Arduino Serial на 9600 и не губи данни.
Прикачени файлове:
cl.jpg
cl.jpg [ 81.18 KiB | Прегледано 473 пъти ]


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 06 Юни 2024, 14:14 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1571
Местоположение: Силистра
Изход към LCD0802 с I2c адаптер на PCF8574:
Код за потвърждение:
if (ok) {
  lcd_put_cur(0, 0);
  show_clock(atoi(clock));  // clock in uint32_t: 114345 -> 11:43:45
  ok = false;
}

и печат към дисплея (с корекция +3 за BG-time):
Код за потвърждение:
void show_clock(uint32_t n)
{
  uint8_t hh = n / 10000;
  uint8_t mm = (n / 100) % 100;
  uint8_t ss = n % 100;

  hh += 3;  // +3 -> BG time
  if (hh > 23)
    hh -= 24;

  lcd_send_data((hh / 10) + '0');  // uint8_t to char
  lcd_send_data((hh % 10) + '0');
  lcd_send_data('-');
  lcd_send_data((mm / 10) + '0');
  lcd_send_data((mm % 10) + '0');
  lcd_send_data('-');
  lcd_send_data((ss / 10) + '0');
  lcd_send_data((ss % 10) + '0');
}


Прикачени файлове:
lcd_gps_clock_а.jpg
lcd_gps_clock_а.jpg [ 112.84 KiB | Прегледано 312 пъти ]
Върнете се в началото
 Профил  
 
Покажи мненията от миналия:  Сортирай по  
Напиши нова тема Отговори на тема  [ 4 мнения ] 

Часовете са според зоната UTC + 2 часа


Кой е на линия

Потребители, разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
cron
Форумът се задвижва от phpBB® Forum Software © phpBB Group
Преведено от yarnaudov.com