Turinys:

GPS stebėjimas naudojant OLED ekrano projektą: 5 žingsniai (su nuotraukomis)
GPS stebėjimas naudojant OLED ekrano projektą: 5 žingsniai (su nuotraukomis)

Video: GPS stebėjimas naudojant OLED ekrano projektą: 5 žingsniai (su nuotraukomis)

Video: GPS stebėjimas naudojant OLED ekrano projektą: 5 žingsniai (su nuotraukomis)
Video: HAYLOU GS: Haylou's DIRTY LITTLE SECRET // Is It a Copy of the SoundPEATS WATCH 2? 2024, Liepa
Anonim
GPS stebėjimas naudojant OLED ekrano projektą
GPS stebėjimas naudojant OLED ekrano projektą
GPS stebėjimas naudojant OLED ekrano projektą
GPS stebėjimas naudojant OLED ekrano projektą
GPS stebėjimas naudojant OLED ekrano projektą
GPS stebėjimas naudojant OLED ekrano projektą
GPS stebėjimas naudojant OLED ekrano projektą
GPS stebėjimas naudojant OLED ekrano projektą

Sveiki visi, šiame trumpame straipsnyje pasidalinsiu su jumis savo projektu: ATGM332D GPS modulis su SAMD21J18 mikrovaldikliu ir SSD1306 OLED 128*64 ekranu, aš jam sukūriau specialų PCB „Eagle Autodesk“ir užprogramavau jį naudodami „Atmel studio 7.0“ir ASF4. šiame straipsnyje pasidalinsiu su jumis šia kelione ir failais, kuriuos naudojau, jei jums įdomu tai padaryti patiems.

Dabar, jei programuojate savo MCU/kūrimo plokštę naudodami „Arduino“, šis projektas jums turėtų būti gana lengvas, tačiau čia aš naudosiu ASF4 (išplėstinė programinė įranga 4) iš „Atmel/Microchip“, kuri pagrįsta C kalba ir suteiks jums idėją kaip perskaityti GPS NMEA pranešimą naudojant USART asinchroninę tvarkyklę (atgalinį skambutį) ir suteikti jums paprastą biblioteką, kurią galite naudoti su bet kokiu mikrovaldikliu ir kita platforma, tiesiog pridėdami atitinkamą tvarkyklę, kurią naudojate, kad gautumėte pranešimą iš GPS (NMEA pranešimas).

Aš padalinsiu šį straipsnį į:

  1. PCB dizainas.
  2. BOM jums reikia surinkti PCB
  3. Greitai peržiūrėkite programinę įrangą ir patį kodą bei patikrinkite aparatinę ir programinę įrangą.
  4. galiausiai, bet ne mažiau svarbu šiek tiek patobulinti šį projektą.

Visą su šiuo projektu susijusią medžiagą rasite „Github“(čia)

1 žingsnis: PCB dizainas naudojant „Eagle“

PCB dizainas naudojant „Eagle“
PCB dizainas naudojant „Eagle“
PCB dizainas naudojant „Eagle“
PCB dizainas naudojant „Eagle“
PCB dizainas naudojant „Eagle“
PCB dizainas naudojant „Eagle“
PCB dizainas naudojant „Eagle“
PCB dizainas naudojant „Eagle“

Šis projektas daugiausia pagrįstas ATGM332D GPS moduliu, paprastu naudoti GPS, nes jam reikia tik kelių pasyvių komponentų, kad galėtume dirbti, ir mes galėtume pridėti atsarginę bateriją, kad sutaupytume laiko/datos, jei išjungsime pagrindinį maitinimo šaltinį iš modulio.

ir norėdamas valdyti visus grandinės signalus, nuėjau su ATSAMD21J18B mikrovaldikliu, TQFP64 paketu, nes jame yra 128 KB baitų programos atminties ir 32 KB baitų duomenų atminties (ir aš turiu daug jų aplink savo darbo stalą).

grandinė turi būti maitinama iš 5 V USB šaltinio, taip pat USB gali veikti kaip virtualus COM prievadas (CDC USB) ir jūs galite pridėti jo kodą, jei norite bendrauti su įrenginiu per USB.

ekranui pasirinkau SSD1306 0,96 'OLED ekraną su SPI magistralė, jis mažas, bet tinka mano norimam PCB dydžiui, plokštės matmenys 100x31 mm.

mikrokontrolerio programavimas bus atliekamas per SWD programuotoją (aš naudoju „Atmel ICE“) ir prijungs jį per 1,27 mm 10p kaiščio antraštę.

Taip pat aš naudoju „Fusion360“, kad gaučiau lentos 3D vaizdą, ir jūs taip pat galite pamatyti tam tikrą atvaizdą.

2 žingsnis: PCB litavimas

PCB litavimas
PCB litavimas
PCB litavimas
PCB litavimas
PCB litavimas
PCB litavimas

Jūs galite pasirinkti užsisakyti trafaretą su savo PCB, lengviau uždėti lydmetalio pastą ant lentos, naudodami trafaretą, aš naudojau kaitlentę komponentams lituoti, taip pat gerai naudoti karštą orą, tačiau būkite atsargūs, kai lituojate šviesos diodą, nes jie tokie jautrūs karščiui.

lituoti apatinę pusę yra šiek tiek lengviau, nes jame yra tik SWD kaiščio antraštė ir atsarginė baterija, kurią galite lituoti naudodami lituoklį.

prieš prijungdami grandinę prie bet kurio USB maitinimo šaltinio, patikrinkite, ar nėra trumpojo jungimo.

