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, подключенного к моему ПК.
@Shekhar, 👍0
Обсуждение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
- GPS-модуль uBlox Neo 6M не отвечает
- Как отправить данные из Arduino Uno с SIM900 GPRS в Firebase
- Ошибка инициализации GPS DFRobot [Arduino Uno, SIM808]
- TinyGPS не дает долготу, широту и другие данные
- последовательная передача данных на GPS-экране duinopeak
- GSM и GPS-модуль не работают вместе
- как заставить щит GPRS/GSM SIM900 работать с модулем gps neo-6M с помощью платы Arduino UNO
- Некоторые компоненты Arduino кажутся смехотворно дешевыми
Да. Функции 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