Arduino Leonardo A7 GPS/GPRS трекер
- Войдите на сайт для отправки комментариев
Ср, 06/12/2017 - 18:39
Добрый день Всем )
Прошу помощи с проектом!! Весь мозг уже себе сломал(
Идея следующая: Хочу собрать трекер с финкцией сбора координат и последуещией отправкой их на Blynk.
Есть модуль Ai Thinker A7 и плата Arduino Leonardo. Rx и Tx из A7 заходят в Rx и Tx ардуины.
Gps контакт модуля заведен в 8 пин ардуины.
Не могу заставить одновременно работать и модуль и SoftwareSerial чтобы одновременно получать координаты и тут же слать их на сервер.
Надеюсь на вашу помощь)
Мой код:
#define TINY_GSM_MODEM_A7 #include <SoftwareSerial.h> #include <TinyGsmClient.h> #include <BlynkSimpleSIM800.h> #include <TinyGPS++.h> #include <SimpleTimer.h> SimpleTimer timer; WidgetMap myMap(V0); const char auth[] = "###################"; // Your GPRS credentials // Leave empty, if missing user or pass const char apn[] = "internet.mts.ru"; const char user[] = ""; const char pass[] = ""; int spd; //Variable to store the speed int sats; //Variable to store no. of satellites response String accur; //accuracy int alt; //altitude int hours; int minutes; unsigned int move_index; #define SerialAT Serial1 // or Software Serial on Uno, Nano //#include <SoftwareSerial.h> SoftwareSerial ss (8, 9); // RX, TX TinyGPSPlus gps; TinyGsm modem(SerialAT); void displayInfo() { if (gps.location.isValid() ) { float latitude = (gps.location.lat()); //Storing the Lat. and Lon. float longitude = (gps.location.lng()); Blynk.virtualWrite(V1, String(latitude, 6)); Blynk.virtualWrite(V2, String(longitude, 6)); } Serial.println(); } void Sent_serial() { // Sent serial data to Blynk terminal - Unlimited string readed String content = ""; //null string constant ( an empty string ) char character; while(ss.available()) { character = ss.read(); content.concat(character); } if (content != "") { Blynk.virtualWrite (V11, content); } } void setup() { // put your setup code here, to run once: Serial.begin(115200); delay(10); // Set GSM module baud rate SerialAT.begin(28200); delay(2000); ss.begin(9600); delay(2000); SerialAT.print("AT+GPS=1"); delay(2000); // Restart takes quite some time // To skip it, call init() instead of restart() //Serial.println("Initializing modem..."); modem.restart(); String modemInfo = modem.getModemInfo(); //Serial.print("Modem: "); Serial.println(modemInfo); delay(3000); Blynk.begin(auth, modem, apn, user, pass); timer.setInterval(500, Sent_serial); } void loop() { // put your main code here, to run repeatedly: while (ss.available() > 0) { if (gps.encode(ss.read())) displayInfo(); } Blynk.run(); timer.run(); }
Примечательно то что к серверу Blynk он цепляется и в инет выходит. Могу светодиодом помигать)
Но вот не могу парсить координаты с Gps модуля.
До этого реализовывал подобное с Esp8266 +VK16E + Мтс Модем. все бы ничего, но модем постоянно отваливался и стабильности не было никакой.
Ввыбрал Леонардо изза аппаратного Uart на борту, для одновременной обработки данных.
Комрад, победил проблему?