Mündəricat:

☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası: 7 addım (şəkillərlə)
☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası: 7 addım (şəkillərlə)

Video: ☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası: 7 addım (şəkillərlə)

Video: ☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası: 7 addım (şəkillərlə)
Video: 3 ВИДА МЯСА НА ГРИЛЕ / КУРИЦА/ БАРАНЬЯ НОГА / Часть 2. SUB ENG, ESP 2024, Noyabr
Anonim
☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası
☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası
☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası
☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası
☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası
☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası
☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası
☠WEEDINATOR☠ 2 -ci hissə: Peyk naviqasiyası

Weedinator naviqasiya sistemi doğuldu!

Ağıllı telefonla idarə oluna bilən fırlanan kənd təsərrüfatı robotu.

… Və necə bir araya gətirildiyinin müntəzəm prosesindən keçmək əvəzinə, əslində necə işlədiyini izah etməyə çalışacağımı düşündüm - açıq -aydın hər şey deyil, ən vacib və maraqlı hissələr. Zəhmət olmasa bəhanə üçün üzr istəyin, ancaq məlumatların fərdi modullar arasında necə axdığını, əslində "bit" lərlə bitirdiyimiz ən aşağı məxrəcə - sıfırlara və birilərə bölündüyüm budur. Əgər bitlər, baytlar, simvollar və sətirlər haqqında heç bir fikiriniz yoxdursa, indi qarışıq olmaq vaxtıdır? Bir az mücərrəd bir anlayışı sınamağa çalışacağam.

Sistemin özünəməxsus xüsusiyyətləri:

  • GPS/GNSS: Ublox C94 M8M (Rover və Base)
  • 9DOF Razor IMU MO rəqəmsal kompas
  • Fona 800H 2G GPRS mobil
  • 2.2 "TFT ekran
  • Arduino 'Usta'
  • Müxtəlif Arduino 'Qullar'.

Qəribədir ki, bir çox Sat Navs -da rəqəmsal bir kompas yoxdur, yəni hərəkətsiz və itirilmiş olsanız, cihaz sizə peyklərdən düzgün istiqamət göstərmədən əvvəl hər hansı bir təsadüfi istiqamətdə getməlisiniz və ya sürməlisiniz. Qalın bir ormanda və ya yeraltı avtomobil parkında itkin düşsəniz!

Addım 1: Necə Çalışır

Bu necə işləyir
Bu necə işləyir

Hal -hazırda, ağıllı telefondan və ya kompüterdən sadə bir cüt koordinat yüklənir, sonra Weedinator tərəfindən endirilir. Bunlar daha sonra dərəcə ilə başlıq və mm ilə səyahət məsafəsi olaraq şərh olunur.

GPRS fona, 2G mobil şəbəkəsi vasitəsi ilə bir onlayn məlumat bazasına daxil olmaq və Arduino Nano vasitəsilə Arduino Due koordinatlarını almaq və ötürmək üçün istifadə olunur. Due Masterdir və I2C və seriyalı avtobuslar vasitəsi ilə bir sıra digər Arduinoları qul kimi idarə edir. Due, Ublox və Razor -dan canlı məlumatlar ilə əlaqə qura bilər və Arduino qullarından biri tərəfindən hesablanmış bir başlıq göstərə bilər.

Ublox peyk izləyicisi xüsusilə ağıllıdır, çünki çox dəqiq düzəlişlər əldə etmək üçün səhv ləğv etməyi istifadə edir - təxminən 40 mm -lik yekun nominal ümumi sapma. Modul eyni cütdən ibarətdir, bunlardan biri 'rover' Weedinator ilə hərəkət edir, digəri isə 'baza' açıq yerdə bir dirəyə sabitlənir. Xətanın ləğvi, zaman keçdikcə çox miqdarda nümunə istifadə edərək əslində dəqiq bir düzəliş əldə edə bilməsi ilə əldə edilir. Bu nümunələr daha sonra dəyişən atmosfer şəraitini kompensasiya etmək üçün ortalamalanır. Cihaz hərəkət etsəydi, heç bir ortalamaya sahib ola bilməyəcəyi və dəyişən bir mühitin tamamilə mərhəmətində olacağı açıq idi. Ancaq statik və hərəkət edən bir cihaz birlikdə işləsələr, bir -birləri ilə ünsiyyət qura bilsələr, hər ikisindən də faydalana bilərlər. İstənilən vaxt, əsas bölmədə hələ də bir səhv var, ancaq əvvəllər hesablanmış çox dəqiq bir düzəliş var, buna görə bir koordinat dəstini digərindən çıxarmaqla həqiqi xətanı hesablaya bilər. Daha sonra hesablanan xətanı radio bağlantısı vasitəsi ilə roverə göndərir, bu da xətanı öz koordinatlarına əlavə edir və hey presto, ləğv edərkən səhvimiz var! Praktik baxımdan, səhvlərin ləğvi 3 metr və 40 mm ümumi sapma arasındakı fərqi yaradır.

Tam sistem mürəkkəb görünür, amma əslində olduqca keçiricidir, ya keçirtməyən bir səthdə boşdur, ya da bütün modulların etibarlı şəkildə bərkidilməsinə imkan verən dizayn etdiyim PCB -dən istifadə etməklə. Gələcək inkişaf, PCB üzərində qurulub, sükan, irəli hərəkət və yerüstü CNC maşını üçün mühərrikləri idarə etmək üçün geniş bir sıra Arduino yığmağa imkan verir. Naviqasiya, rəngli cisimləri hiss etmək üçün kameralardan istifadə edərək ən azı bir obyekt tanıma sistemi ilə kömək edəcək, məsələn, bir növ şəbəkədə diqqətlə yerləşdirilmiş floresan golf topları - Bu məkana baxın!

Addım 2: Komponentlər

Komponentlər
Komponentlər
Komponentlər
Komponentlər
Komponentlər
Komponentlər
  • Ublox C94 M8M (Rover və Base) x 2 of
  • 9DOF Razor IMU MO rəqəmsal kompas
  • Fona 800H 2G GPRS mobil 1946
  • Arduino səbəbiylə
  • Arduino Nano x 2
  • SparkFun Pro Micro
  • Adafruit 2.2 "TFT IL1940C 1480
  • PCB (əlavə Gerber fayllarına baxın) x 2 of
  • 1206 SMD sıfır ohm rezistor x 12 düym
  • 1206 LED x 24 düym

PCB faylı 'Design Spark' proqramı ilə açılır.

Addım 3: Modulların çəkilməsi

Modulların çəkilməsi
Modulların çəkilməsi

Bu asan hissədir - hazırladığım PCB ilə xüsusilə asandır - yuxarıdakı diaqrama əməl edin. Seriyalı və I2C xətlərində belə 3v modullarını 5v -ə bağlamamaq üçün diqqətli olmaq lazımdır.

Addım 4: Kod

Kod
Kod

Kodun çoxu sistemdə nizamlı bir şəkildə hərəkət etmək üçün məlumat əldə etməklə əlaqədardır və çox vaxt məlumat formatlarını tam ədədlərdən üzgüçülərə sətirlərə və simvollara çevirmək lazımdır ki, bu da çox qarışıqlıq yarada bilər! 'Serial' protokolu yalnız simvolları idarə edəcək, I isə2C protokolu çox kiçik ədədləri idarə edəcək, onları simvollara çevirməyi və sonra ötürmə xəttinin digər ucundakı tam ədədlərə çevirməyi daha yaxşı gördüm.

Weedinator nəzarətçisi, əsasən çoxlu fərdi Arduinos və ya 'MCU'ları olan 8 bitlik bir sistemdir. 8 bit həqiqi ikili sıfırlar və olanlar kimi təsvir edildikdə, belə görünə bilər: B01100101:

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

Ondalık Rəqəm Dəyəri 128 64 32 16 8 4 2 1
İkili Rəqəm Dəyəri 0 1 1 0 0 1 0 1

= 101

Və mümkün olan maksimum dəyər 255…. Beləliklə, I üzərində ötürə biləcəyimiz maksimum 'bayt' tamsayı2C 255 -dir, bu çox məhduddur!

Arduino -da I istifadə edərək bir anda 32 ASCII simvolu və ya baytı ötürə bilərik2Daha çox faydalı olan C və xarakter dəstinə rəqəmlər, hərflər və nəzarət simvolları 7 bit formatında aşağıdakı kimi daxildir:

Şəkil
Şəkil

Xoşbəxtlikdən, Arduino tərtibçisi arxa planda xarakterdən ikiliyə çevrilmə ilə bağlı bütün işləri görür, lakin yenə də məlumat ötürülməsi üçün düzgün xarakter növünü gözləyir və 'Strings' qəbul etmir.

İşlərin qarışıq ola biləcəyi vaxtdır. Simvollar char tərifindən istifadə edərək tək simvollar və ya char [20] istifadə edərək 20 simvoldan ibarət bir ölçülü bir sıra kimi ifadə edilə bilər. Bir Arduino String bir xarakter dizisinə çox bənzəyir və sözün əsl mənasında insan beyni tərəfindən 'sözlər' olaraq şərh olunur.

// 'distanceCharacter' xarakterini qurur:

String başlatıcısı = ""; distanceString = başlatıcı + məsafəString; int n = distanceString.length (); for (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }

Yuxarıdakı kod, uzun bir simli simli, sonra I üzərindən ötürülə bilən bir simvol simvoluna çevirə bilər2C və ya serial.

Göndərmə xəttinin digər ucunda, məlumatlar aşağıdakı koddan istifadə edərək yenidən bir sətirə çevrilə bilər:

məsafəString = məsafəString + c; // simli = simli + xarakter

Bir simvol dizisi birbaşa tamsayıya çevrilə bilməz və əvvəlcə simli formatına keçməlidir, ancaq aşağıdakı kod bir sətirdən tamsayıya çevriləcək:

int nəticə = (distanceString).toInt ();

int distanceMetres = nəticə;

İndi hesablamalar aparmaq üçün istifadə edə biləcəyimiz bir tam ədəd var. Floats (ondalık nöqtəsi olan ədədlər) ötürmə mərhələsində tam ədədlərə çevrilməli və sonra iki ondalık onluq üçün 100 -ə bölünməlidir, məsələn:

float distanceMetres = məsafəMm / 1000;

Nəhayət, simvol və tam ədədlərin qarışığından bir simli yaratmaq olar, məsələn:

// Məlumatların xarakterə çevrildiyi yer budur:

dataString = başlatıcı + "BEAR" + zbearing + "DIST" + zdistance; // 32 simvolla məhdudlaşır // String = simli + simvollar + intereger + simvollar + tam ədəd.

Kodun qalan hissəsi Arduino kitabxanalarındakı müxtəlif nümunələrdə tapıla bilən standart Arduino məhsullarıdır. 'Nümunələr >>>> Strings nümunəsinə və' tel 'kitabxana nümunələrinə baxın.

Bir float ötürmək və almaq üçün bütün proses budur:

Float ➜ Tam ədəd ➜ String acter Character silsiləsini….. sonra Master -dən TRANSMIT simvol silsiləsini çevirin ➜➜

➜➜ Slave -da fərdi personajları qəbul edin …. sonra Character ➜ String ➜ Integer ➜ Float çevirin

Addım 5: Verilənlər bazası və veb səhifəsi

Verilənlər bazası və veb səhifəsi
Verilənlər bazası və veb səhifəsi
Verilənlər bazası və veb səhifəsi
Verilənlər bazası və veb səhifəsi

Yuxarıda verilənlər bazası quruluşu göstərilir və php və html kod faylları əlavə olunur. İstifadəçi adları, verilənlər bazası adları, cədvəl adları və parollar təhlükəsizlik üçün boşaldılır.

Addım 6: Naviqasiya testləri

Naviqasiya testləri
Naviqasiya testləri
Naviqasiya testləri
Naviqasiya testləri
Naviqasiya testləri
Naviqasiya testləri

I2C vasitəsilə Weedinator idarəetmə lövhəsinə bir datalogger bağlaya bildim və Ublox M8M peyk yerləşdirmə performansı haqqında bir fikir əldə etdim:

Yaşıl qrafiklə göstərilmiş 'Soyuq Başlanğıcda', modul 'normal' GPS -ə bənzər bir çox səhvlə başladı və təxminən 2 saatdan sonra rover arasında RTK düzəlişini tapana qədər tədricən səhv azaldı. və baza (qırmızı xaç kimi göstərilir). Bu 2 saatlıq müddət ərzində baza modulu davamlı olaraq enlem və uzunluq üçün ortalama bir dəyər qurur və yeniləyir və əvvəlcədən proqramlaşdırılmış vaxt aralığının yaxşı bir düzəlişə sahib olduğuna qərar verdikdən sonra. 'əsas modul artıq yaxşı bir orta hesabladı. Üst qrafik 200 dəqiqədən çoxdur və bəzən düzəliş itirilir və rover, Weedinator -a düzəlişin müvəqqəti olaraq etibarsız hala gəldiyi barədə bir NMEA mesajı göndərir.

Aşağı mavi qrafik, üst qrafikdəki qırmızı qutunun 'böyütməsidir' və ümumi sapması 40 mm olan Ublox performansının yaxşı bir təqdimat şəklini göstərir, bu da Weedinatoru boşluğuna istiqamətləndirmək üçün kifayət qədər yaxşıdır., lakin bəlkə də ayrı -ayrı bitkilərin ətrafında torpağı becərmək üçün kifayət qədər yaxşı deyilmi?

Üçüncü qrafik 100 metr aralıda Rover və Base ilə toplanan məlumatları göstərir - Əlavə bir səhv aşkar edilməmişdir - ayrılma məsafəsi dəqiqlik baxımından heç bir fərq etməmişdir.

Addım 7: Final

Tövsiyə: