Агуулгын хүснэгт:

☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци: 7 алхам (зурагтай)
☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци: 7 алхам (зурагтай)

Видео: ☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци: 7 алхам (зурагтай)

Видео: ☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци: 7 алхам (зурагтай)
Видео: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, Арваннэгдүгээр
Anonim
☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци
☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци
☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци
☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци
☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци
☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци
☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци
☠WEEDINATOR☠ 2 -р хэсэг: Хиймэл дагуулын навигаци

Weedinator навигацийн систем төрсөн!

Ухаалаг утсаар удирдах боломжтой хөдөө аж ахуйн робот.

… Үүнийг хэрхэн яаж хийх тухай ердийн үйл явцыг даван туулахын оронд энэ нь хэрхэн ажилладаг талаар тайлбарлахыг хичээсэн гэж би бодсон. Өгүүлбэрийг уучлаарай, гэхдээ тус тусдаа модулиудын хооронд өгөгдөл хэрхэн дамждаг нь надад сонирхолтой санагддаг бөгөөд үүнийг хамгийн бага хуваагдал болгон хуваадаг. Хэрэв та бит, байт, тэмдэгт, мөрийн талаар эргэлзэж байсан бол одоо эргэлзэх цаг болсон байж магадгүй юм уу? Би бас "Алдааг цуцлах" хэмээх бага зэрэг хийсвэр ойлголтыг ашиглахыг оролдох болно.

Систем өөрөө дараахь онцлог шинж чанартай байдаг.

  • GPS/GNSS: Ublox C94 M8M (Rover and Base)
  • 9DOF Razor IMU MO дижитал луужин
  • Fona 800H 2G GPRS үүрэн
  • 2.2 "TFT дэлгэц
  • Arduino "Мастер"
  • Төрөл бүрийн Arduino 'Боолууд'.

Хачирхалтай нь, олон тооны Sat Nav -ууд дижитал луужинтай байдаггүй бөгөөд хэрэв та хөдөлгөөнгүй, төөрсөн бол төхөөрөмж хиймэл дагуулаас зөв чиглэлийг харуулахын тулд та дурын чиглэлд алхах эсвэл машин жолоодох хэрэгтэй болдог. Хэрэв та өтгөн ширэнгэн ойд эсвэл газар доорхи машины зогсоолд төөрсөн бол чихмэл болно!

Алхам 1: Энэ нь хэрхэн ажилладаг талаар

Хэрхэн ажилладаг
Хэрхэн ажилладаг

Одоогийн байдлаар ухаалаг утас эсвэл компьютерээс энгийн хос координатыг байршуулж, дараа нь Weedinator татаж авдаг. Эдгээрийг дараа нь градусын гарчиг, мм -ээр явах зай гэж тайлбарладаг.

GPRS fona нь 2G үүрэн сүлжээгээр дамжуулан онлайн мэдээллийн санд хандах, Arduino Nano -ээр дамжуулан Arduino Due руу координат хүлээн авах, дамжуулахад хэрэглэгддэг. Төлбөр бол мастер бөгөөд бусад Arduinos -ийг I2C болон цуваа автобусаар боол болгон удирддаг. Due нь Ublox болон Razor -ийн шууд өгөгдлүүдтэй харьцаж, Arduino -ийн нэг боолын тооцоолсон гарчгийг харуулах боломжтой.

Ublox хиймэл дагуул мөрдөгч нь маш ухаалаг бөгөөд алдаагаа цуцлах замаар маш нарийвчлалтай засвар хийдэг бөгөөд эцсийн нэрлэсэн нийт хазайлт нь 40 мм орчим байдаг. Модуль нь ижил хосоос бүрддэг бөгөөд тэдгээрийн нэг нь "ровер" нь Weedinator -тэй хамт хөдөлдөг, нөгөө нь "суурь" нь хаа нэгтээ гадаа шон дээр бэхлэгддэг. Цаг хугацаа өнгөрөх тусам их хэмжээний дээж ашиглан үнэн зөв засч залруулах боломжтой болсноор алдаа цуцлагддаг. Эдгээр дээжийг агаар мандлын нөхцөл өөрчлөгдөж байгааг нөхөхийн тулд дунджаар тооцдог. Хэрэв төхөөрөмж хөдөлж байсан бол энэ нь ямар ч дундажийг авах боломжгүй бөгөөд өөрчлөгдөж буй орчны бүрэн нигүүлсэлд байх болно. Гэсэн хэдий ч хэрэв статик ба хөдөлгөөнт төхөөрөмж хоорондоо харилцаж чаддаг бол тэд хоёуланг нь ашиглах боломжтой болно. Хэзээ нэгэн цагт үндсэн нэгж алдаатай хэвээр байгаа боловч өмнө нь тооцоолсон маш нарийвчлалтай засвартай тул нэг координатын багцыг нөгөөгөөс хасах замаар бодит алдааг тооцоолох боломжтой болно. Дараа нь тооцоолсон алдааг радио холбоосоор дамжуулан ровер руу илгээдэг бөгөөд энэ алдааг өөрийн координат руу нэмж оруулна уу, цуцлахад алдаа гарлаа! Практик утгаараа алдааг цуцалснаар 3 метр ба 40 мм -ийн нийт хазайлтын хоорондох ялгааг гаргадаг.

Бүрэн систем нь төвөгтэй мэт боловч дамжуулагчгүй гадаргуу дээр сул эсвэл миний зохион бүтээсэн ПХБ -ийг ашиглан бүтээхэд маш хялбар байдаг бөгөөд энэ нь бүх модулийг найдвартай бэхлэх боломжийг олгодог. Ирээдүйн хөгжил нь ПХБ дээр суурилагдсан бөгөөд энэ нь жолоодлого, урагшлах хөдөлгөөн, CNC машины хөдөлгүүрийг удирдахын тулд асар олон тооны Arduino-ийг нэгтгэх боломжийг олгодог. Навигацийг мөн өнгөт объектыг мэдрэхийн тулд камер ашиглан дор хаяж нэг объект таних системээр туслах болно, жишээлбэл флюресцент гольфын бөмбөгийг ямар нэгэн сүлжээнд болгоомжтой байрлуулна - Энэ орон зайг ажиглаарай!

Алхам 2: бүрэлдэхүүн хэсгүүд

Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд
Бүрэлдэхүүн хэсгүүд
  • Ublox C94 M8M (Rover and Base) x 2 of
  • 9DOF Razor IMU MO дижитал луужин
  • Fona 800H 2G GPRS үүрэн утас 1946 он
  • Arduino Due
  • Arduino Nano x 2 -ийн хэмжээтэй
  • SparkFun Pro Micro
  • Adafruit 2.2 "TFT IL1940C 1480
  • ПХБ (хавсаргасан Gerber файлуудыг үзнэ үү) x 2 of
  • 1206 SMD тэг ом эсэргүүцэл x 12 инч
  • 1206 LED x 24 инч

ПХБ файлыг 'Design Spark' програм хангамжаар нээнэ.

Алхам 3: Модулиудыг холбох

Модулийг холбох
Модулийг холбох

Энэ бол хамгийн хялбар хэсэг, ялангуяа миний хийсэн ПХБ -ийн хувьд маш хялбар байдаг - дээрх диаграмыг дагана уу. Цуваа болон I2C шугам дээр ч гэсэн 3v модулийг 5в -т холбохоос болгоомжлох хэрэгтэй.

Алхам 4: Код

Код
Код

Ихэнх код нь өгөгдлийг системээр эмх цэгцтэй шилжүүлэхэд чиглэгддэг бөгөөд ихэнхдээ өгөгдлийн форматыг бүхэл тооноос хөвөгч болон тэмдэгт рүү хөрвүүлэх шаардлагатай байдаг бөгөөд энэ нь маш их ойлгомжгүй байдаг. 'Цуваа' протокол нь зөвхөн тэмдэгтүүдтэй ажиллах бөгөөд I байхад2C протокол нь маш жижиг бүхэл тоонуудыг зохицуулдаг тул тэдгээрийг тэмдэгт болгон хөрвүүлж, дамжуулах шугамын нөгөө үзүүрт буцааж хөрвүүлэх нь илүү дээр юм.

Weedinator хянагч нь үндсэндээ олон тооны бие даасан Arduino буюу 'MCU -тай 8 битийн систем юм. 8 битийг бодит хоёртын тэг гэж тодорхойлсон тохиолдолд дараах байдлаар харагдаж болно: B01100101:

(1x2)+(0x2)2+(1x2)3+(0x2)4+(0x2)5+(1x2)6+(1x2)7+(0x2)8 =

Аравтын оронтой тоон утга 128 64 32 16 8 4 2 1
Хоёртын тоон утга 0 1 1 0 0 1 0 1

= 101

Боломжтой хамгийн дээд утга нь 255 байна. Тиймээс бид дамжуулж болох "байт" хамгийн их бүхэл тоо2C бол 255, энэ нь маш хязгаарлагдмал юм!

Arduino дээр I ашиглан нэг удаад 32 хүртэлх ASCII тэмдэгт буюу байт дамжуулах боломжтой2C нь илүү ашигтай бөгөөд тэмдэгтүүдийн багцад 7 бит форматтай тоо, үсэг, хяналтын тэмдэгтүүд багтсан болно.

Зураг
Зураг

Аз болоход Arduino хөрвүүлэгч нь тэмдэгтээс хоёртын формат руу хөрвүүлэх бүх ажлыг цаана нь хийдэг боловч өгөгдөл дамжуулах зөв хэлбэрийг хүлээж байгаа бөгөөд 'Strings' -ийг хүлээж авахгүй хэвээр байна.

Аливаа зүйл төөрөгдөлд орж болох үе одоо. Тэмдэгтүүдийг char -ийн тодорхойлолтыг ашиглан ганц тэмдэгт эсвэл char [20] ашиглан 20 тэмдэгт бүхий нэг хэмжээст массиваар илэрхийлж болно. Arduino String нь тэмдэгтүүдийн массивтай маш төстэй бөгөөд хүний тархи ихэвчлэн "үг" гэж тайлбарладаг тэмдэгтүүдийн мөр юм.

// 'distanceCharacter' тэмдэгтийг бүтээдэг:

String санаачлагч = ""; distanceString = эхлүүлэгч + зайString; int n = distanceString.length (); for (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }

Дээрх код нь урт тэмдэгт мөрүүдийг тэмдэгтүүдийн массив болгон хувиргаж, дараа нь I дээр дамжуулж болно2C эсвэл цуврал.

Дамжуулах шугамын нөгөө төгсгөлд дараах кодыг ашиглан өгөгдлийг буцааж мөр болгон хөрвүүлж болно.

distanceString = distanceString + c; // мөр = мөр + тэмдэгт

Тэмдэгтийн массивыг бүхэл тоо руу шууд хөрвүүлэх боломжгүй бөгөөд эхлээд мөрийн формат руу орох ёстой боловч дараах код нь мөрөөс бүхэл тоо руу хөрвүүлэх болно.

int үр дүн = (distanceString).toInt ();

int distanceMetres = үр дүн;

Одоо бидэнд тооцоолол хийхэд ашиглаж болох бүхэл тоо байна. Хөвөгчийг (аравтын бутархайтай тоонууд) дамжуулах үе шатанд бүхэл тоонууд болгон хөрвүүлэх шаардлагатай бөгөөд дараа нь хоёр аравтын бутархайгаар 100 -д хуваах шаардлагатай.

хөвөх зайMetres = зайMm / 1000;

Эцэст нь тэмдэгтүүд болон бүхэл тоонуудын холимогоос мөр үүсгэж болно.

// Энд өгөгдлийг тэмдэгт болгон хөрвүүлдэг.

dataString = эхлүүлэгч + "BEAR" + zbearing + "DIST" + zdistance; // 32 тэмдэгтээр хязгаарлагдана // String = string + тэмдэгтүүд + intereger + тэмдэгтүүд + бүхэл тоо.

Кодын үлдсэн хэсэг нь Arduino -ийн номын сангийн янз бүрийн жишээнээс олж болох стандарт Arduino юм. 'Жишээ >>>> Strings -ийн жишээ болон' утас 'номын сангийн жишээг үзээрэй.

Хөвөгчийг дамжуулах, хүлээн авах бүх процесс энд байна.

Хөвөгч, бүхэл тоо, мөр, тэмдэгт массив…

➜➜ Slave дээрх бие даасан дүрүүдийг хүлээн авна уу. дараа нь Character ➜ String ➜ Бүтэн тоо ➜ Float болгон хөрвүүлнэ

Алхам 5: Өгөгдлийн сан ба вэб хуудас

Мэдээллийн сан ба вэб хуудас
Мэдээллийн сан ба вэб хуудас
Мэдээллийн сан ба вэб хуудас
Мэдээллийн сан ба вэб хуудас

Өгөгдлийн сангийн бүтцийг харуулсан бөгөөд php болон html кодын файлуудыг хавсаргасан болно. Аюулгүй байдлын үүднээс хэрэглэгчийн нэр, мэдээллийн сангийн нэр, хүснэгтийн нэр, нууц үгийг хаасан байна.

Алхам 6: Навигацийн туршилтууд

Навигацийн туршилтууд
Навигацийн туршилтууд
Навигацийн туршилтууд
Навигацийн туршилтууд
Навигацийн туршилтууд
Навигацийн туршилтууд

Би өгөгдөл бүртгэгчийг Weedinator -ийн хяналтын самбарт I2C -ээр холбож, Ublox M8M хиймэл дагуулын байршлын гүйцэтгэлийн талаар зарим ойлголттой боллоо.

Ногоон графикаар харуулсан 'Хүйтэн эхлэл' дээр модуль нь "ердийн" GPS -тэй төстэй маш олон алдаатайгаар эхэлсэн бөгөөд аажмаар алдаа нь багасч, ойролцоогоор 2 цагийн дараа роверын хооронд RTK залруулга хийгдэв. ба суурь (улаан загалмай хэлбэрээр харуулав). Энэ 2 цагийн хугацаанд үндсэн модуль нь өргөрөг, уртрагийн дундаж утгыг тасралтгүй бүрдүүлж, шинэчилж байгаа бөгөөд урьдчилан програмчлагдсан хугацааны интервал сайн засвар хийсэн гэж шийдсэний дараа дараагийн 2 график дээр "Халуун эхлэл" -ийн дараах зан төлөвийг харуулав. 'энд үндсэн модуль аль хэдийн сайн дундаж тооцоолсон байна. Дээд график нь 200 гаруй минутын хугацаатай бөгөөд заримдаа засвар нь алдагдаж, ровер нь NMEA -ийн Weedinator руу засвар түр зуурын хувьд найдваргүй болсон тухай мессеж илгээдэг.

Доод цэнхэр график нь дээд график дээрх улаан хайрцгийг "томруулж" харуулсан бөгөөд Ublox -ийн гүйцэтгэлийн сайн дүр зургийг харуулсан бөгөөд нийт хазайлт нь 40 мм бөгөөд энэ нь Weedinator -ийг байрлуулахад хангалттай сайн юм., гэхдээ тус тусдаа ургамлын эргэн тойронд хөрс боловсруулах хангалттай сайн биш байж болох уу?

Гурав дахь график дээр 100 метрийн зайтай Rover болон Base -тэй цуглуулсан өгөгдлүүдийг харуулав - Нэмэлт алдаа илрээгүй - тусгаарлах зай нь нарийвчлалд ямар ч ялгаагүй.

Алхам 7: Эцсийн шат

Зөвлөмж болгож буй: