Sadržaj:

☠WEEDINATOR☠ 2. dio: Satelitska navigacija: 7 koraka (sa slikama)
☠WEEDINATOR☠ 2. dio: Satelitska navigacija: 7 koraka (sa slikama)

Video: ☠WEEDINATOR☠ 2. dio: Satelitska navigacija: 7 koraka (sa slikama)

Video: ☠WEEDINATOR☠ 2. dio: Satelitska navigacija: 7 koraka (sa slikama)
Video: Голубая стрела (1958) фильм 2024, Srpanj
Anonim
☠WEEDINATOR☠ 2. dio: Satelitska navigacija
☠WEEDINATOR☠ 2. dio: Satelitska navigacija
☠WEEDINATOR☠ 2. dio: Satelitska navigacija
☠WEEDINATOR☠ 2. dio: Satelitska navigacija
☠WEEDINATOR☠ 2. dio: Satelitska navigacija
☠WEEDINATOR☠ 2. dio: Satelitska navigacija
☠WEEDINATOR☠ 2. dio: Satelitska navigacija
☠WEEDINATOR☠ 2. dio: Satelitska navigacija

Rođen je navigacijski sustav Weedinator!

Robusni poljoprivredni robot kojim se može upravljati pametnim telefonom.

… I umjesto da samo prođem kroz redovan proces kako je sastavljen, mislio sam pokušati objasniti kako to zapravo funkcionira - očito ne SVE, već najvažnije i najzanimljivije dijelove. Oprostite na riječi, ali meni je zanimljiv način na koji podaci teku između pojedinih modula i raščlanjen na najmanji nazivnik koji završavamo stvarnim "bitovima" - nulama i jedinicama. Ako ste ikada bili zbunjeni oko bitova, bajtova, znakova i nizova, možda je sada vrijeme da se zbunite? Pokušat ću i poništiti pomalo apstraktni koncept pod nazivom 'Error Canceling'.

Sam sustav ima sljedeće značajke:

  • GPS/GNSS: Ublox C94 M8M (Rover i baza)
  • 9DOF Razor IMU MO digitalni kompas
  • Fona 800H 2G GPRS mobilna
  • 2.2 "TFT ekran
  • Arduino Due 'Majstor'
  • Razni Arduino 'robovi'.

Čudno je da mnoge satelitske mornarice nemaju digitalni kompas, što znači da ako mirujete i izgubite se, morate hodati ili voziti u bilo kojem slučajnom smjeru prije nego što vam uređaj pokaže ispravan smjer sa satelita. Ako se izgubite u gustoj džungli ili podzemnom parkiralištu, puni ste se!

Korak 1: Kako to radi

Kako radi
Kako radi

Trenutno se jednostavan par koordinata prenosi s pametnog telefona ili računala, a zatim ih preuzima Weedinator. Oni se zatim tumače u zaglavlju u stupnjevima i udaljenost za putovanje u mm.

GPRS fona koristi se za pristup mrežnoj bazi podataka putem 2G mobilne mreže te za primanje i prijenos koordinata na Arduino Due putem Arduino Nano. Due je Master i kontrolira niz drugih Arduina kao Slaves putem I2C i serijskih sabirnica. Due može komunicirati s podacima uživo s Ubloxa i Razora i prikazati naslov koji izračunava jedan od njegovih Arduino robova.

Ubloxov satelitski tragač posebno je pametan jer koristi poništavanje pogrešaka kako bi dobio vrlo točne popravke - konačno nominalno ukupno odstupanje od oko 40 mm. Modul se sastoji od identičnog para, od kojih se jedan, "rover", kreće s Weedinator -om, a drugi, "baza" je fiksirana na stup negdje na otvorenom. Otkazivanje pogreške postiže se tako što baza može postići stvarno točno popravljanje korištenjem velike količine uzoraka tijekom vremena. Ti se uzorci zatim prosječno izračunavaju radi kompenzacije promjenjivih atmosferskih uvjeta. Da se uređaj kretao, očito ne bi mogao postići bilo kakvo usrednjavanje i bio bi u potpunoj milosti promjenjivog okruženja. Međutim, ako statički i pokretni uređaj rade zajedno, sve dok mogu međusobno komunicirati, mogu imati koristi od oba. U bilo kojem trenutku, osnovna jedinica i dalje ima pogrešku, ali ima i prethodno izračunati super točan popravak pa može izračunati stvarnu pogrešku oduzimanjem jednog skupa koordinata od drugog. Zatim šalje izračunatu pogrešku roveru putem radio veze, koja zatim dodaje pogrešku na vlastite koordinate i hej presto, imamo poništavanje pogreške! U praktičnom smislu, poništavanje pogreške čini razliku između ukupnog odstupanja od 3 metra do 40 mm.

Cijeli sustav izgleda komplicirano, ali zapravo ga je prilično lako izgraditi, bilo labavo na neprovodnoj površini ili pomoću PCB -a koji sam dizajnirao, što omogućuje sigurno pričvršćivanje svih modula. Budući razvoj izgrađen je na PCB-u, što omogućuje uključivanje širokog raspona Arduinosa za upravljanje motorima za upravljanje, kretanje prema naprijed i ugrađeni CNC stroj. Navigacija će također biti potpomognuta barem jednim sustavom za prepoznavanje objekata koji pomoću kamera osjeti objekte u boji, na primjer fluorescentne loptice za golf, koje su pažljivo postavljene u neku vrstu rešetke - Gledajte ovaj prostor!

Korak 2: Komponente

Komponente
Komponente
Komponente
Komponente
Komponente
Komponente
  • Ublox C94 M8M (Rover i baza) x 2 od
  • 9DOF Razor IMU MO digitalni kompas
  • Fona 800H 2G GPRS mobilna 1946
  • Arduino Due
  • Arduino Nano x 2 od
  • SparkFun Pro Micro
  • Adafruit 2.2 "TFT IL1940C 1480
  • PCB (pogledajte priložene Gerberove datoteke) x 2 od
  • 1206 SMD otpornici nula ohma x 12 of
  • 1206 LED dioda x 24 cm

PCB datoteka otvara se softverom 'Design Spark'.

Korak 3: Ožičenje modula

Ožičenje modula
Ožičenje modula

Ovo je lak dio - posebno jednostavan s PCB -om koji sam napravio - samo slijedite gornji dijagram. Potrebna je pažnja kako bi se izbjeglo ožičenje 3v modula na 5v, čak i na serijskim i I2C vodovima.

Korak 4: Kodirajte

Kodirati
Kodirati

Većina koda tiče se dobivanja podataka za uredno kretanje po sustavu i često postoji potreba za pretvaranjem formata podataka iz cjelobrojnih u plutajuće u nizove i u znakove, što može biti vrlo zbunjujuće! 'Serijski' protokol obrađivat će samo znakove, a I2C protokol će obrađivati vrlo male cijele brojeve, smatrao sam da je bolje pretvoriti ih u znakove, a zatim ih pretvoriti natrag u cijele brojeve na drugom kraju dalekovoda.

Weedinator kontroler je u osnovi 8 -bitni sustav s puno pojedinačnih Arduina ili MCU -ova. Kada se 8 bit opiše kao stvarne binarne nule i jedinice mogu izgledati ovako: B01100101 što bi bilo jednako:

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

Decimalna vrijednost znamenke 128 64 32 16 8 4 2 1
Vrijednost binarne znamenke 0 1 1 0 0 1 0 1

= 101

A najveća moguća vrijednost je 255…. Dakle, maksimalni cijeli broj 'bajta' možemo prenijeti preko I2C je 255, što je vrlo ograničavajuće!

Na Arduinu možemo istovremeno prenositi do 32 ASCII znaka ili bajta pomoću I2C, što je mnogo korisnije, a skup znakova uključuje brojeve, slova i kontrolne znakove u 7 -bitnom formatu kao što je dolje:

Slika
Slika

Srećom, prevoditelj Arduino obavlja sav posao pretvorbe iz znaka u binarni u pozadini, ali i dalje očekuje ispravnu vrstu znaka za prijenos podataka i neće prihvatiti 'nizove'.

Sada stvari mogu postati zbunjujuće. Znakovi se mogu izraziti kao pojedinačni znakovi pomoću definicije char ili kao jednodimenzionalni niz od 20 znakova pomoću char [20]. Arduino niz je vrlo sličan nizu znakova i doslovno je niz znakova koje ljudski mozak često tumači kao 'riječi'.

// Sastavlja znak 'distanceCharacter':

Inicijator niza = ""; distanceString = inicijator + distanceString; int n = distanceString.length (); for (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }

Gornji kôd može pretvoriti dugi niz znakova u niz znakova koji se zatim može prenijeti preko I2C ili serijski.

Na drugom kraju dalekovoda podaci se mogu pretvoriti natrag u niz pomoću sljedećeg koda:

distanceString = distanceString + c; // niz = niz + znak

Niz znakova ne može se izravno pretvoriti u cijeli broj i mora prvo otići u format niza, ali sljedeći kod će se pretvoriti iz niza u cijeli broj:

int result = (distanceString).toInt ();

int distanceMetres = rezultat;

Sada imamo cijeli broj koji možemo koristiti za izračune. Plutajuće brojeve (brojeve s decimalnom točkom) potrebno je pretvoriti u cijele brojeve u fazi prijenosa, a zatim podijeliti sa 100 za dvije decimale, npr.:

float distanceMetres = udaljenostMm / 1000;

Na kraju, niz se može stvoriti iz mješavine znakova i cijelih brojeva, npr.

// Ovdje se podaci sastavljaju u znak:

dataString = inicijator + "BEAR" + zbearing + "DIST" + zdistance; // Ograničeno na 32 znaka // String = niz + znakovi + međubroj + znakovi + cijeli broj.

Ostatak koda su standardne Arduino stvari koje se mogu pronaći u različitim primjerima u Arduino knjižnicama. Pogledajte primjer 'primjeri >>>> Nizovi' i primjere biblioteke 'žica'.

Evo cijelog procesa prijenosa i primanja plovka:

Pretvori float ➜ cijeli broj ➜ niz ➜ niz znakova ….. zatim PRENOS znakovnog niza s Master ➜➜

➜➜ PRIMITE pojedinačne likove na Slaveu…. zatim pretvorite znak ➜ niz ➜ cijeli broj ➜ float

Korak 5: Baza podataka i web stranica

Baza podataka i web stranica
Baza podataka i web stranica
Baza podataka i web stranica
Baza podataka i web stranica

Gore je prikazana struktura baze podataka te su priložene datoteke koda php i html. Korisnička imena, nazivi baza podataka, nazivi tablica i lozinke zabrisani su radi sigurnosti.

Korak 6: Navigacijski testovi

Navigacijski testovi
Navigacijski testovi
Navigacijski testovi
Navigacijski testovi
Navigacijski testovi
Navigacijski testovi

Uspio sam spojiti datalogger na upravljačku ploču Weedinator putem I2C i steći dojam o izvedbi satelitskog pozicioniranja Ublox M8M:

Na "hladnom pokretanju", prikazanom zelenim grafikonom, modul je započeo s mnogo pogrešaka, vrlo sličnih "normalnom" GPS -u, a postupno se pogreška smanjivala sve dok, nakon otprilike 2 sata, nije dobio RTK popravak između rovera i baza (prikazana kao crveni križ). Tijekom tog razdoblja od 2 sata, osnovni modul neprestano nadograđuje i ažurira prosječnu vrijednost zemljopisne širine i dužine i nakon što unaprijed programirani vremenski interval odluči da je dobro popravljen. Sljedeća 2 grafikona prikazuju ponašanje nakon 'vrućeg starta' 'gdje je osnovni modul već izračunao dobar prosjek. Gornji grafikon ima razdoblje od 200 minuta, a povremeno se popravak izgubi i rover šalje poruku NMEA Weedinatoru da je popravak privremeno postao nepouzdan.

Donji plavi grafikon "zumiraj" na crvenom okviru na gornjem grafikonu i prikazuje dobar reprezentativni snimak performansi Ubloxa, s ukupnim odstupanjem od 40 mm, što je više nego dovoljno dobro da vodi Weedinatora do njegove lokacije, ali možda nije dovoljno dobro za obradu tla oko pojedinih biljaka?

Treći grafikon prikazuje podatke prikupljene između Rovera i baze udaljenih 100 metara - Nije otkrivena dodatna pogreška - udaljenost razdvajanja nije utjecala na točnost.

Korak 7: Završni

Preporučeni: