Мазмуну:

☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация: 7 кадам (Сүрөттөр менен)
☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация: 7 кадам (Сүрөттөр менен)

Video: ☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация: 7 кадам (Сүрөттөр менен)

Video: ☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация: 7 кадам (Сүрөттөр менен)
Video: Голубая стрела (1958) фильм 2024, Июль
Anonim
☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация
☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация
☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация
☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация
☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация
☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация
☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация
☠WEEDINATOR☠ 2 -бөлүк: Спутниктик навигация

Weedinator навигациялык системасы төрөлдү!

Акылдуу телефон менен башкарыла турган айыл чарба роботу.

… Жөнөкөй эле процесстен өтүүнүн ордуна, мен анын кантип иштээрин түшүндүрүүгө аракет кылам деп ойлодум - албетте, баары эмес, эң маанилүү жана кызыктуу биттер. Сураныч, сөздү кечирип коюңуз, бирок бул жеке модулдардын ортосунда кандайча агып жатканы мен үчүн кызыктуу жана эң төмөнкү бөлүккө бөлүнүп, биз чыныгы "биттерге" - нөлдөргө жана бирлерге түшөбүз. Эгерде сиз качандыр бир убакта биттер, байттар, символдор жана саптар жөнүндө түшүнүксүз болуп калсаңыз, анда азыр башаламан боло турган убакпы? Мен дагы "Error Canceling" деп аталган бир аз абстрактуу түшүнүктү колдонууга аракет кылам.

Системанын өзү төмөнкүлөрдү камтыйт:

  • GPS/GNSS: Ublox C94 M8M (Rover and Base)
  • 9DOF устара IMU MO санариптик компас
  • Fona 800H 2G GPRS уюлдук
  • 2.2 "TFT экраны
  • Arduino Due 'Master'
  • Ар кандай Arduino 'кулдары'.

Кызык, Sat Navsтын көпчүлүгүндө санариптик компас жок, демек, эгер сиз кыймылсыз болсоңуз, адашып калсаңыз, түзмөк спутниктерден туура багытты көрсөтмөйүнчө, кез келген туш келди багытта жүрүүгө же айдоого туура келет. Эгерде сиз калың токойдо же жер алдындагы унаа токтоочу жайда адашып калсаңыз, анда сиз толдуңуз!

1 -кадам: Бул кантип иштейт

Бул кантип иштейт
Бул кантип иштейт

Учурда, координаттардын жөнөкөй түгөйү смартфондон же компьютерден жүктөлүп, аны Weedinator жүктөйт. Булар кийинчерээк даражадагы аталышка жана мм менен саякатка чейинки аралыкка чечмеленет.

GPRS fona 2G уюлдук тармагы аркылуу онлайн маалымат базасына кирүү жана Arduino Nano аркылуу Arduino Due координаттарын алуу жана берүү үчүн колдонулат. Due Master болуп саналат жана I2C жана сериялык автобустар аркылуу кул катары башка Arduinosдун массивин башкарат. Due Ublox жана Razor түз маалыматтары менен өз ара аракеттене алат жана анын Arduino кулдарынын бири тарабынан эсептелген аталышты көрсөтө алат.

Ublox спутник трекери өзгөчө акылдуу, анткени ал каталарды жок кылууну колдонуп, абдан так оңдоолорду алат - болжол менен 40 мм. Модуль бирдей жуптан турат, алардын бири, "ровер", Weedinator менен кыймылдайт, экинчиси, "база" ачык жердеги мамыга бекитилет. Error жокко чыгаруу базасы убакыттын өтүшү менен көп сандагы үлгүлөрдү колдонуу менен чындап так оңдоого жетишүү менен жетишилет. Бул үлгүлөр кийин орточо атмосфералык шарттардын ордун толтуруу үчүн алынат. Эгерде түзмөк кыймылда болсо, анда ал эч кандай орточо ала албайт жана өзгөрүп турган чөйрөнүн толук ырайымында болмок. Бирок, эгерде статикалык жана кыймылдуу түзмөк бири -бири менен байланыша алса, экөө тең тең пайда ала алышат. Каалаган убакта, базалык блокто дагы эле ката бар, бирок ал мурда эсептелген супер тактыкка ээ, андыктан координаттардын бир тобун экинчисинен алып салуу менен чыныгы катаны эсептей алат. Андан кийин ал эсептелген катаны радио шилтеме аркылуу Роверге жөнөтөт, ал катаны өзүнүн координаттарына кошот жана эй престо, бизде ката жокко чыгарылды! Практикалык жактан алганда, каталарды жокко чыгаруу 3 метр менен 40 мм жалпы четтөөнүн ортосундагы айырманы түзөт.

Толук система татаал көрүнөт, бирок чындыгында өткөрбөөчү бетинде бош же мен иштеп чыккан ПХБны колдонуу менен куруу абдан оңой, бул бардык модулдарды бекем бекитүүгө мүмкүндүк берет. Келечектеги өнүгүү ПХБнын үстүнө курулган, бул Arduinosтун кеңири массивин рулду башкаруу, алдыга жылдыруу жана борттогу CNC машинасын башкарууга кошууга мүмкүндүк берет. Навигацияга түстүү нерселерди сезүү үчүн камераларды колдонуп, жок дегенде бир объектти таануу системасы жардам берет, мисалы, кандайдыр бир сеткага кылдат жайгаштырылган флуоресценттүү гольф топтору - Бул мейкиндикти караңыз!

2 -кадам: Компоненттер

Компоненттер
Компоненттер
Компоненттер
Компоненттер
Компоненттер
Компоненттер
  • Ublox C94 M8M (Rover and Base) x 2 of
  • 9DOF устара IMU MO санариптик компас
  • Fona 800H 2G GPRS уюлдук 1946
  • Arduino Due
  • Arduino Nano x 2 of
  • SparkFun Pro Micro
  • Adafruit 2.2 "TFT IL1940C 1480
  • PCB (тиркелген Gerber файлдарын караңыз) x 2 of
  • 1206 SMD нөлдүк Ом резисторлору х 12 д
  • 1206 LED х 24 д

PCB файлы 'Design Spark' программасы менен ачылат.

3 -кадам: Модулдарды туташтыруу

Модулдарды кошуу
Модулдарды кошуу

Бул оңой бөлүк, өзгөчө мен жасаган ПХБ менен оңой - жөн гана жогорудагы диаграмманы аткарыңыз. Сериялык жана I2C линияларында да 3v модулдарын 5v менен өткөрбөө үчүн кам көрүү керек.

4 -кадам: Код

Code
Code

Коддун көбү системаны иреттүү түрдө жылдыруу үчүн маалыматтарды алуу менен байланышкан жана көбүнчө маалымат форматтарын бүтүн сандан калкымага саптарга жана символдорго айландыруу зарылдыгы келип чыгат, бул абдан түшүнүксүз болушу мүмкүн! "Сериялык" протокол бир гана символдорду иштетет, ал эми I2C протоколу өтө кичинекей бүтүн сандарды иштетет, мен аларды символдорго айландырып, андан кийин электр берүү линиясынын башка аягында бүтүн сандарга кайра которууну жакшы көрдүм.

Weedinator контроллери, негизинен, жеке Arduinos же 'MCU'лору бар 8 биттик система. 8 бит чыныгы бинардык нөлдөр жана нөлдөр катары сүрөттөлгөндө, ал төмөнкүдөй көрүнүшү мүмкүн: B01100101, ал барабар:

(1x2)+(0x2)2+(1x2)3+(0x2)4+(0x2)5+(1x2)6+(1x2)7+(0x2)8 =

Ондук сандын мааниси 128 64 32 16 8 4 2 1
Бинардык сандын мааниси 0 1 1 0 0 1 0 1

= 101

Жана мүмкүн болгон максималдуу балл 255…. Ошентип, максималдуу бүтүн сан "байт" биз I аркылуу өткөрө алабыз2C 255, бул абдан чектелген!

Arduinoдо I аркылуу бир убакта 32 ASCII белгини же байтты өткөрүп бере алабыз2C, бул алда канча пайдалуу жана тамгалар топтому сандарды, тамгаларды жана башкаруу белгилерин 7 бит форматында төмөндөгүдөй камтыйт:

Сүрөт
Сүрөт

Бактыга жараша, Arduino компилятору фондо символдон экиликке айландыруу боюнча бардык иштерди аткарат, бирок ал дагы деле маалыматтарды берүү үчүн мүнөздүн туура түрүн күтөт жана ал "Саптарды" кабыл албайт.

Азыр нерселер түшүнүксүз болуп калышы мүмкүн. Белгилер char аныктамасын колдонуу менен бир символ катары же char [20] аркылуу 20 белгиден турган бир өлчөмдүү массив катары көрсөтүлүшү мүмкүн. Arduino String символдордун массивине абдан окшош жана адамдын мээси тарабынан "сөздөр" деп чечмеленген тамгалар сабы.

// 'distanceCaracter' белгисин курат:

String демилгечиси = ""; distanceString = демилгечи + расстояние; int n = distanceString.length (); for (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }

Жогорудагы код узун символдорду символдордун катарына айландырат, андан кийин алар I аркылуу берилиши мүмкүн2C же сериялуу.

Өткөрүү линиясынын экинчи аягында, маалыматтарды төмөнкү кодду колдонуу менен кайра сапка айландырса болот:

distanceString = distanceString + c; // сап = сап + белги

Белгилер массивин түздөн -түз бүтүн санга айландырууга болбойт жана адегенде сап форматына өтүү керек, бирок төмөнкү код саптан бүтүн санга айланат:

int натыйжасы = (distanceString).toInt ();

int distanceMetres = жыйынтык;

Эми бизде бүтүн сан бар, аны биз эсептөөлөрдү жүргүзө алабыз. Флотторду (ондук чекит менен сандарды) берүү стадиясында бүтүн сандарга айландыруу керек, андан кийин эки ондук үчүн 100гө бөлүү керек, мисалы:

сүзүү расстояниеMetres = расстояниеМм / 1000;

Акырында, сап символдордун жана бүтүн сандардын аралашмасынан түзүлүшү мүмкүн, мисалы:

// Бул жерде маалыматтар символго топтолгон:

dataString = демилгечи + "BEAR" + zbearing + "DIST" + zdistance; // 32 символ менен чектелген // Стринг = сап + символдор + интерегер + белгилер + бүтүн сан.

Калган коду Arduino китепканаларындагы ар кандай мисалдардан табууга мүмкүн болгон стандарттык Arduino нерселери. 'Мисалдар >>>> Саптар мисалын жана' зым 'китепкана мисалдарын карап көрүңүз.

Бул жерде флотту берүү жана алуу үчүн бүт процесс:

Convert Float ➜ Integer ➜ String ➜ Character массив….. анан Master'ден TRANSMIT символдорунун массивин ➜➜

➜➜ Кулдагы жеке каармандарды кабыл алыңыз …. андан кийин Character ➜ String ➜ Integer ➜ Float динине айландырыңыз

5 -кадам: Маалыматтар базасы жана веб -баракча

Маалыматтар базасы жана веб -баракча
Маалыматтар базасы жана веб -баракча
Маалыматтар базасы жана веб -баракча
Маалыматтар базасы жана веб -баракча

Жогоруда маалымат базасынын түзүлүшү көрсөтүлгөн жана php жана html коддорунун файлдары тиркелет. Колдонуучунун аттары, маалымат базасынын аттары, столдун аттары жана сырсөздөр коопсуздук үчүн өчүрүлгөн.

6 -кадам: Навигациялык тесттер

Навигациялык тесттер
Навигациялык тесттер
Навигациялык тесттер
Навигациялык тесттер
Навигациялык тесттер
Навигациялык тесттер

Мен I2C аркылуу Weedinator башкаруу тактасына dataloggerди туташтырып, Ublox M8M спутниктин жайгашуусу боюнча бир аз түшүнүккө ээ болдум:

Жашыл графикте көрсөтүлгөн "Муздак стартта" модуль "кадимки" GPSке окшош көп каталар менен башталды жана бара -бара ката 2 сааттан кийин ровердин ортосунда RTK оңдоолоруна чейин азая баштады. жана база (кызыл крест катары көрсөтүлгөн). Ошол 2 сааттык мезгилде, базалык модуль кеңдик менен узундуктун орточо маанисин дайыма түзүп, жаңыртып турат жана алдын ала программаланган убакыт аралыгы аны оңдоону чечкенден кийин. Кийинки 2 графикте "Ыссык баштоодон" кийин жүрүм-турум көрсөтүлөт. 'бул жерде базалык модуль жакшы орточо эсептелген. Жогорку график 200 мүнөттөн ашык, кээде оңдоо жоголот жана ровер Weedinatorго оңдоо убактылуу ишенимсиз болуп калды деп NMEA билдирүүсүн жөнөтөт.

Төмөнкү көк график жогорку графиктин кызыл кутучасындагы "чоңойтуу" жана Ubloxтун жакшы чагылдырылган сүрөтүн көрсөтөт, 40 мм жалпы четтөөсү менен, бул Weedinatorду боштондукка жеткирүү үчүн жетиштүү., бирок, балким, жеке өсүмдүктөрдүн айланасындагы топуракты иштетүү үчүн жетиштүү эмес?

Үчүнчү график 100 метр аралыкта Rover жана Base менен чогулган маалыматтарды көрсөтөт - Эч кандай кошумча ката табылган жок - бөлүү аралыгы тактык үчүн эч кандай айырмасы жок.

7 -кадам: Финал

Сунушталууда: