Turinys:

Kelių žemėlapis: 6 žingsniai
Kelių žemėlapis: 6 žingsniai

Video: Kelių žemėlapis: 6 žingsniai

Video: Kelių žemėlapis: 6 žingsniai
Video: Какого числа от 1 до 31, родился человек, такая у него и вся жизнь 2024, Lapkritis
Anonim
Kelių žemėlapis
Kelių žemėlapis
Kelių žemėlapis
Kelių žemėlapis
Kelių žemėlapis
Kelių žemėlapis

Šiame IoT projekte mes prijungiame NEO-6M (GPS modulį), kad vietos duomenys per „Arduino“būtų pristatyti į „Excel“lapą, kuris bus išsaugotas kompiuteryje. Vėliau su „Tableau Public“sukuriame šių duomenų vizualizaciją, kad suplanuotume mūsų pasirinktą kelią. Nors tai yra vienas iš būdų rinkti ir pateikti realaus laiko duomenis labai koreliuojamuose duomenyse, šis procesas taip pat gali būti taikomas kitiems projektams, pagrįstiems duomenimis.

1 žingsnis: medžiagų įsigijimas

Medžiagų įsigijimas
Medžiagų įsigijimas

Šiam projektui jums reikės:

  • NEO-6M GPS modulis
  • Arduino Uno
  • Vyriški/vyriški jungiamieji laidai (jums reikės 4 laidų)
  • USB 2.0 laido tipas nuo A iki B
  • Kompiuteris su šiomis programomis: „Tableau Public“, „Arduino IDE“(su „TinyGPS ++“) ir apdorojimas

2 žingsnis: Įrenginių nustatymas

Įrenginių nustatymas
Įrenginių nustatymas
Įrenginių nustatymas
Įrenginių nustatymas

Pirmiausia turime nustatyti GPS modulį su „Arduino UNO“, kad „Arduino“suteiktų mums sąsają duomenims rodyti. Kiekvienas iš keturių laidų, prijungtų prie NEO-6M, atitinka tam tikrus prievadus. Jei jūsų NEO-6M nėra komplektuojamas su laidais, turėsite jį tiesiogiai prijungti jungiamaisiais laidais. Aukščiau pateiktoje diagramoje raudona spalva atitinka galią (VCC), juoda - žemė (GND), geltona - duomenims perduoti (TxD), o balta - duomenims gauti (RxD). Mes prijungiame šiuos laidus prie vyriškų/vyriškų trumpiklių laidų, kad galėtume juos prijungti prie „Arduino“. Vadovaudamiesi aukščiau pateikta schema, įžeminimo laidą prijungiame prie GND skaitmeninio kaiščio „Arduino“, TxD laido prie 4, RxD laido prie ~ 3 ir VCC laido prie 5 V įtampos. Būsimame žingsnyje „SoftwareSerial“turėsime apibrėžti TxD ir RxD teisingais skaičiais.

Kai abu įrenginiai yra prijungti vienas prie kito, turime pateikti maitinimo šaltinį. Prijunkite USB 2.0 kabelį prie nešiojamojo kompiuterio ir NEO-6M lemputė turėtų užsidegti.

3 žingsnis: „Arduino“kodavimas duomenims išgauti

„Arduino“kodavimas duomenims išgauti
„Arduino“kodavimas duomenims išgauti

Dabar, kai turime įrenginius, skirtus rinkti GPS duomenis iš palydovų, parašysime kodą norėdami išanalizuoti norimus GPS duomenis. Darant prielaidą, kad gavote signalą (mano GPS modulis mirksėtų mėlyna spalva), NEO-6M pagal numatytuosius nustatymus išspausdina neapdorotus duomenis nuosekliajame monitoriuje NMEA pranešimų pavidalu, kurie atrodo kaip $ GP, o po to-daugiau raidžių ir serijos skaičių. Aukščiau pateiktame paveikslėlyje pateikiama bendra idėja, kas turėtų būti rodoma jūsų serijiniame monitoriuje, kai bus įvestas pagrindinis „Arduino“kodas.

Norėdami paaiškinti pridėtą kodą (arba jei norite pabandyti jį koduoti patys), pirmiausia turite įtraukti ir „SoftwareSerial“, ir „TinyGPS ++“bibliotekas (pastarosios atveju eskizas> Įtraukti> Pridėti. ZIP biblioteką). „SoftwareSerial“leidžia mums turėti nuoseklųjį ryšį; „TinyGPS ++“suteikia mums paprastą įrankį išspausdinti tikslinę informaciją skaitoma forma. Būtinai inicijuokite „SoftwareSerial“objektą prie atitinkamų „Arduino“kaiščių. Sąrankos funkcijoje mes naudojame 9600 kaip duomenų perdavimo spartą.

Taikydami šią instrukciją, ciklo funkcijoje išspausdinsime tik septynių tipų duomenis: platumą (laipsnius), ilgumą (laipsnius), greitį (km), kursą (laipsnius), aukštį (km), palydovų skaičių naudoti ir hdop. Šios informacijos spausdinimo sintaksės galite ieškoti „Arduiniana“bibliotekoje. Bendra forma yra Serial.print (). Pavyzdžiui, norėdami išspausdinti ilgumą, įvesime Serial.print (gps.location.lng (), 6). 6 reiškia, kiek skaitmenų norime dešinėje po kablelio.

Mano kode yra papildomų simbolių, atspausdintų siekiant lengvai suformatuoti reguliarųjį sakinį kitame veiksme. Tačiau jei norite sustoti ties šiuo žingsniu, nedvejodami suformatuokite duomenis kitaip, kad būtų lengviau matyti serijinį monitorių.

4 žingsnis: apdorojimo naudojimas klausymui

Apdorojimo naudojimas klausymui
Apdorojimo naudojimas klausymui

Nors mes turime „Arduino IDE“kodą, turime problemų su šių duomenų išsaugojimu. Kol kas duomenis galime matyti tik serijiniame monitoriuje, kai juos renkame. Yra daug būdų užregistruoti šiuos duomenis, bet aš pasirinkau apdorojimą pirmiausia todėl, kad jos sąsaja imituoja „Arduino IDE“ir ji naudoja man žinomą kalbą „Java“(atkreipkite dėmesį, kad atsisiųsdami „Firmata“taip pat galite valdyti „Arduino“plokštę naudodami apdorojimą). Apdorojimas klausosi prie „Arduino“prijungto prievado ir turi galimybę manipuliuoti duomenimis, kurie nuskaitomi nuosekliajame monitoriuje. Norėdami sužinoti šio prievado pavadinimą, grįžkite į „Arduino IDE“failą ir patikrinkite Įrankiai> Prievadas.

Pateikiau apdorojimo kodą, tačiau čia yra trumpa kodo veikimo apžvalga.

Prieš atlikdami sąrankos funkciją įsitikinkite, kad turite prievado kintamuosius, gautą lentelę, eilutę, su kuria dirbsime, ir failo pavadinimą. Tada sąrankos funkcijoje yra parametrų, leidžiančių nustatyti jūsų „Run“lango dydį, tačiau šie skaičiai neturi įtakos mūsų funkcijoms (pavyzdžiui, nustatykite juos į (500, 500)). Inicijuodami prievadą, naudokite prievado pavadinimą „String“pavidalu ir duomenų perdavimo spartą 9600. Galiausiai, norėdami inicijuoti lentelę, sukurkite devynis stulpelius (septynioms GPS kategorijoms, laikui ir datai).

Piešimo funkcijoje mes naudojame integruotas datos ir laiko funkcijas, kad galėtume sekti, kada išgaunamas kiekvienas GPS duomenų rinkinys. Dabar, norėdami perskaityti duomenų srautą iš „Arduino“ir sudėti jį į atitinkamas antraštes su teisingu laiku ir data, naudojame įprastas išraiškas.

Aš naudoju regex, norėdamas išanalizuoti tikslius duomenis su „matchAll“funkcija, kuri ieško bet kokios išraiškos tarp lygybės ženklo ir kabliataškio (skiriamųjų ženklų, kuriuos įdėjau į „Arduino“kodą). Vėliau visos suderintos žymos, skaitiniai duomenys, dedamos į dvimatį masyvą. Tada galime kreiptis į šiuos masyvo indeksus, kad jie būtų įtraukti į „Excel“lapo antraštes.

Norėdami išsaugoti naują.csv failą, klavišo paspaudimu uždarome langą Vykdyti. Kuo ilgiau lauksite klavišo paspaudimo, tuo daugiau duomenų surinksite. Laikydamasis kito vadovo, aš taip pat nusprendžiau išsaugoti failą duomenų aplanke, nurodydamas datą ir laiką.

5 veiksmas: „Tableau Public“duomenų rodymas

Rodomi „Tableau Public“duomenys
Rodomi „Tableau Public“duomenys
Rodomi „Tableau Public“duomenys
Rodomi „Tableau Public“duomenys
Rodomi „Tableau Public“duomenys
Rodomi „Tableau Public“duomenys

Paskutinis žingsnis apima tam tikrą duomenų vizualizavimą. Yra daug programų, skirtų duomenų vizualizacijoms kurti ir rodyti, t. Y. „Plotly“, tačiau šiam projektui naudosime „Tableau“. Atidarykite „Tableau Public“ir atidarykite išsaugotą „Excel“failą kaip tekstinį failą. Norėdami sukurti darbalapį, apatiniame kairiajame kampe spustelėkite 1 lapą.

Kadangi dirbame su GPS duomenimis, savo informacijai pavaizduoti naudosime žemėlapį. Kairiajame stulpelyje, kuriame parašyta „Matavimai“, viršuje vilksime ilgumą į stulpelius, o platumą - į eilutes. „Tableau“pagal numatytuosius nustatymus abi priemonės yra AVG, todėl spustelėkite išskleidžiamąjį meniu šalia sąlygų ir pakeiskite abi į „Matmenys“. Dabar žemėlapyje turėtų būti rodomas kelias, naudojant surinktas platumos ir ilgumos vertes.

Jei norite išvalyti savo duomenis nuo klaidų (tai taip pat galima padaryti prieš atidarant „Tableau“), galite išskirti kai kuriuos vietovių ratus, spustelėdami juos ir pasirinkdami parinktį. Mano GPS modulis nėra 100% tikslus, nes kai kurios mano kelio dalys nebuvo rastos, tačiau bendras kelias buvo užfiksuotas.

6 žingsnis: „Viz“tobulinimas

„Viz“tobulinimas
„Viz“tobulinimas

Paskutinė dalis yra tai, kad šie duomenys būtų lengviau skaitomi. Jei norite gatvės konteksto, galite eiti į Žemėlapis> Žemėlapio sluoksnis> Gatvės ir greitkeliai. Nesivaržykite eksperimentuoti su kitais ženklais. Vilkiau greitį virš spalvos, norėdamas parodyti, kaip spalvos intensyvumas didėja didėjant greičiui. Aš taip pat naudojau „Detail“, o ne „Label for Course“, nes „Label“rodytų skaičius žemėlapyje, o aš norėjau, kad informacija būtų rodoma tik tada, kai užvesite pelės žymeklį virš vietos taškų.

Dabar, kai patyrėte visą duomenų rinkimo ir duomenų vizualizacijos turinio rodymo procesą, galite tai pritaikyti kitiems projektams!

Pingdi Huang, 2018 m. vasara

Rekomenduojamas: