GSM900 + gps neo 6m не мог работать

Это мой код

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(2,3); 
const int RXPin = 7, TXPin = 8;
const uint32_t GPSBaud = 9600; //скорость по умолчанию для НЕО-6М 9600


TinyGPSPlus gps; // объект TinyGPS++
SoftwareSerial gpsSerial(RXPin, TXPin); // последовательный интерфейс к устройству GPS
float latitude =(gps.location.lat(),6);
float longitude=(gps.location.lng(),6);
 float altitude=gps.altitude.meters();
  float speed=gps.speed.kmph();
void setup() {
  Serial.begin(9600);
  delay(10);
  gprsSerial.begin(9600); 
  delay(10);
  gpsSerial.begin(GPSBaud);
  delay(10);

  Serial.println(F("Arduino - GPS module"));
}

void loop() {
  gpsSerial.listen();
  if (gpsSerial.available() > 0) {
    if (gps.encode(gpsSerial.read())) {
      if (gps.location.isValid()) {
        Serial.print(F("- latitude: "));
        Serial.println(gps.location.lat(),6);

        Serial.print(F("- longitude: "));
        Serial.println(gps.location.lng(),6);

        Serial.print(F("- altitude: "));
        if (gps.altitude.isValid())
          Serial.println(gps.altitude.meters());
        else
          Serial.println(F("INVALID"));
      } else {
        Serial.println(F("- location: INVALID"));
      }

      Serial.print(F("- speed: "));
      if (gps.speed.isValid()) {
        Serial.print(gps.speed.kmph());
        Serial.println(F(" km/h"));
      } else {
        Serial.println(F("INVALID"));
      }

      
      Serial.println();
    }
  }

  if (millis() > 5000 && gps.charsProcessed() < 10)
    Serial.println(F("No GPS data received: check wiring"));
    gprsSerial.listen();
    if (gprsSerial.available())
    Serial.write(gprsSerial.read());
  gprsSerial.println("AT");
  delay(1000);
  gprsSerial.println("AT+CPIN?");
  delay(1000);
  gprsSerial.println("AT+CREG?");
  delay(1000);
  gprsSerial.println("AT+CGATT?");
  delay(1000);
  gprsSerial.println("AT+CIPSHUT");
  delay(1000);
  gprsSerial.println("AT+CIPSTATUS");
  delay(2000);
  gprsSerial.println("AT+CIPMUX=0");
  delay(2000);
  ShowSerialData();
  gprsSerial.println("AT+CSTT=\"celcom3g\"");//запускаем задачу и устанавливаем APN,
  delay(1000);
  ShowSerialData();
  gprsSerial.println("AT+CIICR");//устанавливаем беспроводное соединение
  delay(3000);
  ShowSerialData();
  gprsSerial.println("AT+CIFSR");//получаем локальный IP-адрес
  delay(2000);
  ShowSerialData();
  gprsSerial.println("AT+CIPSPRT=0");
  delay(3000);
  ShowSerialData();
  gprsSerial.println("AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",\"80\"");//запускаем соединение
  delay(6000);
  ShowSerialData();
  gprsSerial.println("AT+CIPSEND");//начинаем отправлять данные на удаленный сервер
  delay(4000);
  ShowSerialData();
  String str="GET https://api.thingspeak.com/update?api_key=53PQ5SRG722S7XZY&field5=" + String(широта) +"&field6="+String(долгота)+"&field7="+String(высота)+"&field8="+String(скорость);
  Serial.println(str);
  gprsSerial.println(str);//начинаем отправлять данные на удаленный сервер
  delay(4000);
  ShowSerialData();
  gprsSerial.println((char)26);//отправка
  delay(5000);//ждем ответа, важно! время зависит от состояния интернета
  gprsSerial.println();
  ShowSerialData();
  gprsSerial.println("AT+CIPSHUT");//закрываем соединение
  delay(100);
  ShowSerialData();
} 
void ShowSerialData()
{
  while(gprsSerial.available()!=0)
  Serial.write(gprsSerial.read());
  delay(5000); 
}

мой результат - ардуино зависло

, 👍0

Обсуждение

Вы сделали то, что предлагает сообщение?, @jsotola

Попробуйте с обоими устройствами по отдельности. Использование двух программных последовательных портов может работать ненадежно, особенно если не используются выводы с возможностью прерывания. Какую плату вы используете?, @PMF