Подключение UBLOX M8N к Arduino
- Войдите на сайт для отправки комментариев
Ср, 06/11/2019 - 22:30
Имеется вот такой модуль GPS UBLOX M8N
Подскажите пожалуйста рабочий скетч для работы с ним. Пробовал найденный проект на гитхабе, Arduino_Parser_Ublox_Neo_M8N - почему то не работает, к модулю подключается шлет одни нули, хотя по индикатору на модуле видно, что к спутнику подключился и получает данные (зеленый светодиод горит), переключаешь его к компу, чтоб работал через ucenter - данные шлет нормальные, как ток к ардуино - нули...
Скорость не та, поди. В u-center (консоль) блохастый NMEA шлет или свои, мю-строки?
Не скорость перепроверял, везде сделано 115200...
U center шлет
Мне бы знать точно, если скетч 100% рабочий, то тогда разбираться что не так, я просто не уверен, что рабочий скетч
надо 9600
но в скетче 115200.... и конфиг файл для модуля на 115200 настроен
Тут все настроил как мне надо - работает, на скорости 115200.
Перехожу в Arduino
он мне шлет нули
ну не знаю, как скетч расшаривает один и тот же порт
Есть варианты с другим скетчем , где данные идут не нули? Или вы не пользовались таким?
.
Пробовал, ставить 9600 в конфиге и в скетче - тоже самое...
А подключать надо к ардуино на 3.3. вольта или 5 вольт или разницы нету?
Спустите Serial1 и UART блохастого на 9600 для начала. Заработает - будете подымать. Для контроля выводите в Serial тот самый char c сразу после считывания.
У меня модуль тоже на M8 - он на 5V нормально работает.
На фото, кстати, не восьмерка.
Точно рабочий скетч - это тот, который с одного порта берет, в другой суёт.
Так на 115200 в U center работает, зачем спускать на 9600 ?
сейчас по новой попробую....
"На фото, кстати, не восьмерка." вот это поворот! )))А что ?)
китайцы заверяли что M8N , но прошифка не заливается - флэш памяти нету, так я подумал что М8 просто)))
На железке NEO-7M написано.
ааа , ну это да фото с алиэкспресса у меня 8ка написана)
А вообще - сдается мне, что вывод массива не на месте. Ему бы внутри if (..encode()) находится. Иначе лупит он почем зря, путает карты принимающему порту. При равной скорости неясно, кто одеяло перетянет на себя - Serial или Serial1.
поставил 9600 - все тоже самое...
вот так написать if (M8_Gps.encode()) ???
Начните с простого скетча - читаем с Serial1, печатаем в Serial. Без библиотек. Скорость Serial1 должна быть меньше, чем у Serial. Иначе в трубу Б не будет успевать вытекать то, что через трубу А втекает.
Ну что то показывает....
if (Serial1.available() ... ) - это ни о чём Вам не не говорит?
http://arduino.ru/Reference/Serial/Read
Вот что я понял...
байты идут, но проходя через библиотеку M8_Gps.encode(incomingByte) байтов нету...
при таком раскладе
Я получаю
Кстати, вы точно на mega2560 пытаете? Или в крайней случает на 328PB у неё вроде два сериала
да, на мега
Данные идут
Тогда см. моё сообщение #14 и своё #19. Разгадка там.
Скомпилировалось и для атмеги 328pb, надо теперь попробовать с модулем...
328PB нормально наваливает в терминал с GPS-модулем на 115200 в пустом цикле. А вот когда до обработки дело доходит, уже не так всё шоколадно.
Заработало, спасибо!
Заработало, спасибо!
Вы бы поправленный скетч выложили
совсем совсем давно 9600 была стандартная скорость для GPS, а вот интересно это из-за мультисистемности модулей увеличили до 115200? На 9600 не успевает читать?
NMEA-0183 вообще на 4800Bps ориентируется ;) И только с NMEA-0183HS начинается 38,400Bps
А в районе 115200 приходится юзать при большом Update Rate, которое требуется для навигации объекта, движущегося с большой скоростью. Данные надо чаще выводить, а стало быть - и быстрее. Если на месте стоять или на велосипеде ехать - 115200 не нужно совершенно.
Заработало, спасибо!
Вы бы поправленный скетч выложили
Вот этот вариант рабочий,...
Сейчас сделаю человеко понятный вид в столбик и перепроверю на скорости 115200 ... мне то на ней надо )
и выложу окончательный
В данном случае
while
(Serial1.available())
уже не нужен, так как его дублируетif(!Serial1.available()) return;
Все , на 115200 все работает, данные идут, всем спасибо за помощь и участие)
Привет. Не могли бы подсказать. Вот купил модуль GPS NEO-8M , как у вас. Уже как месяц мучений, все никак не могу его связать с ардуинкой нано. Думал пришел дохлым с али, но однажды скетч ( спидометр) заработал правда где то на пару минут ( показания скорость, спутники и место положения). После более со скетчами не работал. ну подумал я что все, умер так умер. , но не все так просто. дело в том что модуль спутники ловит и передает данные в программу U-blox через ардуино , но только при подключении gps-pinTX=> arduinoTX1, gps-pinRX=> arduinoRX0. пины RX не принципиально, можно хоть куда подключать. а вот TX - пины только TX-TX, по другому показаний нет. Может что ни-будь подскажите. модуль работает шустро, но ка-кто не правильно. и из за этого немогу собрать ни один проект. И еще, хотел попробовать ваш скетч, но при компиляции выскакивает ошибка ( не найдена библиотека ) где ее можно скачать?
01
#include "Ublox.h"
02
#define SERIAL_BAUD 115200
03
#define GPS_BAUD 115200
04
#define N_FLOATS 4
05
06
Ublox M8_Gps;
07
// Altitude - Latitude - Longitude - N Satellites
08
float
gpsArray[N_FLOATS] = {0, 0, 0, 0};
09
10
void
setup
() {
11
Serial
.begin(SERIAL_BAUD);
12
Serial1.begin(GPS_BAUD);
13
14
}
15
16
void
loop
() {
17
if
(!Serial1.available())
18
return
;
19
20
while
(Serial1.available()){
21
char
c = Serial1.read();
22
if
(M8_Gps.encode(c)) {
23
gpsArray[0] = M8_Gps.altitude;
24
gpsArray[1] = M8_Gps.latitude;
25
gpsArray[2] = M8_Gps.longitude;
26
gpsArray[3] = M8_Gps.sats_in_use;
27
for
(
byte
i = 0; i < N_FLOATS; i++) {
28
Serial
.print(gpsArray[i], 6);
Serial
.print(
" "
);
29
}
30
Serial
.println(
""
);
31
}
32
}
33
}
а вы точно переключили скорость порта модуля с 9600 на 115200? По умолчанию она 9600
Чип USB-UART на UNO мешает нормальной работе serial устройств так как он сам висит на шине UART !
11
Serial
.begin(SERIAL_BAUD);
12
Serial1.begin(GPS_BAUD);
Откуда на UNO Serial1 ?
На UNO надо с UBLOX общаться через SoftSerial на других пинах.
"а вот TX - пины только TX-TX"
В таком режиме вы используете от UNO только чип USB-UART ! Чип atmega может и сгореть в таком режиме (надо залить прошивку, которая переведет RX, TX (особенно TX) на вход)
Чип USB-UART на UNO мешает нормальной работе serial устройств так как он сам висит на шине UART !
11
Serial
.begin(SERIAL_BAUD);
12
Serial1.begin(GPS_BAUD);
Откуда на UNO Serial1 ?
На UNO надо с UBLOX общаться через SoftSerial на других пинах.
"а вот TX - пины только TX-TX"
В таком режиме вы используете от UNO только чип USB-UART ! Чип atmega может и сгореть в таком режиме (надо залить прошивку, которая переведет RX, TX (особенно TX) на вход)
да нет, этот скетч я хотел установить себе на arduino NANO и протестировать на нем свой gps модуль, так как человек с этого форума сказал что этот скетч рабочий. а он даже не стал у меня компелироваться. выдавал ошибку ( нет библиотеки "Ublox.h). я думал может этот скетч поможет решить мою проблему, так как проблемы схожие с этим gps модулем.
а вы точно переключили скорость порта модуля с 9600 на 115200? По умолчанию она 9600
вы имеете ввиду скорость порта в самом gps модуле? нет я там ничего не менял. там скорость 9600, при такой скорости захожу в U-blox , при подключении pin TX-TX. при другом соединении pin и скорости - пусто.
загружаю пустой скетч и подключаюсь и получаю вот это.
brigadir218 - вы занимаетесь бредятиной.
Вам же сказали, что на Нано только один Сериал порт - он может быть подключен либо к ПК, либо к вашему GPS и никак туда и сюда одновременно. Поэтому указанный скетч НЕ ЗАРАБОТАЕТ на нано - и пытаться не стоит.
То что у вас показываются данные с GPS при загрузке пустого скетча - это только потому. что ардуина тут вообще не работает и вы читаете выход с GPS напрямую на ПК
А когда захожу в U-blox там все выглядит вот так и сказать что модуль не исправный я не могу.
но при всем при этом изменить настройки в модуле через программу я не могу. параметры там открытые и галочки могу ставить, но при выходе из проги и снова в нее зайти там все остается как и раньше без изменений.
короче говоря вся эта красота только при подключении контактов на прямую TX-TX и при этом не могу вывести данные ни на один проект. Может кто поможет в этом вопросе?
brigadir218 - вы занимаетесь бредятиной.
Вам же сказали, что на Нано только один Сериал порт - он может быть подключен либо к ПК, либо к вашему GPS и никак туда и сюда одновременно. Поэтому указанный скетч НЕ ЗАРАБОТАЕТ на нано - и пытаться не стоит.
То что у вас показываются данные с GPS при загрузке пустого скетча - это только потому. что ардуина тут вообще не работает и вы читаете выход с GPS напрямую на ПК
А мне и не надо туда сюда. Мне нужно чтоб информация поступающая со спутников отображалась на олед дисплее в виде скорости и одометра. а устанавливая скетч и подсоединяя по пинам указанных в скетче у меня это не работает. вот я и ищу помощи в этом форуме.
Прочитай про softserial.
Я конечно же почитал про serial, но это для меня почти дремучий лес, все это сложно. Я почему то думал если есть ардуино, есть GPS модуль и есть скетч, то при объединении этого све должно работать. Разве не так? Здесь в ардуино Nano нужно как то программно изменять TX и RX контакты?
Я в этом деле новичок совсем, пытаюсь усваивать по мере своих возможностей. Столкнулся с ардуино и это дело стало меня затягивать так что не судите строго.
Ардуино бывают разные, твой скетч для ардуино Мега. На нано он работать не будет.
А вообще, если тебе "сложно почитать" про Сериал - то не ясно, на что ты вообще рассчитываешь. Крайне мало вероятно, что ты найдешь готовый скетч для своей задачи, а написать самому - это надо уметь разбираться в Сериал и программировании.
Где скетч с выводом на OLED ?
Если должно, но не работает, то обратитесь в учреждение торговли, где был приобретен товар с претензией о наличии в нем дефектов, препятствующих использованию.
Да этот скетч не мой, я его взял в этом форуме выше. Хотел протестировать его у себя, но уже понял что не пойдёт.
это да, посмотри этот скетч для nano
О ! Ты даже первую тему песочницы не удосужился прочитать.