Cuprins:

Monitorizare GPS cu proiect OLED Display: 5 pași (cu imagini)
Monitorizare GPS cu proiect OLED Display: 5 pași (cu imagini)
Anonim
Monitorizare GPS cu proiect OLED Display
Monitorizare GPS cu proiect OLED Display
Monitorizare GPS cu proiect OLED Display
Monitorizare GPS cu proiect OLED Display
Monitorizare GPS cu proiect OLED Display
Monitorizare GPS cu proiect OLED Display
Monitorizare GPS cu proiect OLED Display
Monitorizare GPS cu proiect OLED Display

Bună ziua tuturor, în acest articol rapid vă voi împărtăși proiectul meu: modul GPS ATGM332D cu microcontroler SAMD21J18 și afișaj SSD1306 OLED 128 * 64, am construit un PCB special pentru acesta pe Eagle Autodesk și îl programez folosind Atmel studio 7.0 și ASF4 deci în acest articol vă voi împărtăși această călătorie și fișierele pe care le-am folosit dacă sunteți interesat să o faceți singur.

Acum, dacă vă programați MCU / placa de dezvoltare folosind Arduino, acest proiect ar trebui să vă fie relativ ușor, dar aici voi folosi ASF4 (Advanced software framwork 4) de la Atmel / Microchip care se bazează pe limbajul C și vă va da o idee pentru cum să citiți mesajul GPS NMEA utilizând driverul asincron USART (Callback) și să vă oferiți o bibliotecă simplă pe care o puteți utiliza cu orice microcontroler și platformă diferită, adăugând pur și simplu driverul adecvat pe care îl utilizați pentru a primi mesajul de la GPS (mesaj NMEA).

Voi împărți acest articol la:

  1. Design PCB.
  2. BOM trebuie să asamblați PCB-ul
  3. Privire rapidă a software-ului și a codului în sine și un test pentru hardware și software.
  4. în cele din urmă, dar nu în ultimul rând, un punct de îmbunătățire pentru acest proiect.

Veți găsi tot materialul legat de acest proiect pe Github (Aici)

Pasul 1: Proiectarea PCB folosind Eagle

Proiectare PCB folosind Eagle
Proiectare PCB folosind Eagle
Design PCB folosind Eagle
Design PCB folosind Eagle
Proiectare PCB folosind Eagle
Proiectare PCB folosind Eagle
Proiectare PCB folosind Eagle
Proiectare PCB folosind Eagle

Acest proiect se bazează în principal pe modulul GPS ATGM332D, GPS simplu de utilizat, deoarece are nevoie doar de câteva componente pasive pentru a funcționa și am putea adăuga o baterie de rezervă pentru a economisi ora / data dacă oprim sursa principală de alimentare din modul.

și pentru a controla toate semnalele din circuit am mers cu microcontrolerul ATSAMD21J18B, pachetul TQFP64 deoarece are 128KByte de stocare a memoriei de program și 32KByte de memorie de date (și am o mulțime de ele așezate în jurul bancului meu de lucru).

circuitul va fi alimentat de sursa USB 5V, de asemenea, USB-ul poate acționa ca port COM virtual (CDC USB) și puteți adăuga un cod pentru acesta dacă doriți să comunicați cu dispozitivul prin USB.

pentru afișaj am selectat afișaj OLED SSD1306 0.96 'cu bus SPI, este mic, dar este potrivit pentru dimensiunea PCB dorită, dimensiunea plăcii 100x31 mm.

programarea microcontrolerului va fi prin programator SWD (eu folosesc Atmel ICE) și îl voi conecta prin antet de 10 pini de 1,27 mm.

De asemenea, am folosit Fusion360 pentru a obține o vizualizare 3D pentru tablă și puteți vedea și o imagine redată pentru aceasta.

Pasul 2: lipirea PCB-ului

Lipirea PCB-ului
Lipirea PCB-ului
Lipirea PCB-ului
Lipirea PCB-ului
Lipirea PCB-ului
Lipirea PCB-ului

Aveți opțiunea de a comanda un șablon cu PCB-ul dvs., este mai ușor să aplicați pasta de lipit pe placă folosind șablonul, am folosit placă fierbinte pentru a lipi componentele împreună, folosind aer fierbinte este de asemenea OK, dar aveți grijă în timp ce lipiți LED-ul, deoarece sunt atât de sensibili la căldură.

lipirea partea inferioară este puțin mai ușoară, deoarece are doar antetul SWD pin și bateria de rezervă, pe care le puteți lipi folosind un fier de lipit.

înainte de a conecta circuitul cu orice sursă de alimentare USB, verificați dacă există scurtcircuit.

conectați-vă antena GPS și asigurați-vă că lipiți conectorul corect, am fixat antena în partea inferioară a plăcii.

