Аватар для шоколад
1 / 1 / 0
Регистрация: 19.05.2013
Сообщений: 47

Подключение GPS модуля Grove-GPS к Arduino UNO

11.11.2013, 11:35. Показов 7649. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подсоединил Grove-GPS к Arduino UNO. Вот код программы:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#include <SoftwareSerial.h>
 
#include <TinyGPS.h>
 
/* This sample code demonstrates the normal use of a TinyGPS object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 3(rx) and 4(tx).
*/
 
TinyGPS gps;
SoftwareSerial nss(1, 0);//tx and rx pins in my arduino GPS shield
 
static void gpsdump(TinyGPS &gps);
static bool feedgps();
static void print_float(float val, float invalid, int len, int prec);
static void print_int(unsigned long val, unsigned long invalid, int len);
static void print_date(TinyGPS &gps);
static void print_str(const char *str, int len);
 
void setup()
{
  Serial.begin(9600);
  nss.begin(9600);//baud rate for the GPS shield
  
  Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
  Serial.println("by Mikal Hart");
  Serial.println();
  Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS));
  Serial.println();
  Serial.println("Sats HDOP Latitude Longitude Fix  Date       Time       Date Alt     Course Speed Card  Distance Course Card  Chars Sentences Checksum");
  Serial.println("          (deg)    (deg)     Age                        Age  (m)     --- from GPS ----  ---- to London  ----  RX    RX        Fail");
  Serial.println("--------------------------------------------------------------------------------------------------------------------------------------");
}
 
void loop()
{
  bool newdata = false;
  unsigned long start = millis();
  
  // Every second we print an update
  while (millis() - start < 1000)
  {
    if (feedgps())
      newdata = true;
  }
  
  gpsdump(gps);
}
 
static void gpsdump(TinyGPS &gps)
{
  float flat, flon;
  unsigned long age, date, time, chars = 0;
  unsigned short sentences = 0, failed = 0;
  static const float LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
  
  print_int(gps.satellites(), TinyGPS::GPS_INVALID_SATELLITES, 5);
  print_int(gps.hdop(), TinyGPS::GPS_INVALID_HDOP, 5);
  gps.f_get_position(&flat, &flon, &age);
  print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 9, 5);
  print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 10, 5);
  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
 
  print_date(gps);
 
  print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 8, 2);
  print_float(gps.f_course(), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
  print_float(gps.f_speed_kmph(), TinyGPS::GPS_INVALID_F_SPEED, 6, 2);
  print_str(gps.f_course() == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(gps.f_course()), 6);
  print_int(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0UL : (unsigned long)TinyGPS::distance_between(flat, flon, LONDON_LAT, LONDON_LON) / 1000, 0xFFFFFFFF, 9);
  print_float(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : TinyGPS::course_to(flat, flon, 51.508131, -0.128002), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
  print_str(flat == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON)), 6);
 
  gps.stats(&chars, &sentences, &failed);
  print_int(chars, 0xFFFFFFFF, 6);
  print_int(sentences, 0xFFFFFFFF, 10);
  print_int(failed, 0xFFFFFFFF, 9);
  Serial.println();
}
 
static void print_int(unsigned long val, unsigned long invalid, int len)
{
  char sz[32];
  if (val == invalid)
    strcpy(sz, "*******");
  else
    sprintf(sz, "%ld", val);
  sz[len] = 0;
  for (int i=strlen(sz); i<len; ++i)
    sz[i] = ' ';
  if (len > 0) 
    sz[len-1] = ' ';
  Serial.print(sz);
  feedgps();
}
 
static void print_float(float val, float invalid, int len, int prec)
{
  char sz[32];
  if (val == invalid)
  {
    strcpy(sz, "*******");
    sz[len] = 0;
        if (len > 0) 
          sz[len-1] = ' ';
    for (int i=7; i<len; ++i)
        sz[i] = ' ';
    Serial.print(sz);
  }
  else
  {
    Serial.print(val, prec);
    int vi = abs((int)val);
    int flen = prec + (val < 0.0 ? 2 : 1);
    flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
    for (int i=flen; i<len; ++i)
      Serial.print(" ");
  }
  feedgps();
}
 
static void print_date(TinyGPS &gps)
{
  int year;
  byte month, day, hour, minute, second, hundredths;
  unsigned long age;
  gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
  if (age == TinyGPS::GPS_INVALID_AGE)
    Serial.print("*******    *******    ");
  else
  {
    char sz[32];
    sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d   ",
        month, day, year, hour, minute, second);
    Serial.print(sz);
  }
  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
  feedgps();
}
 
static void print_str(const char *str, int len)
{
  int slen = strlen(str);
  for (int i=0; i<len; ++i)
    Serial.print(i<slen ? str[i] : ' ');
  feedgps();
}
 
static bool feedgps()
{
  while (nss.available())
  {
    if (gps.encode(nss.read()))
      return true;
  }
  return false;
}
 
 
выдает почему то нулевые значения и кучу всяких звездочек но координаты не выводит(((, так же использовал эту программу:
        uint8_t RX_Pin=8; 
    uint8_t TX_Pin=9;    
     
    void setup()  
    {     
      pinMode(0, INPUT); //RX  
      pinMode(1, OUTPUT);//TX  
      pinMode(RX_Pin, OUTPUT);  
      pinMode(TX_Pin, INPUT);   
     
    } 
     
    void loop()  
    { 
    uint8_t Result; 
    asm volatile(  
    "cli" "\n\t"             
    "label%=:"  "in %[Result], %[in_portd]"   "\n\t" 
                "out %[out_portb],  %[Result]" "\n\t"  
                "in %[Result], %[in_portb]"   "\n\t"     
                "out %[out_portd],  %[Result]" "\n\t"  
    "rjmp label%=" "\n\t" 
     
            : [Result] "=r" (Result) 
            : [out_portb] "I" (_SFR_IO_ADDR(PORTB)), [out_portd] "I" (_SFR_IO_ADDR(PORTD)),  
              [in_portb] "I" (_SFR_IO_ADDR(PINB)), [in_portd] "I" (_SFR_IO_ADDR(PIND))    
            :  
            );//asm end 
          
    }
тоже значения нулевые. Ждал мин 10-15 так как холодный старт у него где то 7-10 минут. Пробовал в помещении и на улице все равно нулевые значения. У кого идеи есть какие нибудь?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2013, 11:35
Ответы с готовыми решениями:

Подключение к Arduino Uno модуля SP8266 32m flash
Взял к ардуинке wi-fi модуль SP8266 32m flash, но тот оказался достаточно навороченым, гугл не привёл к чему, только пояснения по...

Arduino CW+GPS+SD
Это QRPp CW-маяк, работающий на 160/80/40-метровом диапазоне. Автор скетча Клименко Максим. Есть желание доработать этот скетч для...

Arduino Nano, GPS
Создаю GPS трекэр но данные с gps не могу привести в корректный вид, не начинается расшифровка, help) Использую Arduino Nano (old...

8
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
11.11.2013, 15:29
1- выставить скорость правильную, может быть и 4800, если не сконфигурировано отдельно
2- проверить на ПК при подключении на гипертерминале
0
 Аватар для шоколад
1 / 1 / 0
Регистрация: 19.05.2013
Сообщений: 47
11.11.2013, 15:30  [ТС]
хорошо попробую
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
11.11.2013, 15:34
...кроме того, это у вас в комментарии даже написано + если используете программный UART из SoftwareSerial.h, то не забываем назначить пины на покдлюченный к ним GPS-модуль. Например:
C
1
SoftwareSerial comSerial(3,4);
У вас:
C
1
SoftwareSerial nss(1, 0);
есть нулевой на уне? Сейчас не помню.
0
 Аватар для шоколад
1 / 1 / 0
Регистрация: 19.05.2013
Сообщений: 47
11.11.2013, 16:40  [ТС]
попробывал не получилось(((

Добавлено через 46 секунд
порты тоже правельно настроены

Добавлено через 44 секунды
нулевой есть

Добавлено через 29 секунд
rx - 0 tx -1 на уне расположение

Добавлено через 11 секунд
ну и на GPS так же
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
11.11.2013, 17:45
...что на GPS также: должно перекрещиваться, RX-TX и TX-RX.

rx - 0 tx -1 на уне расположение
хм этот UART задействован под конвертор USB/UART, по которому идет загрузка прошивки, он есть первый аппаратный Serial по-умолчанию и задействовать под него программный UART - маразм (назначать на них не нужно). Используйте, скажем, 7 и 8, если такое большое желание программного Serial.
Миниатюры
Подключение GPS модуля Grove-GPS к Arduino UNO  
0
 Аватар для шоколад
1 / 1 / 0
Регистрация: 19.05.2013
Сообщений: 47
12.11.2013, 08:28  [ТС]
я начал использовать 8 и 9 результаты позже будут Спасибо
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
12.11.2013, 08:32
...и покажите вы как подключаете ваш GPS-модуль.
0
 Аватар для шоколад
1 / 1 / 0
Регистрация: 19.05.2013
Сообщений: 47
12.11.2013, 12:45  [ТС]
Вот таким методом подключаю GPS-модуль(Подключаю на 8 и 9 порт):


Добавлено через 3 часа 17 минут
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:48.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:49.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:49.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:49.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:50.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:50.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:50.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:50.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:50.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:50.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:51.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:51.25Satellites - 0
Location: 0.000000,0.000000 Date/Time: 11/12/2013 05:31:51.25Satellites - 0
Location: 56.798114,60.621448 Date/Time: 11/12/2013 05:31:52.25Satellites - 3
Location: 56.798114,60.621448 Date/Time: 11/12/2013 05:31:52.25Satellites - 3
Location: 56.798114,60.621448 Date/Time: 11/12/2013 05:31:52.25Satellites - 3
Location: 56.798171,60.621994 Date/Time: 11/12/2013 05:31:53.25Satellites - 3
Location: 56.798171,60.621994 Date/Time: 11/12/2013 05:31:53.25Satellites - 3
Location: 56.798171,60.621994 Date/Time: 11/12/2013 05:31:53.25Satellites - 3
Location: 56.798175,60.622146 Date/Time: 11/12/2013 05:31:54.25Satellites - 3
Location: 56.798175,60.622146 Date/Time: 11/12/2013 05:31:54.25Satellites - 3
Location: 56.798175,60.622146 Date/Time: 11/12/2013 05:31:54.25Satellites - 3
Location: 56.798141,60.621936 Date/Time: 11/12/2013 05:31:55.25Satellites - 3
Location: 56.798141,60.621936 Date/Time: 11/12/2013 05:31:55.25Satellites - 3
Location: 56.798141,60.621936 Date/Time: 11/12/2013 05:31:55.25Satellites - 3
Location: 56.798141,60.621936 Date/Time: 11/12/2013 05:31:55.25Satellites - 3
Location: 56.798141,60.621936 Date/Time: 11/12/2013 05:31:55.25Satellites - 3
Location: 56.798141,60.621936 Date/Time: 11/12/2013 05:31:55.25Satellites - 3
Location: 56.798130,60.621883 Date/Time: 11/12/2013 05:31:56.25Satellites - 3
Location: 56.798130,60.621883 Date/Time: 11/12/2013 05:31:56.25Satellites - 3
Location: 56.798130,60.621883 Date/Time: 11/12/2013 05:31:56.25Satellites - 3
Location: 56.798114,60.621829 Date/Time: 11/12/2013 05:31:57.25Satellites - 3
Location: 56.798114,60.621829 Date/Time: 11/12/2013 05:31:57.25Satellites - 3
Location: 56.798114,60.621829 Date/Time: 11/12/2013 05:31:57.25Satellites - 3
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.11.2013, 12:45
Помогаю со студенческими работами здесь

Убрать диалог о включении GPS и иконку GPS. Тихий запуск GPS
Здравствуйте! Подскажите есть ли возможность включить GPS в тихом режиме, чтобы пользователь не догадался об этом! На данном...

В чем разница между БП Chieftec GPS-400AA-101 A и GPS-400A ?
В марте закончилась гарантия. И вот сдох блок питания (1). Мне впарили второй (2). Говорят нет разницы, но если я не ошибаюсь, разница от 5...

GPS навигатор на планшет windows 8.1 с модулем GPS (DIGMA EVE 8.0)
Здравствуйте. Всех с наступившим годом и рождеством! Прошу помощи, есть планшет с GPS (DIGMA EVE 8.0) - 2015 года выпуска, ищу...

Отличия GPS-350FB-101A и GPS-350A
хочу купить бп Chieftec остановился на 2 моделях GPS-350FB-101A и GPS-350A по характеристикам вродь одинаковы но цена отличается на 4$...

Arduino и GPS модуль, кривое считывание спутников
Я не профессионал по знаниям языка Си, но всё же пытаюсь в нём разобраться. Пришёл ко мне модуль GPS NEO-6 общается он по UART на скорости...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
JWT аутентификация в ASP.NET Core
UnmanagedCoder 19.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 19.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 18.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 18.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 16.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 16.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru