Ошибка инициализации 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();
  }

}

error

, 👍3

Обсуждение

"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


2 ответа


0

У нас была та же ошибка в коде. Но нам удалось ее решить! Для работы вам необходимо вставить SIM-карту. Мы не знаем почему, но это работает!

,

1

{Оригинальный ответ Онуралпа Арслана}

функция 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

,