Pasul 3: Software … Funcționalitate … rezultate

Image
Image
Software … Funcționalitate … rezultate
Software … Funcționalitate … rezultate
Software … Funcționalitate … rezultate
Software … Funcționalitate … rezultate

Software-ul va fi împărțit în 4 părți:

  1. USART pentru a comunica cu modulul GPS ATGM332.
  2. SPI pentru a comunica cu OLED.
  3. USB CDC.
  4. GPIO pentru controlul LED-urilor

conectați mai întâi conectorul USB pentru a porni circuitul și apoi conectați cablul cu bandă cu conector SWD.

Descărcați Codul de pe github (Link aici).

pentru a obține locația geografică aveți 3 opțiuni diferite de mesaje NMEA:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Am folosit propoziția GPRMC pentru a obține locația, ora și data (ora este 0,0 GMT), astfel încât în cod veți găsi:

GPRMC. Enable = 1; / * 0 dacă nu este nevoie de acest mesaj * /

GPGGA. Enable = 0; / * 0 dacă nu este nevoie de acest mesaj * /

GPGLL. Enable = 0; / * 0 dacă nu este nevoie de acest mesaj * /

le puteți activa pe toate împreună și le puteți citi în același timp pentru a obține datele de care aveți nevoie.

odată ce există o propoziție GPRMC validă, GPRMC. Ready va deveni 1 și puteți obține toate datele disponibile în această propoziție, verificați acest link pentru a vedea datele disponibile în această propoziție.

pur și simplu dacă Fix este „A” înseamnă că Locația este disponibilă, dacă Fix este „V” înseamnă că locația nu este disponibilă.

observați că ATSAMD21 are RTC intern, dar aici nu îl folosesc și în schimb folosesc ora și data direct de pe GPS, deci dacă nu doriți să utilizați bateria de rezervă CR1220, odată ce deconectați sursa de alimentare USB, veți pierdeți Ora / Data și pentru data viitoare când porniți circuitul, zona orei / datei de pe afișaj va fi goală până când GPS-ul are o valoare validă a datei / orei.

afișajul vă va arăta starea actuală a GPS-ului și va afișa locația geografică odată ce este disponibil, cu toate acestea există 3 LED-uri pe placă:

  1. LED verde conectat la PA06 și va clipi dacă există o valoare validă de localizare geografică.
  2. LED portocaliu conectat la PA07 și va clipi o dată pe secundă dacă nu există o locație geografică validă.
  3. LED roșu conectat la pinul PPS al modulului GPS și va clipi numai atunci când există un semnal valid legat de locație.

Rezultate

Circuitul a funcționat foarte bine cu mine, obținerea Geo-locației de pe GPS a durat 20-30 de secunde în aer liber, cu vedere la cer și între clădiri fără nicio problemă, chiar și cu antena în partea de jos a plăcii.

Pasul 4: Carcasă imprimată 3D … Un fel de

Carcasă imprimată 3D … Un fel de
Carcasă imprimată 3D … Un fel de

Am pregătit o carcasă simplă (suport mai precis) pentru acest circuit, dar din cauza epidemiei COVID-19 și a blocării în care mă aflu acum, nu am putut ajunge la imprimanta mea 3D pentru ao imprima, așa că voi actualiza această secțiune cu stl fișier și fotografii pentru titular odată ce acesta este disponibil.

Pasul 5: Lucruri de îmbunătățit …

Lucruri de îmbunătățit …
Lucruri de îmbunătățit …
Lucruri de îmbunătățit …
Lucruri de îmbunătățit …
Lucruri de îmbunătățit …
Lucruri de îmbunătățit …
  1. Mutarea conectorului SWD în partea de sus, deoarece este mai ușor să îl conectați la programator.
  2. Alimentarea circuitului de la bateria cu litiu, am făcut-o lipind un jumper și a funcționat bine, având în vedere că regulatorul liniar (LDO) are tensiune de cădere V dacă (Vbat - Vout) mai mică decât limita Vdrop circuitul ar putea să nu funcționeze. corect.
  3. făcând un buton de utilizator puțin mai mare, astfel încât să fie mai ușor de apăsat.
  4. adăugarea codului USB CDC astfel încât să puteți comunica / proiecta un program special pentru MAC / PC / linux.
  5. Pentru antena GPS, am folosit antena activă pentru acest proiect, folosind o antenă pasivă este posibilă, adăugând op-Amp cu zgomot redus ca AT2659 (verificați și schema ATGM332 Foaie de date P.14).
  6. pentru OLED 0.96 'SSD1306, biblioteca oficială din microcip inițial pentru afișajul 128 * 32, pentru a modifica codul pentru a lucra cu 128 * 64 trebuie să accesați ssd1306.c și să modificați codul (verificați imaginea).

Recomandat: