Spisu treści:

Monitorowanie GPS z projektem wyświetlacza OLED: 5 kroków (ze zdjęciami)
Monitorowanie GPS z projektem wyświetlacza OLED: 5 kroków (ze zdjęciami)

Wideo: Monitorowanie GPS z projektem wyświetlacza OLED: 5 kroków (ze zdjęciami)

Wideo: Monitorowanie GPS z projektem wyświetlacza OLED: 5 kroków (ze zdjęciami)
Wideo: Garmin Vivosmart 5 - Mały monitor aktywności 2024, Listopad
Anonim
Monitorowanie GPS z projektem wyświetlacza OLED
Monitorowanie GPS z projektem wyświetlacza OLED
Monitorowanie GPS z projektem wyświetlacza OLED
Monitorowanie GPS z projektem wyświetlacza OLED
Monitorowanie GPS z projektem wyświetlacza OLED
Monitorowanie GPS z projektem wyświetlacza OLED
Monitorowanie GPS z projektem wyświetlacza OLED
Monitorowanie GPS z projektem wyświetlacza OLED

Witam wszystkich, w tym krótkim artykule podzielę się z wami moim projektem: moduł GPS ATGM332D z mikrokontrolerem SAMD21J18 i wyświetlaczem SSD1306 OLED 128*64, zbudowałem do niego specjalną płytkę drukowaną na Eagle Autodesk i zaprogramowałem ją za pomocą Atmel studio 7.0 i ASF4 tak w tym artykule podzielę się z Tobą tą podróżą i plikami, z których skorzystałem, jeśli jesteś ciekawy, aby zrobić to sam.

Teraz, jeśli programujesz swój MCU/płytę programistyczną za pomocą Arduino, ten projekt powinien być dla ciebie stosunkowo łatwy, ale tutaj użyję ASF4 (Advanced software framwork 4) firmy Atmel/Microchip, który jest oparty na języku C i da ci pomysł jak odczytać wiadomość GPS NMEA za pomocą asynchronicznego sterownika USART (oddzwanianie) i zapewnić prostą bibliotekę, której można używać z dowolnym mikrokontrolerem i inną platformą, po prostu dodając odpowiedni sterownik, którego używasz do odbierania wiadomości z GPS (wiadomość NMEA).

Podzielę ten artykuł na:

  1. Projektowanie PCB.
  2. BOM potrzebny do montażu PCB
  3. Szybki przegląd oprogramowania i samego kodu oraz test sprzętu i oprogramowania.
  4. wreszcie, ale nie mniej ważny punkt ulepszenia tego projektu.

Wszystkie materiały związane z tym projektem znajdziesz na Github (tutaj)

Krok 1: Projektowanie PCB za pomocą Eagle

Projektowanie PCB za pomocą Eagle
Projektowanie PCB za pomocą Eagle
Projektowanie PCB za pomocą Eagle
Projektowanie PCB za pomocą Eagle
Projektowanie PCB za pomocą Eagle
Projektowanie PCB za pomocą Eagle
Projektowanie PCB za pomocą Eagle
Projektowanie PCB za pomocą Eagle

Ten projekt opiera się głównie na module GPS ATGM332D, prostym GPS do użycia, ponieważ potrzebuje tylko kilku elementów pasywnych do pracy, a my możemy dodać zapasową baterię, aby zaoszczędzić czas/datę, jeśli wyłączymy główne źródło zasilania modułu.

a do sterowania wszystkimi sygnałami w obwodzie użyłem mikrokontrolera ATSAMD21J18B, pakiet TQFP64, ponieważ ma on 128KB pamięci programu i 32KB pamięci danych (a mam ich mnóstwo leżących wokół mojego warsztatu).

obwód powinien być zasilany ze źródła USB 5V, również USB może pełnić rolę wirtualnego portu COM (CDC USB) i można do niego dodać kod, jeśli chcesz komunikować się z urządzeniem przez USB.

do wyświetlacza wybrałem wyświetlacz OLED SSD1306 0,96' z magistralą SPI, jest mały, ale jest odpowiedni do rozmiaru PCB, jaki chciałem, wymiary płytki 100x31 mm.

Programowanie mikrokontrolera będzie odbywać się przez programator SWD (ja używam Atmel ICE) i podłączę go przez złącze pinowe 1,27mm 10p.

Użyłem też Fusion360, aby uzyskać widok 3D dla płyty i możesz również zobaczyć renderowany obraz.

Krok 2: Lutowanie PCB

Lutowanie PCB
Lutowanie PCB
Lutowanie PCB
Lutowanie PCB
Lutowanie PCB
Lutowanie PCB

Masz możliwość zamówienia szablonu z płytką, łatwiej jest nałożyć pastę lutowniczą na płytkę za pomocą szablonu, użyłem gorącej płytki do zlutowania elementów razem, użycie gorącego powietrza też jest OK, ale uważaj przy lutowaniu LED od są tak wrażliwe na ciepło.

lutowanie dolnej strony jest nieco łatwiejsze, ponieważ posiada tylko listwę SWD i zapasową baterię, którą można lutować za pomocą lutownicy.

przed podłączeniem obwodu do dowolnego źródła zasilania USB sprawdź, czy nie ma zwarcia.

podłącz antenę GPS i upewnij się, że prawidłowo przylutowałeś jej złącze, zamocowałem antenę na spodzie płytki.

Krok 3: Oprogramowanie… Funkcjonalność… Wyniki

Image
Image
Oprogramowanie… Funkcjonalność…Wyniki
Oprogramowanie… Funkcjonalność…Wyniki
Oprogramowanie… Funkcjonalność…Wyniki
Oprogramowanie… Funkcjonalność…Wyniki

Oprogramowanie zostanie podzielone na 4 części:

  1. USART do komunikacji z modułem GPS ATGM332.
  2. SPI do komunikacji z OLED.
  3. CDC USB.
  4. GPIO do sterowania diodami LED

najpierw podłącz złącze USB, aby włączyć obwód, a następnie podłącz kabel taśmowy ze złączem SWD.

Pobierz kod z github (link tutaj).

aby uzyskać geolokalizację, masz 3 różne opcje wiadomości NMEA:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Użyłem zdania GPRMC do uzyskania lokalizacji, czasu i daty (czas to 0.0 GMT) więc w kodzie znajdziesz:

GPRMC. Enable=1;/*0 jeśli ta wiadomość nie jest potrzebna*/

GPGGA. Enable=0;/*0 jeśli ta wiadomość nie jest potrzebna*/

GPGLL. Enable=0;/*0 jeśli ta wiadomość nie jest potrzebna*/

możesz je wszystkie włączyć i czytać w tym samym czasie, aby uzyskać potrzebne dane.

gdy pojawi się prawidłowe zdanie GPRMC, GPRMC. Ready zmieni się na 1 i możesz uzyskać wszystkie dane dostępne w tym zdaniu, sprawdź ten link, aby zobaczyć dane dostępne w tym zdaniu.

po prostu jeśli Poprawka ma wartość „A”, oznacza to, że Lokalizacja jest dostępna, jeśli Poprawka ma wartość „V”, oznacza to, że lokalizacja jest niedostępna.

zauważ, że ATSAMD21 ma wewnętrzny RTC, ale tutaj go nie używam, a zamiast tego używam czasu i daty bezpośrednio z GPS, więc jeśli nie chcesz korzystać z baterii CR1220 Backup, po odłączeniu źródła zasilania USB będziesz stracić czas/datę i przy następnym włączeniu obwodu obszar czasu/daty na wyświetlaczu będzie pusty, dopóki GPS nie będzie miał prawidłowej wartości czasu/daty.

wyświetlacz pokaże aktualny stan GPS i pokaże geolokalizację, gdy będzie dostępna, jednak na tablicy znajdują się 3 diody LED:

  1. Zielona dioda LED podłączona do PA06 i będzie migać, jeśli istnieje prawidłowa wartość geolokalizacji.
  2. Pomarańczowa dioda LED podłączona do PA07 i będzie migać raz na sekundę, jeśli nie ma prawidłowej lokalizacji geograficznej.
  3. Czerwona dioda LED jest podłączona do pinu PPS modułu GPS i będzie migać tylko wtedy, gdy istnieje prawidłowy sygnał związany z lokalizacją.

Wyniki

Układ działał bardzo dobrze ze mną, uzyskanie geolokalizacji z GPS zajęło 20-30 sekund na zewnątrz z czystym widokiem na niebo i między budynkami bez problemu nawet z anteną na spodzie planszy.

Krok 4: Sprawa z nadrukiem 3D… Sortuj

Etui z nadrukiem 3D… Sortuj
Etui z nadrukiem 3D… Sortuj

Przygotowałem prosty futerał (dokładniejszy uchwyt) dla tego obwodu, ale z powodu epidemii COVID-19 i blokady, w której się teraz znajduję, nie mogłem dotrzeć do mojej drukarki 3d, aby ją wydrukować, więc zaktualizuję tę sekcję o stl plik i zdjęcia dla posiadacza, gdy będą dostępne.

Krok 5: Rzeczy do poprawy…

Rzeczy do poprawy…
Rzeczy do poprawy…
Rzeczy do poprawy…
Rzeczy do poprawy…
Rzeczy do poprawy…
Rzeczy do poprawy…
  1. Przenieś złącze SWD na górną stronę, ponieważ łatwiej jest połączyć go z programatorem.
  2. Zasilając obwód z baterii litowej, zrobiłem to przez lutowanie zworki i zadziałało dobrze, pamiętaj, że regulator liniowy (LDO) ma napięcie spadku V, jeśli (Vbat - Vout) jest mniejszy niż limit Vdrop obwód może nie działać odpowiednio.
  3. nieco większy przycisk użytkownika, dzięki czemu łatwiej będzie go nacisnąć.
  4. dodanie kodu USB CDC, aby można było komunikować się/projektować specjalny program dla MAC/PC/linux.
  5. Do anteny GPS użyłem anteny aktywnej do tego projektu, użycie anteny pasywnej jest możliwe, dodając niskoszumny wzmacniacz operacyjny, taki jak AT2659 (sprawdź też schemat na ATGM332 Datasheet P.14).
  6. dla OLED 0.96 'SSD1306, oficjalna biblioteka mikrochipa pierwotnie dla wyświetlacza 128*32, aby zmodyfikować kod do pracy z 128*64, musisz przejść do ssd1306.c i zmodyfikować kod (sprawdź obraz).

Zalecana: