Turinys:
- 1 žingsnis: kaip tai veikia
- 2 žingsnis: komponentai
- 3 žingsnis: modulių prijungimas
- 4 žingsnis: kodas
- 5 veiksmas: duomenų bazė ir tinklalapis
- 6 veiksmas: naršymo bandymai
- 7 žingsnis: finalas
Video: EWEEDINATOR☠ 2 dalis. Palydovinė navigacija: 7 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Gimė „Weedinator“navigacijos sistema!
Riedantis žemės ūkio robotas, kurį galima valdyti išmaniuoju telefonu.
… Ir užuot tik atlikęs įprastą jo sudarymo procesą, aš maniau, kad pabandysiu paaiškinti, kaip tai iš tikrųjų veikia - aišku, ne VISKĄ, o svarbiausius ir įdomiausius dalykus. Prašau atleiskite už kalambūrą, bet būtent tai, kaip duomenų srautai tarp atskirų modulių man atrodo įdomūs ir suskirstyti į mažiausią vardiklį, galiausiai gauname tikrus „bitus“- nulius ir vienetus. Jei kada nors susipainiojote dėl bitų, baitų, simbolių ir eilučių, dabar gali būti laikas nesusipainioti? Aš taip pat pabandysiu supainioti šiek tiek abstrakčią koncepciją, pavadintą „Klaidos atšaukimas“.
Pati sistema pasižymi:
- GPS/GNSS: „Ublox C94 M8M“(„Rover“ir „Base“)
- „9DOF Razor IMU MO“skaitmeninis kompasas
- Fona 800H 2G GPRS korinis
- 2,2 colio TFT ekranas
- „Arduino Due“meistras
- Įvairūs „Arduino“vergai.
Kaip bebūtų keista, daugelis „Sat Nav“įrenginių neturi skaitmeninio kompaso, o tai reiškia, kad jei esate nejudantis ir pasiklydęs, turite eiti ar važiuoti bet kuria atsitiktine kryptimi, kad prietaisas galėtų parodyti jums teisingą palydovų kryptį. Jei pasiklysite storose džiunglėse ar požeminėje automobilių stovėjimo aikštelėje, būsite prikimšti!
1 žingsnis: kaip tai veikia
Šiuo metu iš išmaniojo telefono ar kompiuterio įkeliama paprasta koordinačių pora, kurią vėliau atsisiunčia „Weedinator“. Tada jie interpretuojami į kursą laipsniais ir atstumą, kurį reikia nuvažiuoti mm.
„GPRS fona“naudojama norint pasiekti internetinę duomenų bazę per 2G korinį tinklą ir gauti bei perduoti koordinates į „Arduino Due“per „Arduino Nano“. „Due“yra pagrindinis ir valdo daugybę kitų „Arduinos“kaip vergų per I2C ir nuoseklius autobusus. „Due“gali sąveikauti su tiesioginiais „Ublox“ir „Razor“duomenimis ir rodyti antraštę, apskaičiuotą vieno iš „Arduino“vergų.
„Ublox“palydovinis sekimo įrenginys yra ypač sumanus, nes jis naudoja klaidų atšaukimą, kad gautų labai tikslius pataisymus - galutinis nominalus bendras nuokrypis yra apie 40 mm. Modulį sudaro identiška pora, iš kurių viena, „rover“, juda kartu su „Weedinator“, o kita - „pagrindas“yra pritvirtintas prie stulpo kažkur atvirame lauke. Klaidų panaikinimas pasiekiamas tuo, kad bazė gali pasiekti tikrai tikslią pataisą, naudojant laikui bėgant daug mėginių. Tada šių mėginių vidurkis apskaičiuojamas keičiantis atmosferos sąlygoms. Jei prietaisas judėtų, akivaizdu, kad jis negalėtų gauti vidurkio ir būtų visiškai besikeičiančios aplinkos gailestingumas. Tačiau jei statinis ir judantis įrenginys veikia kartu, kol jie gali bendrauti tarpusavyje, jie gali gauti naudos iš abiejų. Bet kuriuo metu pagrindiniame įrenginyje vis dar yra klaida, tačiau jis taip pat turi anksčiau apskaičiuotą itin tikslų pataisymą, kad jis galėtų apskaičiuoti tikrąją klaidą, atimdamas vieną koordinačių rinkinį iš kito. Tada ji siunčia apskaičiuotą klaidą roveriui per radijo ryšį, o tada prideda klaidą prie savo koordinačių ir labas, mes turime klaidos atšaukimą! Praktiškai klaidų panaikinimas lemia skirtumą tarp 3 metrų ir 40 mm bendro nuokrypio.
Visa sistema atrodo sudėtinga, tačiau iš tikrųjų ją gana lengva pastatyti, palaidą ant nelaidžio paviršiaus arba naudojant mano sukurtą PCB, kuri leidžia tvirtai pritvirtinti visus modulius. Ateities plėtra yra pagrįsta PCB, leidžiančia įtraukti daugybę „Arduinos“, kad būtų galima valdyti vairavimo, judėjimo į priekį ir borto CNC mašinas. Naršyti taip pat padės bent viena objektų atpažinimo sistema, naudojant kameras, kad būtų galima aptikti spalvotus objektus, pavyzdžiui, fluorescencinius golfo kamuoliukus, kurie yra kruopščiai išdėstyti tinklelyje - Stebėkite šią erdvę!
2 žingsnis: komponentai
- „Ublox C94 M8M“(„Rover“ir „Base“) x 2 iš
- „9DOF Razor IMU MO“skaitmeninis kompasas
- „Fona 800H 2G GPRS“korinis 1946 m
- Arduino Due
- „Arduino Nano“x 2
- „SparkFun Pro Micro“
- „Adafruit“2,2 colio TFT IL1940C 1480
- PCB (žr. Pridėtus Gerber failus) x 2 iš
- 1206 SMD nulinio omo rezistoriai x 12 iš
- 1206 šviesos diodai x 24 iš
PCB failas atidaromas naudojant „Design Spark“programinę įrangą.
3 žingsnis: modulių prijungimas
Tai lengva dalis - ypač lengva naudojant mano pagamintą PCB - tiesiog sekite aukščiau pateiktą schemą. Reikia atsargiai vengti prijungti 3v modulius prie 5v, net nuosekliosios ir I2C linijos.
4 žingsnis: kodas
Dauguma kodo yra susiję su tuo, kad duomenys būtų tvarkingai judami sistemoje, ir gana dažnai reikia konvertuoti duomenų formatus iš sveikųjų skaičių į plūdes į eilutes ir simbolius, o tai gali būti labai painu! „Serijinis“protokolas apdoros tik simbolius, o „I“2C protokolas apdoros labai mažus sveikus skaičius, man pasirodė geriau juos konvertuoti į simbolius ir tada konvertuoti į sveikus skaičius kitame perdavimo linijos gale.
„Weedinator“valdiklis iš esmės yra 8 bitų sistema su daugybe atskirų „Arduinos“arba „MCU“. Kai 8 bitai yra apibūdinami kaip faktiniai dvejetainiai nuliai ir vienetai, tai gali atrodyti taip: B01100101, kuris būtų lygus:
(1x2)+(0x2)2+(1x2)3+(0x2)4+(0x2)5+(1x2)6+(1x2)7+(0x2)8 =
Dešimtainė skaitmenų vertė | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
Dvejetainių skaitmenų vertė | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
= 101
Ir didžiausia galima vertė yra 255 … Taigi maksimalų sveikąjį „baitą“galime perduoti per I2C yra 255, o tai labai riboja!
„Arduino“vienu metu galime perduoti iki 32 ASCII simbolių arba baitų, naudodami I2C, kuris yra daug naudingesnis, o simbolių rinkinį sudaro skaičiai, raidės ir kontroliniai simboliai 7 bitų formatu, kaip nurodyta toliau:
Laimei, „Arduino“kompiliatorius atlieka visus konvertavimo iš simbolių į dvejetainius fone darbus, tačiau jis vis tiek tikisi teisingo tipo simbolių duomenų perdavimui ir nepriims „eilutės“.
Dabar viskas gali būti painu. Simboliai gali būti išreikšti kaip pavieniai simboliai, naudojant char apibrėžimą, arba kaip vientisas 20 simbolių masyvas, naudojant char [20]. Arduino eilutė yra labai panaši į simbolių masyvą ir pažodžiui yra simbolių eilutė, kurią žmogaus smegenys dažnai aiškina kaip „žodžius“.
// Sukuria simbolį „distanceCharacter“:
Stygos iniciatorius = ""; distanceString = iniciatorius + distanceString; int n = atstumasString.length (); for (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }
Aukščiau pateiktas kodas gali paversti ilgą simbolių eilutę į simbolių masyvą, kuris vėliau gali būti perduotas per I2C arba serijinis.
Kitame perdavimo linijos gale duomenis galima konvertuoti atgal į eilutę naudojant šį kodą:
distanceString = distanceString + c; // eilutė = eilutė + simbolis
Simbolių masyvo negalima konvertuoti tiesiai į sveikąjį skaičių ir jis pirmiausia turi būti įvestas į eilutės formatą, tačiau šis kodas iš eilutės bus konvertuojamas į sveiką skaičių:
int rezultatas = (distanceString).toInt ();
int distanceMetres = rezultatas;
Dabar turime sveiką skaičių, kurį galime naudoti skaičiavimams. Plūdės (skaičiai su dešimtainiu tašku) perdavimo etape turi būti konvertuojamos į sveikus skaičius ir tada padalijamos iš 100 dviejų skaičių po kablelio, pvz.:
plūdės atstumasMetres = atstumasMm / 1000;
Galiausiai eilutę galima sukurti iš simbolių ir sveikųjų skaičių mišinio, pvz.:
// Čia duomenys surenkami į simbolį:
dataString = iniciatorius + "BEAR" + zbearing + "DIST" + zdistance; // Ribojamas iki 32 simbolių // Eilutė = eilutė + simboliai + sveikasis skaičius + simboliai + sveikasis skaičius.
Likusi kodo dalis yra standartinė „Arduino“medžiaga, kurią galima rasti įvairiuose „Arduino“bibliotekų pavyzdžiuose. Peržiūrėkite „pavyzdžių >>>> stygų“ir „vielos“bibliotekos pavyzdžius.
Štai visas plūdės perdavimo ir priėmimo procesas:
Konvertuoti plūdinį ➜ sveikąjį skaičių ring eilutę ➜ simbolių masyvą ….. tada PERDUOTI simbolių masyvą iš pagrindinio ➜➜
➜➜ GAUTI atskirus simbolius „Slave“…. tada konvertuokite simbolį ➜ eilutę ➜ sveiką skaičių ➜ plūdę
5 veiksmas: duomenų bazė ir tinklalapis
Aukščiau parodyta duomenų bazės struktūra ir pridedami php ir html kodo failai. Saugumo sumetimais vartotojo vardai, duomenų bazių pavadinimai, lentelių pavadinimai ir slaptažodžiai išbraukti.
6 veiksmas: naršymo bandymai
Man pavyko prijungti duomenų kaupiklį prie „Weedinator“valdymo plokštės per „I2C“ir susidaryti idėją apie „Ublox M8M“palydovinės padėties nustatymo našumą:
Įjungus „šaltą paleidimą“, parodytą žalioje diagramoje, modulis prasidėjo su daugybe klaidų, gana panašus į „įprastą“GPS, ir palaipsniui klaida sumažėjo, kol po maždaug 2 valandų RTV pataisė tarp roverio ir pagrindas (rodomas kaip raudonas kryžius). Per tą 2 valandų laikotarpį bazinis modulis nuolat kuria ir atnaujina vidutinę platumos ir ilgumos vertę, o iš anksto užprogramuotas laiko intervalas nusprendžia, kad jis buvo gerai ištaisytas. Kituose 2 grafikuose rodomas elgesys po karšto paleidimo kur bazinis modulis jau apskaičiavo gerą vidurkį. Viršutinis grafikas yra ilgesnis nei 200 minučių ir kartais pataisa prarandama, o roveris siunčia NMEA pranešimą „Weedinator“, kad pataisymas laikinai tapo nepatikimas.
Apatinė mėlyna diagrama yra „priartinimas“prie viršutinio grafiko raudono langelio ir rodo gerą reprezentatyvų „Ublox“našumo momentinį vaizdą, kurio bendras nuokrypis yra 40 mm, o tai yra daugiau nei pakankamai gerai, kad nukreiptų „Weedinator“į jo vietą, bet galbūt nepakankamai geras, kad būtų galima įdirbti dirvą aplink atskirus augalus?
Trečiojoje diagramoje rodomi duomenys, surinkti naudojant „Rover“ir „Base“100 metrų atstumu - jokios papildomos klaidos neaptikta - atskyrimo atstumas tikslumo nesikeitė.
7 žingsnis: finalas
Rekomenduojamas:
Palydovinė oro stotis: 5 žingsniai
Palydovinė oro stotis: Šis projektas skirtas žmonėms, norintiems rinkti savo orų duomenis. Jis gali matuoti vėjo greitį ir kryptį, temperatūrą ir oro drėgmę. Jis taip pat gali klausytis orų palydovų, skriejančių aplink Žemę kartą per 100 minučių. As noriu
Įbrėžta medinė ofsetinė palydovinė antena: 11 žingsnių (su nuotraukomis)
Nubraižytas medinis ofsetinis palydovinis patiekalas: buvau susidūręs su kai kuriomis svetainėmis, kuriose keli žmonės sukūrė savo palydovines antenas, vienas australas netgi pastatė didžiulę 13 metrų ofsetinę lėkštę. Koks skirtumas? Svarbiausia yra tai, apie ką galvojate, kai kas nors sako „palydovinis diskas
EWEEDINATOR☠ 4 dalis: Diferencialinio vairo geometrijos kodas: 3 žingsniai
☠WEEDINATOR☠ 4 dalis: Diferencialinio vairo geometrijos kodas: Jei turite laiko pažiūrėti aukščiau pateiktą vaizdo įrašą, pastebėsite, kad kai kurie keistai garsai, kuriuos sukelia vairo mechanizmo užstrigimas, kartkartėmis sustoja, kai WEEDINATOR naršo 3 taškas posūkis. Varikliai iš esmės stringa
EWEEDINATOR☠ 3 dalis. Važiuoklės konstrukcija: 8 žingsniai (su paveikslėliais)
EWEEDINATOR☠ 3 dalis: Važiuoklės konstrukcija: Žiema yra puikus metas statyti mašinas, ypač kai suvirinamas ir pjaustomas plazma, nes abu jie suteikia pakankamai šilumos. Jei jums įdomu, kas yra plazminis pjaustytuvas, perskaitykite išsamias procedūras. Jei buvote
Naudokite palydovinę anteną, kad pagerintumėte 3G belaidžio plačiajuosčio ryšio signalą: 4 žingsniai
Naudokite palydovinę anteną, kad pagerintumėte savo 3G belaidžio plačiajuosčio ryšio signalą: Ieškodamas greitesnės telefono ryšio alternatyvos (tai yra viskas, ką galite gauti, kur aš gyvenu Vakarų NY), radau belaidžio ryšio tiekėją, tiekiantį 3G belaidį modemą. nurodė 1,5 Mbps atsisiuntimo greitį. Dabar pagalvojau, kad tai puiku