Skocz do zawartości

Brak informacji z GPS modułu SIM808,ATmega1284P


RedBoy

Pomocna odpowiedź

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
Link do komentarza
Share on other sites

  /*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.

Link do komentarza
Share on other sites

(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
Link do komentarza
Share on other sites

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
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.