GPS не определяется на модуле SIM808!

Я пытаюсь получить GPS-координаты с помощью модуля SIM808, подключив его к Arduino. Когда я использую этот код,

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "gps.h"

// Чтобы изменить контакты для SoftwareSerial, используйте две строки в GSM.cpp.

//Шилд GSM для Arduino
//www.open-electronics.org
//этот код основан на примере Arduino Labs.

//Простой скетч для запуска подключения в качестве клиента.

GPSGSM gps;

char lon[15];
char lat[15];
char alt[15];
char time[20];
char vel[15];
char msg1[5];
char msg2[5];

char stat;
char inSerial[20];
int i = 0;
boolean started = false;

void setup() {
  //Последовательное соединение.
  Serial.begin(9600);
  Serial.println("GSM Shield testing.");
  //Начать настройку шилда со скоростью передачи данных.
  //Для использования http рекомендуется использовать 4800 или медленнее.
  if (gsm.begin(2400)) {
    Serial.println("\nstatus=READY");
    gsm.forceON(); //Для того, чтобы SIM908 не только в режиме зарядки
    started = true;
  } else Serial.println("\nstatus=IDLE");
  if (started) {
    // GPS-подключение
    if (gps.attachGPS())
      Serial.println("status=GPSREADY");
    else Serial.println("status=ERROR");
    delay(20000); //Время исправить
    stat = gps.getStat();
    if (stat == 1)
      Serial.println("NOT FIXED");
    else if (stat == 0)
      Serial.println("GPS OFF");
    else if (stat == 2)
      Serial.println("2D FIXED");
    else if (stat == 3)
      Serial.println("3D FIXED");
    delay(5000);
    //Получить данные с GPS
    gps.getPar(lon, lat, alt, time, vel);
    Serial.println(lon);
    Serial.println(lat);
    Serial.println(alt);
    Serial.println(time);
    Serial.println(vel);
  }
};

void loop() {
  //Чтение новых байтов на последовательном оборудовании и запись их на NewSoftSerial.
  serialhwread();
  //Чтение нового байта в NewSoftSerial.
  serialswread();
};

void serialhwread() {
  i = 0;
  if (Serial.available() > 0) {
    while (Serial.available() > 0) {
      inSerial[i] = (Serial.read());
      delay(10);
      i++;
    }
    inSerial[i] = '\0';
    if (!strcmp(inSerial, "/END")) {
      Serial.println("_");
      inSerial[0] = 0x1a;
      inSerial[1] = '\0';
      gsm.SimpleWriteln(inSerial);
    }
    //Отправить сохраненную AT-команду через последовательный порт.
    if (!strcmp(inSerial, "TEST")) {
      stat = gps.getStat();
      if (stat == 1)
        Serial.println("NOT FIXED");
      else if (stat == 0)
        Serial.println("GPS OFF");
      else if (stat == 2)
        Serial.println("2D FIXED");
      else if (stat == 3)
        Serial.println("3D FIXED");
    }
    //Читать последнее сохраненное сообщение.
    if (!strcmp(inSerial, "MSG")) {
      Serial.println(msg1);
    } else {
      Serial.println(inSerial);
      gsm.SimpleWriteln(inSerial);
    }
    inSerial[0] = '\0';
  }
}

void serialswread() {
  gsm.SimpleRead();
}

Через некоторое время я получаю эту ошибку на последовательном мониторе Arduino:

status=ERROR

Соединения следующие:

  • TX модуля = контакт 2 Arduino
  • RX модуля = контакт 3 Arduino
  • Заземление модуля = заземление Arduino
  • 5В модуля = 5В Arduino

Arduino питается от USB, подключенного к моему ПК.

Вот фото моих подключений

Это модуль SIM808.

Модуль SIM808.

, 👍0

Обсуждение

Да. Функции SMS и звонков работают нормально. Я могу отправлять сообщения на свой мобильный телефон. А о каких пинах речь? Я подключил только антенну GPS и больше ничего., @Shekhar

Я добавил изображения моего модуля GSM/GPS. Пожалуйста, убедитесь сами. Спасибо., @Shekhar

Могу я также спросить, что делает контакт G SDA SCL 1 2 GG 1 2?, @Shekhar

Это всего лишь выводы для периферийного устройства SIM808 I2C. Здесь не нужно. У вас есть переходник USB-TTL? Вы можете попробовать связаться с модулем напрямую через последовательный монитор, чтобы увидеть, отвечает ли он на команды GPS., @SoreDakeNoKoto

Нет. К сожалению, нет., @Shekhar

Вы можете использовать Arduino в качестве адаптера. Подключите GSM TX к Arduino TX и GSM RX к Arduino RX, GND к GND, 5V к 5V. Подключите контакт сброса Arduino к GND. Затем откройте последовательный монитор, установите для него значение «Возврат каретки» и отправьте «AT»., @SoreDakeNoKoto

Это то, что я делал. А пин RESET отсутствует?, @Shekhar

Рядом с контактом 5V находится контакт RESET. Кроме того, это НЕ то же самое, что вы делали. Внимательно прочитайте и сравните с вашей нынешней схемой. Обратите внимание, что под Arduino RX и TX я имею в виду контакты 0 и 1 соответственно., @SoreDakeNoKoto

Я вижу кнопку RESET, но не PIN-код RESET?!, @Shekhar

Хорошо. Я понимаю. Я подумал о другом. Но как их подключить. Вы просто хотите соединить их на самой плате с помощью перемычки? Также, если я подключаю TX к TX и RX к RX, нужно ли мне менять имена контактов в файле GSM.cpp?, @Shekhar


1 ответ


1

Ваша проблема похожа на мою. Возможно, ваш модуль является модулем GNSS и поэтому не работает со стандартными AT-командами, которые используются в "gps.h".

Сначала убедитесь, что модуль GPS получает достаточный ток, по крайней мере, 5 В – 2 А от внешнего источника, например аккумулятора.

Затем попробуйте отправить AT-команды в последовательный монитор, чтобы проверить, правильно ли работает ваш модуль GPS:

#include <SoftwareSerial.h>
SoftwareSerial SIM808(2,3); //(RX-Pin,TX-Pin)

void setup() {
  Serial.begin(19200);
  SIM808.begin(19200);
}

void loop() {
  if (SIM808.available())
    Serial.write(SIM808.read());
  if (Serial.available())
    SIM808.write(Serial.read());
}

Загрузите это на плату, затем откройте последовательный монитор и отправьте следующие команды:

AT+CGNSPWR=1

Это должно вернуть OK.

После этого ввода:

 AT+CGNSINF

Это должно вернуть OK и ваше местоположение GPS в следующем формате:

1,0,<time>,<your latitude>,<your longitude>,.......... 

Если вы получите следующий вывод:

1,0,19800106001337.000,,,,0.00,0.0,0,,,,,,0,0,,,,, 

Это означает, что ваш GPS не настроен. Попробуйте поставить GPS-антенну за пределами своей комнаты, на открытом пространстве.

Дополнительную информацию о модулях GNSS см. на http://www.elecrow.com. /wiki/images/0/05/SIM800_Series_GNSS_Application_Note_V1.00.pdf

,