Sisukord:

EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon: 7 sammu (piltidega)
EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon: 7 sammu (piltidega)

Video: EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon: 7 sammu (piltidega)

Video: EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon: 7 sammu (piltidega)
Video: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, Juuli
Anonim
EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon
EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon
EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon
EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon
EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon
EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon
EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon
EWEEDINATOR☠ Osa 2: Satelliitnavigatsioon

Weedinator navigatsioonisüsteem on sündinud!

Rändav põllumajandusrobot, mida saab juhtida nutitelefoniga.

… Ja selle asemel, et lihtsalt korrapäraselt kokku panna, mõtlesin, et proovin selgitada, kuidas see tegelikult toimib - ilmselgelt mitte KÕIK, vaid kõige olulisemad ja huvitavamad tükid. Palun vabandage sõnamängu, kuid see, kuidas andmed üksikute moodulite vahel voolavad, on minu arvates huvitav ja jaotatud selle madalaimaks nimetajaks, mille lõpuks saame tegelikud "bitid" - nullid ja ainsad. Kui olete kunagi bitti, baiti, tähemärke ja stringe segadusse ajanud, võib nüüd olla aeg segadusse jääda? Proovin ka veidi abstraktset kontseptsiooni nimega „Vigade tühistamine” segadusse ajada.

Süsteem ise sisaldab:

  • GPS/GNSS: Ublox C94 M8M (Rover ja Base)
  • 9DOF Razor IMU MO digitaalne kompass
  • Fona 800H 2G GPRS mobiilsidevõrk
  • 2,2 -tolline TFT -ekraan
  • Arduino Due "Master"
  • Erinevad Arduino "orjad".

Kummalisel kombel pole paljudel satelliitnavigaatoritel digitaalset kompassi, mis tähendab, et kui olete paigal ja eksite, peate kõndima või sõitma suvalises suunas, enne kui seade suudab teile satelliitidelt õiget suunda näidata. Kui eksite paksu džunglisse või maa -alusesse parklasse, olete topitud!

1. toiming: kuidas see toimib

Kuidas see töötab
Kuidas see töötab

Praegu laaditakse nutitelefonist või arvutist üles lihtne koordinaatide paar, mille Weedinator seejärel alla laadib. Seejärel tõlgendatakse neid kursiks kraadides ja teekonna kauguseks millimeetrites.

GPRS fona kasutatakse 2G mobiilsidevõrgu kaudu Interneti -andmebaasile juurdepääsuks ning koordinaatide vastuvõtmiseks ja edastamiseks Arduino Duele Arduino Nano kaudu. The Due on kapten ja juhib I2C ja seeriabusside kaudu paljusid teisi Arduinosid orjadena. Due saab suhelda Ubloxi ja Razori reaalajas andmetega ning kuvada pealkirja, mille on arvutanud üks selle Arduino orjadest.

Ubloxi satelliitjälgija on eriti nutikas, kuna kasutab vigade tühistamist, et saada väga täpseid parandusi - lõplik nominaalne summaarne kõrvalekalle on umbes 40 mm. Moodul koosneb identsest paarist, millest üks, "rover", liigub koos Weedinatoriga ja teine, "alus" on kinnitatud postil kuskil väljas. Vea tühistamine saavutatakse sellega, et baas suudab aja jooksul suure hulga proovide abil saavutada tõeliselt täpse paranduse. Neid proove keskmistatakse seejärel muutuvate atmosfääritingimuste kompenseerimiseks. Kui seade liiguks, ei saaks see ilmselgelt mingit keskmistamist ja oleks muutuva keskkonna täielikus armus. Kui aga staatiline ja liikuv seade töötab koos, saavad nad mõlemast kasu, kui nad saavad üksteisega suhelda. Põhiseadmel on igal ajal endiselt viga, kuid sellel on ka eelnevalt arvutatud ülitäpne parandus, nii et see saab arvutada tegeliku vea, lahutades ühe koordinaatide komplekti teisest. Seejärel saadab see arvutusliku vea raadioside kaudu roverile, mis lisab vea enda koordinaatidele ja hei presto, meil on vea tühistamine! Praktilises mõttes teeb vigade tühistamine erinevuse 3 meetri ja 40 mm koguhälbe vahel.

