Talaan ng mga Nilalaman:
- Hakbang 1: Paano Ito Gumagana
- Hakbang 2: Katotohanan ng Fan
- Hakbang 3: Pagsisimula
- Hakbang 4: Isang Toe sa Datastream
- Hakbang 5: Paghahanap ng Iyong Sarili
- Hakbang 6: Pag-coding Sa TinyGPS ++
- Hakbang 7: Ang "IKAAPAT NA DIMENSYON"
- Hakbang 8: Paghahanap ng Iyong Daan
- Hakbang 9: Pupunta Pa
Video: Paghahanap ng Iyong Daan Sa GPS: 9 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Isang mabilis na ehersisyo sa pag-unawa at paglalapat ng data ng GPS
- Kailangan ng Oras: 2 Oras
- Gastos: $ 75– $ 150
Para sa mga gumagawa, naging mura ito upang isama ang de-kalidad na geospatial na data sa mga proyekto sa electronics. At sa huling ilang taon, ang mga module ng tagatanggap ng GPS (Global Positioning System) ay lumago nang higit na magkakaiba, makapangyarihan, at madaling maisama sa mga board ng pag-unlad tulad ng Arduino, PIC, Teensy, at Raspberry Pi. Kung naisip mong bumuo ng paligid ng GPS, pumili ka ng magandang oras upang magsimula.
Hakbang 1: Paano Ito Gumagana
Ang isang module ng GPS ay isang maliit na tatanggap ng radyo na nagpoproseso ng mga signal na nai-broadcast sa mga kilalang dalas ng isang fleet ng mga satellite. Ang mga satellite na ito ay umiikot sa paligid ng Earth sa halos paikot na mga orbit, na nagpapadala ng sobrang tumpak na posisyon at data ng orasan sa lupa sa ibaba. Kung ang tagatanggap ng lupa ay maaaring "makita" nang sapat sa mga satellite na ito, maaari itong gamitin ang mga ito upang makalkula ang sarili nitong lokasyon at altitude.
Kapag dumating ang isang mensahe sa GPS, unang susuriin ng tatanggap ang broadcast timestamp nito upang makita kung kailan ito ipinadala. Dahil ang bilis ng isang alon ng radyo sa kalawakan ay kilalang pare-pareho (c), maaaring ihambing ng tatanggap ang pag-broadcast at makatanggap ng mga oras upang matukoy ang distansya na naglakbay ang signal. Kapag naitatag na nito ang distansya nito mula sa apat o higit pang mga kilalang satellite, ang pagkalkula ng sarili nitong posisyon ay isang simpleng problema ng 3D triangulation. Ngunit upang gawin ito nang mabilis at tumpak, ang tatanggap ay dapat na mabilis na malutong ang mga numero mula sa hanggang sa 20 mga stream ng data nang sabay-sabay. Dahil ang sistema ng GPS ay may nai-publish na layunin na magamit kahit saan sa Lupa, dapat tiyakin ng system na hindi bababa sa apat na mga satellite - mas mabuti - nakikita sa lahat ng oras mula sa bawat punto sa mundo. Kasalukuyang may 32 mga satellite na GPS na gumaganap ng isang masining na choreographed na sayaw sa isang kalat-kalat na ulap na 20, 000 na kilometro ang taas.
Hakbang 2: Katotohanan ng Fan
Ang GPS ay hindi maaaring gumana nang wala ang teorya ng relatividad ni Einstein, dahil ang kompensasyon ay dapat gawin para sa 38 microseconds na kumukuha ng orbit na mga atomic na orasan bawat araw mula sa pagluwang ng oras sa gravitational field ng Earth.
Hakbang 3: Pagsisimula
Anuman ang iyong proyekto, ang GPS ay simple upang isama. Karamihan sa mga module ng tatanggap ay nakikipag-usap sa isang deretsong serial protocol, kaya kung makakahanap ka ng isang ekstrang serial port sa iyong board ng controller, dapat itong tumagal ng kaunting mga wires upang makagawa ng pisikal na koneksyon. At kahit na hindi, sinusuportahan ng karamihan sa mga kontroler ang isang tinulad na "software" na serial mode na maaari mong gamitin upang kumonekta sa di-makatwirang mga pin.
Para sa mga nagsisimula, ang Ultimate GPS Breakout module ng Adafruit ay isang mahusay na pagpipilian. Mayroong maraming mga nakikipagkumpitensyang produkto sa merkado, ngunit ang Ultimate ay isang solidong tagapalabas sa isang makatwirang presyo, na may malalaking mga butas na madaling maghinang o kumonekta sa isang breadboard.
Una, ikonekta ang lupa at lakas. Sa mga tuntunin ng Arduino, nangangahulugan ito ng pagkonekta ng isa sa mga microcontroller GND na pin sa GND ng module, at ang + 5V pin sa VIN ng module. Upang mapamahalaan ang paglipat ng data, kailangan mo ring ikonekta ang mga pin ng module at RX ng module sa Arduino. Arbitrary kong pipiliin ang Arduino pin 2 (TX) at 3 (RX) para sa hangaring ito, kahit na ang mga pin 0 at 1 ay partikular na idinisenyo para magamit bilang isang "serial serial port" o UART. Bakit? Dahil hindi ko nais na sayangin ang nag-iisang UART na mayroon ang mga low-end na prosesor na AVR na ito. Ang UART ng Arduino ay matigas ang pagkakakonekta sa onboard USB konektor, at nais kong panatilihin itong konektado sa aking computer para sa pag-debug.
Hakbang 4: Isang Toe sa Datastream
Ang instant na paglalapat mo ng lakas, isang module ng GPS ay nagsisimulang magpadala ng mga chunks ng data ng teksto sa linya na TX nito. Maaaring hindi pa ito nakakakita ng isang solong satellite, mas kaunti pa ang may isang "pag-aayos," ngunit ang gripo ng data ay agad na dumarating, at kagiliw-giliw na makita kung ano ang lalabas. Ang aming unang simpleng sketch (sa ibaba) ay walang ginawa kundi ipakita ang hindi naprosesong data.
# isama ang # tukuyin ang RXPin 2
# tukuyin ang TXPin 3 # tukuyin ang GPSBaud 4800
# tukuyin ang ConsoleBaud 115200
// Ang serial na koneksyon sa GPS aparatoSoftwareSerial ss (RXPin, TXPin);
walang bisa ang pag-setup () {
Serial.begin (ConsoleBaud);
ss.begin (GPSBaud);
Serial.println ("Halimbawa ng GPS 1");
Serial.println ("Ipinapakita ang hilaw na data ng NMEA na ipinadala ng module ng GPS.");
Serial.println ("ni Mikal Hart"); Serial.println ();
}
walang bisa loop ()
{if (ss.available ()> 0) // Tulad ng pagdating ng bawat character…
Serial.write (ss.read ()); // … isulat ito sa console
}
TANDAAN: Tinutukoy ng sketch ang accept pin (RXPin) bilang 2, kahit na sinabi namin nang mas maaga na ang transmit (TX) pin ay konektado sa pin 2. Ito ay isang pangkaraniwang mapagkukunan ng pagkalito. Ang RXPin ay ang natanggap na pin (RX) mula sa pananaw ng Arduino. Naturally, dapat itong konektado sa transmit (TX) pin ng module, at kabaliktaran.
I-upload ang sketch na ito at buksan ang Serial Monitor sa 115, 200 baud. Kung gumagana ang lahat, dapat kang makakita ng isang siksik, walang katapusang stream ng mga string ng teksto na pinaghiwalay ng kuwit. Ang bawat isa ay magmukhang kagaya ng pangalawang imahe sa simula ng talata.
Ang mga natatanging string na ito ay kilala bilang mga pangungusap ng NMEA, tinawag ito sapagkat ang format ay naimbento ng National Maritime Electronics Association. Tinutukoy ng NMEA ang isang bilang ng mga pangungusap na ito para sa data ng pag-navigate mula sa mahalaga (lokasyon at oras), hanggang sa esoteric (satellite signal-to-noise ratio, magnetic variance, atbp.). Hindi pantay ang mga tagagawa tungkol sa kung aling mga uri ng pangungusap ang ginagamit ng kanilang mga tatanggap, ngunit mahalaga ang GPRMC. Kapag ang iyong module ay nakakakuha ng isang pag-aayos, dapat mong makita ang isang patas na bilang ng mga pangungusap na GPRMC.
Hakbang 5: Paghahanap ng Iyong Sarili
Hindi gaanong mahalaga na i-convert ang output ng raw module sa impormasyon na maaari talagang magamit ng iyong programa. Sa kasamaang palad, may ilang mga mahusay na aklatan na magagamit na upang gawin ito para sa iyo. Ang sikat na Adafruit GPS Library ng Limor Fried ay isang maginhawang pagpipilian kung gumagamit ka ng kanilang Ultimate breakout. Nakasulat ito upang paganahin ang mga tampok na natatangi sa Ultimate (tulad ng panloob na pag-log ng data) at nagdaragdag ng ilang mga snazzy na kampanilya at sipol ng sarili nitong. Gayunpaman, ang aking paboritong library sa pag-parse - at narito ako syempre ganap na walang kinikilingan - ay ang isinulat kong tinawag na TinyGPS ++. Dinisenyo ko ito upang maging komprehensibo, malakas, maigsi, at madaling gamitin. Dalhin natin ito para sa isang pagikot.
Hakbang 6: Pag-coding Sa TinyGPS ++
Mula sa pananaw ng programmer, ang paggamit ng TinyGPS ++ ay napaka-simple:
1) Lumikha ng isang object gps.
2) Rutain ang bawat character na darating mula sa module patungo sa object gamit ang gps.encode ().
3) Kapag kailangan mong malaman ang iyong posisyon o altitude o oras o petsa, magtanong lamang sa object ng gps.
# isama ang # isama
# tukuyin ang RXPin 2
# tukuyin ang TXPin 3
# tukuyin ang GPSBaud 4800
# tukuyin ang ConsoleBaud 115200
// Ang serial na koneksyon sa GPS aparatoSoftwareSerial ss (RXPin, TXPin);
// Ang bagay na TinyGPS ++
Mga TinyGPSPlus gps;
walang bisa ang pag-setup () {
Serial.begin (ConsoleBaud);
ss.begin (GPSBaud);
Serial.println ("Halimbawa ng GPS 2");
Serial.println ("Isang simpleng tracker na gumagamit ng TinyGPS ++.");
Serial.println ("ni Mikal Hart");
Serial.println ();
}
void loop () {
// Kung may mga character na dumating mula sa GPS, /
/ ipadala ang mga ito sa bagay na TinyGPS ++
habang (ss.available ()> 0)
gps.encode (ss.read ());
// Ipakita natin ang bagong lokasyon at altitude
// tuwing alinman sa mga ito ay na-update
kung (gps.location.isUpdated () || gps.altitude.isUpdated ())
{
Serial.print ("Lokasyon:");
Serial.print (gps.location.lat (), 6);
Serial.print (",");
Serial.print (gps.location.lng (), 6);
Serial.print ("Altitude:");
Serial.println (gps.altitude.meters ());
}
}
Patuloy na ipinapakita ng aming pangalawang application ang lokasyon at altitude ng tatanggap, gamit ang TinyGPS ++ upang matulungan sa pag-parse. Sa isang tunay na aparato, maaari mong i-log ang data na ito sa isang SD card o ipakita ito sa isang LCD. Grab ang silid-aklatan at sketch na FindingYourelf.ino (sa itaas). I-install ang library, tulad ng dati, sa folder ng Arduino libraries. I-upload ang sketch sa iyong Arduino at buksan ang Serial Monitor sa 115, 200 baud. Dapat mong makita ang iyong lokasyon at altitude na nag-a-update sa real time. Upang makita ang eksaktong kinatatayuan mo, i-paste ang ilan sa mga nagresultang mga coordinate ng latitude / longitude sa Google Maps. I-hook up ang iyong laptop at maglakad-lakad o mag-drive. (Ngunit tandaan na panatilihin ang iyong mga mata sa daan!)
Hakbang 7: Ang "IKAAPAT NA DIMENSYON"
kahit na iniuugnay namin ang GPS sa lokasyon sa kalawakan, huwag kalimutan ang mga satellite na iyon ay nagpapadala rin ng oras- at mga datestamp. Ang average na GPS na orasan ay tumpak sa isang sampung-milyon ng isang segundo, at ang limitasyon ng teoretikal ay mas mataas pa. Kahit na kailangan mo lamang ang iyong proyekto upang subaybayan ang oras, ang isang module ng GPS ay maaari pa ring pinakamura at pinakamadaling solusyon.
Upang gawing isang sobrang tumpak na orasan ang FindingYourelf.ino, palitan lamang ang mga huling linya tulad nito:
kung (gps.time.isUpdated ()) {
char buf [80];
sprintf (buf, "Ang oras ay% 02d:% 02d:% 02d", gps.time.hour (), gps.time.minute (), gps.time.second ()); Serial.println (buf);
}
Hakbang 8: Paghahanap ng Iyong Daan
Ang aming pangatlo at pangwakas na aplikasyon ay ang resulta ng isang personal na hamon na magsulat ng isang nabasang sketch ng TinyGPS ++, sa mas kaunti sa 100 mga linya ng code, na gagabay sa isang gumagamit sa isang patutunguhan na gumagamit ng mga simpleng tagubilin sa teksto tulad ng "panatilihing tuwid" o "veer pakaliwa."
# isama ang # isama
# tukuyin ang RXPin 2
# tukuyin ang TXPin 3
# tukuyin ang GPSBaud 4800
# tukuyin ang ConsoleBaud 115200
// Ang serial na koneksyon sa GPS aparatoSoftwareSerial ss (RXPin, TXPin);
// The TinyGPS ++ object TinyGPSPlus gps;
unsigned long lastUpdateTime = 0;
# tukuyin ang EIFFEL_LAT 48.85823 # tukuyin ang EIFFEL_LNG 2.29438
/ * Ang halimbawang ito ay nagpapakita ng isang pangunahing balangkas para sa kung paano mo maaaring gamitin ang kurso at distansya upang gabayan ang isang tao (o isang drone) sa isang patutunguhan. Ang patutunguhang ito ay ang Eiffel Tower. Baguhin ito ayon sa kinakailangan
Ang pinakamadaling paraan upang makuha ang lat / mahabang coordinate ay ang pag-right click sa patutunguhan sa Google Maps (maps.google.com), at piliin ang "Ano ang narito?". Inilalagay nito ang eksaktong mga halaga sa box para sa paghahanap
*/
walang bisa ang pag-setup () {
Serial.begin (ConsoleBaud);
ss.begin (GPSBaud);
Serial.println ("Halimbawa ng GPS 3");
Serial.println ("Isang Hindi-kumpletong Sistema ng Patnubay");
Serial.println ("ni Mikal Hart");
Serial.println ();
}
void loop () {
// Kung may dumating na mga character mula sa GPS, // ipadala ang mga ito sa bagay na TinyGPS ++ habang (ss.available ()> 0) gps.encode (ss.read ());
// Tuwing 5 segundo, gumawa ng isang pag-update
kung (millis () - lastUpdateTime> = 5000)
{
lastUpdateTime = millis ();
Serial.println ();
// Itaguyod ang aming kasalukuyang katayuan
dobleng distansyaToDestination = TinyGPSPlus:: distansyaBet pagitan
gps.location.lat (), gps.location.lng (), EIFFEL_LAT, EIFFEL_LNG);
dobleng kursoToDestination = TinyGPSPlus:: courseTo
gps.location.lat (), gps.location.lng (), EIFFEL_LAT, EIFFEL_LNG);
const char * directionToDestination = TinyGPSPlus:: cardinal (courseToDestination);
int courseChangeNeeded = (int) (360 + courseToDestination - gps.course.deg ())% 360;
// debug Serial.print ("DEBUG: Course2Dest:");
Serial.print (courseToDestination);
Serial.print ("CurCourse:");
Serial.print (gps.course.deg ());
Serial.print ("Dir2Dest:");
Serial.print (direksyonToDestination);
Serial.print ("RelCourse:");
Serial.print (courseChangeNeeded);
Serial.print ("CurSpd:");
Serial.println (gps.speed.kmph ());
// Sa loob ng 20 metro ng patutunguhan? Nandito na kami
kung (distansyaToDestination <= 20.0)
{Serial.println ("CONGRATULATIONS: Dumating ka na!");
exit (1);
}
Serial.print ("DISTANCE:"); Serial.print (distansyaToDestination);
Serial.println ("metro na pupunta.");
Serial.print ("INSTRUCTION:");
// Nakatayo pa rin? Ipahiwatig lamang kung aling direksyon ang dapat puntahan
kung (gps.speed.kmph () <2.0)
{
Serial.print ("Head");
Serial.print (direksyonToDestination);
Serial.println (".");
bumalik;
}
kung (courseChangeNeeded> = 345 || courseChangeNeeded <15) Serial.println ("Patuloy na diretso!");
kung hindi man (courseChangeNeeded> = 315 && courseChangeNeeded <345)
Serial.println ("Veer bahagyang pakaliwa.");
kung hindi man (courseChangeNeeded> = 15 && courseChangeNeeded <45)
Serial.println ("Bahagyang lumiko sa kanan.");
kung hindi man (courseChangeNeeded> = 255 && courseChangeNeeded <315)
Serial.println ("Lumiko sa kaliwa.");
kung hindi man (courseChangeNeeded> = 45 && courseChangeNeeded <105)
Serial.println ("Lumiko sa kanan.");
iba pa
Serial.println ("Lumiko nang buong paligid.");
}
}
Tuwing 5 segundo kinukuha ng code ang lokasyon at kurso ng gumagamit (direksyon ng paglalakbay) at kinakalkula ang tindig (direksyon sa patutunguhan), gamit ang pamamaraan ng TinyGPS ++ courseTo (). Ang paghahambing sa dalawang mga vector ay bumubuo ng isang mungkahi upang magpatuloy sa tuwid o pagliko, tulad ng ipinakita sa ibaba.
Kopyahin ang sketch na FindingYourWay.ino (sa itaas) at i-paste ito sa Arduino IDE. Magtakda ng patutunguhan na 1km o 2km ang layo, i-upload ang sketch sa iyong Arduino, patakbuhin ito sa iyong laptop, at tingnan kung gagabayan ka nito doon. Ngunit higit sa lahat, pag-aralan ang code at unawain kung paano ito gumagana.
Hakbang 9: Pupunta Pa
Ang malikhaing potensyal ng GPS ay malawak. Ang isa sa mga pinaka-kasiya-siyang bagay na nagawa ko ay isang kahon na palaisipan na pinagana ng GPS na bubukas lamang sa isang naka-preprogram na lokasyon. Kung nais ng iyong biktima na ma-lock ang kayamanan sa loob, dapat niyang malaman kung nasaan ang lihim na lokasyon na iyon at pisikal na dalhin ang kahon doon. Ang isang tanyag na unang ideya ng proyekto ay isang uri ng aparato sa pag-log na nagtatala ng minutong minuto na posisyon at altitude ng, halimbawa, isang hiker na naglalakad sa Trans-Pennine Trail. O ano ang tungkol sa isa sa mga sneaky na magnetikong tracker ng mga ahente ng DEA sa Breaking Bad stick sa mga kotse ng masamang tao? Ang parehong ay ganap na magagawa, at marahil ay magiging masaya na bumuo, ngunit hinihimok kita na mag-isip nang mas malawak, lampas sa mga bagay na maaari mo nang mabili sa Amazon. Ito ay isang malaking mundo doon. Umikot sa malayo at malapad na makakaya mo.
Inirerekumendang:
Paggamit ng Extension ng Dibdib ng Pag-asa upang Makahanap ng Hindi Kumpletong Trabaho ng Ordinansa ng Templo sa Loob ng Iyong Family Tree sa Paghahanap ng Pamilya: 11 Mga Hakbang
Paggamit ng Extension ng Dibdib ng Pag-asa upang Makahanap ng Hindi Kumpleto na Ordinansa sa Templo na Gawain Sa Loob ng Iyong Family Tree sa Paghahanap ng Pamilya: Ang layunin ng itinuturo na ito ay upang ipakita kung paano maghanap sa iyong family tree sa Family Search para sa mga ninuno na may hindi kumpletong gawain ng ordenansa sa templo gamit ang extension ng Chest ng Hope. Ang paggamit ng Chest ng Hope ay maaaring mapabilis ang iyong paghahanap para sa incomp
Pag-hack ng Mga Serbisyo upang Paglingkuran ang Iyong Daan: 9 Mga Hakbang
Mga Hacking na Serbisyo upang Paglingkuran ang Iyong Daan: Ang mga servos ay ilan sa mga pinaka kapaki-pakinabang na motor sa robotics. Mayroon silang mahusay na metalikang kuwintas, maliit na sukat, isinama na H-tulay, kontrol sa PWM, atbp. Maaari silang magamit sa mga RC system, Arduino, at maraming iba pang mga paraan. Ngunit kung minsan ay maaaring maging napakahirap gamitin ang kanilang
20 Oras $ 20 Tuktok ng Talahanayan ng Arcade na Bumuo Sa Daan-daang Mga Larong Itinayo .: 7 Mga Hakbang (na may Mga Larawan)
20 Oras $ 20 Talahanayan sa Top Arcade Bumuo Sa Daan-daang Mga Laro na Itinayo .: Gusto ko nang gumawa ng isang bagay tulad nito nang ilang sandali ngunit hindi nagmamadali sa maraming iba pang mga proyekto na laging ginagawa. Dahil hindi ako nagmamadali naghintay lang ako hanggang sa naipon ko ang lahat ng kinakailangang sangkap para sa pagbuo sa murang presyo. Narito
Mga Paghahanap sa Mga Tagubilin - isang Extension ng Firefox: 3 Mga Hakbang
Mga Paghahanap sa Mga Tagubilin - isang Extension ng Firefox: Nag-post ako ng isang paksa sa Forum tungkol dito nang ilang sandali, at naisip ko na ito ay sapat na cool upang makagawa ng isang Maaaring turuan. Kudos sa NachoMahma para sa pag-uunawa nito. Ipapakita sa iyo ng Instructable na ito kung paano magdagdag ng isang extension sa Firefox na hinahayaan kang maghanap para sa anumang
Kopyahin ang Iyong Lumang Mga Slide sa Madaling Daan !: 8 Hakbang (na may Mga Larawan)
Kopyahin ang Iyong Lumang Mga Slide sa Madaling Daan !: Marami akong mga slide mula sa mga taon na ang nakakalipas at nasisiyahan akong tingnan ang mga ito paminsan-minsan. Ngunit palagi akong lumayo na hinahangad na magkaroon ako ng mga ito sa disc, isang CD, Flash Drive, o anupaman upang mas madalas ko silang makita. Sa mga panahong iyon, ang mga slide ay mas mura kaysa sa p