Innholdsfortegnelse:

GPS -overvåking med OLED -skjermprosjekt: 5 trinn (med bilder)
GPS -overvåking med OLED -skjermprosjekt: 5 trinn (med bilder)

Video: GPS -overvåking med OLED -skjermprosjekt: 5 trinn (med bilder)

Video: GPS -overvåking med OLED -skjermprosjekt: 5 trinn (med bilder)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juli
Anonim
GPS -overvåking med OLED -skjermprosjekt
GPS -overvåking med OLED -skjermprosjekt
GPS -overvåking med OLED -skjermprosjekt
GPS -overvåking med OLED -skjermprosjekt
GPS -overvåking med OLED -skjermprosjekt
GPS -overvåking med OLED -skjermprosjekt
GPS -overvåking med OLED -skjermprosjekt
GPS -overvåking med OLED -skjermprosjekt

Hei alle sammen, i denne raske artikkelen vil jeg dele prosjektet mitt med deg: ATGM332D GPS -modul med SAMD21J18 mikrokontroller og SSD1306 OLED 128*64 skjerm, jeg bygde en spesiell PCB for den på Eagle Autodesk, og programmer den ved hjelp av Atmel studio 7.0 og ASF4 så i denne artikkelen vil jeg dele med deg denne reisen og filene jeg brukte hvis du er interessant å gjøre det selv.

Hvis du programmerer MCU/utviklingsbordet ditt med Arduino, bør dette prosjektet være relativt enkelt for deg, men her vil jeg bruke ASF4 (Advanced software framwork 4) fra Atmel/Microchip som er basert på C -språk og vil gi deg en ide for hvordan du leser GPS NMEA-meldingen ved hjelp av USART asynkron driver (tilbakeringing) og gir deg et enkelt bibliotek som du kan bruke den med hvilken som helst mikrokontroller og annen plattform ved ganske enkelt å legge til den riktige driveren du bruker for å motta meldingen fra GPS (NMEA -melding).

Jeg vil dele denne artikkelen til:

  1. PCB -design.
  2. BOM du må sette sammen kretskortet
  3. Rask titt på programvaren og selve koden og en test for maskinvare og programvare.
  4. Til slutt, men ikke minst, et forbedringspunkt for dette prosjektet.

Du finner alt materialet knyttet til dette prosjektet påGithub (her)

Trinn 1: PCB -design ved hjelp av Eagle

PCB -design ved hjelp av Eagle
PCB -design ved hjelp av Eagle
PCB -design ved hjelp av Eagle
PCB -design ved hjelp av Eagle
PCB -design ved hjelp av Eagle
PCB -design ved hjelp av Eagle
PCB -design ved hjelp av Eagle
PCB -design ved hjelp av Eagle

Dette prosjektet er hovedsakelig basert på ATGM332D GPS -modul, enkel GPS å bruke siden den bare trenger et par passive komponenter for å fungere, og vi kan legge til et reservebatteri for å spare tid/dato hvis vi slår av hovedstrømkilden fra modulen.

og for å kontrollere alle signalene i kretsen gikk jeg med ATSAMD21J18B mikrokontroller, TQFP64 -pakken siden den har 128KByte programminnelagring og 32KByte dataminne (og jeg har mange av dem som ligger rundt arbeidsbenken min).

kretsen skal drives av USB 5V -kilde, også USB kan fungere som virtuell COM -port (CDC USB), og du kan legge til en kode for den hvis du vil kommunisere med enheten via USB.

for skjermen valgte jeg SSD1306 0,96 'OLED -skjerm med SPI -buss, den er liten, men den passer for PCB -størrelsen jeg ønsket, brettdimensjonen 100x31 mm.

programmering av mikrokontrolleren vil være gjennom SWD -programmerer (jeg bruker Atmel ICE) og vil koble den til 1,27 mm 10p -pinnehodet.

også brukte jeg Fusion360 for å få en 3d -visning for brettet, og du kan også se et gjengitt bilde for det.

Trinn 2: Lodding av kretskortet

Lodding av PCB
Lodding av PCB
Lodding av PCB
Lodding av PCB
Lodding av PCB
Lodding av PCB

Du har valget mellom å bestille en sjablong med kretskortet, det er lettere å påføre loddepastaen på brettet ved hjelp av sjablongen. Jeg brukte varmeplate for å lodde komponentene sammen, og varmluft er også OK, men vær forsiktig mens du lodder LED -en siden de er så følsomme for varme.

lodding på undersiden er litt enklere siden den bare har SWD -pinnehodet og reservebatteriet, som du kan lodde dem ved hjelp av loddejern.

