Obsah:

EWEEDINATOR☠ Časť 2: Satelitná navigácia: 7 krokov (s obrázkami)
EWEEDINATOR☠ Časť 2: Satelitná navigácia: 7 krokov (s obrázkami)

Video: EWEEDINATOR☠ Časť 2: Satelitná navigácia: 7 krokov (s obrázkami)

Video: EWEEDINATOR☠ Časť 2: Satelitná navigácia: 7 krokov (s obrázkami)
Video: Голубая стрела (1958) фильм 2024, Júl
Anonim
☠WEEDINATOR☠ Časť 2: Satelitná navigácia
☠WEEDINATOR☠ Časť 2: Satelitná navigácia
☠WEEDINATOR☠ Časť 2: Satelitná navigácia
☠WEEDINATOR☠ Časť 2: Satelitná navigácia
☠WEEDINATOR☠ Časť 2: Satelitná navigácia
☠WEEDINATOR☠ Časť 2: Satelitná navigácia
☠WEEDINATOR☠ Časť 2: Satelitná navigácia
☠WEEDINATOR☠ Časť 2: Satelitná navigácia

Navigačný systém Weedinator je na svete!

Túlavý poľnohospodársky robot, ktorý je možné ovládať pomocou inteligentného telefónu.

… A namiesto toho, aby som prechádzal pravidelným procesom zostavovania, som si povedal, že sa pokúsim vysvetliť, ako to vlastne funguje - očividne nie VŠETKO, ale najdôležitejšie a najzaujímavejšie kúsky. Ospravedlňte, prosím, slovnú hračku, ale práve to, ako dáta pretekajú medzi jednotlivými modulmi, považujem za zaujímavé a rozdelené do najnižšieho menovateľa. Výsledkom sú skutočné „bity“- nuly a jednotky. Ak ste niekedy boli zmätení z bitov, bajtov, znakov a reťazcov, teraz je možno načase, aby ste sa zamotali? Pokúsim sa tiež rozptýliť mierne abstraktný koncept s názvom „Zrušenie chýb“.

Samotný systém ponúka:

  • GPS/GNSS: Ublox C94 M8M (rover a základňa)
  • 9DOF Razor IMU MO digitálny kompas
  • Fona 800H 2G GPRS mobilná
  • 2,2 "TFT displej
  • Arduino Due „Master“
  • Rôzne Arduino „Otroci“.

Zvláštne je, že veľa satelitných navigácií nemá digitálny kompas, čo znamená, že ak ste nehybný a stratený, musíte kráčať alebo jazdiť v ľubovoľnom náhodnom smere, kým vám zariadenie môže zo satelitov ukázať správny smer. Ak sa stratíte v hustej džungli alebo v podzemnom parkovisku, ste plní!

Krok 1: Ako to funguje

Ako to funguje
Ako to funguje

V súčasnosti sa z inteligentného telefónu alebo počítača nahrá jednoduchá dvojica súradníc, ktoré potom stiahne Weedinator. Tieto sa potom interpretujú ako nadpis v stupňoch a vzdialenosť, v ktorej sa majú pohybovať, v mm.

GPRS fona sa používa na prístup k online databáze prostredníctvom 2G mobilnej siete a na príjem a odosielanie súradníc do Arduino Due prostredníctvom Arduino Nano. Due je majster a riadi rad ďalších Arduinov ako otrokov cez I2C a sériové zbernice. Due môže interagovať so živými údajmi z Ublox a Razor a zobraziť nadpis vypočítaný jedným z jeho otrokov Arduino.

Satelitný sledovač Ublox je obzvlášť šikovný, pretože používa funkciu zrušenia chýb a získava veľmi presné opravy - konečná nominálna celková odchýlka asi 40 mm. Modul sa skladá z identického páru, z ktorých jeden „rover“sa pohybuje spolu s Weedinatorom a druhý „základňa“je upevnený na tyči niekde vonku. Zrušenie chyby je dosiahnuté tým, že základňa je schopná dosiahnuť skutočne presnú opravu použitím veľkého množstva vzoriek v priebehu času. Tieto vzorky sa potom spriemerujú, aby sa kompenzovali meniace sa atmosférické podmienky. Ak by sa zariadenie pohybovalo, evidentne by nebolo schopné dosiahnuť žiadne priemerovanie a bolo by úplne vydané na milosť meniacemu sa prostrediu. Ak však statické a pohyblivé zariadenie spolupracujú, pokiaľ môžu medzi sebou komunikovať, môžu využívať výhody oboch. V každom danom čase má základná jednotka stále chybu, ale má aj predtým vypočítanú super presnú opravu, takže môže vypočítať skutočnú chybu odčítaním jednej sady súradníc od druhej. Potom vypočítanú chybu odošle roveru prostredníctvom rádiového spojenia, ktoré potom chybu pridá do vlastných súradníc a hej, máme za sebou zrušenie chyby! Prakticky povedané, zrušenie chyby robí rozdiel medzi celkovou odchýlkou 3 metre a 40 mm.

Celý systém vyzerá komplikovane, ale v skutočnosti sa dá celkom ľahko postaviť buď voľne na nevodivom povrchu, alebo pomocou dosky plošných spojov, ktorú som navrhol, čo umožňuje bezpečné priskrutkovanie všetkých modulov. Budúci vývoj je postavený na doske plošných spojov, ktorá umožňuje začlenenie rozsiahleho radu Arduinos na ovládanie motorov riadenia, pohybu vpred a palubného CNC stroja. Navigácii bude pomáhať aj najmenej jeden systém rozpoznávania objektov, ktorý pomocou kamier sníma farebné objekty, napríklad fluorescenčné golfové loptičky, ktoré sú starostlivo umiestnené v nejakom druhu mriežky - Sledujte tento priestor!

Krok 2: Komponenty

Komponenty
Komponenty
Komponenty
Komponenty
Komponenty
Komponenty
  • Ublox C94 M8M (rover a základňa) x 2 z
  • 9DOF Razor IMU MO digitálny kompas
  • Fona 800H 2G GPRS mobilný 1946
  • Termín Arduino
  • Arduino Nano x 2 z
  • SparkFun Pro Micro
  • Adafruit 2,2 "TFT IL1940C 1480
  • DPS (pozri priložené súbory Gerber) x 2 z
  • 1206 odporov SMD s nulovým ohmom x 12 z
  • 1206 diód LED x 24 palcov

Súbor DPS sa otvorí pomocou softvéru „Design Spark“.

Krok 3: Zapojenie modulov

Zapojenie modulov
Zapojenie modulov

Jedná sa o jednoduchú časť - obzvlášť jednoduchú s doskou plošných spojov, ktorú som vyrobil - postupujte podľa vyššie uvedeného diagramu. Je potrebné dbať na to, aby sa zabránilo zapojeniu 3v modulov na 5v, dokonca aj na sériové a I2C linky.

Krok 4: Kód

Kód
Kód

Väčšina kódu sa týka usporiadaného pohybu údajov v systéme a pomerne často je potrebné prevádzať dátové formáty z celých čísel na floaty na reťazce a na znaky, čo môže byť veľmi mätúce! „Sériový“protokol bude spracovávať iba znaky a kým I2Protokol C zvládne veľmi malé celé čísla, považoval som za lepšie ich previesť na znaky a potom previesť späť na celé čísla na druhom konci prenosovej linky.

Ovládač Weedinator je v zásade 8 -bitový systém s množstvom jednotlivých Arduinos alebo MCU. Keď je 8 bitov opísaných ako skutočné binárne nuly a jednotky, môže to vyzerať takto: B01100101, čo by sa rovnalo:

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

Desatinná číslica 128 64 32 16 8 4 2 1
Hodnota binárnej číslice 0 1 1 0 0 1 0 1

= 101

A maximálna možná hodnota je 255 … Maximálny celočíselný „bajt“, ktorý môžeme prenášať cez I2C je 255, čo je veľmi obmedzujúce!

Na Arduine môžeme súčasne prenášať až 32 znakov ASCII alebo bajtov pomocou I2C, čo je oveľa užitočnejšie, a znaková sada obsahuje čísla, písmená a riadiace znaky v 7 -bitovom formáte, ako je uvedené nižšie:

Obrázok
Obrázok

Našťastie kompilátor Arduino vykonáva všetku prácu na prevod z znaku na binárny na pozadí, ale stále očakáva správny typ znakov na prenos údajov a neakceptuje „reťazce“.

Teraz je možné, že veci môžu byť mätúce. Znaky môžu byť vyjadrené ako jednotlivé znaky pomocou definície znaku alebo ako jednorozmerné pole 20 znakov pomocou znaku [20]. Reťazec Arduino je veľmi podobný poli znakov a je doslova reťazcom znakov, ktoré ľudský mozog často interpretuje ako „slová“.

// Zostaví znak 'distanceCharacter':

Iniciátor reťazca = ""; distanceString = iniciátor + vzdialenosťString; int n = distanceString.length (); pre (int aa = 0; aa <= n; aa ++) {znak vzdialenosti [aa] = reťazec vzdialenosti [aa]; }

Vyššie uvedený kód môže konvertovať dlhý reťazec znakov na znakovú skupinu znakov, ktoré je potom možné prenášať cez I2C alebo sériový.

Na druhom konci prenosovej linky je možné údaje previesť späť na reťazec pomocou nasledujúceho kódu:

distanceString = distanceString + c; // reťazec = reťazec + znak

Pole znakov nie je možné previesť priamo na celé číslo a musí ísť najskôr do formátu reťazca, ale nasledujúci kód sa prevedie z reťazca na celé číslo:

int výsledok = (reťazec vzdialenosti).toInt ();

int distanceMetres = výsledok;

Teraz máme celé číslo, ktoré môžeme použiť na výpočty. Floats (čísla s desatinnou čiarkou) je potrebné v štádiu prenosu previesť na celé čísla a potom rozdeliť na 100 pre dve desatinné miesta, napr.:

plaváková vzdialenosťMetre = vzdialenosťMm / 1000;

Nakoniec reťazec môže byť vytvorený zo zmesi znakov a celých čísel, napr.

// Tu sa údaje kompilujú do znaku:

dataString = iniciátor + „MEDVEĎ“+ zbearing + „DIST“+ zdistance; // Obmedzený na 32 znakov // Reťazec = reťazec + znaky + intereger + znaky + celé číslo.

Zvyšok kódu je štandardný materiál Arduino, ktorý nájdete v rôznych príkladoch v knižniciach Arduino. Pozrite sa na príklad „príklady >>>> reťazcov“a príklady „knižnice“drôtu.

Tu je celý proces prenosu a príjmu plaváka:

Preveďte float ➜ celé číslo ➜ reťazec ➜ pole znakov ….. potom TRANSMIT pole znakov z predlohy ➜➜

➜➜ RECIEVE jednotlivé postavy na Slave …. potom skonvertujte znak ➜ reťazec ➜ celé číslo ➜ plávajúci

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

Databáza a webová stránka
Databáza a webová stránka
Databáza a webová stránka
Databáza a webová stránka

Hore je zobrazená štruktúra databázy a súbory kódu php a html sú pripojené. Užívateľské mená, názvy databáz, názvy tabuliek a heslá sú kvôli bezpečnosti prázdne.

Krok 6: Navigačné testy

Navigačné testy
Navigačné testy
Navigačné testy
Navigačné testy
Navigačné testy
Navigačné testy

Podarilo sa mi pripojiť záznamník údajov k riadiacej doske Weedinator cez I2C a získať predstavu o výkone satelitného polohovania Ublox M8M:

Pri „studenom štarte“, ako ukazuje zelený graf, sa modul spustil s mnohými chybami, dosť podobnými „normálnym“GPS, a postupne sa chyba znižovala, až asi po 2 hodinách získal opravu RTK medzi roverom. a základňou (zobrazené ako červený kríž). Počas tohto 2 hodinového obdobia základný modul neustále vytvára a aktualizuje priemernú hodnotu zemepisnej šírky a dĺžky a potom, ako sa vopred naprogramovaný časový interval rozhodne, že má dobrú opravu. Nasledujúce 2 grafy zobrazujú správanie po „horúcom štarte“„kde základný modul už vypočítal dobrý priemer. Horný graf je viac ako 200 -minútový a občas sa oprava stratí a rover pošle Weedinatorovi správu NMEA, že oprava je dočasne nespoľahlivá.

Dolný modrý graf je „priblížením“červeného poľa v hornom grafe a ukazuje dobrý reprezentatívny záber výkonu Ublox s celkovou odchýlkou 40 mm, čo je viac než dosť dobré na to, aby viedlo Weedinator k jeho umiestneniu., ale možno nie dostatočne dobré na kultiváciu pôdy okolo jednotlivých rastlín?

Tretí graf zobrazuje údaje zhromaždené s vozidlom Rover a so základňou vzdialeným 100 metrov - nebola zistená žiadna dodatočná chyba - vzdialenosť medzi vzdialenosťou nerobila rozdiel v presnosti.

Krok 7: Finále

Odporúča: