INHOUDSOPGAWE:

GPS -monitering met OLED -skermprojek: 5 stappe (met foto's)
GPS -monitering met OLED -skermprojek: 5 stappe (met foto's)

Video: GPS -monitering met OLED -skermprojek: 5 stappe (met foto's)

Video: GPS -monitering met OLED -skermprojek: 5 stappe (met foto's)
Video: Новый ХИТЯРА 2023? Redmi Note 12 Pro Plus. Обзор, все тесты ШИМ, экран, игровые, GPS, автономность 2024, November
Anonim
GPS -monitering met OLED -skermprojek
GPS -monitering met OLED -skermprojek
GPS -monitering met OLED -skermprojek
GPS -monitering met OLED -skermprojek
GPS -monitering met OLED -skermprojek
GPS -monitering met OLED -skermprojek
GPS -monitering met OLED -skermprojek
GPS -monitering met OLED -skermprojek

Hallo almal, in hierdie vinnige artikel deel ek u projek met u: ATGM332D GPS -module met SAMD21J18 -mikrokontroller en SSD1306 OLED 128*64 -skerm, ek het 'n spesiale PCB daarvoor op Eagle Autodesk gebou en dit met Atmel studio 7.0 en ASF4 geprogrammeer in hierdie artikel sal ek hierdie reis en die lêers wat ek gebruik het, met u deel, as u dit self wil doen.

As u u MCU/ontwikkelingsbord met Arduino programmeer, behoort hierdie projek vir u relatief maklik te wees, maar hier sal ek ASF4 (Advanced software frame 4) van Atmel/Microchip gebruik wat op C -taal gebaseer is en u 'n idee sou gee hoe u die GPS NMEA-boodskap kan lees met behulp van USART Asynchrone bestuurder (terugbel) en u 'n eenvoudige biblioteek kan voorsien wat u met enige mikrobeheerder en ander platform kan gebruik deur eenvoudig die toepaslike bestuurder by te voeg wat u gebruik om die boodskap van die GPS (NMEA -boodskap).

Ek sal hierdie artikel verdeel in:

  1. PCB ontwerp.
  2. BOM wat jy nodig het om die PCB te monteer
  3. Kyk vinnig na die sagteware en die kode self en 'n toets vir die hardeware en sagteware.
  4. laastens, maar nie die minste nie, 'n punt van verbetering vir hierdie projek.

U vind al die materiaal wat verband hou met hierdie projek op Github (hier)

Stap 1: PCB -ontwerp met behulp van Eagle

PCB -ontwerp met behulp van Eagle
PCB -ontwerp met behulp van Eagle
PCB -ontwerp met behulp van Eagle
PCB -ontwerp met behulp van Eagle
PCB -ontwerp met behulp van Eagle
PCB -ontwerp met behulp van Eagle
PCB -ontwerp met behulp van Eagle
PCB -ontwerp met behulp van Eagle

Hierdie projek is hoofsaaklik gebaseer op die ATGM332D GPS -module, eenvoudige GPS om te gebruik, aangesien dit slegs 'n paar passiewe komponente benodig om te werk, en ons kan 'n rugsteunbattery byvoeg om die tyd/datum te bespaar as ons die hoofbron van die module afskakel.

en om al die seine in die stroombaan te beheer, het ek gegaan met die ATSAMD21J18B -mikrobeheerder, die TQFP64 -pakket, aangesien dit 128KByte programgeheue -berging en 32KByte data -geheue het (en ek het baie daarvan om my werkbank).

die stroombaan word aangedryf deur 'n USB 5V -bron, die USB kan ook dien as 'n virtuele COM -poort (CDC USB) en u kan 'n kode daarvoor byvoeg as u met die toestel via USB wil kommunikeer.

Vir die skerm het ek SSD1306 0,96 'OLED -skerm met SPI -bus gekies, dit is klein, maar dit is geskik vir die PCB -grootte wat ek wil hê, die bordafmeting 100x31 mm.

Die programmering van die mikrobeheerder geskied deur middel van SWD -programmeerder (ek gebruik Atmel ICE) en verbind dit deur middel van 'n 1.27 mm 10p -penkop.

Ek het ook Fusion360 gebruik om 'n 3D -aansig vir die bord te kry, en u kan ook 'n weergegee beeld daarvoor sien.

Stap 2: Soldeer die PCB

Soldeer die PCB
Soldeer die PCB
Soldeer die PCB
Soldeer die PCB
Soldeer die PCB
Soldeer die PCB

U het die keuse om 'n stensil met u PCB te bestel; dit is makliker om die soldeerpasta op die bord aan te bring met behulp van die stensil; ek het 'n kookplaat gebruik om die komponente saam te soldeer. hulle is so sensitief vir hitte.

soldering aan die onderkant is 'n bietjie makliker, aangesien dit slegs die SWD -penkop en die rugsteunbattery het, wat u met soldeerbout kan soldeer.

Kontroleer of daar 'n kortsluiting is voordat u die stroombaan met 'n USB -kragbron aansluit.

Koppel u GPS -antenna aan en maak seker dat u die aansluiting behoorlik soldeer; ek het die antenne aan die onderkant van die bord vasgemaak.

Stap 3: sagteware … funksionaliteit … resultate

Image
Image
Sagteware … Funksionaliteit … resultate
Sagteware … Funksionaliteit … resultate
Sagteware … Funksionaliteit … resultate
Sagteware … Funksionaliteit … resultate

Die sagteware sal in 4 dele verdeel word:

  1. USART om met die ATGM332 GPS -module te kommunikeer.
  2. SPI om met OLED te kommunikeer.
  3. USB CDC.
  4. GPIO om LED's te beheer

Sluit eers die USB -aansluiting aan om die kring aan te skakel en koppel dan die lintkabel met SWD -aansluiting.

Laai die kode af van github (skakel hier).

Om die geografiese ligging te kry, het u drie verskillende NMEA-boodskappe:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Ek het GPRMC -sin gebruik om die ligging, tyd en datum (tyd is 0,0 GMT) te kry, so in die kode vind u:

GPRMC. Enable = 1;/*0 as hierdie boodskap nie nodig is nie/

GPGGA. Enable = 0;/*0 as hierdie boodskap nie nodig is nie/

GPGLL. Enable = 0;/*0 as hierdie boodskap nie nodig is nie/

u kan hulle almal saam aktiveer en terselfdertyd lees wat u benodig.

sodra daar 'n geldige GPRMC -sin is, word theGPRMC. Ready 1 en kan u al die beskikbare data in hierdie sin verkry, kyk na hierdie skakel om die beskikbare data in hierdie sin te sien.

eenvoudig as Fix 'A' is, beteken dit dat die ligging beskikbaar is, as Fix 'V' is, beteken dit dat die ligging nie beskikbaar is nie.

let op dat ATSAMD21 'n interne RTC het, maar hier gebruik ek dit nie, maar ek gebruik tyd en datum direk vanaf die GPS, dus as u nie die CR1220 -rugsteunbattery wil gebruik nie, sal u die USB -kragbron ontkoppel as u die USB -kragbron ontkoppel verloor die tyd/datum en vir die volgende keer dat u die kring aanskakel, sal die tyd/datum -area op die skerm leeg wees totdat die GPS 'n geldige tyd-/datumwaarde het.

die skerm sal u die huidige status van die GPS wys en die geografiese ligging wys sodra dit beskikbaar is, maar daar is 3 LED's op die bord:

  1. Groen LED gekoppel aan PA06, en sal knip as daar 'n geldige geografiese liggingwaarde is.
  2. Oranje LED is gekoppel aan PA07 en sal een keer per sekonde flikker as daar geen geldige geografiese ligging is nie.
  3. Rooi LED hierdie een is gekoppel aan die PPS -pen van die GPS -module en sal slegs flikker as daar 'n geldige sein is wat verband hou met die ligging.

Resultate

Die kring het baie goed met my gewerk. Die geografiese ligging van die GPS het 20-30 sekondes buite geneem met 'n duidelike blik op die lug en tussen die geboue sonder enige probleme, selfs met die antenna aan die onderkant van die bord.

Stap 4: 3D -gedrukte tas … Soort

3D -gedrukte tas … Soort
3D -gedrukte tas … Soort

Ek het 'n eenvoudige omhulsel (meer presiese houer) vir hierdie kring voorberei, maar as gevolg van COVID-19-epidemie en die ineenstorting waarin ek tans is, kon ek nie my 3D-drukker bereik om dit te druk nie, so ek sal hierdie afdeling opdateer met stl lêer en foto's vir die houer sodra dit beskikbaar is.

Stap 5: dinge om te verbeter …

Dinge om te verbeter …
Dinge om te verbeter …
Dinge om te verbeter …
Dinge om te verbeter …
Dinge om te verbeter …
Dinge om te verbeter …
  1. Beweeg die SWD -aansluiting na die bokant, aangesien dit makliker is om dit met u programmeerder te koppel.
  2. Ek het die stroombaan met 'n litiumbattery aangedryf deur 'n springer te soldeer, en dit het goed gewerk, met in gedagte dat die lineêre (LDO) reguleerder 'n V -drukspanning het as die (Vbat - Vout) kleiner as die Vdrop -limiet die kring moontlik nie werk nie behoorlik.
  3. om 'n gebruikersknoppie 'n bietjie groter te maak, sodat dit makliker sal wees om te druk.
  4. USB CDC -kode byvoeg sodat u 'n spesiale program vir MAC/PC/Linux kan kommunikeer/ontwerp.
  5. Vir die GPS-antenna het ek 'n aktiewe antenna vir hierdie projek gebruik; 'n passiewe antenna is moontlik deur lae-op-Amp soos AT2659 by te voeg (kyk ook die skematiese op ATGM332 datablad P.14).
  6. Vir OLED 0.96 'SSD1306, die amptelike biblioteek van mikroskyfie oorspronklik vir 128*32 -skerm, om die kode te verander om met 128*64 te werk, moet u na ssd1306.c gaan en die kode verander (kyk na die prentjie).

Aanbeveel: