Mundarija:

☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh orqali navigatsiya: 7 qadam (rasmlar bilan)
☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh orqali navigatsiya: 7 qadam (rasmlar bilan)

Video: ☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh orqali navigatsiya: 7 qadam (rasmlar bilan)

Video: ☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh orqali navigatsiya: 7 qadam (rasmlar bilan)
Video: Как спрятать данные в ячейках Excel? 2024, Noyabr
Anonim
☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh navigatsiyasi
☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh navigatsiyasi
☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh navigatsiyasi
☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh navigatsiyasi
☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh navigatsiyasi
☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh navigatsiyasi
☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh navigatsiyasi
☠WEEDINATOR☠ 2 -qism: Sun'iy yo'ldosh navigatsiyasi

Weedinator navigatsiya tizimi tug'ildi!

Qishloq xo'jaligi robotini aqlli telefon boshqarishi mumkin.

… Oddiy jarayonni o'tkazishdan ko'ra, men uning qanday ishlashini tushuntirmoqchi bo'ldim - hamma narsa aniq emas, balki eng muhim va qiziqarli qismlar. Iltimos, kechirim so'rayman, lekin ma'lumotlar birma -bir modullar o'rtasida qanday oqadi, men qiziq deb topaman va biz uni "bitlar" bilan tugaydigan eng past mezonga aylantiramiz - nol va birlik. Agar siz hech qachon bitlar, baytlar, belgilar va satrlar haqida chalkashib ketgan bo'lsangiz, unda hozir chalkashish vaqti bo'lishi mumkinmi? Men ham "Xatolikni bekor qilish" deb nomlangan biroz mavhum kontseptsiyani sinab ko'rmoqchiman.

Tizimning o'ziga xos xususiyatlari:

  • GPS/GNSS: Ublox C94 M8M (Rover va Base)
  • 9DOF Razor IMU MO raqamli kompas
  • Fona 800H 2G GPRS uyali
  • 2.2 dyuymli TFT ekrani
  • Arduino "ustoz"
  • Har xil Arduino "qullari".

Ajablanarlisi shundaki, ko'pgina Sat Navlarida raqamli kompas yo'q, ya'ni agar siz harakatsiz bo'lsangiz va yo'qolgan bo'lsangiz, qurilma sizga sun'iy yo'ldoshlardan to'g'ri yo'nalishni ko'rsatmaguncha, har qanday tasodifiy yo'nalishda yurishingiz yoki haydashingiz kerak bo'ladi. Agar siz qalin o'rmonda yoki er osti avtoturargohida adashib qolsangiz, siz to'lib -toshgansiz!

1 -qadam: Bu qanday ishlaydi

U qanday ishlaydi
U qanday ishlaydi

Hozirgi vaqtda aqlli telefon yoki kompyuterdan oddiy juftlik koordinatalari yuklanmoqda, ularni Weedinator yuklaydi. Keyin ular darajadagi sarlavha va mm bilan yurish masofasi sifatida talqin qilinadi.

GPRS fona 2G uyali tarmog'i orqali onlayn ma'lumotlar bazasiga kirish va Arduino Nano orqali Arduino Due koordinatalarini qabul qilish va uzatish uchun ishlatiladi. Due - bu usta va I2C va ketma -ket avtobuslar orqali boshqa Arduinolarni qul sifatida boshqaradi. Due Ublox va Razor jonli ma'lumotlari bilan o'zaro aloqada bo'lishi va Arduino xizmatkorlaridan biri tomonidan hisoblangan sarlavhani ko'rsatishi mumkin.

Ublox sun'iy yo'ldosh kuzatuvchisi juda aqlli, chunki u xatolarni bekor qilishni ishlatib, aniq tuzatishlarni oladi - yakuniy nominal umumiy og'ish taxminan 40 mm. Modul bir xil juftlikdan iborat bo'lib, ulardan biri "rover" Weedinator bilan harakat qiladi, ikkinchisi esa "tayanch" ochiq joyda ustunga o'rnatiladi. Xatolik bekor qilinishiga baza vaqt o'tishi bilan katta miqdordagi namunalar yordamida haqiqatan ham aniq tuzatishga erisha oladi. Keyin bu namunalar atmosfera sharoitining o'zgarishini qoplash uchun o'rtacha hisoblanadi. Agar qurilma harakatlansa, u hech qanday o'rtacha ko'rsatkichga ega bo'lolmaydi va o'zgaruvchan muhitning rahm -shafqatida bo'lardi. Biroq, agar statik va harakatlanuvchi qurilma birgalikda ishlasa, ular bir -birlari bilan aloqa qila olsalar, ikkalasidan ham foyda olishlari mumkin. Istalgan vaqtda, bazaviy blokda hali ham xato bor, lekin u oldindan hisoblangan juda aniq tuzatishga ega, shuning uchun u haqiqiy xatoni bir koordinatalar majmuasini boshqasidan chiqarib hisoblashi mumkin. Keyin hisoblangan xatoni radio aloqasi orqali roverga yuboradi, keyin esa xatoni o'z koordinatalariga qo'shib qo'yadi va bizni bekor qilishda xato bor! Amaliy nuqtai nazardan, xatolarni bekor qilish 3 metrdan 40 mm gacha umumiy og'ish o'rtasidagi farqni keltirib chiqaradi.

To'liq tizim murakkab ko'rinadi, lekin uni o'tkazuvchan bo'lmagan yuzada yoki men ishlab chiqargan PCB yordamida qurish juda oson, bu esa barcha modullarni mahkam bog'lab qo'yishga imkon beradi. Kelgusi rivojlanish PCB-ga o'rnatiladi, bu esa Arduino-ning keng assortimentini boshqarish, oldinga siljish va bortdagi CNC mashinasini boshqarish motorlarini boshqarishga imkon beradi. Navigatsiyaga rangli ob'ektlarni sezish uchun kameralar yordamida hech bo'lmaganda bitta ob'ektni aniqlash tizimi yordam beradi, masalan, qandaydir panjara ichida ehtiyotkorlik bilan joylashtirilgan lyuminestsent golf to'plari - Bu joyni tomosha qiling!

2 -qadam: komponentlar

Komponentlar
Komponentlar
Komponentlar
Komponentlar
Komponentlar
Komponentlar
  • Ublox C94 M8M (Rover va Base) x 2 dyuym
  • 9DOF Razor IMU MO raqamli kompas
  • Fona 800H 2G GPRS uyali telefon, 1946 yil
  • Arduino tufayli
  • Arduino Nano x 2 dan
  • SparkFun Pro Micro
  • Adafruit 2.2 "TFT IL1940C 1480
  • PCB (biriktirilgan Gerber fayllariga qarang) x 2 of
  • 1206 SMD nol ohmli rezistorlar x 12 dyuym
  • 1206 ta LED x 24 dyuym

PCB fayli "Design Spark" dasturi bilan ochiladi.

3 -qadam: Modullarni ulash

Modullarni ulash
Modullarni ulash

Bu oson qism, ayniqsa men ishlab chiqargan PCB bilan oson - yuqoridagi diagramaga amal qiling. 3v modullarni 5V ga, hatto ketma -ket va I2C liniyalariga ulashdan ehtiyot bo'lish kerak.

4 -qadam: kod

Kod
Kod

Kodning aksariyati tizimda tartibli harakatlanish uchun ma'lumot olish bilan bog'liq va ko'pincha ma'lumotlar formatlarini butun sonlardan suzuvchi qatorlarga va belgilarga aylantirish kerak bo'ladi, bu juda chalkash bo'lishi mumkin! "Serial" protokoli faqat belgilar bilan ishlaydi va men2C protokoli juda kichik tamsayılarni boshqaradi, men ularni belgilarga aylantirishni, keyin esa uzatish liniyasining boshqa uchidagi tamsayılarga aylantirishni afzal ko'rdim.

Weedinator tekshirgichi asosan 8 bitli tizim bo'lib, unda ko'plab individual Arduinos yoki MCU -lar mavjud. Agar 8 bit haqiqiy ikkilik nol va bir xil deb ta'riflansa, u quyidagicha ko'rinishi mumkin: B01100101, u teng:

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

O'nli raqamli raqam 128 64 32 16 8 4 2 1
Ikkilik raqamli qiymat 0 1 1 0 0 1 0 1

= 101

Va mumkin bo'lgan maksimal qiymat - 255 …. Shunday qilib, "bayt" ning maksimal tamsayı I orqali uzatilishi mumkin2C - 255, bu juda cheklangan!

Arduino -da I yordamida bir vaqtning o'zida 32 ta ASCII belgisini yoki baytni uzatishimiz mumkin2C, bu ancha foydalidir va belgilar majmui 7 bitli formatda raqamlar, harflar va nazorat belgilarini o'z ichiga oladi:

Rasm
Rasm

Yaxshiyamki, Arduino kompilyatori fonda ikkilikka aylantirishning barcha ishlarini bajaradi, lekin u baribir ma'lumotlarni uzatish uchun to'g'ri belgi turini kutadi va "Strings" ni qabul qilmaydi.

Hozir hamma narsa chalkash bo'lishi mumkin. Belgilar char ta'rifi yordamida bitta belgi yoki char [20] yordamida 20 belgidan iborat bir o'lchovli massiv sifatida ifodalanishi mumkin. Arduino qatori belgilar majmuasiga juda o'xshaydi va tom ma'noda inson miyasi tomonidan "so'zlar" deb talqin qilinadigan belgilar majmuasidir.

// "distanceCharacter" belgisini yaratadi:

String tashabbuskori = ""; masofaString = tashabbuskor + masofaString; int n = masofaString.length (); uchun (int aa = 0; aa <= n; aa ++) {masofaCharacter [aa] = masofaString [aa]; }

Yuqoridagi kod uzun belgilar qatorini belgilar qatoriga aylantirishi mumkin, ular keyinchalik I orqali uzatilishi mumkin2C yoki serial.

Elektr uzatish liniyasining boshqa uchida ma'lumotlarni quyidagi kod yordamida mag'lubiyatga qaytarish mumkin:

masofaString = masofaString + c; // string = string + belgi

Belgilar majmuasini to'g'ridan -to'g'ri butun songa aylantirish mumkin emas va birinchi navbatda satr formatiga o'tish kerak, lekin quyidagi kod satrdan butun songa aylanadi:

int natijasi = (masofaString).toInt ();

int masofaMetres = natija;

Endi bizda butun son bor, biz hisob -kitoblarni amalga oshirishimiz mumkin. Float (o'nlik kasrli raqamlar) uzatish bosqichida tamsayılarga aylantirilishi kerak, so'ngra ikkita o'nlik kasr uchun 100 ga bo'linadi, masalan:

float distanceMetres = masofaMm / 1000;

Nihoyat, satr belgilar va butun sonlar aralashmasidan yaratilishi mumkin, masalan:

// Bu erda ma'lumotlar belgiga yig'iladi:

dataString = tashabbuskor + "BEAR" + zbearing + "DIST" + zdistance; // 32 belgigacha cheklangan // String = string + belgilar + intereger + belgilar + tamsayı.

Kodning qolgan qismi Arduino kutubxonalaridagi turli misollarda topilishi mumkin bo'lgan standart Arduino materiallari. "Misollar >>>> Stringlar misoli va" simli "kutubxona misollarini ko'rib chiqing.

Mana, floatni uzatish va qabul qilishning butun jarayoni:

Float ➜ Butun son ➜ String ➜ Belgilar qatorini ….. keyin Master dan TRANSMIT belgilar qatorini aylantirish.

➜➜ Slave -da individual belgilarni qabul qiling …. keyin belgini, satrini, butun sonini, o'zgarishini aylantiring

5 -qadam: ma'lumotlar bazasi va veb -sahifa

Ma'lumotlar bazasi va veb -sahifa
Ma'lumotlar bazasi va veb -sahifa
Ma'lumotlar bazasi va veb -sahifa
Ma'lumotlar bazasi va veb -sahifa

Yuqorida ma'lumotlar bazasi tuzilishi ko'rsatilgan va php va html kodli fayllar biriktirilgan. Xavfsizlik uchun foydalanuvchi nomlari, ma'lumotlar bazasi nomlari, jadval nomlari va parollar o'chiriladi.

6 -qadam: Navigatsiya testlari

Navigatsiya testlari
Navigatsiya testlari
Navigatsiya testlari
Navigatsiya testlari
Navigatsiya testlari
Navigatsiya testlari

Ma'lumotlar ro'yxatlagichini Weedinator boshqaruv paneliga I2C orqali ulashga muvaffaq bo'ldim va Ublox M8M sun'iy yo'ldoshining joylashuvi haqida bir oz tasavvurga ega bo'ldim:

Yashil grafikda ko'rsatilgan "Sovuq ishga tushirish" rejimida modul "oddiy" GPS -ga o'xshash juda ko'p xatolar bilan boshlandi va asta -sekin xato kamayib, taxminan 2 soatdan so'ng, rover o'rtasida RTK tuzatish o'rnatildi. va taglik (qizil xoch sifatida ko'rsatilgan). Bu 2 soatlik vaqt davomida tayanch modul doimiy ravishda kenglik va uzunlik uchun o'rtacha qiymatni yaratadi va yangilaydi va oldindan dasturlashtirilgan vaqt oralig'i uni yaxshi tuzatishga qaror qilganidan so'ng, keyingi 2 ta grafik "issiq boshlanish" dan keyingi xatti-harakatni ko'rsatadi. Bu erda asosiy modul yaxshi o'rtacha hisoblab chiqdi. Yuqori grafik 200 daqiqadan oshadi va vaqti -vaqti bilan tuzatish yo'qoladi va rover Weedinator -ga NMEA xabarini yuboradi, bu tuzatish vaqtincha ishonchsiz bo'lib qoldi.

Pastki ko'k grafika yuqori grafadagi qizil qutidagi "kattalashtirish" bo'lib, Ublox ishining yaxshi tasvirini ko'rsatadi, umumiy og'ish 40 mm., lekin, ehtimol, alohida o'simliklar atrofida tuproqni etishtirish uchun etarlicha yaxshi emasmi?

Uchinchi grafikda Rover va Base bilan 100 metr masofada yig'ilgan ma'lumotlar ko'rsatilgan - Qo'shimcha xato aniqlanmagan - ajratish masofasi aniqlik bilan farq qilmagan.

7 -qadam: Yakuniy

Tavsiya: