Inhoudsopgave:
- Stap 1: PCB-ontwerp met Eagle
- Stap 2: Solderen van de PCB
- Stap 3: Software … Functionaliteit … resultaten
- Stap 4: 3D-geprinte behuizing … soort van
- Stap 5: Dingen om te verbeteren…
Video: GPS-monitoring met OLED-displayproject - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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:
- PCB-ontwerp.
- Stuklijst die u nodig hebt om de PCB te monteren
- Snel kijken naar de software en de code zelf en een test voor de hardware en software.
- 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
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
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
De software wordt opgedeeld in 4 delen:
- USART om te communiceren met de ATGM332 GPS-module.
- SPI om te communiceren met OLED.
- USB-CDC.
- 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:
- GPGGA
- GPRMC
- 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:
- Groene LED aangesloten op PA06 en knippert als er een geldige Geo-locatiewaarde is.
- Oranje LED aangesloten op PA07 en knippert één keer per seconde als er geen geldige Geo-locatie is.
- 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
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…
- Verplaats de SWD-connector naar de bovenzijde, omdat deze gemakkelijker te verbinden is met uw programmeur.
- 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.
- een gebruikersknop iets groter maken, zodat deze gemakkelijker in te drukken is.
- USB CDC-code toevoegen zodat u een speciaal programma voor MAC/PC/linux kunt communiceren/ontwerpen.
- 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).
- 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:
Plezier met OLED-display en Arduino: 12 stappen (met afbeeldingen)
Plezier met OLED-display en Arduino: ik ben er vrij zeker van dat je zeker hebt gehoord over OLED-displaytechnologie. Het is relatief nieuw en biedt een betere kwaliteit dan de oude LCD-technologie. In deze zelfstudie willen we de stappen bekijken die nodig zijn om gegevens weer te geven op een van de meest voorkomende enkele co
I2C Oled-display bedienen met Arduino 9 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
I2C Oled-display bedienen met Arduino: dit is een zeer eenvoudige tutorial over hoe I2C Oled-display met Arduino te bedienen
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Hoe de GPS-module (NEO-6m) met Arduino te interfacen: 7 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe een GPS-module (NEO-6m) te interfacen met Arduino: In dit project heb ik laten zien hoe een GPS-module met Arduino UNO kan worden gekoppeld. De gegevens voor lengte- en breedtegraad worden weergegeven op het LCD-scherm en de locatie kan worden bekeken op de app.Lijst van materiaal Arduino Uno ==> $8 Ublox NEO-6m GPS-module ==> $15 16x
Arduino GPS Oled: 4 stappen (met afbeeldingen)
Arduino GPS Oled: De NEO-6-moduleserie is een familie van stand-alone GPS-ontvangers met de hoogwaardige u-blox 6positioning-engine. Deze flexibele en kosteneffectieve ontvangers bieden talrijke aansluitmogelijkheden in een miniatuurverpakking van 16 x 12,2 x 2,4 mm. NS