Нет данных от U-Blox Neo-6M

gps

Я пытаюсь заставить модуль Neo-6M работать с Arduino Uno, но он просто не передает никаких данных. Он получает 3,3 В.
Я пытался измерить ампер и получил ноль, поэтому я боюсь, что модуль может сломаться.

Проводка Нео-6М:
проводка модуля GPS
Проводка Arduino (питание):
электропроводка Arduino
Проводка Arduino (данные):
проводка данных Arduino

Код Arduino:

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
/*
Этот образец скетча демонстрирует обычное использование объекта TinyGPS++ (TinyGPSPlus).
Он требует использования SoftwareSerial и предполагает, что у вас есть
Устройство GPS с последовательным интерфейсом 4800 бод, подключенное к контактам 4 (rx) и 3 (tx).
*/
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;

// Объект TinyGPS++
TinyGPSPlus gps;

// Последовательное соединение с устройством GPS
SoftwareSerial ss(RXPin, TXPin);

void setup()
{
  Serial.begin(9600);
  ss.begin(GPSBaud);

  Serial.println(F("DeviceExample.ino"));
  Serial.println(F("A simple demonstration of TinyGPS++ with an attached GPS module"));
  Serial.print(F("Testing TinyGPS++ library v. "));     Serial.println(TinyGPSPlus::libraryVersion());
  Serial.println(F("by Mikal Hart"));
  Serial.println();
}

void loop()
{
  // Этот скетч отображает информацию каждый раз, когда новое предложение правильно закодировано.
  while (ss.available() > 0)
    if (gps.encode(ss.read()))
      displayInfo();

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected: check wiring."));
    while(true);
  }
}

void displayInfo()
{
  Serial.print(F("Location: ")); 
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}

, 👍1

Обсуждение

Я попробовал несколько образцов данных GPS Ardiuno и не смог получить никаких данных, но Я только что использовал это программное обеспечение 10lines и получил данные., @user50549


2 ответа


Лучший ответ:

1

Я запускаю свою плату от разветвителя Arduino 5 В, так как на плате есть регулятор напряжения с низким падением напряжения 3,3 В. Поэтому я считаю, что вам также следует отключить питание 5 В платы Arduino.

Компоненты платы Neo-6 Arduino

Мой потребляет около 60 мА от платы Arduino. Устройство должно получить исправление, а затем начать передачу по линии tx. Обозначается светодиодным индикатором «Фиксированное положение» на плате, мигающим раз в секунду (при скорости 9600 бод).

Удачи, имейте в виду, что эти платы стоят всего около 7,50 долларов на Amazon, закажите пару для душевного спокойствия. :)

,

1

Недостаточно запитать модуль напряжением 3,3 В. Вы также должны сдвинуть уровень сигнала TX 5 В Arduino до 3,3 В, что приемлемо для контакта RX модуля GPS, используя делитель напряжения 1: 2.

Конвертер

Вы также должны знать, что вывод 3,3 В Arduino не может подавать ток более 50 мА; ток потребления вашего модуля может иногда превышать этот предел (макс. 67 мА). Вместо этого подключите 5-вольтовый контакт Arduino (который может выдавать до 500 мА) к VCC модуля GPS через стабилизатор LM1117T 3,3 В:

Регулятор

Вход идет на контакт Arduino 5V, а выход — на NEO-6M VCC. Соедините все GND вместе.

Затем запустите базовый скетч следующим образом:

#include "SoftwareSerial.h"

SoftwareSerial gps(4,3);

void setup(){
  Serial.begin(9600);
  gps.begin(9600);
}

void loop(){
  while (gps.available())
    Serial.write(gps.read());
}

Это в основном заставит Arduino захватывать любые данные NMEA, отправленные NEO-6M, и пересылать их на последовательный монитор вашего ПК. Если вы получаете четкие данные, это означает, что вы установили связь с модулем. Затем вы можете загрузить исходный скетч.

,

Согласно всем этим руководствам по этому модулю, достаточно использовать 3,3 В от Arduino. Проблема в том, что он не потребляет ток от Arduino. И мне не нужно передавать какие-либо данные в модуль., @freemanovec

@freemanovec Неважно, нужно ли вам передавать; пока вы подключили модуль RX к Arduino TX, напряжение IDLE линии составляет 5 В, поступающее в модуль. Вы можете просто отсоединить провод, так как считаете, что он вам не нужен. Кроме того, если вы не изучали код библиотеки, вы не знаете, как она выполняет свою задачу; возможно, он передает данные, даже если это только для инициализации модуля., @SoreDakeNoKoto

По умолчанию для модуля ublox используется вывод NMEA с частотой 1 Гц, вы должны получить что-то даже без сигнала GPS. Предполагая, что никто не изменил значения по умолчанию в модуле. Если у вас есть способ подключить модуль к ПК (например, TTL-232RG-VREG3V3-WE), то хорошей идеей будет попытка подключения с помощью программного обеспечения ublox U-Center, которое позволяет легко изменить поведение по умолчанию при включении питания., @Andrew