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

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

11.11.2013, 11:35. Просмотров 4841. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 11:35
Ответы с готовыми решениями:

Проверка встроенного GPS модуля в ноутбук Panasonic CF-19 MK3
Здравствуйте. Возможно, не совсем в тему, но где та самая тема, которая мне...

подключение gps трекер gt06
Всем доброго дня. Подключаю трекер gt06, пришла мысль для его автономности...

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

Велосигнализация, GPS
Предыстория: Есть велосипед GT Avalanche 1.0, который мне очень дорог, и даже...

MR3020 + GPS
Есть необходимость пробросить порт с рутера MR3020 под openWrt на комп с...

8
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
11.11.2013, 15:29 2
1- выставить скорость правильную, может быть и 4800, если не сконфигурировано отдельно
2- проверить на ПК при подключении на гипертерминале
0
шоколад
1 / 1 / 0
Регистрация: 19.05.2013
Сообщений: 41
11.11.2013, 15:30  [ТС] 3
хорошо попробую
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 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
Сообщений: 41
11.11.2013, 16:40  [ТС] 5
попробывал не получилось(((

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

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

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

Добавлено через 11 секунд
ну и на GPS так же
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 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
Сообщений: 41
12.11.2013, 08:28  [ТС] 7
я начал использовать 8 и 9 результаты позже будут Спасибо
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
12.11.2013, 08:32 8
...и покажите вы как подключаете ваш GPS-модуль.
0
шоколад
1 / 1 / 0
Регистрация: 19.05.2013
Сообщений: 41
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
12.11.2013, 12:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 12:45

GPS передатчик
Добрый день всем. Нужен GPS передатчик, который можно будет встроить в...

GPS модули
Всем привет! Посоветуйте, пожалуйста, хорошие GPS модули. Для начала я...

GPS модуль
Наконец дошли руки до GPS модуля EB-500. Сегодня собрал платку для поиграться и...


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

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

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