før du kobler til kretsen med en USB -strømkilde, må du se etter kortslutning.

koble til GPS -antennen og sørg for at du lodder kontakten ordentlig, jeg fikset antennen på undersiden av brettet.

Trinn 3: Programvare … Funksjonalitet … resultater

Image
Image
Programvare … Funksjonalitet … resultater
Programvare … Funksjonalitet … resultater
Programvare … Funksjonalitet … resultater
Programvare … Funksjonalitet … resultater

Programvaren vil bli delt inn i 4 deler:

  1. USART for å kommunisere med ATGM332 GPS -modul.
  2. SPI for å kommunisere med OLED.
  3. USB CDC.
  4. GPIO for å kontrollere lysdioder

koble først USB -kontakten for å slå på kretsen, og koble deretter båndkabelen med SWD -kontakt.

Last ned koden fra github (lenke her).

For å få geografisk plassering har du tre forskjellige alternativer for NMEA-meldinger:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Jeg brukte GPRMC -setning for å få plassering, tid og dato (klokken er 0,0 GMT), så i koden finner du:

GPRMC. Enable = 1;/*0 hvis denne meldingen ikke er nødvendig*/

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

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

du kan aktivere dem alle sammen og lese dem samtidig få dataene du trenger.

Når det er en gyldig GPRMC -setning, vil theGPRMC. Ready bli 1, og du kan få alle tilgjengelige data i denne setningen, sjekk denne lenken for å se dataene som er tilgjengelige i denne setningen.

ganske enkelt hvis Fix er 'A', betyr det at plasseringen er tilgjengelig, hvis Fix er 'V', betyr det at plasseringen ikke er tilgjengelig.

Legg merke til at ATSAMD21 har intern RTC, men her bruker jeg det ikke, og i stedet bruker jeg tid og dato direkte fra GPS -en, så hvis du ikke vil bruke CR1220 backup -batteriet, når du kobler fra USB -strømkilden, vil du mister tid/dato, og for neste gang du slår på kretsen, vil tid/dato -området på displayet være tomt til GPS -en har en gyldig klokkeslett/dato -verdi.

displayet viser deg gjeldende status for GPS-en og viser geografisk plassering når den er tilgjengelig, men det er 3 lysdioder på brettet:

  1. Grønn LED koblet til PA06, og vil blinke hvis det er en gyldig geografisk verdi.
  2. Oransje LED koblet til PA07 og vil blinke en gang i sekundet hvis det ikke er noen gyldig geografisk plassering.
  3. Rød LED denne er koblet til PPS -pin på GPS -modulen og blinker bare når det er et gyldig signal relatert til posisjonen.

Resultater

Kretsen fungerte veldig bra med meg, få geografisk plassering fra GPS-en tok 20-30 sekunder utendørs med klart syn til himmelen og mellom bygninger uten problemer, selv med antenne på undersiden av brettet.

Trinn 4: 3D -utskrevet etui … Sort Of

3D -trykt etui … Sortering
3D -trykt etui … Sortering

Jeg forberedte en enkel sak (mer presis holder) for denne kretsen, men på grunn av COVID-19-epidemien og låsen jeg er inne i akkurat nå, kunne jeg ikke nå min 3d-skriver for å skrive den ut, så jeg vil oppdatere denne delen med stl fil og bilder for innehaveren når den er tilgjengelig.

Trinn 5: Ting å forbedre …

Ting å forbedre …
Ting å forbedre …
Ting å forbedre …
Ting å forbedre …
Ting å forbedre …
Ting å forbedre …
  1. Flytter SWD -kontakten til oversiden siden det er lettere å koble den til programmereren.
  2. Jeg drev kretsen fra litiumbatteri, jeg gjorde det ved å lodde en jumper, og det fungerte fint, bare husk at den lineære (LDO) regulatoren har V -fallspenning hvis (Vbat - Vout) mindre enn Vdrop -grensen kretsen kanskje ikke fungerer riktig.
  3. gjør en brukerknapp litt større, så det blir lettere å trykke på.
  4. legge til USB CDC -kode slik at du kan kommunisere/designe et spesielt program for MAC/PC/linux.
  5. For GPS-antennen brukte jeg Aktiv antenne til dette prosjektet, det er mulig å bruke en passiv antenne ved å legge til lav støy-op-Amp som AT2659 (sjekk også skjemaet på ATGM332 Datablad S.14).
  6. for OLED 0,96 'SSD1306, det offisielle biblioteket fra mikrochip opprinnelig for 128*32 -skjerm, for å endre koden for å fungere med 128*64 må du gå til ssd1306.c og endre koden (sjekk bildet).

Anbefalt: