Форум программистов, компьютерный форум, киберфорум
GPS, ГЛОНАСС
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/30: Рейтинг темы: голосов - 30, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 19.05.2013
Сообщений: 47
1

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

11.11.2013, 11:35. Просмотров 5857. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2013, 11:35
Ответы с готовыми решениями:

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

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

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

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

8
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
11.11.2013, 15:29 2
1- выставить скорость правильную, может быть и 4800, если не сконфигурировано отдельно
2- проверить на ПК при подключении на гипертерминале
0
1 / 1 / 0
Регистрация: 19.05.2013
Сообщений: 47
11.11.2013, 15:30  [ТС] 3
хорошо попробую
0
10205 / 6587 / 493
Регистрация: 28.12.2010
Сообщений: 21,165
Записей в блоге: 1
11.11.2013, 15:34 4
...кроме того, это у вас в комментарии даже написано + если используете программный 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  [ТС] 5
попробывал не получилось(((

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

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

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

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

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


Добавлено через 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2013, 12:45

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

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

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

Антенна для GPS модуля
Есть GPS модуль, HopeRF GPS04 - http://www.hoperf.som/upfile/gps04.pdf В датащите указаны входы...

Прошу помочь в создании GPS модуля
Всем привет с Камчатки! Прошу помочь в создании многофункционального GPS модуля. Что конкретно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.