Мазмұны:
- 1 -қадам: Бұл қалай жұмыс істейді
- 2 -қадам: компоненттер
- 3 -қадам: модульдерді қосу
- 4 -қадам: код
- 5 -қадам: мәліметтер базасы мен веб -бет
- 6 -қадам: Навигациялық тесттер
- 7 -қадам: Финал
Бейне: ☠WEEDINATOR☠ 2 -бөлім: Жерсеріктік навигация: 7 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Weedinator навигациялық жүйесі дүниеге келді!
Ақылды телефонмен басқарылатын ауылшаруашылық роботы.
… Жай ғана жүйелі түрде өтудің орнына, мен оның қалай жұмыс істейтінін түсіндіруге тырысамын деп ойладым - әрине бәрі емес, ең маңызды және қызықты бөлшектер. Өтінішті кешіріңіз, бірақ деректер жеке модульдер арасында қалай өтеді, мен оны қызықты деп санаймын және ең төменгі бөлікке бөлеміз, біз нақты «биттермен» аяқтаймыз - нөлдер мен бірліктер. Егер сіз биттер, байттар, таңбалар мен жолдар туралы бір кездері шатастырып алған болсаңыз, онда қазір түсініксіз болу керек шығар? Мен сондай -ақ «Қатені болдырмау» деп аталатын сәл дерексіз тұжырымдаманы шешуге тырысамын.
Жүйенің өзіне тән ерекшеліктері:
- GPS/GNSS: Ublox C94 M8M (Rover және Base)
- 9DOF Razor IMU MO цифрлық компасы
- Fona 800H 2G GPRS ұялы
- 2.2 «TFT экраны
- Arduino «шебері»
- Әр түрлі Arduino «құлдары».
Бір таңқаларлығы, көптеген Sat Nav -та цифрлық циркуль жоқ, яғни егер сіз қозғалыссыз болсаңыз және жоғалсаңыз, құрылғы сізге спутниктерден дұрыс бағытты көрсетпес бұрын кез келген кездейсоқ бағытта жүруіңіз керек. Егер сіз қалың джунглиде немесе жерасты автотұрағында адасып қалсаңыз, сіз толтырасыз!
1 -қадам: Бұл қалай жұмыс істейді
Қазіргі уақытта смартфоннан немесе компьютерден координаттардың қарапайым жұбы жүктеледі, оларды Weedinator жүктейді. Оларды кейін дәреже бойынша айдар мен мм қашықтықта жүру қашықтығы деп түсіндіреді.
GPRS fona 2G ұялы желісі арқылы онлайн дерекқорға қол жеткізу және Arduino Nano арқылы Arduino Due координаттарын қабылдау және жіберу үшін қолданылады. Уақыт - бұл Мастер және I2C және сериялық автобустар арқылы басқа Arduinos тобын құл ретінде басқарады. Due Ublox пен Razor тірі деректерімен өзара әрекеттесе алады және Arduino құлдарының бірі есептеген тақырыпты көрсетеді.
Ublox спутниктік трекері өте ақылды, себебі ол қатені жоюды қолданады, ол өте дәл түзетулерді алады - соңғы номиналды жалпы ауытқу шамамен 40 мм. Модуль бірдей жұптан тұрады, олардың бірі - «ровер» Weedinator көмегімен жылжиды, ал екіншісі - «база» ашық жерде полюске бекітіледі. Қатені жоюға уақыт өте үлкен үлгілерді қолдану арқылы нақты түзетуге қол жеткізе алатын база қол жеткізеді. Бұл үлгілер атмосфералық жағдайдың өзгеруін өтеу үшін орта есеппен алынады. Егер құрылғы қозғалатын болса, онда ол орташа мәнді ала алмайтыны және өзгеретін ортаның толық мейірімі болатыны анық. Алайда, егер статикалық және қозғалмалы құрылғы бір -бірімен байланыса алатын болса, олар екеуінің де пайдасын көре алады. Кез келген уақытта базалық блокта әлі де қате бар, бірақ ол бұрын есептелген өте дәл түзетуге ие, сондықтан ол координаттардың бір жиынтығын екіншісінен шығару арқылы нақты қатені есептей алады. Содан кейін ол есептелген қатені радиобайланыс арқылы роверге жібереді, содан кейін қатені өзінің координаттарына қосады және престо, бізде қатені жою қатесі бар! Практикалық тұрғыдан алғанда, қатені жою 3 метрден 40 мм жалпы ауытқу арасындағы айырмашылықты тудырады.
Толық жүйе күрделі болып көрінеді, бірақ оны өткізбейтін бетте немесе мен құрастырған ПХД көмегімен салу өте оңай, бұл барлық модульдерді сенімді түрде бекітуге мүмкіндік береді. Болашақ даму ПХД-ге негізделген, бұл рульді басқаруға, алға жылжуға және борттық CNC машинасына моторларды басқаруға көптеген Arduino жиынтығын қосуға мүмкіндік береді. Навигацияға түрлі -түсті заттарды, мысалы флюоресцентті гольф шарларын, тордың қандай да бір түріне мұқият орналастырылған камераларды қолдана отырып, кем дегенде бір объектіні тану жүйесі көмектеседі - Бұл кеңістікті қараңыз!
2 -қадам: компоненттер
- Ublox C94 M8M (Rover and Base) x 2 дюйм
- 9DOF Razor IMU MO цифрлық компасы
- Fona 800H 2G GPRS ұялы телефоны 1946 ж
- Arduino Due
- Arduino Nano x 2 дюйм
- SparkFun Pro Micro
- Adafruit 2.2 «TFT IL1940C 1480
- PCB (қоса берілген Gerber файлдарын қараңыз) x 2 of
- 1206 SMD нөлдік Ом резисторлары x 12 дюйм
- 1206 жарықдиодты x 24 дюйм
ПХД файлы 'Design Spark' бағдарламалық жасақтамасымен ашылады.
3 -қадам: модульдерді қосу
Бұл оңай бөлік, әсіресе мен жасаған ПХД -мен оңай - жоғарыдағы диаграмманы орындаңыз. 3В модульдерін 5В -ке, тіпті сериялық және I2C желілеріне қосуды болдырмау үшін қамқорлық қажет.
4 -қадам: код
Кодтың көп бөлігі жүйеде жүйелі түрде жылжу үшін деректерді алуға байланысты және көбінесе деректердің форматтарын бүтін сандардан қалқымалы жолдарға және таңбаларға түрлендіру қажет, бұл өте шатастыруы мүмкін! «Сериялық» протокол тек I таңбаларын өңдейді2C протоколы өте кіші бүтін сандарды өңдейді, мен оларды таңбаларға түрлендіріп, содан кейін электр беру желісінің екінші шетіндегі бүтін сандарға қайта айналдыруды дұрыс деп таптым.
Weedinator контроллері - бұл негізінен жеке Arduino немесе MCU бар 8 биттік жүйе. Егер 8 бит нақты екілік нөлдер мен нөлдер ретінде сипатталса, ол келесідей болуы мүмкін: B01100101, ол тең:
(1x2)+(0x2)2+(1х2)3+(0x2)4+(0x2)5+(1х2)6+(1х2)7+(0x2)8 =
Ондық сандардың мәні | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
Екілік сандық мән | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
= 101
Мүмкін болатын максималды мән - 255…. Осылайша, біз «байт» максималды бүтін санды I арқылы жібере аламыз2С - 255, бұл өте шектеулі!
Arduino -да I көмегімен бір уақытта 32 ASCII таңбасын немесе байтты жіберуге болады2C, бұл әлдеқайда пайдалы және таңбалар жиынтығында төмендегідей 7 разрядтағы сандар, әріптер мен басқару таңбалары бар:
Бақытымызға орай, Arduino компиляторы фонда таңбадан екілікке түрлендірудің барлық жұмысын жасайды, бірақ ол әлі де деректерді беру үшін таңбаның дұрыс түрін күтеді және ол «Жолдарды» қабылдамайды.
Қазір жағдай шатасуы мүмкін. Символдар char анықтамасын қолдана отырып, бір таңбалар түрінде немесе char [20] көмегімен 20 таңбадан тұратын бір өлшемді массив түрінде көрсетілуі мүмкін. Arduino тізбегі кейіпкерлер массивіне өте ұқсас және адам миы көбінесе «сөздер» деп түсіндіретін кейіпкерлер тізбегі.
// 'distanceCaracter' таңбасын құрастырады:
Жолдың инициаторы = «»; distanceString = инициатор + расстояние; int n = distanceString.length (); for (int aa = 0; aa <= n; aa ++) {қашықтықCaracter [aa] = distanceString [aa]; }
Жоғарыдағы код символдардың ұзын жолын кейіпкерлер массивіне түрлендіре алады, содан кейін оларды I арқылы беруге болады2C немесе сериялық.
Беріліс желісінің екінші шетінде келесі кодты қолдана отырып, деректерді жолға қайта түрлендіруге болады:
distanceString = қашықтықString + c; // жол = жол + таңба
Таңбалар массивін тікелей бүтін санға түрлендіру мүмкін емес және алдымен жол форматына өту керек, бірақ келесі код жолдан бүтін санға түрлендіріледі:
int нәтижесі = (distanceString).toInt ();
int distanceMetres = нәтиже;
Енді бізде есептеулер жүргізуге болатын бүтін сан бар. Флоттарды (ондық нүктесі бар сандар) беру сатысында бүтін сандарға түрлендіру керек, содан кейін екі ондық бөлшекке 100 -ге бөлу керек, мысалы:
float distanceMetres = қашықтықMm / 1000;
Соңында, жолды таңбалар мен бүтін сандардың қоспасынан жасауға болады, мысалы:
// Бұл жерде деректер символға жинақталады:
dataString = инициатор + «BEAR» + zbearing + «DIST» + zdistance; // 32 таңбамен шектелген // Жол = жол + символдар + интерегер + символдар + бүтін сан.
Кодтың қалған бөлігі - Arduino кітапханаларындағы әр түрлі мысалдардан табуға болатын стандартты Arduino материалдары. 'Мысалдар >>>> Жолдар мысалын және' сымдық 'кітапхана мысалдарын қараңыз.
Міне, флотты жіберу мен алудың барлық процесі:
Float түрлендіру ➜ Бүтін сан ➜ Жол ➜ Таңба жиыны….. содан кейін Мастерден TRANSMIT символдар жиынын ➜➜
➜➜ Slave -де жеке кейіпкерлерді қабылдаңыз. содан кейін Character ➜ String, Integer, Float түрлендіріңіз
5 -қадам: мәліметтер базасы мен веб -бет
Жоғарыда мәліметтер қорының құрылымы көрсетілген, php және html код файлдары қоса берілген. Қауіпсіздік мақсатында пайдаланушы аттары, дерекқор атаулары, кесте атаулары мен құпия сөздер өшірілген.
6 -қадам: Навигациялық тесттер
Мен I2C арқылы Weedinator басқару тақтасына деректер тізбегін қосып, Ublox M8M спутниктік орналасуының өнімділігі туралы білдім:
Жасыл графикте көрсетілген «Суық стартта» модуль «қалыпты» GPS -ке ұқсас көптеген қателіктермен басталды және біртіндеп қате шамамен 2 сағаттан кейін ровер арасындағы RTK түзетулеріне дейін азая бастады. және негіз (қызыл крест түрінде көрсетілген). Осы 2 сағаттық кезеңде базалық модуль ендік пен бойлық үшін орташа мәнді үнемі жинақтап, жаңартып отырады және алдын ала бағдарламаланған уақыт аралығы оның жақсы түзетілгені туралы шешім қабылдағаннан кейін. 'мұнда базалық модуль жақсы орташа есептеді. Жоғарғы график 200 минуттан асады, кейде түзету жоғалады және ровер Weedinator -ге NMEA хабарламасын жібереді, бұл түзету уақытша сенімсіз болды.
Төменгі көк графика жоғарғы графиктің қызыл ұяшығындағы «үлкейту» болып табылады және Ublox өнімділігінің жақсы ауытқуы 40 мм жалпы ауытқуды көрсетеді, бұл Weedinator -ды оның орналасуына бағыттау үшін жеткілікті жақсы., бірақ, мүмкін, жеке өсімдіктердің айналасындағы топырақты өңдеу үшін жеткіліксіз бе?
Үшінші график 100 метр қашықтықта Rover және Base жиналған деректерді көрсетеді - Қосымша қате анықталмады - бөлу қашықтығы дәлдікке ешқандай әсер етпеді.
7 -қадам: Финал
Ұсынылған:
Жерсеріктік метеостанция: 5 қадам
Жерсеріктік метеостанция: Бұл жоба ауа райы туралы жеке деректерді жинағысы келетін адамдарға арналған. Ол желдің жылдамдығы мен бағытын, температура мен ауаның ылғалдылығын өлшей алады. Сондай -ақ, ол Жерді айналатын ауа райы спутниктерін 100 минут сайын тыңдай алады. Мен қалаймын
Ақылды мотоцикл HUD прототипі (кезекпен навигация және тағы басқалар): 9 қадам
Ақылды мотоцикл HUD прототипі (кезек-кезек навигация және тағы басқалар): Сәлеметсіз бе! Бұл нұсқаулық-бұл мотоциклдердің дулыға киюге арналған HUD (Heads-Up Display) платформасын қалай құрастырғаным және құрастырғаным туралы әңгіме. Ол " карталар " байқауы аясында жазылған. Өкінішке орай, мен оны толығымен аяқтай алмадым
Arduino басқарылатын робот - екі қадам: 13 қадам (суреттермен)
Arduino басқарылатын роботты екіжақты: Мен әрқашан роботтарға қызығатынмын, әсіресе адамның іс -әрекетіне еліктеуге тырысатын. Бұл қызығушылық мені жаяу жүруге және жүгіруге еліктей алатын екіжақты робот құрастыруға және дамытуға талпындырды. Бұл нұсқаулықта мен сізге көрсетемін
Arduino Uno көмегімен акустикалық левитация Қадамдық қадам (8 қадам): 8 қадам
Акустикалық левитация Arduino Uno Қадамдық қадаммен (8-қадам): ультрадыбыстық дыбыс түрлендіргіштері L298N Dc әйелдер адаптерінің ток көзі еркек тоқ сымымен Arduino UNOBreadboard Бұл қалай жұмыс істейді: Біріншіден, сіз кодты Arduino Uno-ға жүктейсіз (бұл сандық жүйемен жабдықталған микроконтроллер) және кодты түрлендіру үшін аналогтық порттар (C ++)
Болт - DIY сымсыз зарядтау түнгі сағаты (6 қадам): 6 қадам (суреттермен)
Болт - DIY сымсыз зарядтау түнгі сағаты (6 қадам): Индуктивті зарядтау (сымсыз зарядтау немесе сымсыз зарядтау деп те аталады) - сымсыз қуат беру түрі. Ол портативті құрылғыларды электрмен қамтамасыз ету үшін электромагниттік индукцияны қолданады. Ең көп таралған қолданба - Qi сымсыз зарядтау