Obsah:

☠WEEDINATOR☠ Část 2: Satelitní navigace: 7 kroků (s obrázky)
☠WEEDINATOR☠ Část 2: Satelitní navigace: 7 kroků (s obrázky)

Video: ☠WEEDINATOR☠ Část 2: Satelitní navigace: 7 kroků (s obrázky)

Video: ☠WEEDINATOR☠ Část 2: Satelitní navigace: 7 kroků (s obrázky)
Video: Секрет опытных мастеров! Как легко состыковать материал, если в углу стоит круглая труба? #shorts 2024, Červenec
Anonim
EWEEDINATOR☠ Část 2: Satelitní navigace
EWEEDINATOR☠ Část 2: Satelitní navigace
EWEEDINATOR☠ Část 2: Satelitní navigace
EWEEDINATOR☠ Část 2: Satelitní navigace
EWEEDINATOR☠ Část 2: Satelitní navigace
EWEEDINATOR☠ Část 2: Satelitní navigace
EWEEDINATOR☠ Část 2: Satelitní navigace
EWEEDINATOR☠ Část 2: Satelitní navigace

Navigační systém Weedinator je na světě!

Toulavý zemědělský robot, který lze ovládat chytrým telefonem.

… A místo abych procházel pravidelným procesem, jak je to dohromady, řekl jsem si, že se pokusím vysvětlit, jak to vlastně funguje - evidentně ne VŠECHNO, ale ty nejdůležitější a nejzajímavější kousky. Omluvte prosím slovní hříčku, ale právě to, jak data protékají mezi jednotlivými moduly, považuji za zajímavé a rozdělené do nejnižšího jmenovatele, nakonec skončíme se skutečnými „bity“- nulami a jedničkami. Pokud jste někdy byli zmateni z bitů, bajtů, znaků a řetězců, pak nyní může být čas na to, abyste se zmátli? Pokusím se také rozptýlit mírně abstraktní koncept nazvaný 'Zrušení chyb'.

Samotný systém obsahuje:

  • GPS/GNSS: Ublox C94 M8M (rover a základna)
  • 9DOF Razor IMU MO digitální kompas
  • Fona 800H 2G GPRS mobilní
  • 2,2 "TFT displej
  • Arduino Due 'Master'
  • Různé Arduino 'Slaves'.

Kupodivu mnoho Sat Navů nemá digitální kompas, což znamená, že pokud stojíte a jste ztraceni, musíte jít nebo jet v libovolném náhodném směru, než vám zařízení může ukázat správný směr ze satelitů. Pokud se ztratíte v husté džungli nebo podzemním parkovišti, jste nacpaní!

Krok 1: Jak to funguje

Jak to funguje
Jak to funguje

V současné době se z chytrého telefonu nebo počítače nahraje jednoduchá dvojice souřadnic, které pak stáhne Weedinator. Ty jsou pak interpretovány do kurzu ve stupních a vzdálenost k cestování v mm.

GPRS fona se používá k přístupu k online databázi prostřednictvím mobilní sítě 2G a přijímání a odesílání souřadnic do Arduino Due prostřednictvím Arduino Nano. The Due is the Master a ovládá řadu dalších Arduinos jako Slaves přes I2C a sériové sběrnice. The Due může komunikovat s živými daty z Ublox a Razor a zobrazit nadpis vypočítaný jedním z jeho otroků Arduino.

Satelitní tracker Ublox je obzvláště chytrý, protože používá zrušení chyb k získání velmi přesných oprav - konečná nominální celková odchylka asi 40 mm. Modul se skládá z identického páru, z nichž jeden, „rover“, se pohybuje s Weedinatorem a druhý, „základna“, je upevněn na tyči někde venku. Zrušení chyby je dosaženo tím, že základna je schopna dosáhnout opravdu přesné opravy použitím velkého množství vzorků v průběhu času. Tyto vzorky jsou pak zprůměrovány, aby se kompenzovaly měnící se atmosférické podmínky. Pokud by se zařízení pohybovalo, evidentně by nemohlo dosáhnout žádného průměrování a bylo by zcela vydáno na milost měnícímu se prostředí. Pokud však statické a pohyblivé zařízení spolupracují, pokud mohou mezi sebou komunikovat, mohou mít prospěch z obou. V každém daném okamžiku má základní jednotka stále chybu, ale má také dříve vypočítanou super přesnou opravu, takže může vypočítat skutečnou chybu odečtením jedné sady souřadnic od druhé. Poté odešle vypočítanou chybu do roveru prostřednictvím rádiového spojení, které pak přidá chybu do vlastních souřadnic a hej, máme, zrušení chyb! V praxi znamená zrušení chyby rozdíl mezi 3 metry a celkovou odchylkou 40 mm.

Celý systém vypadá komplikovaně, ale ve skutečnosti se staví poměrně snadno, buď volně na nevodivém povrchu, nebo pomocí PCB, které jsem navrhl, což umožňuje bezpečné přišroubování všech modulů. Budoucí vývoj je postaven na desce plošných spojů, což umožňuje začlenit rozsáhlou řadu Arduinos pro ovládání motorů pro řízení, pohyb vpřed a palubní CNC stroj. Navigaci bude také pomáhat alespoň jeden systém rozpoznávání objektů využívající kamery ke snímání barevných objektů, například fluorescenčních golfových míčků, které jsou pečlivě umístěny v nějakém druhu mřížky - sledujte tento prostor!

Krok 2: Součásti

Komponenty
Komponenty
Komponenty
Komponenty
Komponenty
Komponenty
  • Ublox C94 M8M (Rover and Base) x 2 of
  • Digitální kompas 9DOF Razor IMU MO
  • Fona 800H 2G GPRS mobilní 1946
  • Arduino splatné
  • Arduino Nano x 2 z
  • SparkFun Pro Micro
  • Adafruit 2,2 "TFT IL1940C 1480
  • PCB (viz přiložené soubory Gerber) x 2 z
  • 1206 SMD nulové ohmové odpory x 12 z
  • 1206 LED diod x 24 palců

Soubor PCB se otevře softwarem 'Design Spark'.

Krok 3: Zapojení modulů

Zapojení modulů
Zapojení modulů

Toto je snadná část - obzvláště snadná s deskou plošných spojů, kterou jsem vyrobil - postupujte podle výše uvedeného schématu. Je třeba dbát na to, aby se zabránilo zapojení 3v modulů na 5 V, a to i na sériových a I2C linkách.

Krok 4: Kód

Kód
Kód

Většina kódu se zabývá uspořádaným pohybem dat po systému a poměrně často je potřeba převádět datové formáty z celých čísel na plováky na řetězce a na znaky, což může být velmi matoucí! Protokol „Sériový“bude zpracovávat pouze znaky a zatímco I2Protokol C zvládne velmi malá celá čísla, pro mě bylo lepší převést je na znaky a poté převést zpět na celá čísla na druhém konci přenosové linky.

Ovladač Weedinator je v zásadě 8bitový systém se spoustou jednotlivých Arduinos neboli MCU. Když je 8 bitů popsáno jako skutečné binární nuly a jedničky, může to vypadat takto: B01100101, což by se rovnalo:

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

Desetinná číslice 128 64 32 16 8 4 2 1
Hodnota binárních číslic 0 1 1 0 0 1 0 1

= 101

A maximální možná hodnota je 255…. Takže maximální celočíselný 'bajt', který můžeme přenášet přes I2C je 255, což je velmi omezující!

Na Arduinu můžeme pomocí I přenášet až 32 znaků ASCII nebo bajtů najednou2C, což je mnohem užitečnější, a znaková sada obsahuje čísla, písmena a řídicí znaky v 7bitovém formátu, jak je uvedeno níže:

obraz
obraz

Naštěstí kompilátor Arduino provádí veškerou práci převodu z znaku na binární na pozadí, ale stále očekává správný typ znaku pro přenos dat a nepřijme „řetězce“.

Nyní mohou věci být matoucí. Znaky lze vyjádřit jako jednotlivé znaky pomocí definice znaků nebo jako jednorozměrné pole 20 znaků pomocí znaku [20]. Řetězec Arduino je velmi podobný poli znaků a je doslova řetězcem znaků, které lidský mozek často interpretuje jako „slova“.

// Vybuduje znak 'distanceCharacter':

Iniciátor řetězce = ""; distanceString = iniciátor + vzdálenostString; int n = distanceString.length (); for (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }

Výše uvedený kód může převést dlouhý řetězec znaků na řadu znaků, které lze poté přenášet přes I2C nebo sériový.

Na druhém konci přenosové linky lze data převést zpět na řetězec pomocí následujícího kódu:

distanceString = distanceString + c; // řetězec = řetězec + znak

Pole znaků nelze převést přímo na celé číslo a musí nejprve přejít do formátu řetězce, ale následující kód bude převeden z řetězce na celé číslo:

int výsledek = (distanceString).toInt ();

int distanceMetres = výsledek;

Nyní máme celé číslo, které můžeme použít k výpočtům. Plováky (čísla s desetinnou čárkou) je třeba ve fázi přenosu převést na celá čísla a poté vydělit 100 pro dvě desetinná místa, např.:

float distanceMetres = vzdálenostMm / 1000;

Nakonec lze řetězec vytvořit ze směsi znaků a celých čísel, například:

// Zde se data kompilují do znaku:

dataString = iniciátor + "BEAR" + zbearing + "DIST" + zdistance; // Omezeno na 32 znaků // Řetězec = řetězec + znaky + intereger + znaky + celé číslo.

Zbytek kódu jsou standardní věci Arduino, které najdete v různých příkladech v knihovnách Arduino. Podívejte se na příklad „příklady >>>> řetězců“a příklady „drátové“knihovny.

Zde je celý proces přenosu a přijetí plováku:

Převést Plovák ➜ Celé číslo ➜ Řetězec ➜ Pole znaků ….. pak TRANSMIT pole znaků z předlohy ➜➜

➜➜ ZÍSKEJTE jednotlivé postavy na Slave…. poté převeďte znak ➜ řetězec ➜ celé číslo ➜ plovoucí

Krok 5: Databáze a webová stránka

Databáze a webová stránka
Databáze a webová stránka
Databáze a webová stránka
Databáze a webová stránka

Nahoře je zobrazena struktura databáze a soubory kódu php a html jsou připojeny. Uživatelská jména, názvy databází, názvy tabulek a hesla jsou z důvodu zabezpečení vyprázdněna.

Krok 6: Navigační testy

Navigační testy
Navigační testy
Navigační testy
Navigační testy
Navigační testy
Navigační testy

Podařilo se mi přes I2C připojit datalogger k řídicí desce Weedinator a získat představu o výkonu polohování satelitů Ublox M8M:

U „studeného startu“, jak ukazuje zelený graf, modul odstartoval se spoustou chyb, docela podobných „normálnímu“GPS, a postupně se chyba zmenšovala, dokud asi po 2 hodinách nedostal opravu RTK mezi vozítko a základna (zobrazena jako červený kříž). Během tohoto 2hodinového období základní modul neustále vytváří a aktualizuje průměrnou hodnotu zeměpisné šířky a délky a poté, co předem naprogramovaný časový interval rozhodne, že má dobrou opravu. Následující 2 grafy ukazují chování po „horkém startu“'kde základní modul již vypočítal dobrý průměr. Horní graf má více než 200 minut a příležitostně je oprava ztracena a rover pošle Weedinatorovi zprávu NMEA, že oprava se dočasně stala nespolehlivou.

Spodní modrý graf je „přiblížením“červeného pole v horním grafu a ukazuje dobrý reprezentativní snímek výkonu Ublox s celkovou odchylkou 40 mm, což je více než dost dobré na to, aby vedlo Weedinator k jeho umístění, ale možná není dost dobrý na to, aby obdělával půdu kolem jednotlivých rostlin?

Třetí graf ukazuje data shromážděná s roverem a základnou vzdálenými 100 metrů od sebe - nebyla zjištěna žádná další chyba - vzdálenost od sebe nijak nezměnila přesnost.

Krok 7: Konečný

Doporučuje: