Spisu treści:
- Krok 1: Projektowanie PCB za pomocą Eagle
- Krok 2: Lutowanie PCB
- Krok 3: Oprogramowanie… Funkcjonalność… Wyniki
- Krok 4: Sprawa z nadrukiem 3D… Sortuj
- Krok 5: Rzeczy do poprawy…
Wideo: Monitorowanie GPS z projektem wyświetlacza OLED: 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
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:
- Projektowanie PCB.
- BOM potrzebny do montażu PCB
- Szybki przegląd oprogramowania i samego kodu oraz test sprzętu i oprogramowania.
- 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
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
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
Oprogramowanie zostanie podzielone na 4 części:
- USART do komunikacji z modułem GPS ATGM332.
- SPI do komunikacji z OLED.
- CDC USB.
- 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:
- GPGGA
- GPRMC
- 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:
- Zielona dioda LED podłączona do PA06 i będzie migać, jeśli istnieje prawidłowa wartość geolokalizacji.
- Pomarańczowa dioda LED podłączona do PA07 i będzie migać raz na sekundę, jeśli nie ma prawidłowej lokalizacji geograficznej.
- 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
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…
- Przenieś złącze SWD na górną stronę, ponieważ łatwiej jest połączyć go z programatorem.
- 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.
- nieco większy przycisk użytkownika, dzięki czemu łatwiej będzie go nacisnąć.
- dodanie kodu USB CDC, aby można było komunikować się/projektować specjalny program dla MAC/PC/linux.
- 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).
- 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:
Proste monitorowanie jakości powietrza za pomocą wyświetlacza TFT LCD - Ameba Arduino: 3 kroki
Proste monitorowanie jakości powietrza za pomocą wyświetlacza TFT LCD - Ameba Arduino: Wprowadzenie Teraz, gdy większość ludzi zostaje w domu, aby uniknąć bliskiego kontaktu z potencjalnym nosicielem wirusa COVID-19, jakość powietrza staje się ważnym czynnikiem dobrego samopoczucia ludzi, zwłaszcza w krajach tropikalnych, gdzie korzystanie z klimatyzacji jest koniecznością podczas dnia
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: 6 kroków
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: W tym samouczku dowiemy się, jak śledzić kroki silnika krokowego na wyświetlaczu OLED. Obejrzyj film demonstracyjny.Kredyt samouczka oryginalnego trafia do użytkownika YouTube „sky4fly”
NEO-6M GPS podłączony do NodeMCU - Pozycja wyświetlacza OLED - Visuino: 7 kroków
NEO-6M GPS podłączony do NodeMCU - Pozycja wyświetlania OLED - Visuino: W tym samouczku użyjemy NodeMCU Mini, OLED Lcd, NEO-6M GPS i Visuino do wyświetlania pozycji GPS na żywo na ekranie LCD. Obejrzyj film demonstracyjny
Jak rozwiązywać problemy z projektem PCB?: 8 kroków (ze zdjęciami)
Jak rozwiązać problem z projektem płytki drukowanej?: Za każdym razem, gdy projektuję płytkę drukowaną, chcę nieco przekroczyć swoje granice i spróbować czegoś, czego nigdy wcześniej nie próbowałem, tym razem chciałem dodać możliwość programowania tej płytki bez zewnętrznego programatora. Znalazłem tanie konwertery USB na UART o nazwie CH
Ploter Arduino Mini CNC (z projektem Proteus i płytką drukowaną): 3 kroki (ze zdjęciami)
Arduino Mini CNC Plotter (z Proteus Project i PCB): Ten ploter arduino mini CNC lub XY może pisać i tworzyć projekty w zakresie 40x40mm. Tak, ten zakres jest krótki, ale to dobry początek, aby wskoczyć do świata arduino. [Dałem wszystko w tym projekcie, nawet PCB, Proteus File, Przykładowy projekt