Sisällysluettelo:
- Vaihe 1: Näin se toimii
- Vaihe 2: Komponentit
- Vaihe 3: Moduulien kytkentä
- Vaihe 4: Koodi
- Vaihe 5: Tietokanta ja verkkosivu
- Vaihe 6: Navigointitestit
- Vaihe 7: Lopullinen
Video: EWEEDINATOR☠ Osa 2: Satelliittinavigointi: 7 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Weedinator -navigointijärjestelmä on syntynyt!
Pyörivä maatalousrobotti, jota voidaan ohjata älypuhelimella.
… Ja sen sijaan, että kävisimme läpi säännöllisen kokoonpanoprosessin, ajattelin yrittää selittää, miten se todella toimii - ei tietenkään KAIKKI, vaan tärkeimmät ja mielenkiintoisimmat asiat. Anteeksi sananlasku, mutta se, miten data kulkee yksittäisten moduulien välillä, on mielestäni mielenkiintoinen ja jaettu pienimpään nimittäjään, ja lopulta saamme todellisia "bittejä" - nollia ja ykkösiä. Jos olet koskaan ollut hämmentynyt biteistä, tavuista, merkeistä ja merkkijonoista, nyt saattaa olla aika hämmentyä? Yritän myös purkaa hieman abstraktin käsitteen nimeltä "Virheen peruutus".
Itse järjestelmässä on:
- GPS/GNSS: Ublox C94 M8M (Rover ja Base)
- 9DOF Partakone IMU MO digitaalinen kompassi
- Fona 800H 2G GPRS matkapuhelin
- 2,2 "TFT -näyttö
- Arduino Due 'Master'
- Erilaisia Arduinon orjia.
Kummallista, että monissa satelliittinavigointilaitteissa ei ole digitaalista kompassia, mikä tarkoittaa, että jos olet paikalla ja kadonnut, sinun täytyy kävellä tai ajaa mihin tahansa satunnaiseen suuntaan, ennen kuin laite voi näyttää sinulle oikean suunnan satelliiteista. Jos eksyt paksuun viidakkoon tai maanalaiseen pysäköintialueeseen, olet täynnä!
Vaihe 1: Näin se toimii
Tällä hetkellä älypuhelimesta tai tietokoneesta ladataan yksinkertainen koordinaattipari, jonka Weedinator lataa. Nämä tulkitaan sitten suuntana asteina ja matkaa millimetreinä.
GPRS fonaa käytetään pääsemään online -tietokantaan 2G -matkapuhelinverkon kautta ja vastaanottamaan ja lähettämään koordinaatit Arduino Due -laitteelle Arduino Nanon kautta. Due on isäntä ja ohjaa joukkoa muita Arduinoja orjina I2C- ja sarjaväylien kautta. Due voi olla vuorovaikutuksessa Ubloxin ja Razorin reaaliaikaisten tietojen kanssa ja näyttää otsikon, jonka yksi sen Arduino -orjista on laskenut.
Ublox -satelliittiseuranta on erityisen älykäs, koska se käyttää virheiden poistoa saadakseen erittäin tarkkoja korjauksia - lopullinen nimellinen kokonaispoikkeama noin 40 mm. Moduuli koostuu identtisestä parista, joista toinen, "rover", liikkuu Weedinatorin kanssa ja toinen, "pohja" on kiinnitetty napaan jossain ulkona. Virheiden peruutus saavutetaan siten, että tukiasema pystyy saavuttamaan todella tarkan korjauksen käyttämällä suurta määrää näytteitä ajan mittaan. Nämä näytteet lasketaan sitten keskiarvoksi muuttuvien ilmakehän olosuhteiden kompensoimiseksi. Jos laite liikkuisi, se ei selvästikään pystyisi saamaan minkäänlaista keskiarvoa ja olisi täysin muuttuvan ympäristön armoilla. Kuitenkin, jos staattinen ja liikkuva laite toimivat yhdessä, niin kauan kuin ne voivat kommunikoida keskenään, he voivat hyötyä molemmista. Tukiasemassa on aina virhe, mutta sillä on myös aiemmin laskettu erittäin tarkka korjaus, jotta se voi laskea todellisen virheen vähentämällä yhden koordinaattisarjan toisesta. Sitten se lähettää lasketun virheen roverille radiolinkin kautta, joka sitten lisää virheen omiin koordinaatteihinsa ja hei presto, meillä on virheen peruutus! Käytännössä virheenpoisto tekee eron 3 metrin ja 40 mm: n kokonaispoikkeaman välillä.
Koko järjestelmä näyttää monimutkaiselta, mutta on itse asiassa melko helppo rakentaa joko löysästi johtamattomalle pinnalle tai käyttämällä suunniteltavaa piirilevyä, jonka avulla kaikki moduulit voidaan kiinnittää tukevasti. Tuleva kehitys on rakennettu piirilevylle, jolloin laaja valikoima Arduinoja voidaan sisällyttää ohjauksen, eteenpäin liikkeen ja sisäisen CNC-koneen ohjausmoottoreihin. Navigointia avustaa myös ainakin yksi esineiden tunnistusjärjestelmä, joka käyttää kameroita värillisten kohteiden havaitsemiseen, esimerkiksi fluoresoivat golfpallot, jotka on sijoitettu huolellisesti jonkinlaiseen verkkoon - Katso tätä tilaa!
Vaihe 2: Komponentit
- Ublox C94 M8M (Rover ja Base) x 2
- 9DOF Razor IMU MO digitaalinen kompassi
- Fona 800H 2G GPRS matkapuhelin 1946
- Arduino Due
- Arduino Nano x 2
- SparkFun Pro Micro
- Adafruit 2,2 "TFT IL1940C 1480
- PCB (katso liitteenä olevat Gerber -tiedostot) x 2
- 1206 SMD nollaohmin vastukset x 12 of
- 1206 LEDiä x 24 kpl
PCB -tiedosto avautuu 'Design Spark' -ohjelmistolla.
Vaihe 3: Moduulien kytkentä
Tämä on helppo osa - etenkin helppo tekemäni piirilevyn kanssa - seuraa vain yllä olevaa kaaviota. On huolehdittava siitä, ettei 3V -moduuleja kytketä 5 V: iin edes sarja- ja I2C -linjoilla.
Vaihe 4: Koodi
Suurin osa koodista koskee datan siirtymistä järjestelmään järjestyksessä ja melko usein on tarpeen muuntaa datamuodot kokonaisluvuista kellukkeiksi merkkijonoiksi ja merkeiksi, mikä voi olla hyvin hämmentävää! Sarjaprotokolla käsittelee vain merkkejä ja I2C -protokolla käsittelee hyvin pieniä kokonaislukuja, minusta oli parempi muuntaa ne merkkeiksi ja muuntaa sitten takaisin kokonaisluvuiksi siirtolinjan toisessa päässä.
Weedinator -ohjain on pohjimmiltaan 8 -bittinen järjestelmä, jossa on paljon yksittäisiä Arduinoja tai MCU: ita. Kun 8 -bittisiä kuvataan todellisiksi binaarisiksi nolliksi, ne voivat näyttää tältä: B01100101, joka vastaa:
(1x2)+(0x2)2+(1x2)3+(0x2)4+(0x2)5+(1x2)6+(1x2)7+(0x2)8 =
Desimaaliluku | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
Binäärilukuinen arvo | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
= 101
Ja suurin mahdollinen arvo on 255 … Joten suurin kokonaisluku 'tavu', jonka voimme lähettää I: n kautta2C on 255, mikä on erittäin rajoittavaa!
Arduinolla voimme lähettää enintään 32 ASCII -merkkiä tai tavua kerrallaan käyttämällä I: tä2C, joka on paljon hyödyllisempi, ja merkistö sisältää numeroita, kirjaimia ja ohjausmerkkejä 7 -bittisessä muodossa seuraavasti:
Onneksi Arduino -kääntäjä tekee kaiken muunnoksen merkistä binaariksi taustalla, mutta se odottaa silti oikean tyyppistä merkkiä tiedonsiirtoon, eikä se hyväksy merkkijonoja.
Nyt tilanne voi muuttua sekaisin. Merkit voidaan ilmaista yksittäisinä merkeinä käyttämällä char -määritelmää tai 20 -ulotteisena yksipainotteisena matriisina käyttämällä merkkiä [20]. Arduino -merkkijono on hyvin samanlainen kuin merkkijono ja se on kirjaimellisesti merkkijono, jonka ihmisen aivot tulkitsevat usein sanoiksi.
// Rakentaa merkin "distanceCharacter":
Merkkijonon aloittaja = ""; distanceString = aloittaja + distanceString; int n = etäisyysJono.pituus (); for (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }
Yllä oleva koodi voi muuntaa pitkän merkkijonon merkkijonoksi, joka voidaan sitten lähettää I: n kautta2C tai sarja.
Siirtolinjan toisessa päässä data voidaan muuntaa takaisin merkkijonoksi käyttämällä seuraavaa koodia:
distanceString = etäisyysJono + c; // merkkijono = merkkijono + merkki
Merkkiryhmää ei voi muuntaa suoraan kokonaislukuksi, ja sen on ensin mentävä merkkijonomuotoon, mutta seuraava koodi muuntuu merkkijonosta kokonaisluvuksi:
int tulos = (distanceString).toInt ();
int distanceMetres = tulos;
Nyt meillä on kokonaisluku, jota voimme käyttää laskelmien tekemiseen. Kellukkeet (luvut desimaalilla) on muunnettava kokonaisluvuiksi lähetysvaiheessa ja jaettava sitten 100: lla kahden desimaalin tarkkuudella, esim.
float distanceMetres = etäisyysMm / 1000;
Lopuksi merkkijono voidaan luoda merkkien ja kokonaislukujen seoksesta, esim.
// Tässä tiedot kootaan merkkiksi:
dataString = aloittaja + "BEAR" + zlaakeri + "DIST" + zdistance; // Vain 32 merkkiä // Merkkijono = merkkijono + merkkiä + kokonaisluku + merkkiä + kokonaisluku.
Loput koodista ovat tavallisia Arduino -juttuja, jotka löytyvät Arduino -kirjastojen eri esimerkeistä. Tutustu esimerkkeihin "esimerkit >>>> Jouset" ja "lanka" -kirjastoesimerkkeihin.
Tässä on koko kellukkeen lähetys- ja vastaanottoprosessi:
Muunna Float ➜ Kokonaisluku ➜ Merkkijono ➜ Merkkitaulukko ….. sitten LÄHETÄ merkkipaketti Masterilta ➜➜
EC VASTAA yksittäisiä hahmoja orjassa…. Muunna sitten merkki ➜ merkkijono ➜ kokonaisluku ➜ kelluva
Vaihe 5: Tietokanta ja verkkosivu
Yllä on tietokantarakenne ja php- ja html -kooditiedostot liitteenä. Käyttäjätunnukset, tietokantojen nimet, taulukkojen nimet ja salasanat poistetaan turvallisuuden vuoksi.
Vaihe 6: Navigointitestit
Onnistuin kytkemään dataloggerin Weedinator -ohjauskorttiin I2C: n kautta ja saamaan jonkinlaisen käsityksen Ublox M8M -satelliitin paikannustehokkuudesta:
Vihreässä käyrässä näytetyssä 'kylmäkäynnistyksessä' moduuli lähti liikkeelle paljon virheitä, aivan kuten 'normaali' GPS, ja vähitellen virhe pieneni, kunnes noin 2 tunnin kuluttua se sai RTK -korjauksen roverin välillä ja pohja (näkyy punaisena ristinä). Tuon kahden tunnin aikana perusmoduuli rakentaa ja päivittää jatkuvasti leveys- ja pituusasteiden keskiarvoa ja sen jälkeen, kun esiohjelmoitu aikaväli päättää, että se on saanut hyvän korjauksen. 'jossa perusmoduuli on jo laskenut hyvän keskiarvon. Ylempi kuvaaja on yli 200 minuutin ajanjakso ja joskus korjaus menetetään ja rover lähettää NMEA -viestin Weedinatorille, että korjaus on väliaikaisesti tullut epäluotettavaksi.
Alempi sininen kuvaaja on `` lähentää '' ylemmän kaavion punaiseen ruutuun ja näyttää hyvän edustavan kuvan Ubloxin suorituskyvystä, kokonaispoikkeama 40 mm, mikä on enemmän kuin tarpeeksi hyvä ohjaamaan Weedinatorin paikkaansa, mutta ei ehkä tarpeeksi hyvä viljelemään maaperää yksittäisten kasvien ympärillä?
Kolmas kaavio näyttää tiedot, jotka on kerätty Roverin ja Base: n kanssa 100 metrin etäisyydellä toisistaan - Lisävirhettä ei havaittu - etäisyyden etäisyys ei vaikuttanut tarkkuuteen.
Vaihe 7: Lopullinen
Suositeltava:
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: 20 vaihetta (kuvilla)
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: Hei, ystävä! Tässä kaksiosaisessa sarjassa opimme käyttämään Tinkercadin piirejä - hauskaa, tehokasta ja opettavaista työkalua piirien toiminnasta! Yksi parhaista tavoista oppia on tehdä. Joten suunnittelemme ensin oman projektimme: th
Liikeaktivoidut Cosplay -siivet Circuit Playground Expressin avulla - Osa 1: 7 vaihetta (kuvilla)
Liikeaktivoidut Cosplay -siivet Circuit Playground Expressin avulla - Osa 1: Tämä on osa kaksiosaista projektia, jossa aion näyttää teille prosessini, jolla teen pari automatisoituja keiju -siipiä. siipien mekaniikka, ja toinen osa tekee siitä puettavan ja lisää siivet
Teleesitysrobotti: perusalusta (osa 1): 23 vaihetta (kuvilla)
Telepresence -robotti: perusalusta (osa 1): Tele -läsnäolurobotti on robotti, jota voidaan ohjata etänä Internetin välityksellä ja joka toimii jonkun muun sijaisena. Jos olet esimerkiksi New Yorkissa, mutta haluat olla fyysisesti vuorovaikutuksessa Kalifornian ihmisryhmän kanssa
EWEEDINATOR☠ Osa 4: Tasauspyörästön geometrian koodi: 3 vaihetta
EWEEDINATOR☠ Osa 4: Tasauspyörästön geometrian koodi: Jos sinulla on aikaa katsoa yllä oleva video, huomaat, että ohjauslaitteen moottorit pysähtyvät aina silloin tällöin, kun WEEDINATOR navigoi 3 pisteen vuoro. Moottorit jumittuvat lähinnä
EWEEDINATOR☠ Osa 3: Alustan rakenne: 8 vaihetta (kuvilla)
WEEDINATOR☠ Osa 3: Alustan rakenne: Talvi on täydellinen aika koneiden rakentamiseen, erityisesti kun hitsaus ja plasmaleikkaus ovat mukana, koska molemmat tarjoavat kohtuullisen määrän lämpöä. Jos mietit mitä plasmaleikkuri on, lue tarkemmat toimenpiteet