INHOUDSOPGAWE:
- Stap 1: Hoe dit werk
- Stap 2: Komponente
- Stap 3: Bekabeling van die modules
- Stap 4: Kode
- Stap 5: Databasis en webbladsy
- Stap 6: Navigasietoetse
- Stap 7: Finale
Video: EWEEDINATOR☠ Deel 2: Satellietnavigasie: 7 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Die Weedinator -navigasiestelsel word gebore!
'N Landbou -robot wat deur 'n slimfoon beheer kan word.
… En eerder as om net die gereelde proses van hoe dit saamgestel is, deur te gaan, het ek gedink ek sou probeer verduidelik hoe dit eintlik werk - natuurlik nie ALLES nie, maar die belangrikste en interessantste stukke. Verskoon asseblief die woordspeling, maar dit is hoe die data tussen die individuele modules vloei, wat ek interessant vind en in die laagste noemer van die werklike "stukkies" beland - nulle en ene. As u ooit deurmekaar geraak het oor stukkies, grepe, karakters en snare, is dit dan moontlik die tyd dat u nie verwar word nie? Ek gaan ook probeer om 'n effens abstrakte konsep genaamd 'Error Cancelling' te verwar.
Die stelsel self bevat:
- GPS/GNSS: Ublox C94 M8M (Rover en Base)
- 9DOF Razor IMU MO digitale kompas
- Fona 800H 2G GPRS sellulêr
- 2.2 "TFT skerm
- Arduino Due 'Master'
- Verskeie Arduino 'Slaves'.
Vreemd genoeg het baie Sat Navs nie 'n digitale kompas nie, wat beteken dat as u stilstaan en verlore is, u in enige willekeurige rigting moet loop of ry voordat die toestel u die regte rigting van satelliete kan wys. As u verdwaal in 'n dik oerwoud of ondergrondse parkeerterrein, is u vol!
Stap 1: Hoe dit werk
Tans word 'n eenvoudige paar koördinate vanaf 'n slimfoon of rekenaar opgelaai, wat dan deur die Weedinator afgelaai word. Dit word dan geïnterpreteer in 'n opskrif in grade en 'n afstand om in mm te reis.
Die GPRS -fona word gebruik om toegang tot 'n aanlyn databasis via die 2G -selfoonnetwerk te verkry en die koördinate via 'n Arduino Nano na die Arduino Due te ontvang en oor te dra. The Due is the Master en beheer 'n verskeidenheid ander Arduinos as slawe via die I2C en reeksbusse. The Due kan interaksie hê met lewendige data van die Ublox en Razor en 'n opskrif vertoon wat bereken is deur een van sy Arduino -slawe.
Die Ublox -satellietopsporing is besonder slim, aangesien dit foutonderdrukking gebruik om baie akkurate oplossings te kry - 'n finale nominale totale afwyking van ongeveer 40 mm. Die module bestaan uit 'n identiese paar, waarvan een, die 'rover', saam met die Weedinator beweeg, en die ander, die 'basis' is êrens buite op die paal vasgemaak. Foutkansellasie word bereik deurdat die basis 'n baie akkurate oplossing kan kry deur mettertyd 'n groot hoeveelheid monsters te gebruik. Hierdie monsters word dan gemiddeld om te kompenseer vir veranderende atmosferiese toestande. As die toestel aan die beweeg was, sou dit duidelik nie gemiddeld kon wees nie en sou dit ten volle aan 'n veranderende omgewing toegewy wees. As 'n statiese en bewegende toestel egter saamwerk, solank hulle met mekaar kan kommunikeer, kan hulle voordeel trek uit albei. Op die gegewe tydstip het die basiseenheid steeds 'n fout, maar dit het ook 'n voorheen berekende super akkurate oplossing, sodat dit die werklike fout kan bereken deur een stel koördinate van 'n ander af te trek. Dit stuur dan die berekende fout na die rover via 'n radioskakel, wat dan die fout by sy eie koördinate voeg en hey presto, ons het 'n fout kanselleer! In praktiese terme maak die kansellasie van foute die verskil tussen 3 meter en 40 mm totale afwyking.
Die volledige stelsel lyk ingewikkeld, maar is eintlik redelik maklik om te bou, los op 'n nie -geleidende oppervlak of met behulp van die PCB wat ek ontwerp het, sodat alle modules veilig vasgemaak kan word. Toekomstige ontwikkeling is op die PCB ingebou, waardeur 'n groot verskeidenheid Arduino's opgeneem kan word in die bestuur van motors vir stuur, voorwaartse beweging en 'n boord-CNC-masjien. Navigasie sal ook bygestaan word deur ten minste een voorwerpherkenningstelsel wat kameras gebruik om gekleurde voorwerpe te waarneem, byvoorbeeld fluoresserende gholfballe, wat noukeurig in 'n soort rooster geplaas word - kyk na hierdie ruimte!
Stap 2: Komponente
- Ublox C94 M8M (Rover en Base) x 2 van
- 9DOF Razor IMU MO digitale kompas
- Fona 800H 2G GPRS sellulêr 1946
- Arduino Due
- Arduino Nano x 2 van
- SparkFun Pro Micro
- Adafruit 2.2 "TFT IL1940C 1480
- PCB (sien aangehegte Gerber -lêers) x 2 van
- 1206 SMD zero ohm weerstande x 12 van
- 1206 LED's x 24 van
Die PCB -lêer word oopgemaak met 'Design Spark' -sagteware.
Stap 3: Bekabeling van die modules
Dit is die maklike deel - veral maklik met die PCB wat ek gemaak het - volg net die diagram hierbo. Sorg moet gedra word om te verhoed dat die bedrading van 3v -modules na 5v, selfs op die reeks- en I2C -lyne.
Stap 4: Kode
Die meeste van die kode handel daaroor dat data op 'n ordelike manier deur die stelsel beweeg moet word, en dit is baie gereeld nodig om dataformate van heelgetalle na vlotte na strings en karakters om te skakel, wat baie verwarrend kan wees! Die 'Serial' protokol hanteer slegs karakters en terwyl die I2C -protokol hanteer baie klein heelgetalle; ek het dit beter gevind om dit na karakters om te skakel en dan om te skakel na heelgetalle aan die ander kant van die transmissielyn.
Die Weedinator -kontroleerder is basies 'n 8 -bis -stelsel met baie individuele Arduinos, of 'MCU's'. As 8 bis beskryf word as werklike binêre nulle en die een, kan dit so lyk: B01100101 wat gelyk sal wees aan:
(1x2)+(0x2)2+(1x2)3+(0x2)4+(0x2)5+(1x2)6+(1x2)7+(0x2)8 =
Desimale syferwaarde | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
Binêre syfer waarde | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
= 101
En die maksimum waarde is 255…. Dus die maksimum heelgetal 'byte' wat ons oor I kan oordra2C is 255, wat baie beperkend is!
Op 'n Arduino kan ons tot 32 ASCII -karakters, of grepe, op 'n slag stuur met behulp van I2C, wat baie nuttiger is, en die karakterset bevat syfers, letters en kontrolekarakters in 7 bis -formaat soos hieronder:
Gelukkig doen die Arduino -samesteller al die werk van die omskakeling van karakter na binêre op die agtergrond, maar dit verwag steeds die korrekte tipe karakter vir data -oordrag en dit aanvaar nie 'snare' nie.
Dit is nou wanneer dinge verwarrend kan raak. Karakters kan uitgedruk word as enkele karakters met behulp van die kar definisie of as 'n eendimensionele reeks van 20 karakters met behulp van char [20]. 'N Arduino -string is baie soortgelyk aan 'n karakterreeks en is letterlik 'n string karakters wat die menslike brein dikwels as' woorde 'interpreteer.
// Bou die karakter 'distanceCharacter':
Stringinisieerder = ""; distanceString = inisieerder + distanceString; int n = distanceString.length (); vir (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }
Bogenoemde kode kan 'n lang string karakters omskakel in 'n karakterreeks karakters wat dan oor I oorgedra kan word2C of reeks.
Aan die ander kant van die transmissielyn kan die data met behulp van die volgende kode na 'n string omgeskakel word:
distanceString = distanceString + c; // string = string + karakter
'N Karakterreeks kan nie direk na 'n heelgetal omgeskakel word nie en moet eers in die stringformaat ingaan, maar die volgende kode sal van 'n string na 'n heelgetal omgeskakel word:
int resultaat = (distanceString).toInt ();
int distanceMetres = resultaat;
Nou het ons 'n heelgetal wat ons kan gebruik om berekeninge te maak. Floats (getalle met 'n desimale punt) moet omgeskakel word na heelgetalle tydens die transmissiestadium en dan gedeel deur 100 vir twee desimale plekke, bv:
vlotafstandMeters = afstandMm / 1000;
Laastens kan 'n string uit 'n mengsel van karakters en heelgetalle geskep word, bv:
// Dit is waar die data in 'n karakter saamgestel word:
dataString = inisieerder + "BEAR" + zbearing + "DIST" + zdistance; // Beperk tot 32 karakters // String = string + karakters + intereger + karakters + heelgetal.
Die res van die kode is standaard Arduino -goed wat in die verskillende voorbeelde in die Arduino -biblioteke voorkom. Kyk na die 'voorbeelde >>>> snare' -voorbeeld en die' draad' -biblioteekvoorbeelde.
Hier is die hele proses om 'n vlot te stuur en te ontvang:
Skakel Float ➜ Heelgetal ➜ String ➜ Karakter -skikking om … dan TRANSMIT karakterreeks van Master ANS
➜➜ ONTVANG individuele karakters op Slave … skakel dan karakter ➜ string ➜ heelgetal ➜ float om
Stap 5: Databasis en webbladsy
Hierbo word die databasisstruktuur getoon en die php- en html -kode lêers is aangeheg. Gebruikersname, databasisname, tabelname en wagwoorde word vir sekuriteit uitgewis.
Stap 6: Navigasietoetse
Ek het daarin geslaag om 'n datalogger aan te sluit by die Weedinator -beheerbord via I2C en 'n idee te kry van die Ublox M8M -satellietposisieprestasie:
By 'Cold Start', wat deur die groen grafiek aangedui word, het die module met baie foute begin, baie soortgelyk aan 'n 'normale' GPS, en geleidelik het die fout verminder totdat dit na ongeveer 2 uur 'n RTK -oplossing tussen rover gekry het en basis (aangedui as die rooi kruis). Gedurende die periode van 2 uur bou en baseer die basismodule voortdurend 'n gemiddelde waarde op vir breedtegraad en lengtegraad en besluit nadat die vooraf geprogrammeerde tydsinterval 'n goeie oplossing gekry het. Die volgende 2 grafieke toon gedrag na 'n 'warm begin' 'waar die basismodule reeds 'n goeie gemiddelde bereken het. Die boonste grafiek is oor 'n tydperk van 200 minute en soms is die oplossing verlore en stuur die rover 'n NMEA -boodskap aan die Weedinator dat die oplossing tydelik onbetroubaar geword het.
Die onderste blou grafiek is 'n 'inzoomen' op die rooi blokkie in die boonste grafiek en toon 'n goeie verteenwoordigende kiekie van die Ublox -prestasie, met 'n totale afwyking van 40 mm, wat meer as goed genoeg is om die Weedinator na sy leemte te lei, maar moontlik nie goed genoeg om die grond rondom individuele plante te bewerk nie?
Die derde grafiek toon data wat met die Rover en Base 100 meter uitmekaar versamel is - geen bykomende fout is opgespoor nie - die afstand van die skeiding het geen verskil aan die akkuraatheid gemaak nie.
Stap 7: Finale
Aanbeveel:
Bewegings geaktiveerde cosplay -vleuels met behulp van Circuit Playground Express - Deel 1: 7 stappe (met foto's)
Motion Activated Cosplay Wings Using Circuit Playground Express - Deel 1: Dit is deel een van 'n tweedelige projek, waarin ek jou my proses vir die maak van 'n paar outomatiese sprookjesvlerke gaan wys. Die eerste deel van die projek is die meganika van die vlerke, en die tweede deel maak dit draagbaar en voeg die vlerke by
Outomatiseer 'n kweekhuis met LoRa! (Deel 2) -- Gemotoriseerde vensteropening: 6 stappe (met foto's)
Outomatiseer 'n kweekhuis met LoRa! (Deel 2) || Gemotoriseerde vensteropening: In hierdie projek sal ek u wys hoe ek 'n gemotoriseerde vensteropening vir my kas gemaak het. Dit beteken dat ek u sal wys watter motor ek gebruik het, hoe ek die werklike meganiese stelsel ontwerp het, hoe ek die motor bestuur en laastens hoe ek 'n Arduino LoRa gebruik het
Hoe om u eie windmeter te bou met behulp van rietskakelaars, saaleffek sensor en 'n paar stukkies op Nodemcu - Deel 2 - Sagteware: 5 stappe (met foto's)
Hoe om u eie windmeter te bou met behulp van rietskakelaars, saal -effektsensor en 'n paar stukkies op Nodemcu - Deel 2 - sagteware: inleiding Dit is die opvolger van die eerste pos "Hoe om u eie windmeter te bou met behulp van rietskakelaars, saal -effek sensor en 'n paar stukkies" op Nodemcu - Deel 1 - Hardeware " - waar ek wys hoe om die windsnelheid en rigtingmeting saam te stel
EWEEDINATOR☠ Deel 4: Kode vir differensiële stuur meetkunde: 3 stappe
EWEEDINATOR☠ Deel 4: Differensiële stuur meetkunde kode: As u tyd het om die video hierbo te kyk, sal u agterkom dat daar soms vreemde geluide veroorsaak word deur die motors op die stuur, terwyl die WEEDINATOR 'n 3 navigeer punt draai. Die motors stamp in wese teen
EWEEDINATOR☠ Deel 3: Onderstel gebou: 8 stappe (met foto's)
EWEEDINATOR☠ Deel 3: Onderstel gebou: Die winter is die perfekte tyd om masjinerie te bou, veral as sweiswerk en plasmasnyding betrokke is, aangesien albei behoorlik warm is. As u wonder wat 'n plasmasnyer is, lees dan verder vir diepgaande prosedures