prijunkite savo GPS anteną ir įsitikinkite, kad tinkamai lituosite jungtį, aš pritvirtinau anteną apatinėje plokštės pusėje.

3 žingsnis: programinė įranga… Funkcionalumas… rezultatai

Image
Image
Programinė įranga… Funkcionalumas… rezultatai
Programinė įranga… Funkcionalumas… rezultatai
Programinė įranga… Funkcionalumas… rezultatai
Programinė įranga… Funkcionalumas… rezultatai

Programinė įranga bus padalinta į 4 dalis:

  1. USART bendrauti su ATGM332 GPS moduliu.
  2. SPI bendrauti su OLED.
  3. USB CDC.
  4. GPIO šviesos diodams valdyti

pirmiausia prijunkite USB jungtį prie grandinės maitinimo, tada prijunkite juostinį kabelį su SWD jungtimi.

Atsisiųskite kodą iš „github“(nuoroda čia).

Norėdami gauti geografinę vietą, turite 3 skirtingas NMEA pranešimų parinktis:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Aš naudoju GPRMC sakinį, kad gaučiau vietą, laiką ir datą (laikas yra 0 GMT), todėl kode rasite:

GPRMC. Enable = 1;/*0, jei nereikia šio pranešimo*/

GPGGA. Enable = 0;/*0, jei nereikia šio pranešimo*/

GPGLL. Enable = 0;/*0, jei nereikia šio pranešimo*/

galite įjungti juos visus kartu ir skaityti juos tuo pačiu metu, kad gautumėte reikiamus duomenis.

kai bus galiojantis GPRMC sakinys, theGPRMC. Ready taps 1 ir galėsite gauti visus šiame sakinyje esančius duomenis, patikrinkite šią nuorodą, kad pamatytumėte šiame sakinyje esančius duomenis.

jei „Fix“yra „A“, tai reiškia, kad vieta yra prieinama, jei „Fix“yra „V“, tai reiškia, kad vieta nepasiekiama.

pastebėkite, kad ATSAMD21 turi vidinį RTC, bet čia aš jo nenaudoju, o laiką ir datą naudoju tiesiai iš GPS, taigi, jei nenorite naudoti CR1220 atsarginės baterijos, atjungę USB maitinimo šaltinį prarasite laiką/datą ir kitą kartą įjungus grandinę, laiko ir datos sritis ekrane bus tuščia, kol GPS nustatys galiojančią laiko/datos vertę.

ekrane bus rodoma dabartinė GPS būsena ir geografinė vieta, kai tik ji bus pasiekiama, tačiau lentoje yra 3 šviesos diodai:

  1. Žalia šviesos diodas prijungtas prie PA06 ir mirksės, jei yra galiojanti geografinės vietos reikšmė.
  2. Oranžinis šviesos diodas prijungtas prie PA07 ir mirksi vieną kartą per sekundę, jei nėra tinkamos geografinės vietos.
  3. Raudonas šviesos diodas yra prijungtas prie GPS modulio PPS kaiščio ir mirksi tik tada, kai yra galiojantis signalas, susijęs su vietove.

Rezultatai

Grandinė su manimi labai gerai dirbo, gaukite geografinę vietą iš GPS 20-30 sekundžių lauke, gerai matydami dangų ir tarp pastatų be jokių problemų, net jei antena buvo apatinėje plokštės pusėje.

4 žingsnis: 3D spausdintas dėklas … Rūšiuoti

3D spausdintas dėklas … Rūšiuoti
3D spausdintas dėklas … Rūšiuoti

Aš paruošiau paprastą dėklą (tikslesnį laikiklį) šiai grandinei, tačiau dėl COVID-19 epidemijos ir užrakto, kuriame dabar esu, negalėjau pasiekti savo 3D spausdintuvo, kad galėčiau jį atspausdinti, todėl atnaujinsiu šį skyrių failą ir turėtojui skirtas nuotraukas, kai tik jos bus pasiekiamos.

5 žingsnis: ką reikia pagerinti …

Ką patobulinti…
Ką patobulinti…
Ką patobulinti…
Ką patobulinti…
Ką patobulinti…
Ką patobulinti…
  1. Perkelkite SWD jungtį į viršutinę pusę, nes ją lengviau prijungti prie programuotojo.
  2. Maitindamas grandinę iš ličio baterijos, aš tai padariau lituodamas trumpiklį ir jis veikė gerai, nepamiršdamas, kad linijinis (LDO) reguliatorius turi V kritimo įtampą, jei (Vbat - Vout) mažesnė nei Vdrop riba grandinė gali neveikti tinkamai.
  3. naudotojo mygtukas tampa šiek tiek didesnis, todėl jį bus lengviau paspausti.
  4. pridedant USB CDC kodą, kad galėtumėte bendrauti/sukurti specialią programą, skirtą MAC/PC/Linux.
  5. GPS antenai šiam projektui panaudojau aktyvią anteną, galima naudoti pasyvią anteną, pridedant mažo triukšmo stiprintuvą, pvz., AT2659 (taip pat patikrinkite schemą ATGM332 duomenų lape P.14).
  6. OLED 0.96 'SSD1306, oficiali biblioteka iš mikroschemos, iš pradžių skirta 128*32 ekranui, norint pakeisti kodą, kad jis veiktų su 128*64, turite eiti į ssd1306.c ir pakeisti kodą (patikrinkite paveikslėlį).

Rekomenduojamas: