Sadržaj:
- Korak 1: Kako to funkcionira
- Korak 2: Komponente
- Korak 3: Ožičenje modula
- Korak 4: Kodirajte
- Korak 5: Baza podataka i web stranica
- Korak 6: Navigacijski testovi
- Korak 7: Završni
Video: ☠WEEDINATOR☠ 2. dio: Satelitska navigacija: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Rođen je navigacijski sistem 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 da ću pokušati objasniti kako to zapravo funkcionira - očito ne SVE, već najvažnije i najzanimljivije dijelove. Izvinite zbog dosjetke, ali meni je zanimljivo kako podaci teku između pojedinačnih modula i raščlanjeni na najniži nazivnik na kraju dobijemo stvarne "bitove" - nule i jedinice. 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 apstraktan koncept pod nazivom 'Otkazivanje grešaka'.
Sam sistem sadrži:
- 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 'Master'
- Razni Arduino 'robovi'.
Čudno je da mnoge satelitske mornarice nemaju digitalni kompas, što znači da ako ste nepomični i izgubljeni, 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 funkcionira
Trenutno se jednostavan par koordinata učitava sa pametnog telefona ili računara, 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 -a. Due je Master i kontrolira niz drugih Arduina kao Slaves putem I2C i serijskih sabirnica. Due može komunicirati s aktivnim podacima iz Ubloxa i Razora i prikazati naslov koji izračunava jedan od njegovih Arduino robova.
Ublox -ov satelitski tragač je posebno pametan jer koristi poništavanje grešaka kako bi dobio vrlo precizne 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 greške postiže se tako što baza može postići zaista precizno popravljanje korištenjem velike količine uzoraka tokom vremena. Ti se uzorci zatim usrednjavaju kako bi se kompenzirali promjenjivi atmosferski uvjeti. 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čni 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 grešku, ali ima i prethodno izračunatu super tačnu ispravku, tako da može izračunati stvarnu grešku oduzimanjem jednog skupa koordinata od drugog. Zatim šalje izračunatu grešku roveru putem radio veze, koja zatim dodaje grešku na vlastite koordinate i hej presto, imamo grešku pri poništavanju! U praktičnom smislu, poništavanje greške čini razliku između 3 metra i 40 mm ukupnog odstupanja.
Kompletan sistem izgleda komplicirano, ali ga je zapravo prilično lako izgraditi, bilo labavo na neprovodnoj površini ili pomoću PCB -a koji sam dizajnirao, što omogućava sigurno pričvršćivanje svih modula. Budući razvoj je izgrađen na PCB-u, što omogućava uključivanje velikog broja Arduinosa za upravljanje motorima za upravljanje, kretanje prema naprijed i ugrađenu CNC mašinu. Navigacija će također biti potpomognuta barem jednim sistemom 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 - Pazite na ovaj prostor!
Korak 2: Komponente
- Ublox C94 M8M (Rover i baza) x 2 of
- 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 Gerber datoteke) x 2 od
- 1206 SMD otpornici nula ohma x 12 of
- 1206 LED dioda x 24 cm
PCB datoteka se otvara softverom 'Design Spark'.
Korak 3: Ožičenje modula
Ovo je lak dio - posebno jednostavan sa 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
Većina koda se bavi dobivanjem podataka za uredno kretanje po sistemu i često postoji potreba za pretvaranjem formata podataka iz cijelih brojeva u plutajuće u nizove i u znakove, što može biti vrlo zbunjujuće! 'Serijski' protokol će rukovati samo znakovima, a I2C protokol će obrađivati vrlo male cijele brojeve. Bilo mi je bolje da ih pretvorim u znakove, a zatim da ih na drugom kraju prijenosne linije pretvorim u cijele brojeve.
Weedinator kontroler je u osnovi 8 -bitni sistem 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 | |
Binarna vrijednost 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 koristeći I2C, što je mnogo korisnije, a skup znakova uključuje brojeve, slova i kontrolne znakove u 7 -bitnom formatu kao što je dolje:
Srećom, Arduino kompajler obavlja sav posao konverzije iz znaka u binarni u pozadini, ali i dalje očekuje ispravan tip znaka za prijenos podataka i neće prihvatiti 'nizove'.
Sada je vrijeme kada stvari mogu postati zbunjujuće. Znakovi se mogu izraziti kao pojedinačni znakovi koristeći definiciju 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; // string = string + znak
Niz znakova ne može se direktno 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 rezultat = (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 = distanceMm / 1000;
Na kraju, niz se može stvoriti iz mješavine znakova i cijelih brojeva, npr.
// Ovdje se podaci kompiliraju u znak:
dataString = inicijator + "BEAR" + zbearing + "DIST" + zdistance; // Ograničeno na 32 znaka // String = string + characters + integer + characters + integer.
Ostatak koda su standardne Arduino stvari koje se mogu pronaći u različitim primjerima u Arduino bibliotekama. Pogledajte primjer 'primjeri >>>> Nizovi' i primjere biblioteke 'žica'.
Evo cijelog procesa za prijenos i prijem float:
Pretvori float ➜ cijeli broj ring niz ➜ niz znakova ….. zatim PRENOS niza znakova iz Master ➜➜
➜➜ PRIMITE pojedinačne likove na Slave -u…. zatim pretvorite znak ➜ niz ➜ cijeli broj ➜ float
Korak 5: Baza podataka i web stranica
Gore je prikazana struktura baze podataka i datoteke php i html koda su priložene. Korisnička imena, nazivi baza podataka, nazivi tablica i lozinke izbrisani su radi sigurnosti.
Korak 6: Navigacijski testovi
Uspio sam spojiti datalogger na upravljačku ploču Weedinator preko I2C i steći dojam o performansama satelitskog pozicioniranja Ublox M8M:
Na 'hladnom startu', prikazanom zelenim grafikonom, modul je započeo s mnogo grešaka, vrlo sličnih 'normalnom' GPS -u, i postupno se greška smanjivala sve dok, nakon otprilike 2 sata, nije dobio RTK popravku između rovera i baza (prikazana kao crveni križ). Tokom tog perioda od 2 sata, osnovni modul neprestano nadograđuje i ažurira prosječnu vrijednost za zemljopisnu širinu i dužinu 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 je "zumiranje" 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 Weedinator 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 greška - udaljenost razdvajanja nije napravila razliku u tačnosti.
Korak 7: Završni
Preporučuje se:
Drvena offset satelitska satelitska antena izgrađena od ogrebotina: 11 koraka (sa slikama)
Drvena ofsetna satelitska antena napravljena od ogrebotina: Naišao sam na neke web stranice na kojima je nekoliko ljudi izgradilo vlastite satelitske antene vrhunskog fokusa, jedan Australac je čak napravio ogromnu ofsetnu antenu od 13 metara. Koja je razlika? Glavni fokus je ono na što pomislite kada neko kaže 'satelitski dis
Raspberry Pi glasovna navigacija pomaže slijepim osobama: 7 koraka (sa slikama)
Raspberry Pi Glasovna navigacija pomaže slijepim osobama: Zdravo U ovom uputstvu ćemo vidjeti kako malina pi može pomoći slijepim osobama koristeći glasovnu instrukciju koju je definirao korisnik. Evo, uz pomoć ultrazvučnog senzorskog ulaza za mjerenje udaljenosti koju možemo glasovni vodič slijepcima do slijedećeg
Navigacija robotom sa senzorima za cipele, bez GPS -a, bez karte: 13 koraka (sa slikama)
Navigacija robotom sa senzorima za cipele, bez GPS-a, bez karte: Robot se kreće unaprijed programiranom putanjom i prenosi (preko bluetootha) svoje stvarne informacije o kretanju na telefon za praćenje u stvarnom vremenu. Arduino je unaprijed programiran s putanjom, a oblu se koristi za osjet kretanja robota. oblu prenosi informacije o kretanju
☠WEEDINATOR☠ Dio 4: Geometrijski kod diferencijalnog upravljanja: 3 koraka
☠WEEDINATOR☠ Dio 4: Geometrijski kod diferencijalnog upravljanja: Ako imate vremena pogledati gornji video, primijetit ćete da postoje čudni zvukovi koje motori na upravljaču zaustavljaju s vremena na vrijeme dok WEEDINATOR plovi 3 tačka skretanja. Motori se u osnovi zaglavljuju protiv
☠WEEDINATOR☠ Dio 3: Konstrukcija šasije: 8 koraka (sa slikama)
EWEEDINATOR☠ Dio 3: Konstrukcija šasije: Zima je savršeno vrijeme za izgradnju mašina, posebno kada se radi o zavarivanju i plazma rezanju jer oba pružaju priličnu količinu topline. Ako se pitate što je plazma rezač, pročitajte dalje za dublje postupke. Ako ste bili