Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

GPS TRACKER z funkcją powerbanku

Frog_Qmak 13 Feb 2016 11:38 9747 24
Nazwa.pl
  • GPS TRACKER z funkcją powerbanku
    Witam,
    Chciałbym zaprezentować swoją najnowszą konstrukcję: GPS Tracker z funkcją powerbanku. Projekt powstał na Arduino, jednak mimo "ardunizmu" dostarcza sporo ciekawych danych statystycznych i jest fajnym gadżetem na piesze/rowerowe wycieczki. Urządzenie powstawało etapami od grudnia.

    Celem powstania trackera była... radość tworzenia i posiadania :D. Od czasu do czasu wybieram się na różne wycieczki i chciałem posiadać własnoręcznie wykonaną, hardware'ową alternatywę dla programów do śledzenia trasy i liczenia statystyk (dotychczas programy na Androida: Cycle droid + Bike computer, oba bardzo fajne).

    Udostępniam kod programu, jednak zastrzegam, że może on jeszcze zawierać błędy, ponieważ nie został jeszcze sprawdzony "w terenie". Posiada on sporo komentarzy (po angielsku) i nieaktywnych funkcji - były one pomocne przy pisaniu kodu, szkoda usuwać, mogą się przydać do diagnostyki.

    Omówienie programu:
    Cały program zajmuje dość sporo pamięci (22kB ROM, 1,4kB RAM). Przy pierwszym uruchomieniu kontroler oczekuje na złapanie FIX-a zarówno w poziomie, jak i w pionie. Następnie zapisywanych jest kilka parametrów, potrzebnych do dalszych obliczeń (wyjściowe położenie, napięcie baterii, czas).
    W głównej pętli program sprawdza, czy są wciśnięte dwa przyciski (na ściance od strony ekranu, niewidoczne na zdjęciu), jeżeli nie, to odczytuje dane z GPS i wyświetla odpowiednie informacje (opisane dalej). Jeżeli są wciśnięte dwa przyciski, to następuje wejście do menu kalibracji.

    Menu kalibracji umożliwia dostosowanie "czułości" urządzenia na ruch, a także kilku innych rzeczy. Kliknięcie jednego/drugiego przycisku zmienia opcje (tak/nie; +/-), kliknięcie obu potwierdza wybór:

    1. "Reliable speed" - wyświetlana jest "aktualna" prędkość modułu i ustawiana przez nas prędkość progowa, poniżej której GPS ma ignorować ruch i nie uwzględniać go w obliczeniach trasy (czas ruchu, dystans, prędkość średnia...)
    2. "Reliable DST" - tutaj ustawia się próg minimalnej odległości, którą należy przebyć pomiędzy kolejnymi cyklami obliczeń. Należy uważać, żeby ta wartość była większa od iloczynu minimalnej prędkości, a także czasu pełnego przebiegu wyświetlania informacji pomnożonego przez ilość cykli (tzn. co ile wyświetleń mają być pobierane dane do obliczeń)
    3. "Cycle time" - jak długo ma się wyświetlać każdy z ekranów informacyjnych
    4. "Cycles number" - dane do obliczeń pobierane są co kilka pętli, aby zmniejszyć szumy - przy rejestrowaniu pieszej trasy odczyt np. co 30 sekund jest ok. Ten parametr ustawia, ile pętli programu ma się wyegzekwować przed pobraniem danych do obliczeń.
    5. "Sound" - czy w przypadku zgubienia FIX-a ma się włączać powiadomienie dźwiękowe (buzzer)


    Odbiornik to U-blox NEO-6M z zewnętrzną anteną. Muszę przyznać, że jestem z niego całkiem zadowolony. Co prawda zdarzają mu się spore "odchyłki" w pionie, a także (chyba mniejsze) w poziomie, jednak w jakimś stopniu jest to niwelowane w programie. Odbiornik dzięki zewnętrznej antenie posiada całkiem niezłą czułość i potrafi złapać FIX-a w pomieszczeniu.

    Arduino komunikuje się z GPS-em za pomocą software serial - zwykły był potrzebny w czasie pisania kodu i tak zostało. Sporo problemów napotkałem przy "warunkach" logicznych polegających na porównywaniu np. aktualnej prędkości z prędkością progową, jako że mikrokontroler nie bardzo radzi sobie z liczbami niecałkowitymi (co najmniej jeden wieczór, zanim sobie o tym przypomniałem). Rozwiązałem to, korzystając z biblioteki math.h i pobierając tylko część całkowitą liczby. Być może dałoby się to usprawnić (zdeklarować np. int(a) = liczba_niecałkowita), jednak pierwotnie rozwiązałem to w taki sposób i tak zostało.

    Urządzenie zasilane jest akumulatorem Li-Ion 3200 mAh (LG, nie "chińczyk fire") przez układ kontroli ładowania/rozładowania (gotowy moduł). GPS Tracker posiada dwa przyciski zasilania: główny, łączy gniazdo zasilające z układem zabezpieczającym i diodą POWER a także drugi wyłącznikiem, który podaje napięcie na przetwornicę step-up, zasilającą całość urządzenia. W ten sposób, mogę ładować akumulator lub pobierać z niego prąd, bez dodatkowego zużywania energii przez resztę układów. Gniazdo DC (przy widocznych na zdjęciu przyciskach) służy do ładowania urządzenia (napięcie <5V zbite diodą, aby przetwornica miała "normalne" warunki pracy i żeby na analogowym wejściu pomiaru napięcia baterii nie pojawiło się napięcie wyższe niż zasilające). Do gniazda można podłączyć zewnętrzną przetwornicę 5V USB do ładowania telefonu itp. Pojemność wbudowanego ogniwa powinna naładować telefon "od zera" i zostanie jeszcze trochę energii. Zastanawiałem się nad daniem kolorowego wyświetlacza, jednak zastosowany LCD pobiera znacznie mniejszy prąd (ok. 20mA), toteż nawet go nie wyłączam, dodatkowo jest bardziej wytrzymały, toteż można go umieścić w plecaku i zbytnio się nie przejmować. Przyciski zaopatrzone są w "sprzętowy debouncing" (opornik + kondensator), dodatkowo w programie pomiędzy kolejnym sprawdzeniem stanu kontroler odczekuje 150ms. Moduł GPS zasilany jest oddzielnym stabilizatorem liniowym 3,3V, gdyż "Arduinowe" 3,3V nie wystarczało do poprawnej pracy modułu.

    W poszczególnych ekranach wyświetlane są następujące funkcje:

    EKRAN 1:
    -Ilość "widocznych" satelitów
    -Numer bieżącego "cyklu" programu (czyli ile cykli temu były spełnione warunki ruchu i program pobrał dane do obliczeń)
    -Godzina
    -Aktualna prędkość
    -Średnia prędkość
    -Aktualna wysokość
    -Temperatura

    EKRAN 2:
    -Dystans "płaski"
    -Dystans liczony wg. zmodyfikowanego Twierdzenia Pitagorasa. Model nadaje się na wycieczki w góry, zakłada on, oprócz płaskiego dystansu, dwukrotne pokonanie "odległości" w pionie równej różnicy wysokości końcowej i początkowej
    -Dystans liczony z uwzględnieniem pokonanych przewyższeń/spadków
    -Różnica maksymalnej i minimalnej wysokości w czasie trasy

    EKRAN 3:
    -Zużycie energii (% baterii na godzinę)
    -Szacowany pozostały czas pracy na baterii
    -Pokonane przewyższenia
    -Pokonane spadki
    -Maksymalna i minimalna wysokość osiągnięta w czasie wycieczki

    EKRAN 4
    -Całkowity czas wycieczki (od złapania FIX-a)
    -Czas w ruchu
    -Maksymalna prędkość
    -Czy aktualnie w ruchu (Y/N)
    -Napięcie baterii
    -Stan baterii (%)


    Kosztorys:
    -Podróbka Arduino Nano ok 10zł od wschodnich przyjaciół
    -Moduł GPS U-blox NEO-6M ok. 40 zł
    -Przetwornica step-up 5v 4zł
    -Termometr DS18B20 4zł
    -Wyświetlacz 4X20 (HD44780) 16 zł
    -Układ zabezpieczenia ogniwa ok 5zł
    (wszystko powyższe darmowa wysyłka)

    -"adapter" wyświetlacza do I2C ok 10 zł + wysyłka
    -Akumulator Li-Ion 3100mAh - 15zł + wysyłka
    -Obudowa ok. 15zł + wysyłka
    -Drobnica: przyciski, złącza, kable, oporniki, itp ok 15zł

    Zapraszam do komentowania :)
    GPS TRACKER z funkcją powerbanku GPS TRACKER z funkcją powerbanku GPS TRACKER z funkcją powerbanku GPS TRACKER z funkcją powerbanku GPS TRACKER z funkcją powerbanku

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    Frog_Qmak
    Level 25  
    Offline 
    Has specialization in: arduino, chemia, inżynieria przemysłowa
    Frog_Qmak wrote 1283 posts with rating 256, helped 5 times. Live in city Rydułtowy. Been with us since 2007 year.
  • Nazwa.pl
  • #2
    janek1815
    Level 38  
    Termo-glut to najlepszy uszczelniacz. Pokaż wnętrze to będziemy komentować. Ciężko pisać coś o kilku linijkach wyświetlonych na LCD
  • #3
    Freddy
    Level 43  
    Frog_Qmak wrote:
    Zapraszam do komentowania
    Co tu komentować, jedyne co zamieszczasz, to 5 fotek jednego0 ekranu i spakowany plik, za który żądasz punkty. Co ma mnie zmotywować, aby tracić punkty i go pobierać?
    W środku tez pewnie pełno termogluta, ale na wierzchu mogłeś sobie to już podarować.

    Z tego co widzę, nie podoba mi się kompletnie - fatalne.
    Jeśli w środku jest tak samo jak to co widać na jedynej fotce, to szkoda mojego czasu na dalsze opisy.
  • #4
    Frog_Qmak
    Level 25  
    Pojawiła się punktacja za pobranie kodu, ponieważ spędziłem wiele długich wieczorów na jego opracowaniu - myślę, że Kolega, mając ich ponad 13 tysięcy zbytnio by nie ucierpiał :) Niemniej jako że projekt jest w głównej mierze "software'owy", usunąłem ją, nie ma sprawy. Nie twierdzę, że jest to konstrukcja idealna pod względem estetycznym, nie wszyscy posiadają frezarki i inne tego typu narzędzia, toteż musiałem sobie jakoś poradzić. Niemniej myślę, że projekt jest w stanie kogoś zainspirować, dawno nie pojawiło się na forum nic związanego z GPS. Walory użytkowe są moim zdaniem znaczne, a to, że pojawiło się trochę kleju w niczym ich nie umniejsza.
  • Nazwa.pl
  • #5
    lowdrop
    Level 9  
    Zaryzykowałem punkt i zajrzałem do środka - dwa pliki z kodem. I teraz, jako że nie znam się zbytnio na programowaniu mikro-kontrolerów, chciałbym poszerzyć nieco wiedzę: czemu służy taka konstrukcja z powtarzanym blokiem kodu, a następnie to samo - z pętlą? Czy to pozostałość, czy jedno musi współistnieć z drugim? Albo inaczej - czy nie można obu linii uaktualniać w pętli?

    while (!gps.location.isValid() || !gps.altitude.isValid()) //IF NO FIX
      {
        
        lcd.print("Acquiring FIX");
        smartDelay(50);
        lcd.setCursor(0, 0);
    
        lcd.print("Acquiring FIX.");
        smartDelay(50);
        lcd.setCursor(0, 0);
    
        lcd.print("Acquiring FIX..");
        smartDelay(50);
        lcd.setCursor(0, 0);
    
        lcd.print("Acquiring FIX...");
        smartDelay(50);
        lcd.setCursor(0, 0);
    
        lcd.print("Acquiring FIX....");
        smartDelay(50);
        lcd.setCursor(0, 0);
    
        lcd.print("Acquiring FIX.....");
        smartDelay(50);
        lcd.setCursor(0, 0);
    
        lcd.print("Acquiring FIX......");
        smartDelay(50);
        lcd.setCursor(0, 0);
    
        lcd.print("Acquiring FIX.......");
        smartDelay(50);
    
        lcd.setCursor(0, 1); //column, row
        for (int i = 0; i < 20; i++)
        {
          lcd.print(".");
          smartDelay(50);
        }
        lcd.clear();
    
      }
    
  • #6
    piotr_go
    DIY electronics designer
    lowdrop wrote:
    czemu służy taka konstrukcja z powtarzanym blokiem kodu, a następnie to samo - z pętlą? Czy to pozostałość, czy jedno musi współistnieć z drugim? Albo inaczej - czy nie można obu linii uaktualniać w pętli?

    Podejrzewam że przy samej pętli przy przejściu do nowej linii kropki pojawiły by się nie w tej linijce co trzeba.
    Ale racja, można by dać 2 pętle.
  • #7
    Frog_Qmak
    Level 25  
    Pierwsza część kodu wyświetla napis i pojawiające się po kolei kropki u góry, druga część kodu - pojawiające się kropki na dole. Niestety biblioteka służąca do obsługi wyświetlaczy nie radzi sobie z przeskakiwaniem do kolejnego wiersza w przypadku wyświetlacza 4-wierszowego, toteż nie mogłem wszystkich kropek "wpiąć" w jedną pętlę.

    Dokładnie, jak wyżej. Można by dać drugą pętlę, ale dla tych kilku znaków zostawiłem to, jak jest.
  • #8
    pier
    Level 24  
    Frog_Qmak wrote:
    Pojawiła się punktacja za pobranie kodu, ponieważ spędziłem wiele długich wieczorów na jego opracowaniu - myślę, że Kolega, mając ich ponad 13 tysięcy zbytnio by nie ucierpiał :) Niemniej jako że projekt jest w głównej mierze "software'owy", usunąłem ją, nie ma sprawy. Nie twierdzę, że jest to konstrukcja idealna pod względem estetycznym, nie wszyscy posiadają frezarki i inne tego typu narzędzia, toteż musiałem sobie jakoś poradzić. Niemniej myślę, że projekt jest w stanie kogoś zainspirować, dawno nie pojawiło się na forum nic związanego z GPS. Walory użytkowe są moim zdaniem znaczne, a to, że pojawiło się trochę kleju w niczym ich nie umniejsza.


    Do wycięcia otworu pod wyświetlacz nie potrzebna żadna frezarka. Takie narzędzia jak wiertarka wiertło nożyk i pilnik chyba Znajdziesz?
    Ja zawsze używam takich narzędzi i wychodzi otwór z dokładnością +-0.5mm.
    No a to co Pokazałeś bez komentarza.
    Piszesz że kod nie skończony, wygląd pozostawia wiele do życzenia środka nie Pokazałeś to pytam co tu jest ukończone?
  • #9
    george2002

    Level 21  
    A ja pogratuluję projektu bo bardzo ciekawe funkcje posiada :)
    Nie rozumiem zawsze narzekających, termoglut ? tak jak autor wspomina nie ma narzędzi i zakładam że jak by miał to zrobiłby ładniej, dla własnego użytku sprzęt może być taki jak się chce, e na przykład autor lubi termoglut ? jest jego inspiracją, lubi jego zapach ? w koło to samo z termoglutem a nikt nie zapyta np jak realizowane są funkcje programowe np obliczanie pozostałego czasu pracy urządzenia co Mnie interesuje czy czas działania na akumulatorze ? tai samo teksty że szkoda opisu dalszego, to po co w ogóle się wypowiadać ? tylko dołować to chyba domena wielu elektrodowiczów - wskoczenie na forum, pościk dołujący i tyle ... no nic, urządzenie uważam za bardzo przydatne i zrobione zwłaszcza od początku bo jak autor podkreślił już są programy na komórki i są podobne urządzenia ale są też funkcje które są w jednym a nie ma w drugim i dla tego jest bardziej funkcjonalne a do tego wykonane samemu a nie kupione i to się liczy, doświadczenia się nie kupi niestety a satysfakcji tym bardziej jeśli wykonane urządzenie spełnia założenia użytkownika i jest przydatne :)

    Pozdrawiam licząc na kolejne udane konstrukcje :)

    George2002
  • #10
    Frog_Qmak
    Level 25  
    pier wrote:
    Piszesz że kod nie skończony, wygląd pozostawia wiele do życzenia środka nie Pokazałeś to pytam co tu jest ukończone?

    Nie napisałem, że kod jest nieukończony, tylko że mogą jeszcze się pojawić błędy - nie znaczy to że nie przetestowałem żadnej z funkcji, jednak Kolega pewnie zdaje sobie sprawę, że w przypadku tak złożonego kodu błędy mogą się jeszcze pojawić...

    pier wrote:
    No a to co Pokazałeś bez komentarza.

    Dziękuję za konstruktywną krytykę. Polecam przyjrzeć się zaprezentowanemu przez Kolegę głośnikowi bluetooth, widoczny w podpisie pod postem, który oprócz ładnej z zewnątrz obudowy posiada gotowy moduł bluetooth i... klej z pistoletu. Również ja mógłbym zapytać: nie wstyd czegoś takiego pokazać? Gdzie tam praca własna oprócz obudowy? Płytka uniwersalna i gotowy moduł? To nie jest projekt na elektrodę, można by stwierdzić. Nie jest ładnie czepiać się dla zasady.

    Dla mnie liczy się głównie treść, nie forma, a że nie posiadam drukarki 3d, frezarki, ani nie jestem artystą, to nie każdy aspekt projektu musi być "na 100%". Można by było lepiej? Pewnie tak. Ale z moim wolnym czasem projekt powstawał by pewnie znacznie więcej czasu...

    Prezentuję tutaj coś, co może kogoś zainspirować. Który z krytykujących Kolegów nigdy nie użył "termogluta"? Kto jest bez winy, niech pierwszy rzuci klejem...
  • #11
    Freddy
    Level 43  
    Frog_Qmak wrote:
    Pojawiła się punktacja za pobranie kodu, ponieważ spędziłem wiele długich wieczorów na jego opracowaniu - myślę, że Kolega, mając ich ponad 13 tysięcy zbytnio by nie ucierpiał
    Nikt Ci nie każe udostępniać wersji źródłowej. Nie zamieściłeś schematu i reszty dokumentacji, więc pliki źródłowe są psu na budę.
  • #12
    Frog_Qmak
    Level 25  
    Odnoszę wrażenie, że na podstawie właśnie opisu i kodu mniej więcej wiadomo co i jak - schematu nie posiadam, bo i nie był potrzebny, to nie prom kosmiczny. Po co rysować schemat połączenia baterii z włącznikami ? i rysunek 3D podpięcia ds18b20 do Arduino? W razie pytań mogę napisać co i jak. Zdjęć w czasie budowy nie robiłem, całość jest już zmontowana, więc nie chcę jej otwierać
  • #13
    Freddy
    Level 43  
    No niestety w związku z tym musimy Ci wierzyć na słowo (albo i nie) że jest powerbank i moduł GPS, o którym nic nie napisałeś.
  • #14
    Romo324
    Level 11  
    Bardzo ciekawe urządzenie, wymagało sporego nakładu pracy jeśli chodzi o program i sporej wiedzy jeśli chodzi o działanie systemów GPS. Obudowa jak obudowa, jeśli spełnia swoją funkcję to jest ok, ważne że chroni układ i użytkownika nie rozpadając się jednocześnie w rękach. Sam nie publikuje tutaj swoich projektów właśnie z powodu hejtów "wszystkomających" elektrodowiczów, którzy kupią gotowy moduł i wsadzą w ładną obudowę plując na projekt wykonany własnoręcznie przez innego użytkownika bo nie jest taki "ładny", ale i z zazdrości bo jest bardziej funkcjonalny od ich gotowca. Projekt ciekawy i godny uwagi, sam bym coś takiego zrobił na rower czy nawet do samochodu rozszerzając o kilka funkcjonalności.
  • #15
    tomek122
    Level 22  
    Po co uszczelniać termoglutem, skoro i tak woda dostanie się do wyświetlacza po między szkłem a jego blaszaną ramką.
  • #16
    lowdrop
    Level 9  
    Dzięki za wyjaśnienia. Kod sobie przejrzę, bo się nauczę czegoś o komunikacji z modułem GPS. Jedynie bym się przyczepił do otworu pod wyświetlacz. Jest taki prosty patent: rysujesz od metalowej linijki czy ogólnie od płaskownika ostrym narzędziem, nożykiem, rylcem, nawet małym śrubokręcikiem żądany kształt, potem pomniejszasz go ok 1-2 mm i powstaje Ci drugi kształt, "równoległy" do poprzedniego. Pomiędzy nimi, w miarę na środku, robisz gęsto punkty-wgłębienia np. grotem lutownicy albo dłutkiem i młotkiem. Te punkty nawiercasz wiertłem 1-2mm. Potem nacinasz nożem, wypychasz środek, a szerokim płaskim pilnikiem wyrównujesz. Po kilku ćwiczeniach, jak nabędziesz wprawę, masz otwór jak marzenie :)

    Swoją drogą, już widzę, jak by zjechano tutaj twórców DIY z amerykańskich for, gdzie przecież króluje płytka uniwersalna, karton, termoklej i inne "przydasie", za to mają masę funu z tego co robią, a przecież o to chodzi! :)
  • #17
    Frog_Qmak
    Level 25  
    Obudowa nie miała być wodoodporna, jeżeli miałaby spełniać taką funkcję, zrobiłbym to inaczej. Raczej nie planuję używać trackera w deszczu, IP 67 jest niepotrzebne ;) Co do zastosowania w samochodzie, należałoby zmodyfikować kod i znacznie zwiększyć częstotliwość odczytów danych, nawet nie raz na pętlę, ale np. przed każdym kolejnym ekranem - przy samochodowych prędkościach kolejne punkty pomiarowe będą od siebie oddalone. I tak np. pokonując zakręt o sporym łuku, możemy uzyskać dwa odczyty: przed i po zakręcie, co da nam w konsekwencji odległość jako jego cięciwę - oczywiście krótszą, niż pokonana przez nas trasa.
  • #18
    shadow0013
    Level 34  
    Frog_Qmak wrote:
    Udostępniam kod programu,

    Fajny projekt, ma jedną wadę "ardunizm", właściwie samo arduino jest fajne, ale bajzel z bibliotekami jest do nieogarnięcia, dołącz do pliku biblioteki które użyłeś, za jakiś czas może się komuś uda ten program skompilować.
  • #20
    michalko12
    MCUs specialist
    Frog_Qmak wrote:
    jednak mimo "ardunizmu" dostarcza sporo ciekawych danych statystycznych i jest fajnym gadżetem na piesze/rowerowe wycieczki.
    Frog_Qmak wrote:
    Model nadaje się na wycieczki w góry, zakłada on, oprócz płaskiego dystansu, dwukrotne pokonanie "odległości"

    Ile to waży i jakie są tego rozmiary?

    Ok, trochę funkcji jest, fajnie że DIY, ale teraz wystarczy do tego pierwszy lepszy smartfon...
  • #21
    Frog_Qmak
    Level 25  
    Wymiary: Obudowa uniwersalna Z4P 130x150x50
    Masa: Nie posiadam wagi kuchennej, na oko z 200-300g?

    Wiem, że wystarczy smartfon, ale właśnie taki był cel, żeby mieć własną alternatywę dla komórki. Dla frajdy. No i żeby telefonu nie rozładowywać. Zresztą mam dodatkowo pomiar temperatury, no i powerbank 3200mAh w plecaku.
  • #22
    krru
    Level 33  
    Kilka uwag, zarówno do postów (wszystkich poprzednich) jak i projektu:
    1. Skoro go używasz w terenie (wycieczki piesze/rowerowe) nie bardzo rozumiem, jak może nie być wodoodporny.
    2. Nazywasz to trackerem, ale nie widzę zapisu tracka - czyli kolejnych pozycji. W sumie można zapisywać po prostu NMEA. Znacznie ogranicza do użyteczność urządzenia. Mając zapis wszelkie statystyki można obliczyć off-line.
    3. Jak widzę w kodzie procent naładowania akumulatora określasz na podstawie aktualnego napięcia (funkcja map()). Nie używałem arduino, ale znalazłem w internecie informację o dziwnym działaniu tej funkcji. Pomijając to, zależność stopnia naładowania od napięcia jest mniej więcej liniowa, ale w pewnym zakresie w środku, przy skrajnych napięciach napięcie zmienia się bardzo szybko. Sądzę, że mapowianie liniowe zakresu 2.5V - 4.2V jest nietrafione. Parę razy ładowałem akumulatorki 18650 ładowarką IMAX B6, też powinieneś tak zrobić i użyć uzyskanego wykresu zależności napięcia od stopnia naładowania (jakaś tabelka).
    Fajnie byłoby jakby sprzęt potrafił mierzyć pobierany z aku prąd.
    4. Jakoś dziwnie masz zorganizowaną pętlę, zdaje się, że czytasz dane z gps bez względu, czy są nowe dane czy nie. Powinieneś używać isUpdated, by każdy wynik gps brać raz.
    5. Jeśli urządzenie ma działać długi czas (a tylko wtedy prawidłowo policzy statystyki) dobrze byłoby doda jakieś oszczędności prądu np. wygaszania podświetlania wyświetlacza.
    6. Łączenie trackera GPS - a więc urządzenia, które ma działać ciągle i długo, z powerpackiem też jest dziwne - bo jak ktoś użyje tego jako powerpacka i rozładuje aku to tracisz możliwośći nawigacyjne. Wolałbym mieć niezależny powerpack.
  • #23
    Frog_Qmak
    Level 25  
    Spieszę z odpowiedziami:

    1. Z prostej przyczyny - jak nie ma pogody, to nie ma mnie na trasie. Nie ma więc potrzeby dociekania, "co by było gdyby", bo jeżeli trafił bym na taką ulewę, że zalało by sprzęt w plecaku, pewnie nie byłby to mój największy problem... Gdybym dopuszczał taką możliwość, odpowiednio bym całość zabezpieczył.

    2. Owszem, zapis współrzędnych to ciekawa opcja, jednak nie dodawałem jej z prostej przyczyny - jest mi niepotrzebna. Ciekawią mnie "bieżące" statystyki i liczby, nigdy nie wracam do zapisu swoich tras. Swoją drogą, najprawdopodobniej brakło by pamięci, a stosowanie Arduino Mega byłoby... Mega gabarytowe.

    3. Zgodzę się, że nie jest to perfekcyjne rozwiązanie. Jednak daje pewne pojęcie o stanie baterii. Punkty min i max określiłem jako punkty odcięcia baterii przez układ zabezpieczający. Rozładując GPS-a raz czy dwa całkowicie, będę wiedział, przy jakim napięciu bateria zacznie się szybko wyczerpywać. Nie posiadam tego typu ładowarki, faktycznie, mając coś takiego, można by zaszaleć. Trochę problemów przy pomiarze napięcia sprawiał impulsowy pobór prądu przez przetwornicę step-up (odczyty były praktycznie losowe), jednak dodanie 2 kondensatorów (ceramiczny i elektrolit 4,7uF) uspokoiło sytuację.

    4. Przy czasie trwania pętli 5 (ilość ekranów) * t (czas trwania każdego z nich, np. 5s) raczej nastąpi przemieszczenie. Masz rację, można było tak zrobić, w sumie wychodzi na to samo, ale byłoby bardziej "elegancko"

    5. Jak pewnie zauważyłeś w kodzie jest zakomentowana opcja wyłączenia ekranu (z testów). Całość pobiera jednak tak niewielką moc w porównaniu do pojemności akumulatora, że nawet nie przygaszałem ekranu, bo nie miało to większego znaczenia. Różnica wynosiła chyba jakieś 20 mA @5V.

    6. Powerbank to funkcja dodatkowa, skoro już mam taką fajną pojemność przy sobie. Pewnie że można osobno. Pytanie po co, skoro jest to dodatek "w razie czego". Posiadam osobny, zgrabny "powerbankuś" na ogniwie NiMH 2200mAh w niewielkiej obudowie, więc osobne źródło zasilania również mogę mieć przy sobie. Inna rzecz, że korzystałem z niego chyba raz...


    Dziękuję za analizę kodu i komentarz głębszy, niż "wygląd beznadziejny, temat powinien wylądować w koszu" :)
  • #24
    krru
    Level 33  
    Zwykle akumulatorki traktuje ładowarką modelarską by poznać ich charakterystyki i ewentualnie obserwować ich zmiany w czasie. Zapisuje więc te charakterystyki i podam przykładową charakterystykę rozładowania LiIon 18650 firmy Samsung o pojemności znamionowej 2600mAh (praktycznie mają 2500, ale to w granicy tolerancji). Na twoim miejscu uznałbym przedział 4.2V - 3.3V jako ten liniowy i roboczy. Poniżej 3.3V akumulator wytrzymuje jeszcze chwilkę, można to uznać na 'rezerwę'. Szczególnie z przetwornicą, która zaczyna kompensować spadek napięcia zwiększonym poborem prądu.
    GPS TRACKER z funkcją powerbanku

    Pierwsza skala od lewej to prąd rozładowania (-500mA), druga ładunek (zielona, prosta linia). Skala po prawej to napięcie (Żółta linia)
    Oczywiście inny akumulator może mieć inne parametry liczbowe, ale przypuszczam, że kształt charakterystyki pozostaje zbliżony.