Ошибка инициализации GPS DFRobot [Arduino Uno, SIM808]
у меня проблема с инициализацией DFRobot SIM808 на самом деле, когда я пытаюсь получить данные GPS с помощью SoftwareSerial только он не работает (я имею в виду примеры, основанные на отправку и чтение команды из последовательного) и получать данные, но очень длинные строки данных, и мне нужно только широту и долготу , и я думаю, что с помощью DFRobot будет самый простой способ для извлечения данных, которые мне нужны. Таким образом, простая тестовая программа, подобная этой, не работает:
/*
### Get GPS data
1. This example is used to test SIM808 GPS/GPRS/GSM Shield's reading GPS data.
2. Open the SIM808_GetGPS example or copy these code to your project
3. Download and dial the function switch to Arduino
4. open serial helper
4. Place it outside, waiting for a few minutes and then it will send GPS data to serial
create on 2016/09/23, version: 1.0
by jason
*/
#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>
#define PIN_TX 7
#define PIN_RX 8
SoftwareSerial mySerial(PIN_TX,PIN_RX);
DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,
void setup() {
mySerial.begin(9600);
Serial.begin(9600);
//******** Initialize sim808 module *************
while(!sim808.init()) {
delay(1000);
Serial.print("Sim808 init error\r\n");
}
//************* Turn on the GPS power************
if( sim808.attachGPS())
Serial.println("Open the GPS power success");
else
Serial.println("Open the GPS power failure");
}
void loop() {
//************** Get GPS data *******************
if (sim808.getGPS()) {
Serial.print(sim808.GPSdata.year);
Serial.print("/");
Serial.print(sim808.GPSdata.month);
Serial.print("/");
Serial.print(sim808.GPSdata.day);
Serial.print(" ");
Serial.print(sim808.GPSdata.hour);
Serial.print(":");
Serial.print(sim808.GPSdata.minute);
Serial.print(":");
Serial.print(sim808.GPSdata.second);
Serial.print(":");
Serial.println(sim808.GPSdata.centisecond);
Serial.print("latitude :");
Serial.println(sim808.GPSdata.lat);
Serial.print("longitude :");
Serial.println(sim808.GPSdata.lon);
Serial.print("speed_kph :");
Serial.println(sim808.GPSdata.speed_kph);
Serial.print("heading :");
Serial.println(sim808.GPSdata.heading);
Serial.println();
//************* Turn off the GPS power ************
sim808.detachGPS();
}
}
@Dave M, 👍3
Обсуждение2 ответа
У нас была та же ошибка в коде. Но нам удалось ее решить! Для работы вам необходимо вставить SIM-карту. Мы не знаем почему, но это работает!
{Оригинальный ответ Онуралпа Арслана}
функция gps sim808 не требует sim-карты вам нужен только источник 9 В с достаточным током и GPS-антенна 1575,42 МГц используйте этот код, это поможет
#include <DFRobot_sim808.h>
#include <SoftwareSerial.h>
#define PIN_RX 11
#define PIN_TX 10
SoftwareSerial mySerial(PIN_TX,PIN_RX);
DFRobot_SIM808 sim808(&mySerial);//Connect RX,TX,PWR,
void setup() {
mySerial.begin(9600);
Serial.begin(9600);
//************* Turn on the GPS power************
if( sim808.attachGPS())
Serial.println("Open the GPS power success");
else
Serial.println("Open the GPS power failure");
}
void loop() {
//************** Get GPS data *******************
if (sim808.getGPS()) {
Serial.print(sim808.GPSdata.year);
Serial.print("/");
Serial.print(sim808.GPSdata.month);
Serial.print("/");
Serial.print(sim808.GPSdata.day);
Serial.print(" ");
Serial.print(sim808.GPSdata.hour);
Serial.print(":");
Serial.print(sim808.GPSdata.minute);
Serial.print(":");
Serial.print(sim808.GPSdata.second);
Serial.print(":");
Serial.println(sim808.GPSdata.centisecond);
Serial.print("latitude :");
Serial.println(sim808.GPSdata.lat,6);
sim808.latitudeConverToDMS();
Serial.print("latitude :");
Serial.print(sim808.latDMS.degrees);
Serial.print("\^");
Serial.print(sim808.latDMS.minutes);
Serial.print("\'");
Serial.print(sim808.latDMS.seconeds,6);
Serial.println("\"");
Serial.print("longitude :");
Serial.println(sim808.GPSdata.lon,6);
sim808.LongitudeConverToDMS();
Serial.print("longitude :");
Serial.print(sim808.longDMS.degrees);
Serial.print("\^");
Serial.print(sim808.longDMS.minutes);
Serial.print("\'");
Serial.print(sim808.longDMS.seconeds,6);
Serial.println("\"");
Serial.print("speed_kph :");
Serial.println(sim808.GPSdata.speed_kph);
Serial.print("heading :");
Serial.println(sim808.GPSdata.heading);
//************* Turn off the GPS power ************
sim808.detachGPS();
}
}
попробуйте это, работало для меня без sim-карты , подключите rx sim808 к arduino 11 tx к 10 и подключите основания arduino и sim808
- GPS-модуль uBlox Neo 6M не отвечает
- Основная связь Arduino ModBus RTU с проблемой измерителя мощности
- Отправка значения с одного Arduino на другой
- Связь Arduino master/slave с использованием RS485
- Клиент MQTT на Arduino + SIM900
- Как отправить данные из Arduino Uno с SIM900 GPRS в Firebase
- Реализовать связь Visible Light с помощью Arduino
- Как автоматически сбросить nrf24l01+ с кодом?
"SoftwareSerial" принимает контакты в порядке "RX, TX". У тебя они задом наперед. Возможно, это не проблема в зависимости от вашей проводки, но это первое, что я заметил., @stevieb
да, какая-то ошибка в шаблоне, но это (7,8) в любом случае, так же, как в рабочем примере, @Dave M
У меня та же проблема, которую вы смогли решить?, @Jamie
Нет, я просто написал свой код вместо этого, используя библиотеку :( . Решение этого все равно было бы полезно, @Dave M
Я попытался запустить щит sim808 с исходным кодом сверху, а также с кодом Дейва. Безуспешно. У меня есть внешний источник питания, я переключаюсь между различными режимами при загрузке кода. Я получаю на последовательном мониторе либо ошибку инициализации Sim808 , либо инициализацию GPS. У вас есть какие-либо предложения, с чего начать устранение неполадок?, @nmih
У меня были похожие проблемы, я даже не мог получить базовое соединение от Arduino - Shield. Я предполагаю, что библиотека GPRS робота DF сломана., @Hamish_Fernsby
@stevieb, хорошо замечено, что TX и RX в демо-версии DFR работают неправильно, но, к сожалению, это не решает проблему., @Hamish_Fernsby
@OnuralpArslan Я снял защиту с этого вопроса, чтобы вы могли ответить на него. Ваш оригинальный ответ находится здесь в качестве вики-ответа сообщества, который вы можете скопировать и вставить в свой новый ответ., @Majenko