Kogu süsteem tundub keeruline, kuid tegelikult on seda üsna lihtne ehitada kas lahtiselt mittejuhtivale pinnale või kasutades minu kavandatud trükkplaati, mis võimaldab kõiki mooduleid kindlalt kinnitada. Edasine arendus põhineb trükkplaadil, mis võimaldab ühendada rohkesti Arduinosid, et juhtida rooli, edasi liikumist ja pardal olevat CNC-masinat. Navigeerimist abistab ka vähemalt üks objektide tuvastamise süsteem, mis kasutab värviliste objektide tajumiseks kaameraid, näiteks fluorestseeruvad golfipallid, mis on hoolikalt paigutatud mingisse võrku - jälgige seda ruumi!

2. samm: komponendid

Komponendid
Komponendid
Komponendid
Komponendid
Komponendid
Komponendid
  • Ublox C94 M8M (Rover ja Base) x 2
  • 9DOF Razor IMU MO digitaalne kompass
  • Fona 800H 2G GPRS mobiiltelefon 1946
  • Arduino Due
  • Arduino Nano x 2
  • SparkFun Pro Micro
  • Adafruit 2,2 "TFT IL1940C 1480
  • PCB (vt lisatud Gerberi faile) x 2
  • 1206 SMD null oomi takistit x 12 tk
  • 1206 LED -i 24 x

PCB -fail avaneb tarkvaraga „Design Spark”.

Samm: moodulite ühendamine

Moodulite ühendamine
Moodulite ühendamine

See on lihtne osa - eriti lihtne minu valmistatud trükkplaadi puhul - järgige ülaltoodud skeemi. Tuleb olla ettevaatlik, et mitte ühendada 3v mooduleid 5v, isegi jada- ja I2C liinidel.

4. samm: kood

Kood
Kood

Suurem osa koodist on seotud andmete korrapärase liikumisega süsteemis ja üsna sageli on vaja andmevormingud täisarvudest teisendada ujukiteks stringideks ja tähemärkideks, mis võib olla väga segane! Sarjaprotokoll käsitleb ainult märke ja I2C -protokoll saab hakkama väga väikeste täisarvudega, leidsin, et on parem teisendada need tähemärkideks ja teisendada seejärel ülekandeliini teises otsas täisarvudeks.

Weedinatori kontroller on põhimõtteliselt 8 -bitine süsteem, kus on palju individuaalseid Arduinosid või MCU -sid. Kui 8 -bitist kirjeldatakse kui tegelikke binaarseid nulle, võib see välja näha järgmine: B01100101, mis võrduks:

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

Kümnendkoha väärtus 128 64 32 16 8 4 2 1
Kahendkoha väärtus 0 1 1 0 0 1 0 1

= 101

Ja maksimaalne võimalik väärtus on 255 … Nii et maksimaalne täisarv "bait", mida saame edastada I kaudu2C on 255, mis on väga piirav!

Arduino kaudu saame I abil korraga edastada kuni 32 ASCII märki või baiti2C, mis on palju kasulikum, ja märgistik sisaldab numbreid, tähti ja juhtmärke 7 -bitises vormingus, nagu allpool:

Pilt
Pilt

Õnneks teeb Arduino kompilaator kogu töö tegemisel taustal tegelaskujust binaarseks, kuid ootab siiski andmeedastuseks õiget tüüpi märke ja ei võta vastu 'stringe'.

Praegu on olukord segadusse ajav. Märke saab väljendada üksikute märkidena, kasutades sümboli määratlust, või ühemõõtmelise 20 tähemärgi massiivina, kasutades märki [20]. Arduino string on väga sarnane tegelaste massiiviga ja on sõna otseses mõttes tähemärkide jada, mida inimese aju tõlgendab sageli kui „sõnu”.

// Loob märgi 'distanceCharacter':

Stringi algataja = ""; distanceString = algataja + distanceString; int n = kaugusString.length (); jaoks (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }

Ülaltoodud kood võib muuta pika tähemärkide tähemärkide massiivi, mida saab seejärel edastada I kaudu2C või seeria.

Ülekandeliini teises otsas saab andmed järgmise stringina tagasi teisendada:

distanceString = kaugusString + c; // string = string + märk

Märgimassiivi ei saa otse täisarvuks teisendada ja see peab kõigepealt minema stringivormingusse, kuid järgmine kood teisendatakse stringist täisarvuks:

int tulemus = (kaugusstring).toInt ();

int distanceMetres = tulemus;

Nüüd on meil täisarv, mida saame kasutada arvutuste tegemiseks. Ujukid (komakohaga numbrid) tuleb edastusetapis teisendada täisarvudeks ja jagada seejärel kahe kümnendkohaga 100 -ga, nt:

ujuki kaugusMetres = kaugusMm / 1000;

Lõpuks saab stringi luua tähemärkide ja täisarvude segust, nt:

// Siin on andmed koondatud tähemärgiks:

dataString = algataja + "BEAR" + zbearing + "DIST" + zdistance; // Piiratud 32 tähemärgiga // String = string + märgid + täisarv + märgid + täisarv.

Ülejäänud kood on tavaline Arduino kraam, mida võib leida erinevatest näidetest Arduino raamatukogudes. Vaadake näiteid "näited >>>> stringid" ja "traadi" raamatukogu näiteid.

Siin on kogu ujuki edastamise ja vastuvõtmise protsess:

Teisenda Float ➜ täisarv ➜ string

➜➜ VÕTA Slave'is üksikuid tegelasi…. seejärel teisendage Märk ➜ String ➜ Täisarv ➜ Ujuk

Samm: andmebaas ja veebisait

Andmebaas ja veebisait
Andmebaas ja veebisait
Andmebaas ja veebisait
Andmebaas ja veebisait

Eespool on näidatud andmebaasi struktuur ning manustatud php ja html koodifailid. Turvalisuse huvides jäetakse kasutajanimed, andmebaaside nimed, tabelite nimed ja paroolid tühjaks.

6. samm: navigeerimiskatsed

Navigeerimiskatsed
Navigeerimiskatsed
Navigeerimiskatsed
Navigeerimiskatsed
Navigeerimiskatsed
Navigeerimiskatsed

Mul õnnestus I2C kaudu ühendada andmeedastaja Weedinatori juhtpaneeliga ja saada aimu Ublox M8M satelliidi positsioneerimise toimivusest:

Rohelisel graafikul näidatud külmkäivitusel käivitas moodul palju vigu, mis oli üsna sarnane tavalisele GPS -ile ja järk -järgult viga vähenes, kuni umbes 2 tunni pärast sai see roveri vahel RTK -paranduse ja alus (näidatud punase ristina). Selle 2-tunnise perioodi jooksul kogub ja uuendab baasmoodul pidevalt laius- ja pikkuskraadi keskmist väärtust ning pärast eelprogrammeeritud ajavahemikku otsustab, et see on hästi parandatud. Järgmised 2 graafikut näitavad käitumist pärast kuuma käivitamist kus baasmoodul on juba arvutanud hea keskmise. Ülemine graafik on üle 200 minuti pikkune ja aeg -ajalt kaob parandus ning rover saadab Weedinatorile NMEA sõnumi, et parandus on ajutiselt ebausaldusväärseks muutunud.

Alumine sinine graafik on ülemise graafiku punase kasti "sisse suumimine" ja näitab head esinduslikku hetkepilti Ubloxi jõudlusest, mille koguhälve on 40 mm, mis on enam kui piisavalt hea, et suunata Weedinator oma asukohta, kuid võib -olla pole see piisavalt hea, et harida mulda üksikute taimede ümber?

Kolmas graafik näitab 100 meetri kaugusel Roveri ja Base'iga kogutud andmeid - täiendavat viga ei tuvastatud - eralduskaugus ei mõjutanud täpsust.

7. samm: finaal

Soovitan: