Нет данных от двух разных последовательных портов Arduino Uno - PullRequest
0 голосов
/ 25 апреля 2018

В настоящее время я пытаюсь использовать два разных последовательных порта на моем arduino uno, то есть (2,3) для gsm и (8,9) для gps.Я пробовал обе эти ссылки;

1) Arduino-Uno-с-несколькими программными последовательными устройствами

2) Два порта приема с использованием программного последовательного на Arduino.

Но, похоже, ничего не работает.На серийном мониторе ничего не отображается.

ОБНОВЛЕНИЕ

Я изменил библиотеки моих gps и последовательных портов на AltSoftSerial и NeoSWSerial.Хотя оба они работают нормально, если я использую это в примерах.Но когда я реализую обе библиотеки и запускаю код, в последовательном мониторе нет результатов.

#include <NMEAGPS.h>
#include <GPSport.h>
#include <AltSoftSerial.h>

AltSoftSerial sim900a;

NMEAGPS  gps; // This parses the GPS characters
gps_fix  fix;

void setup()
{
  Serial.begin(9600);
  sim900a.begin(9600);
  gpsPort.begin(9600);
}

void loop()
{
  while (gps.available(gpsPort))
  {
    fix = gps.read();

    if (fix.valid.location)
    {
      Serial.println();

      Serial.print("Latitude= "); 
      Serial.print(fix.latitude(), 6);
      Serial.print(" Longitude= "); 
      Serial.println(fix.longitude(), 6);
      sendData = 1;
    }
    else
    {
      sendData = 0;
    }
  }

  if(sendData == 1)
  {
    //do stuffs
    delay(5000); 
  }
}

P / S: я уже пробовал метод listen () для отключения и включения каждого порта, но, похоже, он не работает должным образом.Любая помощь приветствуется.Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2018

Вы не сможете использовать две последовательные библиотеки программного обеспечения для прослушивания SIM900 и GPS.

Основная проблема заключается в том, что символы SIM900 могут появиться в любое время.Они могут появиться, когда вы слушаете один программный последовательный порт.

Единственный способ - использовать аппаратный последовательный порт для одного из устройств.Я предлагаю подключить вывод GPS TX к выводу Arduino RX 0. Затем вы будете читать символы GPS на Serial.Вам нужно будет отсоединить контакт 0, чтобы загрузить новые эскизы через USB.Вы все еще можете использовать Serial.print для отображения информации в окне Serial Monitor.

SIM900 должен быть на контактах 8 и 9, где вы можете использовать AltSoftSerial.Это намного более эффективно, чем SoftwareSerial.SoftwareSerial отключает прерывания на длительные периоды времени, которые могут мешать другим частям вашего эскиза или другим библиотекам.Избегайте этого любой ценой.

Более подробная информация в этом ответе и на моей странице установки библиотеки NeoGPS : Выбор последовательного порта .

NeoGPS и AltSoftSerial доступны в Arduino IDE в меню Эскиз -> Включить библиотеку -> Управление библиотеками .

...