Inhoudsopgave:

GPS-monitoring met OLED-displayproject - Ajarnpa
GPS-monitoring met OLED-displayproject - Ajarnpa

Video: GPS-monitoring met OLED-displayproject - Ajarnpa

Video: GPS-monitoring met OLED-displayproject - Ajarnpa
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, November
Anonim
GPS-bewaking met OLED-displayproject
GPS-bewaking met OLED-displayproject
GPS-bewaking met OLED-displayproject
GPS-bewaking met OLED-displayproject
GPS-bewaking met OLED-displayproject
GPS-bewaking met OLED-displayproject
GPS-bewaking met OLED-displayproject
GPS-bewaking met OLED-displayproject

Hallo allemaal, in dit korte artikel zal ik mijn project met u delen: ATGM332D GPS-module met SAMD21J18 Microcontroller en SSD1306 OLED 128 * 64-display, ik heb er een speciale PCB voor gebouwd op Eagle Autodesk en programmeer het met Atmel studio 7.0 en ASF4 dus in dit artikel zal ik deze reis en de bestanden die ik heb gebruikt met je delen als je het interessant vindt om het zelf te doen.

Als je nu je MCU / ontwikkelbord programmeert met Arduino, zou dit project relatief eenvoudig voor je moeten zijn, maar hier zal ik ASF4 (Advanced software framewerk 4) van Atmel/Microchip gebruiken, dat is gebaseerd op C-taal en zou je een idee geven voor hoe u het GPS NMEA-bericht kunt lezen met behulp van USART Asynchronous driver (Callback) en u een eenvoudige bibliotheek kunt bieden die u kunt gebruiken met elke microcontroller en ander platform door simpelweg het juiste stuurprogramma toe te voegen dat u gebruikt om het bericht van de GPS (NMEA-bericht).

Ik deel dit artikel op in:

  1. PCB-ontwerp.
  2. Stuklijst die u nodig hebt om de PCB te monteren
  3. Snel kijken naar de software en de code zelf en een test voor de hardware en software.
  4. last but not least een verbeterpunt voor dit project.

Je vindt al het materiaal met betrekking tot dit project op Github (hier)

Stap 1: PCB-ontwerp met Eagle

PCB-ontwerp met Eagle
PCB-ontwerp met Eagle
PCB-ontwerp met Eagle
PCB-ontwerp met Eagle
PCB-ontwerp met Eagle
PCB-ontwerp met Eagle
PCB-ontwerp met Eagle
PCB-ontwerp met Eagle

Dit project is voornamelijk gebaseerd op de ATGM332D GPS-module, eenvoudige GPS om te gebruiken omdat het slechts een paar passieve componenten nodig heeft om te werken, en we kunnen een back-upbatterij toevoegen om de tijd / datum te besparen als we de hoofdstroombron van de module afsluiten.

en om alle signalen in het circuit te besturen, ging ik met een ATSAMD21J18B-microcontroller, een TQFP64-pakket, omdat het 128 KB aan programmageheugenopslag en 32 KB aan datageheugen heeft (en ik heb er genoeg op mijn werkbank liggen).

het circuit wordt gevoed door een USB 5V-bron, ook de USB kan fungeren als virtuele COM-poort (CDC USB) en u kunt er een code voor toevoegen als u via USB met het apparaat wilt communiceren.

voor het display heb ik SSD1306 0,96 'OLED-display met SPI-bus geselecteerd, het is klein maar het is geschikt voor de PCB-grootte die ik wilde, de bordafmeting 100x31 mm.

het programmeren van de microcontroller gebeurt via de SWD-programmeur (ik gebruik Atmel ICE) en sluit deze aan via een 1,27 mm 10p pin-header.

ook heb ik Fusion360 gebruikt om een 3D-weergave voor het bord te krijgen en je kunt er ook een gerenderde afbeelding voor zien.

Stap 2: Solderen van de PCB

De printplaat solderen
De printplaat solderen
De printplaat solderen
De printplaat solderen
De printplaat solderen
De printplaat solderen

Je hebt de keuze om een stencil bij je PCB te bestellen, het is gemakkelijker om de soldeerpasta op het bord aan te brengen met behulp van het stencil, ik heb een hete plaat gebruikt om de componenten aan elkaar te solderen, het gebruik van hete lucht is ook OK, maar wees voorzichtig bij het solderen van de LED sinds ze zijn zo gevoelig voor warmte.

het solderen van de onderkant is een beetje gemakkelijker omdat het alleen de SWD-pinheader en de back-upbatterij heeft, die je kunt solderen met een soldeerbout.

Controleer op kortsluiting voordat u het circuit aansluit op een USB-stroombron.

sluit je GPS-antenne aan en zorg ervoor dat je de connector goed soldeert, ik heb de antenne aan de onderkant van het bord bevestigd.

Stap 3: Software … Functionaliteit … resultaten

Image
Image
Software … Functionaliteit … resultaten
Software … Functionaliteit … resultaten
Software … Functionaliteit … resultaten
Software … Functionaliteit … resultaten

De software wordt opgedeeld in 4 delen:

  1. USART om te communiceren met de ATGM332 GPS-module.
  2. SPI om te communiceren met OLED.
  3. USB-CDC.
  4. GPIO om LED's aan te sturen

sluit eerst de USB-connector aan om het circuit in te schakelen en sluit vervolgens de lintkabel aan met de SWD-connector.

Download de code van github (link hier).

om de Geo-Locatie te krijgen heb je 3 verschillende NMEA berichten opties:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Ik heb de GPRMC-zin gebruikt om de locatie, tijd en datum te verkrijgen (tijd is 0.0 GMT), dus in de code vindt u:

GPRMC. Enable=1;/*0 indien dit bericht niet nodig is*/

GPGGA. Enable=0;/*0 indien dit bericht niet nodig is*/

GPGLL. Enable=0;/*0 indien dit bericht niet nodig is*/

je kunt ze allemaal tegelijk inschakelen en ze tegelijkertijd lezen om de gegevens te krijgen die je nodig hebt.

zodra er een geldige GPRMC-zin is, wordt de GPRMC. Ready 1 en kunt u alle beschikbare gegevens in deze zin verkrijgen, vink deze link aan om de beschikbare gegevens in deze zin te zien.

simpelweg als Fix 'A' is, betekent dat dat de locatie beschikbaar is, als Fix 'V' is, betekent dat dat de locatie niet beschikbaar is.

merk op dat ATSAMD21 interne RTC heeft, maar hier gebruik ik het niet en in plaats daarvan gebruik ik tijd en datum rechtstreeks van de GPS, dus als u de CR1220-back-upbatterij niet wilt gebruiken, zodra u de USB-stroombron loskoppelt, zult u de tijd/datum verliest en voor de volgende keer dat u het circuit inschakelt, is het tijd-/datumgebied op het display leeg totdat de GPS een geldige tijd-/datumwaarde heeft.

het display toont u de huidige status van de GPS en toont de Geo-locatie zodra deze beschikbaar is, maar er zijn 3 LED's op het bord:

  1. Groene LED aangesloten op PA06 en knippert als er een geldige Geo-locatiewaarde is.
  2. Oranje LED aangesloten op PA07 en knippert één keer per seconde als er geen geldige Geo-locatie is.
  3. Rode LED deze is verbonden met de PPS-pin van de GPS-module en knippert alleen als er een geldig signaal is met betrekking tot de locatie.

Resultaten

Het circuit werkte heel goed met mij, het verkrijgen van de geo-locatie van de GPS duurde 20-30 seconden buiten met helder zicht naar de lucht en tussen gebouwen zonder enig probleem, zelfs met een antenne aan de onderkant van het bord.

Stap 4: 3D-geprinte behuizing … soort van

3D-geprinte behuizing … soort van
3D-geprinte behuizing … soort van

Ik heb een eenvoudige case (preciesere houder) voor dit circuit voorbereid, maar vanwege de COVID-19-epidemie en de lockdown waarin ik me nu bevind, kon ik mijn 3D-printer niet bereiken om het af te drukken, dus ik zal dit gedeelte bijwerken met stl bestand en een foto voor de houder zodra deze beschikbaar is.

Stap 5: Dingen om te verbeteren…

Dingen om te verbeteren…
Dingen om te verbeteren…
Dingen om te verbeteren…
Dingen om te verbeteren…
Dingen om te verbeteren…
Dingen om te verbeteren…
  1. Verplaats de SWD-connector naar de bovenzijde, omdat deze gemakkelijker te verbinden is met uw programmeur.
  2. Ik voedde het circuit met een lithiumbatterij, ik deed het door een jumper te solderen en het werkte prima, houd er rekening mee dat de lineaire (LDO) -regelaar een V-valspanning heeft als de (Vbat - Vout) minder dan de Vdrop-limiet is, werkt het circuit mogelijk niet naar behoren.
  3. een gebruikersknop iets groter maken, zodat deze gemakkelijker in te drukken is.
  4. USB CDC-code toevoegen zodat u een speciaal programma voor MAC/PC/linux kunt communiceren/ontwerpen.
  5. Voor de GPS-antenne heb ik voor dit project een actieve antenne gebruikt, het gebruik van een passieve antenne is mogelijk door Low noise op-Amp zoals AT2659 toe te voegen (bekijk ook het schema op ATGM332 Datasheet P.14).
  6. voor OLED 0.96 'SSD1306, de officiële bibliotheek van microchip oorspronkelijk voor 128*32 display, om de code aan te passen om met 128*64 te werken, moet je naar ssd1306.c gaan en de code wijzigen (bekijk de afbeelding).

Aanbevolen: