Indholdsfortegnelse:

GPS -overvågning med OLED -skærmprojekt: 5 trin (med billeder)
GPS -overvågning med OLED -skærmprojekt: 5 trin (med billeder)

Video: GPS -overvågning med OLED -skærmprojekt: 5 trin (med billeder)

Video: GPS -overvågning med OLED -skærmprojekt: 5 trin (med billeder)
Video: Simplify your drive with DriveSmart™ 66/76/86 GPS navigators – Garmin® Retail Training 2024, November
Anonim
GPS -overvågning med OLED -skærmprojekt
GPS -overvågning med OLED -skærmprojekt
GPS -overvågning med OLED -skærmprojekt
GPS -overvågning med OLED -skærmprojekt
GPS -overvågning med OLED -skærmprojekt
GPS -overvågning med OLED -skærmprojekt
GPS -overvågning med OLED -skærmprojekt
GPS -overvågning med OLED -skærmprojekt

Hej alle sammen, i denne hurtige artikel vil jeg dele mit projekt med dig: ATGM332D GPS -modul med SAMD21J18 mikrokontroller og SSD1306 OLED 128*64 display, jeg byggede en speciel print til det på Eagle Autodesk og programmerede det ved hjælp af Atmel studio 7.0 og ASF4 så i denne artikel vil jeg dele med dig denne rejse og de filer, jeg brugte, hvis du er interessant at gøre det selv.

Hvis du nu programmerer dit MCU/udviklingsbord ved hjælp af Arduino, burde dette projekt være relativt let for dig, men her vil jeg bruge ASF4 (Advanced software framwork 4) fra Atmel/Microchip, der er baseret på C -sprog og ville give dig en idé til hvordan du læser GPS NMEA-beskeden ved hjælp af USART asynkron driver (tilbagekald) og giver dig et simpelt bibliotek, som du kan bruge den med enhver mikrokontroller og en anden platform ved blot at tilføje den relevante driver, du bruger til at modtage beskeden fra GPS (NMEA -besked).

Jeg vil opdele denne artikel til:

  1. PCB Design.
  2. BOM du skal samle printkortet
  3. Hurtigt kig på softwaren og selve koden og en test for hardware og software.
  4. sidst men ikke mindst et forbedringspunkt for dette projekt.

Du finder alt materiale relateret til dette projekt påGithub (her)

Trin 1: PCB -design ved hjælp af Eagle

PCB -design ved hjælp af Eagle
PCB -design ved hjælp af Eagle
PCB -design ved hjælp af Eagle
PCB -design ved hjælp af Eagle
PCB -design ved hjælp af Eagle
PCB -design ved hjælp af Eagle
PCB -design ved hjælp af Eagle
PCB -design ved hjælp af Eagle

Dette projekt er hovedsageligt baseret på ATGM332D GPS -modul, enkel GPS at bruge, da det kun har brug for et par passive komponenter for at fungere, og vi kunne tilføje et backup -batteri for at spare tid/dato, hvis vi lukker hovedstrømkilden fra modulet.

og for at styre alle signalerne i kredsløbet gik jeg med ATSAMD21J18B mikrokontroller, TQFP64 -pakke, da den har 128KByte programhukommelseslagring og 32KByte datahukommelse (og jeg har masser af dem liggende rundt om mit arbejdsbord).

kredsløbet skal drives af USB 5V -kilde, også USB kan fungere som virtuel COM -port (CDC USB), og du kan tilføje en kode til det, hvis du vil kommunikere med enheden via USB.

til displayet valgte jeg SSD1306 0,96 'OLED -skærm med SPI -bus, den er lille, men den passer til den printkortstørrelse, jeg ønskede, tavledimensionen 100x31 mm.

programmering af mikrokontrolleren sker via SWD -programmerer (jeg bruger Atmel ICE) og forbinder den via 1,27 mm 10p pin header.

også brugte jeg Fusion360 til at få en 3D -visning til brættet, og du kan også se et gengivet billede til det.

Trin 2: Lodning af printkortet

Lodning af printkortet
Lodning af printkortet
Lodning af printkortet
Lodning af printkortet
Lodning af printkortet
Lodning af printkortet

Du har valget om at bestille en stencil med dit printkort, det er lettere at anvende loddemassen på brættet ved hjælp af stencilen, jeg brugte varmeplade til at lodde komponenterne sammen, ved hjælp af varm luft er også OK, men vær forsigtig, mens du lodder LED'en siden de er så følsomme over for varme.

lodning i undersiden er lidt lettere, da den kun har SWD -stifthovedet og backupbatteriet, som du kan lodde dem ved hjælp af loddejern.

Inden du slutter kredsløbet til en USB -strømkilde, skal du kontrollere, om der er kortslutning.

tilslut din GPS -antenne og sørg for at lodde stikket korrekt, jeg fikserede antennen på undersiden af brættet.

Trin 3: Software … Funktionalitet … resultater

Image
Image
Software … Funktionalitet … resultater
Software … Funktionalitet … resultater
Software … Funktionalitet … resultater
Software … Funktionalitet … resultater

Softwaren vil blive opdelt i 4 dele:

  1. USART til at kommunikere med ATGM332 GPS -modul.
  2. SPI til at kommunikere med OLED.
  3. USB CDC.
  4. GPIO til styring af lysdioder

Tilslut først USB -stikket for at tænde for kredsløbet, og tilslut derefter båndkablet med SWD -stik.

Download koden fra github (link her).

for at få Geo-Location har du 3 forskellige NMEA-beskeder:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Jeg brugte GPRMC -sætning til at opnå placering, tid og dato (klokken er 0,0 GMT), så i koden finder du:

GPRMC. Enable = 1;/*0 hvis der ikke er behov for denne meddelelse*/

GPGGA. Enable = 0;/*0 hvis denne meddelelse ikke er nødvendig*/

GPGLL. Enable = 0;/*0 hvis denne meddelelse ikke er nødvendig*/

du kan aktivere dem alle sammen og læse dem på samme tid få de data, du har brug for.

Når der først er en gyldig GPRMC -sætning, bliver theGPRMC. Ready til 1, og du kan få alle de tilgængelige data i denne sætning, tjek dette link for at se de tilgængelige data i denne sætning.

ganske enkelt hvis Fix er 'A', betyder det, at placeringen er tilgængelig, hvis Fix er 'V', betyder det, at placeringen ikke er tilgængelig.

bemærk, at ATSAMD21 har intern RTC, men her bruger jeg det ikke, og i stedet bruger jeg tid og dato direkte fra GPS'en, så hvis du ikke vil bruge CR1220 Backup -batteriet, vil du, når du frakobler USB -strømkilden, mister tid/dato, og for næste gang du tænder for kredsløbet, vil tid/dato -området på displayet være tomt, indtil GPS'en har en gyldig værdi/dato.

displayet viser dig den aktuelle status for GPS'en og viser geografisk placering, når den er tilgængelig, men der er 3 lysdioder på kortet:

  1. Grøn LED tilsluttet PA06, og blinker, hvis der er en gyldig geografisk værdi.
  2. Orange LED tilsluttet PA07 og blinker en gang i sekundet, hvis der ikke er en gyldig geografisk placering.
  3. Rød LED denne er forbundet til PPS -pin på GPS -modulet og blinker kun, når der er et gyldigt signal relateret til placeringen.

Resultater

Kredsløbet fungerede meget godt med mig, få Geo-placeringen fra GPS'en tog 20-30 sekunder udendørs med klart udsyn til himlen og mellem bygninger uden problemer, selv med antenne på undersiden af brættet.

Trin 4: 3D -trykt sag … Sort Of

3D -trykt sag… Sort Of
3D -trykt sag… Sort Of

Jeg forberedte en simpel sag (mere præcis holder) til dette kredsløb, men på grund af COVID-19-epidemien og den lockdown, jeg er i lige nu, kunne jeg ikke nå min 3d-printer for at udskrive den, så jeg vil opdatere dette afsnit med stl fil og et foto til indehaveren, når den er tilgængelig.

Trin 5: Ting at forbedre …

Ting at forbedre …
Ting at forbedre …
Ting at forbedre …
Ting at forbedre …
Ting at forbedre …
Ting at forbedre …
  1. Flytter SWD -stikket til oversiden, da det er lettere at forbinde det med din programmør.
  2. Jeg drev kredsløbet fra litiumbatteri, jeg gjorde det ved at lodde en jumper, og det fungerede fint, bare i tankerne om, at den lineære (LDO) regulator har V -faldspænding, hvis (Vbat - Vout) mindre end Vdrop -grænsen, kredsløbet muligvis ikke fungerer korrekt.
  3. gør en brugerknap lidt større, så det bliver lettere at trykke på.
  4. tilføjelse af USB CDC -kode, så du kan kommunikere/designe et specielt program til MAC/PC/linux.
  5. Til GPS-antennen brugte jeg Aktiv antenne til dette projekt, det er muligt at bruge en passiv antenne ved at tilføje lav støj op-Amp som AT2659 (se også skematisk på ATGM332 Datablad S.14).
  6. for OLED 0,96 'SSD1306, det officielle bibliotek fra mikrochip oprindeligt til 128*32 display, for at ændre koden til at fungere med 128*64 skal du gå til ssd1306.c og ændre koden (tjek billedet).

Anbefalede: