Përmbajtje:
- Hapi 1: Si funksionon
- Hapi 2: Përbërësit
- Hapi 3: Instalimi i moduleve
- Hapi 4: Kodi
- Hapi 5: Baza e të dhënave dhe Uebfaqja
- Hapi 6: Testet e navigimit
- Hapi 7: Përfundimtar
Video: EWEEDINATOR☠ Pjesa 2: Lundrimi satelitor: 7 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:27
Lind sistemi i navigimit Weedinator!
Një robot bujqësor që mund të kontrollohet nga një telefon i zgjuar.
… Dhe në vend që thjesht të kaloj përmes procesit të rregullt se si është bërë së bashku, mendova se do të përpiqesha dhe të shpjegoja se si funksionon në të vërtetë - padyshim jo gjithçka, por pjesët më të rëndësishme dhe interesante. Ju lutemi falni fjalën, por është mënyra se si të dhënat rrjedhin midis moduleve individuale që më duket interesante dhe të ndara në emëruesin më të ulët, ne përfundojmë me "copa" të vërteta - zero dhe njëshe. Nëse jeni ngatërruar ndonjëherë për copa, bajt, karaktere dhe vargje, atëherë tani mund të jetë koha për t'u bërë të pakonfuzionuar? Unë gjithashtu do të përpiqem të ngatërroj një koncept pak abstrakt të quajtur 'Anulimi i Gabimit'.
Vetë sistemi përmban:
- GPS/GNSS: Ublox C94 M8M (Rover dhe Baza)
- Busull dixhital 9DOF Razor IMU MO
- Fona 800H 2G GPRS celulare
- Ekran 2.2 "TFT
- Arduino Due 'Master'
- "Skllevër" të ndryshëm Arduino.
Çuditërisht, shumë Sat Navs nuk kanë një busull dixhitale që do të thotë nëse jeni të palëvizshëm dhe të humbur, ju duhet të ecni ose të vozisni në çdo drejtim të rastësishëm para se pajisja t'ju tregojë drejtimin e duhur nga satelitët. Nëse humbisni në një xhungël të trashë ose park nëntokësor të makinave jeni të mbushur!
Hapi 1: Si funksionon
Aktualisht, një palë e thjeshtë koordinatash ngarkohen nga një telefon i mençur ose kompjuter, të cilat më pas shkarkohen nga Weedinator. Këto pastaj interpretohen në një titull në gradë dhe një distancë për të udhëtuar në mm.
Fona GPRS përdoret për të hyrë në një bazë të dhënash në internet përmes rrjetit celular 2G dhe për të marrë dhe transmetuar koordinatat në Arduino Due përmes një Arduino Nano. The Due është Master dhe kontrollon një sërë Arduinos të tjerë si Skllevër përmes I2C dhe autobusëve serik. The Due mund të ndërveprojë me të dhënat e drejtpërdrejta nga Ublox dhe Razor dhe të shfaqë një titull të llogaritur nga një prej skllevërve të tij Arduino.
Gjurmuesi satelitor Ublox është veçanërisht i zgjuar pasi përdor anulimin e gabimit për të marrë rregullime shumë të sakta - një devijim total nominal përfundimtar prej rreth 40 mm. Moduli përbëhet nga një palë identike, njëra prej të cilave, "rover", lëviz me Weedinator, dhe tjetra, "baza" është e fiksuar në një shtyllë diku jashtë. Anulimi i gabimit arrihet pasi baza është në gjendje të arrijë një rregullim vërtet të saktë duke përdorur një sasi të madhe mostrash me kalimin e kohës. Këto mostra më pas mesatarizohen për të kompensuar ndryshimin e kushteve atmosferike. Nëse pajisja do të lëvizte, padyshim që nuk do të ishte në gjendje të merrte asnjë lloj mesatarizimi dhe do të ishte në mëshirën e plotë të një mjedisi në ndryshim. Sidoqoftë, nëse një pajisje statike dhe lëvizëse punojnë së bashku, për sa kohë që ata mund të komunikojnë mes njëri -tjetrit, ata mund të përfitojnë nga të dy. Në çdo kohë, njësia bazë ka ende një gabim, por gjithashtu ka një rregullim super të saktë të llogaritur më parë, kështu që mund të llogarisë gabimin aktual duke zbritur një grup koordinatash nga një tjetër. Pastaj dërgon gabimin e llogaritur në rover përmes një lidhje radio, e cila më pas shton gabimin në koordinatat e veta dhe hej presto, ne kemi gabim në anulimin! Në aspektin praktik, anulimi i gabimit bën diferencën midis devijimit total prej 3 metrash dhe 40 mm.
Sistemi i plotë duket i komplikuar, por në të vërtetë është mjaft i lehtë për t'u ndërtuar, ose i lirshëm në një sipërfaqe jo përçuese ose duke përdorur PCB që kam projektuar, e cila lejon që të gjitha modulet të fiksohen mirë. Zhvillimi i ardhshëm është ndërtuar mbi PCB, duke lejuar që një grup i madh Arduinos të përfshihen për të kontrolluar motorët për drejtimin, lëvizjen përpara dhe një makinë CNC në bord. Lundrimi gjithashtu do të ndihmohet nga të paktën një sistem i njohjes së objekteve duke përdorur kamera për të ndjerë objektet me ngjyrë, për shembull topa golfi fluoreshente, të cilët janë të pozicionuar me kujdes në një lloj rrjeti - Shikoni këtë hapësirë!
Hapi 2: Përbërësit
- Ublox C94 M8M (Rover dhe Base) x 2 prej
- Busull dixhital 9DOF Razor IMU MO
- Fona 800H 2G GPRS celulare 1946
- Arduino Due
- Arduino Nano x 2 prej
- SparkFun Pro Micro
- Adafruit 2.2 "TFT IL1940C 1480
- PCB (shih skedarët Gerber të bashkangjitur) x 2 prej
- 1206 SMD rezistente zero ohm x 12 prej
- 1206 LEDs x 24 e
Skedari PCB hapet me programin 'Design Spark'.
Hapi 3: Instalimi i moduleve
Kjo është pjesa e lehtë - veçanërisht e lehtë me PCB që kam bërë - thjesht ndiqni diagramin e mësipërm. Kujdes nevojitet për të shmangur lidhjen e moduleve 3v në 5v, madje edhe në linjat seriale dhe I2C.
Hapi 4: Kodi
Pjesa më e madhe e kodit ka të bëjë me marrjen e të dhënave që të lëvizin nëpër sistem në mënyrë të rregullt dhe mjaft shpesh ka nevojë të konvertohen formatet e të dhënave nga numrat e plotë në nota në vargje dhe karaktere, të cilat mund të jenë shumë konfuze! Protokolli 'Serial' do të trajtojë vetëm karakteret dhe ndërsa I2Protokolli C do të trajtojë numra të plotë shumë të vegjël, e kam gjetur më mirë t'i konvertoj ato në karaktere dhe pastaj të kthehem përsëri në numra të plotë në skajin tjetër të linjës së transmetimit.
Kontrolluesi Weedinator është në thelb një sistem 8 bitësh me shumë Arduinos individualë, ose 'MCU's. Kur 8 biti përshkruhet si zero binare aktuale dhe ato mund të duket kështu: B01100101 që do të ishte e barabartë me:
(1x2)+(0x2)2+(1x2)3+(0x2)4+(0x2)5+(1x2)6+(1x2)7+(0x2)8 =
Vlera dhjetore e shifrës | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
Vlera e Shifrës Binare | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
= 101
Dhe vlera maksimale e mundshme është 255…. Pra, 'bajt' i plotë maksimal mund ta transmetojmë mbi I2C është 255, që është shumë kufizuese!
Në një Arduino ne mund të transmetojmë deri në 32 karaktere ASCII, ose bajt, në të njëjtën kohë duke përdorur I2C, e cila është shumë më e dobishme, dhe grupi i karaktereve përfshin numra, shkronja dhe karaktere kontrolli në formatin 7 bit si më poshtë:
Për fat të mirë, përpiluesi Arduino bën të gjithë punën e shndërrimit nga karakteri në binar në sfond, por ai ende pret llojin e saktë të karakterit për transmetimin e të dhënave dhe nuk do të pranojë 'Vargje'.
Tani është kur gjërat mund të bëhen konfuze. Karakteret mund të shprehen si karaktere të vetme duke përdorur përkufizimin char ose si një grup një -dimensional prej 20 karakteresh duke përdorur char [20]. Një varg Arduino është shumë i ngjashëm me një grup personazhesh dhe është fjalë për fjalë një varg personazhesh që shpesh interpretohen nga truri i njeriut si "fjalë".
// Ndërton karakterin 'distanceCharacter':
Iniciatori i vargut = ""; distanceString = inicues + distanceString; int n = distanceString.length (); për (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }
Kodi i mësipërm mund të shndërrojë një varg të gjatë karakteresh në një grup karakteresh, të cilat pastaj mund të transmetohen mbi I2C ose serial.
Në anën tjetër të linjës së transmetimit, të dhënat mund të konvertohen përsëri në një varg duke përdorur kodin e mëposhtëm:
distanceString = distanceString + c; // string = varg + karakter
Një grup karakteresh nuk mund të konvertohet drejtpërdrejt në një numër të plotë dhe duhet të kalojë në formatin e vargut, por kodi i mëposhtëm do të konvertohet nga një varg në një numër të plotë:
int rezultati = (distancaString).toInt ();
int distanceMetres = rezultati;
Tani kemi një numër të plotë të cilin mund ta përdorim për të bërë llogaritjet. Notat (numrat me një pikë dhjetore) duhet të konvertohen në numra të plotë në fazën e transmetimit dhe më pas të ndahen me 100 për dy vende dhjetore p.sh.:
float distanceMetres = distancaMm / 1000;
Së fundi, një varg mund të krijohet nga një përzierje e karaktereve dhe numrave të plotë, p.sh.:
// Kjo është ajo ku të dhënat përpilohen në një karakter:
dataString = iniciator + "BEAR" + zbearing + "DIST" + distancë; // Kufizuar në 32 karaktere // Varg = varg + karaktere + numër i plotë + karaktere + numër i plotë.
Pjesa tjetër e kodit është material standard Arduino që mund të gjendet në shembujt e ndryshëm në bibliotekat Arduino. Shikoni shembullin 'shembuj >>>> Strings dhe shembujt e bibliotekës' wire '.
Këtu është i gjithë procesi për transmetimin dhe marrjen e një notimi:
Konverto Float ➜ Integer ring String ➜ Character array….. pastaj TRANSMIT array karakter nga Master ➜➜
➜➜ MERRNI personazhe individualë në Slave…. pastaj konvertoni Karakterin ring Varg ➜ Integer ➜ Float
Hapi 5: Baza e të dhënave dhe Uebfaqja
Më sipër është treguar struktura e bazës së të dhënave dhe skedarët e kodit php dhe html janë bashkangjitur. Emrat e përdoruesve, emrat e bazës së të dhënave, emrat e tabelave dhe fjalëkalimet fshihen për siguri.
Hapi 6: Testet e navigimit
Unë arrita të lidh një regjistrues të të dhënave në bordin e kontrollit Weedinator përmes I2C dhe të marr një ide për performancën e pozicionimit të satelitit Ublox M8M:
Në "Fillimin e Ftohtë", treguar nga grafiku i gjelbër, moduli filloi me shumë gabime, mjaft të ngjashme me një GPS "normal", dhe gradualisht gabimi u zvogëlua derisa, pas rreth 2 orësh, ai mori një rregullim RTK midis rover dhe baza (e treguar si kryqi i kuq). Gjatë asaj periudhe 2 orëshe, moduli bazë po ndërton dhe përditëson vazhdimisht një vlerë mesatare për gjerësinë dhe gjatësinë gjeografike dhe pasi intervali kohor i para-programuar vendos që ka marrë një rregullim të mirë. 2 grafikët e mëposhtëm tregojnë sjelljen pas një 'Fillimi të nxehtë ku moduli bazë tashmë ka llogaritur një mesatare të mirë. Grafiku i lartë është mbi një periudhë prej 200 minutash dhe herë pas here fiksimi humbet dhe roveri dërgon një mesazh NMEA tek Weedinator se rregullimi është bërë përkohësisht i pasigurt.
Grafiku i poshtëm blu është një 'zmadhim' në kutinë e kuqe në grafikun e sipërm dhe tregon një fotografi të mirë përfaqësuese të performancës Ublox, me devijim total prej 40 mm, i cili është më se i mirë sa duhet për të drejtuar Weedinatorin në pushimin e tij, por ndoshta jo aq i mirë sa për të kultivuar tokën rreth bimëve individuale?
Grafiku i tretë tregon të dhënat e mbledhura me Rover dhe Base 100 metra larg - Asnjë gabim shtesë nuk u zbulua - distanca e ndarjes nuk bëri asnjë ndryshim në saktësinë.
Hapi 7: Përfundimtar
Recommended:
Ekrani satelitor i Jupiterit: 3 hapa
Shfaqja Satelitore e Jupiterit: Ky është një projekt argëtues dhe i lehtë që ka shumë potencial për të bërë një shfaqje interesante, edukative dhe bisedore. Ai përdor një rrip të lirë neopixel (10 dollarë) për të shfaqur orientimin aktual të katër hënave kryesore të Jupi
Lundrimi me zë i Raspberry Pi duke ndihmuar njerëzit e verbër: 7 hapa (me fotografi)
Lundrimi me zë Raspberry Pi duke ndihmuar njerëzit e verbër: Përshëndetje Në këtë udhëzues do të shohim se si një pi mjedër mund të ndihmojë njerëzit e verbër duke përdorur udhëzimet zanore të përcaktuara nga përdoruesi. Këtu, me ndihmën e hyrjes së sensorit tejzanor për të matur distancën që mundemi Zëri udhëzon njerëzit e verbër për të ndjekur
Lundrimi në Softuerin e Raspberry Pi: Pjesa 1: 14 Hapa
Lundrimi në Softuerin e Raspberry Pi: Pjesa 1: Në këtë mësim, do të mësoni se si të lundroni në Raspberry Pi tuaj duke përdorur ndërfaqen e linjës së komandës. Do të krijoni dosje, do të kaloni nga një drejtori në tjetrën dhe do të mësoni se si të bëni një pamje të ekranit për të regjistruar të gjithë punën tuaj gjatë gjithë klasës! Ne do
EWEEDINATOR☠ Pjesa 4: Gjeometria diferenciale e drejtimit Kodi: 3 hapa
EWEEDINATOR☠ Pjesa 4: Kodi Diferencial i Gjeometrisë së Drejtimit: Nëse keni kohë për të parë videon e mësipërme, do të vini re se ka disa zhurma të çuditshme të shkaktuara nga motorët në ngecjen e drejtimit herë pas here ndërsa WEEDINATOR lundron në një 3 kthesë pikë. Motorët në thelb po bllokohen kundër
EWEEDINATOR☠ Pjesa 3: Ndërtimi i Shasisë: 8 Hapa (me Fotografi)
EWEEDINATOR☠ Pjesa 3: Ndërtimi i Shasisë: Dimri është koha perfekte për të ndërtuar makineri, veçanërisht kur saldimi dhe prerja e plazmës përfshihen pasi të dyja sigurojnë një sasi të drejtë ngrohtësie. Nëse po pyesni se çfarë është një prestar plazma, atëherë lexoni për procedurat e thella. Nëse keni qenë