GPS-регистрация на плате Intel edison breakout
Я работаю над своим проектным автомобилем и решил, что хотел бы иметь GPS и регистрировать некоторые датчики. Я просто нахожусь в бутылочном горлышке, датчики, которые я привез, тянут примерно по 7 В каждый, и я не могу извлечь столько из панели управления, которая у меня есть, и я не могу сделать шов, чтобы заставить GPS работать.
Я пробовал использовать код ths, но Software Serial не поддерживается на edison:
// Настройка GPS
#define rxGPS 0
#define txGPS 1
SoftwareSerial serialGPS = SoftwareSerial(rxGPS, txGPS);
String stringGPS = "";
void setup() {
pinMode(rxGPS, INPUT);
pinMode(txGPS, OUTPUT);
Serial.begin(9600);
Serial.println("Started");
// Настройка
serialGPS.begin(4800);
digitalWrite(txGPS,HIGH);
// Вырезать сначала тарабарщину
while(serialGPS.available())
if (serialGPS.read() == '\r')
break;
}
void loop()
{
String s = checkGPS();
if(s && s.substring(0, 6) == "$GPGGA")
{
Serial.println(s);
}
}
// Проверяет GPS и возвращает строку, если записана полная строка, в противном случае false
String checkGPS()
{
if (serialGPS.available())
{
char c = serialGPS.read();
if (c != '\n' && c != '\r')
{
stringGPS = c;
}
else
{
if (stringGPS != "")
{
String tmp = stringGPS;
stringGPS = "";
return tmp;
}
}
}
return false;
}
Любые идеи или помощь будут высоко оценены
@bedrock, 👍0
2 ответа
Попробуйте это:
String GPSLine;
bool checkGPS()
{
while(serialGPS.available())
{
char c = serialGPS.read();
if(c == '\n') return true;
if(c == '\r') continue;
GPSLine += c;
}
return false;
}
void loop()
{
if(checkGPS())
{
Serial.println(GPSLine);
GPSLine = "";
}
}
Вы могли бы попробовать мою библиотеку NeoGPS. В нем есть программа diagostic и некоторая полезная информация в разделе Устранениянеполадок. И NeoGPS не использует класс String, хотя вы можете безопасно тратить много оперативной памяти на Edison. : P
Для сборки Edison вам, возможно, придется изменить элемент конфигурации PACKED_DATA, описанный здесь.
(Это продукт Arduino, верно?)
- устаревшее преобразование из строковой константы в 'char*'
- GPS-модуль uBlox Neo 6M не отвечает
- Как запрограммировать ардуино на чистом C/C++?
- Количество элементов в массиве char
- Регистры ввода-вывода SAM3X8E (Arduino Due)
- как быстро loop() работает в Arduino
- Arduino: как получить тип платы в коде
- Как вызвать функции C из скетча ардуино?
требуются какие-либо библиотеки?, @bedrock
Хорошо, хорошо, чтобы разбить то, что я делаю, @bedrock
1 У меня есть плата Intel Edison one, у нее есть слот для карты micro SD, и я хочу использовать GPS и регистрировать все, что он отправляет на SD-карту, а вторая часть — считывать и отображать датчики на экране. Но пока я просто хочу, чтобы GPS работал, @bedrock