Globalsat et-332 (GPS) и arduino
- Войдите на сайт для отправки комментариев
Вс, 15/07/2012 - 19:52
Подключаю гпс к Serial1 arduino, на выходе получаю
é9óæ̦&¦f³¦&æssssóæóææssS9ófóæS9sóæææfM=æ̦æ&f³¦&æS¦&æÌÓ:>6NÆN>2"26F:>2NêN:N>2N2F&N6>FNÊN:.F*NÊNN>>>>V*ÊÖùé9óæ̦æ¦Ì³¦&æS¦&æÌÓ>NÆN>2"26F:>"NêN:N>2N2F&N6>FNÊN:.F*NÊNN>>>>V*:ÊÖ
Использую следующий код на Ардуино
void setup() { // initialize both serial ports: Serial.begin(9600); Serial1.begin(9600); } void loop() { // read from port 1, send to port 0: if (Serial1.available()) { char inByte = Serial1.read(); Serial.write(inByte); } }
При этом при подключении к ПК того же вывода GPS - получаю нормальный поток NMEA данных
В чем может быть проблема?
Попробуй так. Но не гарантирую
if (Serial1.available()) {
Serial.write(Serial1.read());
}
очень похоже что в Serial мониторе скорость выставили неправильно (нижний правый угол). Скорее всего там что-то отличное от 9600. Или сам шилд работает не на 9600
Либо в скетче (скорее всего) нужно поправить скорость на ту с которой GPS работает. Вообщем нужно что-бы все три скорости "работы шилда" сериал монитора и того-то в скетче совпадало.
Точнее тот порт который общаяется к компом можно и "побыстрее" (но опять-таки и на компе нужно ту же скорость установить).
Вообщем Serial.begin(9600); должно совпадать со скоростью в сериал мониторе, Serial1.begin(9600); должно совпадать со скоростью на которой GPS шлет данные, при этом скорость Serial должен быть равна или больше Serial1
leshak, у меня не шилд, а OEM модуль
со скоростями все отлично, все совпадает
на англоязычном форуме выдали терию, что я пытаюсь соединить RS-232 девайс с TTL ардуино, т.е. нужно либо менть GPS, либо делать переходник на базе MAX232
Похоже на правду, но я, если честно, думал что ардуино нормально понимает rs-232
>leshak, у меня не шилд, а OEM модуль
В данном случае это можно воспринимать как синонимы. Разница-то между "модулем"/брекаутом/шилдом, фактически только в формфакторе. Нужно проводки паять для подключения или нет.
>со скоростями все отлично, все совпадает
Возможно. Но, как говорил Швейк, "осмелюсь доложить что-то я сомневаюсь". Вот в этом даташите http://www.gps-info.com.ua/wp-content/downloads/manuals/gps_module/globalsat/manual_ET_332_OEM.pdf
Написанно:
Скорость передачи данных
Изменяется программно.
По-умолчанию: NMEA – 4800 б/с, двоичный SiRF - 19200 б/с
Как видим ни та ни друга не похожа на 9600 из вашего скетча. Так что попробуйте сделать Serial1.begin(4800);
Если, только, вы не переключили скорость. А если переключили, то возможна другая причина: вы заодно, переключили в формат "Двоичный SiRF" (вместо NMEA по умолчанию, который "можно читать глазами").
>на англоязычном форуме выдали терию, что я пытаюсь соединить RS-232 девайс с TTL ардуино, т.е. нужно либо менть GPS
Опять-таки "сомневаюсь". В даташите конечно сказанно ""Уровень сигнала TTL/RS-232 (в зависимости от поставки)", но с большой долей вероятности, если бы вы присобачили RS-232 то искали-бы сейчас новую ардуину, а не новый GPS
> либо делать переходник на базе MAX232
Не уверен, но я бы сначала попытался соорудить что-то из этой оперы http://we.easyelectronics.ru/Shematech/soglasovanie-logicheskih-urovney-5v-i-33v-ustroystv.html
По крайней мере пока вы "только читаете" данные из модуля. Вот если вы захотите что-то слать ему - тогда уже начинается все трудней (вообщем "понизить" проще).
>Похоже на правду, но я, если честно, думал что ардуино нормально понимает rs-232
Ну с "натяжкой" можно и так сказать. Если не ошибаюсь то UART/RS-232 это "два брата". Которые во всем совпадают, кроме напряжения которое означает "логическую единицу". На RS-232 это может быть до 25 ти вольт (на компе это обычно 12-ть). Вот поэтому я и сказал что если-бы у вас был RS-232 версия, которые действительно выдает 12-ть вольт, то вы бы уже спалили вход ардуины (или вообще всю ее, как повезет). Тыкните в вольтметром в TX шилда. Что-бы не гадать.
P.S. И еще посмотрите как вы подключили, может вы TX,RX перепутали? Обычно TX модуля должен идти к RX дуины
Подскажите, а разобрались в итоге? Та же проблема.