Агуулгын хүснэгт:
- Алхам 1: Энэ нь хэрхэн ажилладаг талаар
- Алхам 2: Фенүүдийн баримт
- Алхам 3: Эхлэх
- Алхам 4: Мэдээллийн урсгал дахь хуруу
- Алхам 5: Өөрийгөө олох
- Алхам 6: TinyGPS ++ ашиглан кодлох
- Алхам 7: "ДӨРӨВДҮГЭЭР ХЭМЖЭЭ"
- Алхам 8: Замаа олох
- Алхам 9: Цаашаа явах
Видео: GPS ашиглан замаа олох: 9 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
GPS өгөгдлийг ойлгох, ашиглах хурдан дасгал
- Шаардлагатай хугацаа: 2 цаг
- Зардал: 75-150 доллар
Үйлдвэрлэгчдийн хувьд өндөр чанартай гео орон зайн өгөгдлийг электроникийн төсөлд оруулах нь нэлээд хямд болсон. Сүүлийн хэдэн жилийн хугацаанд GPS (Global Positioning System) хүлээн авагч модулиуд нь илүү олон төрлийн, хүчирхэг, Arduino, PIC, Teensy, Raspberry Pi зэрэг хөгжлийн самбартай нэгтгэхэд хялбар болсон. Хэрэв та GPS -ийн эргэн тойронд бүтээх талаар бодож байсан бол та эхлэхэд тохиромжтой цагийг сонгосон байна.
Алхам 1: Энэ нь хэрхэн ажилладаг талаар
GPS модуль бол хиймэл дагуулын флотын мэдэгдэж буй давтамж дээр цацаж буй дохиог боловсруулдаг жижиг радио хүлээн авагч юм. Эдгээр хиймэл дагуулууд тойрог замд дэлхийг тойрон эргэлдэж, маш нарийн байрлал, цагийн мэдээллийг доорх газарт дамжуулдаг. Хэрэв дэлхий дээрх хүлээн авагч эдгээр хиймэл дагуулыг хангалттай "харах" боломжтой бол тэдгээрийг ашиглан өөрийн байршил, өндрийг тооцоолох боломжтой.
GPS мессеж ирэхэд хүлээн авагч эхлээд нэвтрүүлгийн цагийн тэмдгийг шалгаж, хэзээ илгээгдсэнийг нь шалгадаг. Сансар дахь радио долгионы хурд нь мэдэгдэх тогтмол (c) байдаг тул хүлээн авагч нь дохио дамжсан зайг тодорхойлохын тулд нэвтрүүлэг, хүлээн авах хугацааг харьцуулж чаддаг. Дөрвөн ба түүнээс дээш мэдэгдэж буй хиймэл дагуулаас зайгаа тогтоосны дараа өөрийн байрлалыг тооцоолох нь 3D гурвалжингийн маш энгийн асуудал юм. Гэхдээ үүнийг хурдан бөгөөд үнэн зөв хийхийн тулд хүлээн авагч нь 20 хүртэлх өгөгдлийн дамжуулалтыг нэгэн зэрэг таслах чадвартай байх ёстой. - илүү зохимжтой - дэлхийн өнцөг булан бүрээс үргэлж харагддаг. Одоогийн байдлаар 20,000 км өндөр сийрэг үүлэнд бүжиглэж буй бүжиглэж буй 32 GPS хиймэл дагуул байдаг.
Алхам 2: Фенүүдийн баримт
GPS нь Эйнштейний харьцангуйн онолгүйгээр ажиллах боломжгүй байсан, учир нь дэлхийн таталцлын талбайн цаг хугацааны тэлэлтээс болж тойрог замд байдаг атомын цаг 38 микрекундэд нөхөн олговор олгох ёстой.
Алхам 3: Эхлэх
Таны төсөл ямар ч байсан GPS -ийг нэгтгэхэд хялбар байдаг. Ихэнх хүлээн авагч модулиуд нь шууд цуваа протоколоор ажилладаг тул хэрэв та хянагчийн самбар дээр нөөц сериал порт олж чадвал физик холболт хийхэд цөөн хэдэн утас хэрэгтэй болно. Тийм биш байсан ч ихэнх хянагчид дурын тээглүүртэй холбогдохын тулд ашиглаж болох "програм хангамж" цуврал горимыг дэмждэг.
Эхлэгчдэд Adafruit -ийн Ultimate GPS Breakout модуль бол сайн сонголт юм. Зах зээл дээр маш олон өрсөлдөгч бүтээгдэхүүн байдаг, гэхдээ Ultimate бол боломжийн үнээр ажилладаг, гагнах эсвэл талхны тавцан дээр холбоход хялбар том нүхнүүд юм.
Нэгдүгээрт, газар болон хүчийг холбоно уу. Arduino -ийн хувьд энэ нь GND микроконтроллерийн нэгийг модулийн GND, +5V зүүг модулийн VIN -тэй холбохыг хэлнэ. Мэдээлэл дамжуулалтыг удирдахын тулд та модулийн TX ба RX тээглүүрийг Arduino руу холбох хэрэгтэй. 0, 1 -р зүү нь "тоног төхөөрөмжийн цуваа порт" эсвэл UART болгон ашиглахаар тусгайлан бүтээгдсэн байсан ч гэсэн би энэ зорилгоор Arduino pin 2 (TX) ба 3 (RX) -ийг дур мэдэн сонгох гэж байна. Яагаад? Учир нь би эдгээр AVR процессоруудын цорын ганц UART-ийг үрэхийг хүсэхгүй байна. Arduino-ийн UART нь USB холбогчтой холбогдсон тул би үүнийг компьютер дээрээ холбож, дибаг хийх боломжтой.
Алхам 4: Мэдээллийн урсгал дахь хуруу
GPS -ийн модуль таны хүчийг ашиглах үед TX шугам дээр текст өгөгдлийн хэсгийг илгээж эхэлдэг. Энэ нь ганц хиймэл дагуул хараахан хараагүй байж магадгүй, гэхдээ "засварлах" нь хамаагүй, гэхдээ өгөгдлийн усны цорго тэр даруй гарч ирдэг бөгөөд юу гарах нь сонирхолтой юм. Бидний анхны энгийн ноорог (доор) энэ боловсруулаагүй өгөгдлийг харуулахаас өөр юу ч хийхгүй.
#оруулах #RXPin 2 -ийг тодорхойлох
#TXPin 3#тодорхойлох GPSBaud 4800
#desoleBol 115200
// GPS төхөөрөмжийн цуваа холболтSoftwareSerial ss (RXPin, TXPin);
хүчингүй тохиргоо () {
Serial.begin (ConsoleBaud);
ss.begin (GPSBaud);
Serial.println ("GPS -ийн жишээ 1");
Serial.println ("GPS модулаар дамжуулсан NMEA -ийн түүхий мэдээллийг харуулах.");
Serial.println ("Микал Харт"); Serial.println ();
}
хоосон давталт ()
{if (ss.available ()> 0) // Тэмдэгт бүр ирэх тусам…
Serial.write (ss.read ()); // … үүнийг консол дээр бичээрэй
}
ТАЙЛБАР: Ноорог нь хүлээн авах зүүг (RXPin) 2 гэж тодорхойлдог боловч бид өмнө нь дамжуулагч (TX) зүү 2 -р зүүтэй холбогдоно гэж хэлсэн боловч энэ нь төөрөгдөлд оруулах нийтлэг шалтгаан болдог. RXPin бол Arduino -ийн үүднээс хүлээн авах зүү (RX) юм. Мэдээжийн хэрэг, энэ нь модулийн дамжуулагч (TX) зүүтэй холбогдсон байх ёстой бөгөөд эсрэгээр.
Энэхүү ноорогыг байршуулж, Serial Monitor -ийг 115, 200 бод дээр нээнэ үү. Хэрэв бүх зүйл үр дүнтэй бол та таслалаар тусгаарлагдсан текст мөрүүдийн нягт, төгсгөлгүй урсгалыг харах ёстой. Тус бүр догол мөрийн эхэнд байгаа хоёр дахь дүрс шиг харагдах болно.
Эдгээр өвөрмөц мөрүүдийг NMEA өгүүлбэр гэж нэрлэдэг бөгөөд энэ форматыг Далайн электроникийн үндэсний ассоциаци зохион бүтээсэн тул ингэж нэрлэдэг. NMEA нь хэд хэдэн өгүүлбэрийг үндсэн (байршил, цаг хугацаа), эзотерик (хиймэл дагуулын дохиолол, дуу чимээний харьцаа, соронзон хэлбэлзэл гэх мэт) хүртэлх өгөгдөлд тодорхойлдог. Үйлдвэрлэгчид хүлээн авагчид ямар өгүүлбэр ашигладаг талаар хоорондоо зөрчилддөг боловч GPRMC нь маш чухал юм. Таны модуль засвар авсны дараа та эдгээр GPRMC өгүүлбэрүүдийн нэлээд олон тоог харах ёстой.
Алхам 5: Өөрийгөө олох
Түүхий модулийн гаралтыг таны програм үнэхээр ашиглаж болох мэдээлэл болгон хөрвүүлэх нь тийм ч чухал биш юм. Аз болоход, танд зориулж хийх боломжтой агуу номын сангууд байдаг. Limor Fried -ийн алдартай Adafruit GPS -ийн номын сан нь хэрэв та тэдний эцсийн хувилбарыг ашиглаж байгаа бол тохиромжтой сонголт юм. Энэ нь Ultimate -ийн онцлог шинж чанаруудыг идэвхжүүлэхийн тулд бичигдсэн (дотоод өгөгдөл бүртгэх гэх мэт) бөгөөд өөрийн гэсэн өвөрмөц хонх, шүгэл нэмдэг. Гэхдээ миний хамгийн дуртай задлан шинжлэх номын сан бол миний хувьд мэдээжийн хэрэг огтхон ч харагддаггүй - миний бичсэн TinyGPS ++ ном юм. Би үүнийг цогц, хүчирхэг, товч бөгөөд ашиглахад хялбар байхаар зохион бүтээсэн. Үүнийг эргүүлж харцгаая.
Алхам 6: TinyGPS ++ ашиглан кодлох
Программистын үзэж байгаагаар TinyGPS ++ ашиглах нь маш энгийн:
1) gps объект үүсгэх.
2) Модулаас ирсэн тэмдэгт бүрийг gps.encode () ашиглан объект руу чиглүүлнэ.
3) Хэрэв та өөрийн байршил, өндөр, цаг, огноог мэдэх шаардлагатай бол gps объектыг асуугаарай.
#оруулах #оруулах
#RXPin 2 -ийг тодорхойлох
#TXPin 3 -ийг тодорхойлох
#GPSBaud 4800 -ийг тодорхойлох
#desole ConsoleBaud 115200
// GPS төхөөрөмжийн цуваа холболтSoftwareSerial ss (RXPin, TXPin);
// TinyGPS ++ объект
TinyGPSPlus gps;
хүчингүй тохиргоо () {
Serial.begin (ConsoleBaud);
ss.begin (GPSBaud);
Serial.println ("GPS -ийн жишээ 2");
Serial.println ("TinyGPS ++ ашигладаг энгийн трекер.");
Serial.println ("Микал Харт");
Serial.println ();
}
void loop () {
// Хэрэв GPS -ээс ямар нэгэн тэмдэгт ирсэн бол, /
/ тэдгээрийг TinyGPS ++ объект руу илгээх
while (ss.available ()> 0)
gps.encode (ss.read ());
// Шинэ байршил, өндрийг харуулъя
// аль нэг нь шинэчлэгдэх бүрт
if (gps.location.isUpdated () || gps.altitude.isUpdated ())
{
Serial.print ("Байршил:");
Цуваа.хэвлэх (gps.location.lat (), 6);
Serial.print (",");
Цуваа.хэвлэх (gps.location.lng (), 6);
Serial.print ("Өндөр:");
Serial.println (gps.altitude.meters ());
}
}
Манай хоёрдахь програм нь хүлээн авагчийн байршил, өндрийг тасралтгүй харуулдаг бөгөөд үүнийг задлан шинжлэхэд туслах TinyGPS ++ -ийг ашигладаг. Бодит төхөөрөмж дээр та энэ өгөгдлийг SD картанд оруулах эсвэл LCD дэлгэц дээр харуулах боломжтой. Номын санг аваад FindingYourself.ino -ийн зургийг зурна уу (дээр). Номын санг ердийнх шиг Arduino номын сангийн хавтсанд суулгаарай. Ноорог зургийг Arduino -д байршуулж, Serial Monitor -ийг 115, 200 baud дээр нээнэ үү. Та өөрийн байршил, өндрийг бодит цаг хугацаанд шинэчилж байгааг харах ёстой. Хаана зогсож байгаагаа харахын тулд өргөрөг/уртрагийн координатын зарим хэсгийг Google газрын зураг дээр буулгана уу. Одоо зөөврийн компьютерээ холбоод зугаалж эсвэл машинаар яваарай. (Гэхдээ зам дээр нүдээ анихаа мартуузай!)
Алхам 7: "ДӨРӨВДҮГЭЭР ХЭМЖЭЭ"
Хэдийгээр бид GPS-ийг орон зайн байршилтай холбодог боловч эдгээр хиймэл дагуулууд нь цаг болон өгөгдлийн тэмдэг дамжуулдаг гэдгийг бүү мартаарай. GPS-ийн дундаж цаг нь секундын арван саяны нэг хүртэл нарийвчлалтай бөгөөд онолын хязгаар нь бүр ч өндөр байдаг. Хэдийгээр танд цагийг хянахад зөвхөн төсөл хэрэгтэй байсан ч GPS модуль нь хамгийн хямд бөгөөд хялбар шийдэл байж магадгүй юм.
FindingYourself.ino -г маш нарийвчлалтай цаг болгохын тулд сүүлийн хэдэн мөрийг дараах байдлаар өөрчилнө үү.
if (gps.time.isUpdated ()) {
char buf [80];
sprintf (buf, "Цаг нь%02d:%02d:%02d", gps.time.hour (), gps.time.minute (), gps.time.second ()); Serial.println (buf);
}
Алхам 8: Замаа олох
Бидний гурав дахь, эцсийн програм бол "шулуун байлгах" эсвэл "зүүн тийш чиглүүлэх" гэх мэт энгийн текстийн зааврыг ашиглан хэрэглэгчийг хүрэх газар руу чиглүүлэх 100 -аас цөөн мөрийн кодтой, унших боломжтой TinyGPS ++ ноорог бичих хувийн сорилтын үр дүн юм.
#оруулах #оруулах
#RXPin 2 -ийг тодорхойлох
#TXPin 3 -ийг тодорхойлох
#GPSBaud 4800 -ийг тодорхойлох
#desole ConsoleBaud 115200
// GPS төхөөрөмжийн цуваа холболтSoftwareSerial ss (RXPin, TXPin);
// TinyGPS ++ объект TinyGPSPlus gps;
гарын үсэг зураагүй урт lastUpdateTime = 0;
#EIFFEL_LAT 48.85823#EIFFEL_LNG тодорхойлох 2.29438
/* Энэ жишээ нь хүнийг (эсвэл нисгэгчгүй онгоцыг) хүрэх газар руу чиглүүлэхийн тулд курс ба зайг хэрхэн ашиглах талаархи үндсэн хүрээг харуулж байна. Энэ очих газар бол Эйфелийн цамхаг юм. Үүнийг шаардлагатай бол өөрчилнө үү
Лат/урт координат авах хамгийн хялбар арга бол Google газрын зураг (maps.google.com) дээрх очих газар дээр хулганы баруун товчийг дараад "Энд юу байна?" Гэснийг сонгох явдал юм. Энэ нь хайлтын талбарт яг утгыг оруулна
*/
хүчингүй тохиргоо () {
Serial.begin (ConsoleBaud);
ss.begin (GPSBaud);
Serial.println ("GPS -ийн жишээ 3");
Serial.println ("Тийм ч өргөн хүрээтэй бус удирдамжийн систем");
Serial.println ("Микал Харт");
Serial.println ();
}
void loop () {
// Хэрэв GPS -ээс ямар нэгэн тэмдэгт ирсэн бол // тэдгээрийг TinyGPS ++ объект руу илгээнэ үү (ss.available ()> 0) gps.encode (ss.read ());
// 5 секунд тутамд шинэчлэлт хийж байгаарай
if (millis () - lastUpdateTime> = 5000)
{
lastUpdateTime = millis ();
Serial.println ();
// Бидний одоогийн статусыг тогтооно уу
давхар зайToDestination = TinyGPSPlus:: distanceBetween
gps.location.lat (), gps.location.lng (), EIFFEL_LAT, EIFFEL_LNG);
double courseToDestination = TinyGPSPlus:: courseTo
gps.location.lat (), gps.location.lng (), EIFFEL_LAT, EIFFEL_LNG);
const char *directionToDestination = TinyGPSPlus:: кардинал (courseToDestination);
int courseChangeNeeded = (int) (360 + courseToDestination - gps.course.deg ()) % 360;
// дибаг хийх Serial.print ("DEBUG: Course2Dest:");
Цуваа.хэвлэх (courseToDestination);
Serial.print ("CurCourse:");
Цуваа.хэвлэх (gps.course.deg ());
Serial.print ("Dir2Dest:");
Цуваа.хэвлэх (directionToDestination);
Serial.print ("RelCourse:");
Цуваа.хэвлэх (courseChangeNeeded);
Serial.print ("CurSpd:");
Serial.println (gps.speed.kmph ());
// Очих газраас 20 метрийн дотор уу? Энд байсан
if (distanceToDestination <= 20.0)
{Serial.println ("БАЯРЛАЛАА: Та ирлээ!");
гарах (1);
}
Serial.print ("DISTANCE:"); Цуваа.хэвлэх (distanceToDestination);
Serial.println ("метр явах ёстой.");
Serial.print ("ЗААВАР:");
// Одоохондоо? Аль чиглэл рүү явахаа л зааж өг
хэрэв (gps.speed.kmph () <2.0)
{
Serial.print ("Толгой");
Цуваа.хэвлэх (directionToDestination);
Serial.println (".");
буцах;
}
if (courseChangeNeeded> = 345 || courseChangeNeeded <15) Serial.println ("Шууд урагшаа үргэлжлүүлээрэй!");
өөр бол (courseChangeNeeded> = 315 && courseChangeNeeded <345)
Serial.println ("Бага зэрэг зүүн тийш чиглэнэ.");
өөр бол (courseChangeNeeded> = 15 &&CursChangeNeeded <45)
Serial.println ("Бага зэрэг баруун тийш чиглэнэ.");
өөр бол (courseChangeNeeded> = 255 && courseChangeNeeded <315)
Serial.println ("Зүүн тийш эргэх.");
өөр бол (courseChangeNeeded> = 45 && courseChangeNeeded <105)
Serial.println ("Баруун тийш эргэх.");
өөр
Serial.println ("Бүрэн эргүүл.");
}
}
5 секунд тутамд код нь хэрэглэгчийн байршил, чиглэлийг (аяллын чиглэл) барьж, TinyGPS ++ courseTo () аргыг ашиглан холхивчийг (хүрэх чиглэл) тооцоолно. Хоёр векторыг харьцуулж үзвэл доор үзүүлсэн шиг үргэлжлүүлэх эсвэл эргүүлэх зөвлөмжийг гаргадаг.
FindingYourWay.ino (дээрх) ноорогыг хуулж, Arduino IDE дээр буулгана уу. 1 эсвэл 2 км зайд хүрэх газраа тохируулаад ноорогоо Arduino дээрээ байршуулаад, зөөврийн компьютер дээрээ ажиллуулаад, тийшээ хөтлөх эсэхийг үзээрэй. Гэхдээ илүү чухал зүйл бол кодыг судалж, энэ нь хэрхэн ажилладагийг ойлгох явдал юм.
Алхам 9: Цаашаа явах
GPS -ийн бүтээлч чадвар асар их юм. Миний хийсэн хамгийн сэтгэл ханамжтай зүйлсийн нэг бол зөвхөн програмчлагдсан нэг газарт нээгддэг GPS-ээр ажилладаг таавар хайрцаг байв. Хэрэв таны хохирогч эрдэнэсийг дотроос нь түгжихийг хүсч байвал тэр нууц байршил хаана байгааг олж, хайрцгийг тэнд авчрах ёстой. Төслийн хамгийн алдартай санаа бол Транс-Пеннин мөрөөр алхаж буй явган хүний байрлал, өндрийг минут тутамд бүртгэдэг мод бэлтгэх төхөөрөмж юм. Эсвэл Breaking Bad дахь DEA агентлагуудын муу санаат соронзон мөрдөгчдийн нэг нь муу хүмүүсийн машинд наалддаг бол яах вэ? Энэ хоёрыг хоёуланг нь хийх боломжтой бөгөөд үүнийг бүтээх нь хөгжилтэй байх болно, гэхдээ би Амазон дээрээс худалдаж авах боломжтой зүйлээсээ илүү өргөн цар хүрээтэй бодохыг зөвлөж байна. Энэ бол том ертөнц юм. Аль болох хол, өргөнөөр тэнүүчлээрэй.
Зөвлөмж болгож буй:
Найдварын цээжний өргөтгөлийг ашиглан гэр бүлийнхээ модон дотроос дутуу хийсэн ариун сүмийн ажлыг хайж олох: 11 алхам
Найдварын цээжний өргөтгөлийг ашиглан гэр бүлийнхээ модон дотроос дутуу хийсэн ариун ёслолын ажлыг гэр бүлийн хайлтаар хайж олох: Энэхүү зааварчилгааны зорилго нь Итгэл найдварын цээжний өргөтгөлийг ашиглан бүрэн бус ариун сүмийн ёслолын ажилтай өвөг дээдсийг гэр бүлийн хайлтаас хэрхэн хайхыг харуулах явдал юм. Найдварын цээжийг ашиглах нь тохиромжгүй хайлтыг ихээхэн хурдасгах болно
Arduino олох: 4 алхам
Arduino Finding: Энэ бол миний Arduino -ийн ажил. Энэ бол намайг сэрэхэд юмнуудаа олоход туслах машин юм. Намайг товчлуурыг дарахад гэрэл өөрчлөгдөж, гэрэл хэв маягаар эргэх болно
WLAN нууц үгийг олох (холбогдоход л хангалттай): 4 алхам
WLAN нууц үгийг олох (зөвхөн холбогдох шаардлагатай): Өнөөдөр танд үзүүлэхийг хүсч буй зүйл бол үнэндээ зөвхөн тушаал юм. Гэсэн хэдий ч та найз нөхөдтэйгээ тоглоом хийж болно! Анхаар: Энэ бол wlan нууц үгийг хакердах явдал биш юм. Холбогдсон wlan -ийн нууц үгийг олж мэдэх цорын ганц арга зам
Угаалгын машины моторын голыг хэрхэн олох вэ: 6 алхам
Угаалгын машины тээглүүрийг хэрхэн олох вэ: Дижитал мултиметр ашиглан угаалгын машины тээглүүрийг хайж олох боломжтой. Бид тасралтгүй ажиллах туршилтын горимд мультиметр, дээрх зураг дээрх шиг угаалгын машины ижил төстэй мотор хэрэгтэй болно. эхлээд харааны үзлэг хийж эхэлнэ үү
Froogle ашиглан хямд үнээр хайж олох: 4 алхам
Froogle ашиглан хямд үнийг хайж олох: FroogleFroogle-хэмнэлттэй үг, Google нь Google-ийн Mysimon болон bizrate зэрэг кампанит худалдааны үйлчилгээний эргэлт юм. Бусад ихэнх Google үйлчилгээнүүдийн нэгэн адил энэ нь төрөлжсөн онлайн контент үзэх, хайх боломжийг олгодог бөгөөд энэ тохиолдолд