Skocz do zawartości

Brak informacji z GPS modułu SIM808,ATmega1284P


Pomocna odpowiedź

Napisano (edytowany)

Witam, buduję moduł alarmowy na bazie ATmegi1284P z akcelerometrem ADXL245 i moduł SIM808 GSM/GPS/BT. W kodzie błędu kompilacji nie pokazuje lecz po uruchomieniu alarmu poprzez poruszenie płytką wyświetla się w serial monitorze sama informacja o uruchomieniu lecz nie widać daty z GPS. Jak to rozwiązać? Dodam jeszcze że GPS pokazuje te informacje jeśli wyrzucę fragment kodu w komentarzu wieloliniowym. Po od komentowaniu nie podaje moduł daty z GPS.

soft_v1.6.zip

Edytowano przez RedBoy
  /*Activites activ = accelerometer.readActivites();
  //Uruchomienie uzbrojonego alarmu
  if (activ.isActivity)
  {
    Serial.print("UWAGA ALARM ");*/
    if(sim808.getGPS()){
    Serial.print(sim808.GPSdata.day);
    Serial.print("/");
    Serial.print(sim808.GPSdata.month);
    Serial.print("/");
    Serial.println(sim808.GPSdata.year);
    }

Czyli szara część odkomentowana powoduje problem? Nie wiem w jaki sposób są zbudowane wewnętrzne funkcje, ale nasuwają się dwie rzeczy. Jeśli tekst ''UWAGA ALARM" wyświetla się tylko jeden raz to znaczy, że activ.isActivity jest odpalane tylko jeden raz. Być może w momencie aktywacji alarmu dane z GPS nie przychodzą. Z tego co wiem GPS wysyła dane co 1 sekundę i po prostu sprawdza, że ich nie ma i omija to, a więcej do tej pętli kolejny raz nie wejdzie bo aktywuje się tylko raz. 

Gdy wyrzucisz fragment to po prostu w pętli odczytuje dane GPS co 1 sekundę, czyli działa normalnie. 

Według mnie powinieneś poza pętlą czytać dane GPS i w momencie alarmu wyświetlić ostatnie aktualne.

(edytowany)

Dziękuje za odpowiedź, czy mógłbym poprosić o stosowny kod, aby to dobrze zgrać ?? Lub czy o takie rozwiązanie chodziło ??

test.png

Edytowano przez RedBoy
(edytowany)
void loop() {   
  //Zmienne GPS2
  String string;
  String hourString;  
  String minuteString;
  String secondsString;
  String dzien;
  String miesiac;
  String rok;
  
  if(sim808.getGPS())
  {
    dzien = Serial.print(sim808.GPSdata.day);
    miesiac = Serial.print(sim808.GPSdata.month);
    rok = Serial.println(sim808.GPSdata.year);
  }
    
  Activites activ = accelerometer.readActivites();
  //Uruchomienie uzbrojonego alarmu
  if (activ.isActivity)
  {
    Serial.print().print("UWAGA ALARM ");
	Serial.print(dzien, miesiac, rok);
  }
    
//Alarm aktywny czeka na poruszenie
  if (activ.isInactivity)
  {
    Serial.println("ALARM UZBROJONY");
    
  }

Nie wiem jakiego typu są dane dzien, miesiac, rok, czy to stringi czy int, ale idea jest taka że czytamy to przed powstaniem alarmu, a w momencie jego wystąpienia wyświetlamy to co ostarnio było na GPS. Proszę tego nie kopiować 1-1 ale potraktować jako wskazówkę jak należy do problemu podejść.

Edytowano przez eldesigner

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...