Elektroda.pl
Elektroda.pl
X
Metal Work Pneumatic
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Licznik rowerowy - kilka pytań o założenia

pdzran 02 Cze 2017 21:42 1365 12
  • #1 02 Cze 2017 21:42
    pdzran
    Poziom 13  

    Witam

    Mam licznik rowerowy, pasuje mi pod każdym względem ale ma mały wyświetlacz - Sigma Rox 10.

    Postanowiłem w ramach nauki zrobić podobny ale z większym wyświetlaczem.
    Założenia : arduino, wyświetlacz dotykowy, gps, rtc, karta sd, czujnik temperatury, ciśnienia, może tętno.
    Jeżeli gdzieś napiszę jakąś herezję to proszę wziąć pod uwagę fakt, że jestem amatorem :-)

    Arduino - jak najmniejsze, zobaczę ile potrzebne jest wejść/wyjść
    Wyświetlacz - dotykowy pojemnościowy lub zwykły + przyciski
    GPS - Neo6 lub 7 - do pomiaru prędkości i zapisywania trasy na SD do GPX
    RTC - czas lub bez niego i czas z GPS
    Karta SD - zapis danych np. całkowity przebieg itp. , ślady GPX i konfiguracji
    Czujnik temperatury - wiadomo
    Czujnik ciśnienia - np. GY68 do określania wysokości, żeby wiedzieć ile przejechane w górę ile w dół i chyba dokładniejszy niż GPS

    Pytania :
    - wyświetlacz - czy dotykowy pojemnościowy, można obsługiwać palcem (rezystancyjny odpada) czy bez dotyku i przyciski - mam problem z tym jak to uszczelnić, da się to ogarnąć , bo przyciski jak dam to do tego gumki uszczelniające i będzie ok ?
    - czas z GPS czy z RTC - wiem, że $GPGGA zawiera czas i wg. tego co zauważyłem w jednym projekcie wysyłana jest co sekundę lub częściej, prawda to czy mylę się?
    - jak ogarnąć temat wysokości, czy z GPS z $GPGGA czy może dokładniejszy będzie czujnik ciśnienia ? jednak tutaj dojdzie większy problem kalibracji i wysokości początkowej
    - kadencja - wydaje mi się, że w Sigma jest w czujnikach kontaktron, czy to dobry trop czy może czujnik innego typu?
    - najprościej byłoby podłączyć czujnik po kablu ale gdybym chciał bezprzewodowo to co proponujecie, bt, wifi, coś innego, jaki konkretnie moduł ?
    - zasilanie - w wielu projektach widziałem po prostu baterie, jednak wolałbym akumulator, jaki , jakiego typu, jaka pojemność ?
    - ładowanie - najchętniej przez usb, czego szukać, co będzie odpowiednie do tego projektu?

    0 12
  • Metal Work Pneumatic
  • #2 03 Cze 2017 15:30
    krolik2
    Poziom 15  

    Nie wiem w jakich porach roku jeździsz ale w zimie z dotykiem będzie problem, rękawiczki do ekranów dotykowych to bujda na resorach :) Zrób przyciski, może pod jakąś membraną. W ogóle daruj sobie kolorowe wypasione wyświetlacze - w słoneczny dzień tylko same problemy. Weź zwykły LCD i ustaw max kontrast.

    GPS Ci będzie żarł baterię.

    Czujnik ciśnienia na rowerze będzie bardzo problematyczny, może okazać się zupełnie nieprzydatny. W ogóle potrzebna Ci ta wysokość?

    Kontaktron albo Hall albo IR odbiciowy + odblask na kole.

    Zasilanie: 18650 (albo akumulatorek tel.) + TP4056 plus przetwornica step up do 5V i masz gotowe ładowanie z USB.

    A w ogóle to najlepiej zrobić kombajn ogólnego zastosowania: licznik + oświetlenie + może alarm :)

    0
  • #3 03 Cze 2017 16:38
    krzysssztof
    Poziom 20  

    Właśnie jestem na etapie robienia licznika, ale z mniejszą ilością bajerów - u mnie tylko GPS, karta uSD i wyświetlacz oled. Zasilanie z 18650 i przetwornica 3.3V

    0
  • Metal Work Pneumatic
  • #4 03 Cze 2017 20:49
    pdzran
    Poziom 13  

    Ok , dzięki za info.
    Dotyk będzie pojemnościowy albo wcale, rysik odpada.
    Jeżdżę zimą, w tym roku nawet przy -17 stopniach ale wtedy nie mam potrzeby go używać, po prostu start i jazda, bez przystanków aby nie marznąć.
    Zdecyduję się na wersję z GPS ale bez czujnika ciśnienia.
    Wysokość jest bardzo przydatna, szczególnie na fajnym maratonie, aby wiedzieć ile było przewyższeń.
    Zasilanie .... jak już będzie poskładane to pomyślę nad nim, czym zasilać i jak ładować.
    Jutro zamówię graty i biorę się za robotę :-)
    Kombajn zbędny, oświetlenie mam na 18650, zimą to ważne jak jadę o 6 rano albo wracam o 18ej.

    0
  • #5 07 Cze 2017 23:11
    pdzran
    Poziom 13  

    Witam
    Mam problem, ponieważ lcd i czytnik kart działają po SPI.
    Jak to połączyć ?
    Jak oprogramować ?
    Widziałem kilka wątków na zagranicznych forach ale jako początkującemu ciężko mi to rozgryźć.

    0
  • #6 08 Cze 2017 07:59
    krzysssztof
    Poziom 20  

    Albo podłączyć do dwóch niezależnych SPI albo podłączyć do jednego SPI i do tego dwa wyjścia Slave Select wybierające układ z którym aktualnie chcesz się komunikować.

    0
  • #7 08 Cze 2017 08:44
    dondu
    Moderator Mikrokontrolery Projektowanie

    Innymi słowy MISO MOSI SCK podłączasz równolegle do obu układów, a piny Slave Select do dwóch różnych pionów mikrokontrolera.
    W programie należy uwzględnić:
    - że LCD i czytnik kart mogą działać na różnych ustawieniach SPI, i przed komunikacją z wybranym urządzeniem za każdym razem odpowiednio SPI ustawiać,
    - że przy komunikacji z wybranym urządzeniem jego Slave Select ma być na stanie niskim, a pozostałych urządzeń na stanie wysokim.

    0
  • #8 08 Cze 2017 10:19
    pdzran
    Poziom 13  

    Dzięki , tyle mniej więcej doczytałem na forach.
    Szukam jakiegoś mało skomplikowanego przykładu , który pokaże jak to należy robić , macie może jakiś link ?

    0
  • #9 10 Cze 2017 22:05
    pdzran
    Poziom 13  

    Postanowiłem nie korzystać z gotowych bibliotek tylko z komunikatów NMEA jakie wyrzuca GPS.
    $GPVTG zawiera po 7-mym przecinku prędkość w km/h.
    $GPVTG,290.28,T,,M,1.18,N,2.19,K,A*3E

    Jak ją wyłuskać?
    substring potrafi ale trzeba znać konkretną pozycję, przydał mi się do wyłowienia spośród różnych typów konkretnego $GPVTG ale on ma stałą pozycję i długość, natomiast prędkość nie ma stałej pozycji, wiadomo tylko, że jest po 7-mym przecinku i nie ma stałej długości, może to być 2.19 , 22.19 albo 122.19

    Czy jest gotowa funkcja, która to zrobi, czy trzeba samemu rzeźbić ? ;-)

    0
  • #10 11 Cze 2017 16:32
    krzysssztof
    Poziom 20  

    Trzeba wyszukiwać przecinki, liczyć je i wtedy wiesz (określona ilość przecinków), kiedy pojawi się szukana przez Ciebie informacja.

    0
  • #11 11 Cze 2017 21:45
    pdzran
    Poziom 13  

    Już mnie powoli krew zalewa ;-)

    Odczytuję komunikaty NMEA, ładnie wyłuskuję dane i Serial.println działa, nie działa wyświetlanie na LCD z FT811, korzystam z GD3.
    Mogę wyświetlić za pomocą cmd_text :
    void cmd_text(int16_t x, int16_t y, byte font, uint16_t options, const char *s);

    więc konwertuję :
    char speedch[speed.length()+1];
    speed.toCharArray(speedch,speed.length()+1);

    GD.cmd_text(300, 50, 30, OPT_CENTER, speedch);
    i nic , pusto lub jakieś losowe krzaki.
    Gdzie robię błąd ?
    Dodam, że jak zdefiniuję sobie zmienną :
    char tekst "1234567890" , to cmd_text wyświetla ją bez problemu.

    0
  • #12 13 Cze 2017 23:23
    pdzran
    Poziom 13  

    Ogarnąłem temat zmiennych , mam niestety inny.

    Jest w skrócie taki kod :

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Problemem jest to, że ciągle wyświetla dane, najczęściej nic, ponieważ nie wchodzi do pętli gdzie obsługiwany jest gps.
    Sam gps nadaje na Serial1 dane co sekundę.
    Gdzie może leżeć problem ?
    Jak rezygnuję z wyświetlanie danych (nie ma różnicy czy na Serial czy na LCD), to wtedy bez problemu wchodzi do pętli z gps i go obsługuje a dodane tam komendy wyświetlające działają.
    Wolałbym aby były wyświetlane poza pętlą obsługującą gps, ponieważ będą tu inne rzeczy do ogarnięcia.
    p.s. Serial wyświetla dane, Serial1 zbiera z gps - Arduino 2560

    0
  • #13 26 Cze 2017 21:41
    pdzran
    Poziom 13  

    Jakoś nie mogę zwalczyć tego problemu, nakierujcie mnie co źle robię.
    Czytam z GPS dane (Serial1) i wyświetlam od razu wysyłając na Serial.
    Działa jak należy, dopóki jedyne co robię to czytanie i wyświetlanie.
    Jak tylko dodam do kodu wyświetlanie danych (jedna zmienna) na LCD to gubi dane.
    Przypuszczam (bo nie mam) , gdybym te dane chciał zapisać na kartę SD problem byłby ten sam.

    0
  Szukaj w 5mln produktów