Nano v3 и GPS Neo-6m
- Войдите на сайт для отправки комментариев
Добрый день !
Буду благодарен за помощь с Ардуинкой (я полный чайник - только начал этим заниматься).
Ситуация такая: сделал схемку на Uno, GPS и OLED - программа выдает на экран координаты, время итд. ВСЕ РАБОТАЕТ
недавно получил NANO v3 (китайский на CH340G) и решил перенести всю схему на неё (плоско-параллельный перенос на такие же пины) - и оно НЕ работает (дисплей работает, но не обновляет текст, хотя GPS работатет и словил спутники - Led горит)
почитав форумы, выяснил что надо выставлять BAUD rate в SerialMonitor.begin() в 4 раза выше чем в окне Serial Monitor IDE (иначе кракозябры вылезали). Но схема не видит GPS - на выходе из SoftwareSerial сполшь кракозябры (пробовал играть со скоростью GPS - без результатов).
Сломал себе мозг, пытаясь понять в чем дело .... Буду очень признателен за любую помощь/совет
мой код:
#define I2C_ADDRESS 0x3C #include <math.h> #include <stdio.h> #include "SSD1306Ascii.h" #include "SSD1306AsciiAvrI2c.h" #include <TinyGPS++.h> #include <SoftwareSerial.h> #define ARDUINO_GPS_RX 4 #define ARDUINO_GPS_TX 3 #define GPS_BAUD 9600 #define gpsPort ssGPS #define SerialMonitor Serial #define I2C_ADDRESS 0x3C TinyGPSPlus tinyGPS; SoftwareSerial ssGPS(ARDUINO_GPS_TX, ARDUINO_GPS_RX); SSD1306AsciiAvrI2c oled; void setup() { SerialMonitor.begin(38400); // для Uno должно стоять 9600 gpsPort.begin(GPS_BAUD); oled.begin(&Adafruit128x64, I2C_ADDRESS); oled.setFont(System5x7); oled.clear(); } void loop() { static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002; printDateTime(); printGPSInfo(); printAltVelCourse(); printSat(); smartDelay(1000); oled.setCursor(0, 0); } void printGPSInfo() { SerialMonitor.print(tinyGPS.location.lat(), 6); SerialMonitor.print(","); SerialMonitor.print(tinyGPS.location.lng(), 6); SerialMonitor.print(","); SerialMonitor.print(tinyGPS.course.deg()); SerialMonitor.print(","); oled.print(tinyGPS.location.lat(), 6); oled.print(" "); oled.println(tinyGPS.location.lng(), 6); } static void smartDelay(unsigned long ms) { unsigned long start = millis(); do { while (gpsPort.available()) tinyGPS.encode(gpsPort.read()); } while (millis() - start < ms); } void printDateTime() { char buff1[50]; sprintf(buff1, "%02d:%02d:%02d %02d.%02d.%02d",tinyGPS.time.hour(), tinyGPS.time.minute(), tinyGPS.time.second(),tinyGPS.date.day(), tinyGPS.date.month(), tinyGPS.date.year()); oled.println(buff1); Serial.println(buff1); } void printAltVelCourse() { oled.print("Z:");oled.print(tinyGPS.altitude.meters(), 1); oled.print(" C:");oled.print(tinyGPS.course.deg(), 0); oled.print(" V:");oled.println(tinyGPS.speed.mps(),1); } void printSat() { oled.print("Sat:");oled.print(tinyGPS.satellites.value(),tinyGPS.satellites.isValid()); oled.print(" HDOP:");oled.print(tinyGPS.hdop.hdop(), 2); }
Схему подключения к УНО показывайте...
Подключал вот так на UNO. На Nano перенес на соответствующие пины А4,5 и D4,3
В принципе понятно. Скорее всего проблема в 3.3v (хотя и пишут, что оледы мало жрут). Попытайтес запитать дисплей не с пина 3.3V, а от 5V через стабилизатор типа 1117-3.3
Или примените нану от роботдина - там такой стаб уже установлен.
Спасибо за ответ.
Вероятно причина в чем-то другом - пробовал запустить при отключенном дисплее. Так же нет ответа от GPS.
я подозреваю, что Nano не может получить данные с GPSа.... При попытке просто посмотреть сырые NMEA данные с GPS в Serial Monitor лезут кракозябры
для проверки попробовал очень простой код (без дисплея):
результат:
такт как первая строка напечаталась нормально - то это наверно не проблема Serial Monitor
я грешу на SoftwareSerial - но не знаю как проверить и лечить...
Даже и не знаю, что сказать. На Уно и Нано МК одной модели. Отличие этих плат, в основном, в обвязке по питанию.
Конечно нельзя исключать производственного дефекта, но не думаю, чтобы он проявлялся только с GPS-ом. Перекиньте приемник на другие пины... хотя бы те же A4/A5.
Спасибо за помощь.
Проблема решилась, после поиска по различным форумам.
Для данной конкретно Nano нужно установить отдельную библиотеку в IDE для выбора уструйства - иначе проблемы с serial (что и было). На сайте продавца забыли это указать ((
акктуально для WAVGAT Nano v3
Этот вавгад заколебал со своими клонами. Самый дебильный производитель. Они что, не ATMega328 припаяли, а альтернативщину?
я не спец....
на моей камень WAVGAT AVGA328P - что это я не в курсе
Понятно. Вот тут ее обсуждали: http://arduino.ru/forum/apparatnye-voprosy/normalno-li-chto-kitaiskaya-arduino-nano-trebuet-osobuyu-proshivku-pomogite
я не спец....
на моей камень WAVGAT AVGA328P - что это я не в курсе
это не Атмега328 - а совсем другой чип, лишь частично совместимый. Больше не покупайте "это"
спасибо, уже почитал про него, больше брать не буду
надеюсь эти сгодятся на простые проекты ....
Всем привет!
Пытаюсь добиться данных от neo6mv посредством подключения к ардуино нано с чипом 328p, но у меня проблема иного характера...... сам чип вроде работает нормально (чз него много чего делал), но вот в случае с gps neo6mv данных нет - т.е. gpsSerial.available() (где gpsSerial - SoftwareSerial) вообще никогда не возвращает true... светодиод на плате gps мигает....
что пробовал:
подключал как указано здесь (пины аналогичные) - https://ardutime.wordpress.com/2016/05/06/arduino-%D1%81-%D0%BD%D1%83%D0%BB%D1%8F-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-gps-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F-gy-neo6mv2-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D0%B4/
так же пробовал и без резисторов напрямую.... далее пробовал 5в в качестве питания, на самой плате есть стабилизатор....
пробовал подключать rx/tx к 0/1.... ничего не помогает.
игрался со скоростями Serial и gpsSerial -> 9600 и 9600, 38400 и 9600, 115200 и 9600, пробовал так же 4800 для gpsSerial
модуль брал этот - https://ru.aliexpress.com/item/2pcs-lot-GY-NEO6MV2-new-GPS-module-with-Flight-Control-Flight-Control-EEPROM-MWC-APM2-5/1811853522.html
ардуино там же брал, только черную - https://ru.aliexpress.com/item/1PCS-Nano-3-0-controller-compatible-with-nano-CH340-USB-driver-NO-CABLE-NANO-V3-0/32353404307.html
сам loop в скетче в итоге упростил до:
как в принципе проверить рабочий ли модуль? Почему данных нет (даже мусора)? Кто сталкивался с подобным? Может ли быть причина в антене от модуля? Светодиод на модуле гпс начинает мигать только, если из окна его высунуть, что является признаком того, что связь установил.... не знаю что и думать и как проверить..... гуглил, читал, но ничего толком не нашел, что помогло бы решить проблему.......
все..... ошибка как всегда в человеке.... совсем не подумал, что подключать надо не arduino rx к gps rx и arduino tx к gps tx... а подключив соответственно arduino tx к gps rx и arduino rx к gps tx , все сразу заработало как надо...... нда... в общем вопрос закрыт, всем спасибо)