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);
}
мой результат - ардуино зависло
@Wiggles Buck, 👍0
Обсуждение0
Смотрите также:
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Глобальные переменные занимают много места в динамической памяти.
- Включить Guards vs #pragma один раз
- Ошибка: "'lcd' does not name a type" при использовании библиотеки LiquidCrystal.
- Как определить, было ли нажато более одной кнопки
- Альтернативы дисплею Nextion
- Двоичный форматировщик сообщений
- Считается ли #ifdef __SD_H__ плохой практикой?
Вы сделали то, что предлагает сообщение?, @jsotola
Попробуйте с обоими устройствами по отдельности. Использование двух программных последовательных портов может работать ненадежно, особенно если не используются выводы с возможностью прерывания. Какую плату вы используете?, @PMF