Բովանդակություն:

EWEEDINATOR☠ Մաս 2: Արբանյակային նավարկություն. 7 քայլ (նկարներով)
EWEEDINATOR☠ Մաս 2: Արբանյակային նավարկություն. 7 քայլ (նկարներով)

Video: EWEEDINATOR☠ Մաս 2: Արբանյակային նավարկություն. 7 քայլ (նկարներով)

Video: EWEEDINATOR☠ Մաս 2: Արբանյակային նավարկություն. 7 քայլ (նկարներով)
Video: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, Նոյեմբեր
Anonim
EWEEDINATOR☠ Մաս 2. Արբանյակային նավարկություն
EWEEDINATOR☠ Մաս 2. Արբանյակային նավարկություն
EWEEDINATOR☠ Մաս 2. Արբանյակային նավարկություն
EWEEDINATOR☠ Մաս 2. Արբանյակային նավարկություն
EWEEDINATOR☠ Մաս 2. Արբանյակային նավարկություն
EWEEDINATOR☠ Մաս 2. Արբանյակային նավարկություն
EWEEDINATOR☠ Մաս 2. Արբանյակային նավարկություն
EWEEDINATOR☠ Մաս 2. Արբանյակային նավարկություն

Edնվեց Weedinator նավիգացիոն համակարգը:

Թափառող գյուղատնտեսական ռոբոտ, որը կարող է կառավարվել խելացի հեռախոսով:

… Եվ ոչ թե պարզապես միաձուլման սովորական գործընթացի միջով անցնելը, ես մտածեցի, որ կփորձեմ բացատրել, թե ինչպես է այն իրականում աշխատում `ակնհայտորեն ոչ ամեն ինչ, այլ ամենակարևոր և հետաքրքիր բիթերը: Խնդրում եմ ներեցեք բառախաղը, բայց դա այն է, թե ինչպես են տվյալները հոսում առանձին մոդուլների միջև, որոնք ինձ հետաքրքրում են և բաժանվում են ամենացածր հայտարարի: Եթե ձեզ երբևէ շփոթել են բիթերի, բայթերի, կերպարների և տողերի շուրջ, ապա հիմա գուցե ժամանակն է՞, որ չշփոթվեք: Ես նաև փորձելու եմ շփոթեցնել մի փոքր վերացական հասկացություն, որը կոչվում է «Սխալի չեղարկում»:

Համակարգն ինքնին առանձնանում է.

  • GPS/GNSS: Ublox C94 M8M (Rover և Base)
  • 9DOF Razor IMU MO թվային կողմնացույց
  • Fona 800H 2G GPRS բջջային
  • 2.2 "TFT էկրան
  • Arduino Due «Վարպետ»
  • Տարբեր Arduino «ստրուկներ»:

Տարօրինակ է, որ շատ Sat Navs- եր չունեն թվային կողմնացույց, ինչը նշանակում է, որ եթե դուք գտնվում եք անշարժ և մոլորված, դուք պետք է քայլեք կամ քշեք որևէ պատահական ուղղությամբ, մինչև որ սարքը ձեզ ցույց տա արբանյակների ճիշտ ուղղությունը: Եթե դուք կորչում եք հաստ ջունգլիներում կամ ստորգետնյա ավտոկայանում, ապա լցոնված եք:

Քայլ 1: Ինչպես է այն աշխատում

Ինչպես է դա աշխատում
Ինչպես է դա աշխատում

Ներկայումս խելացի հեռախոսից կամ համակարգչից բեռնվում է մի զույգ կոորդինատ, որը այնուհետև ներբեռնում է Weedinator- ը: Այնուհետև դրանք մեկնաբանվում են որպես վերնագիր աստիճաններով և մմ -ով ճանապարհորդելու հեռավորությամբ:

GPRS ֆոնան օգտագործվում է 2G բջջային ցանցի միջոցով առցանց տվյալների բազա մուտք գործելու և Arduino Nano- ի միջոցով կոորդինատները ստանալու և փոխանցելու Arduino Due- ին: The due- ն Վարպետն է և վերահսկում է Arduinos- ի այլ տեսականի ՝ որպես ստրուկներ I2C և սերիական ավտոբուսների միջոցով: The Due- ն կարող է փոխազդել Ublox- ի և Razor- ի կենդանի տվյալների հետ և ցուցադրել վերնագիր, որը հաշվարկված է իր Arduino ստրուկներից մեկի կողմից:

Ublox արբանյակային որոնիչը հատկապես խելացի է, քանի որ այն օգտագործում է սխալների չեղարկում `շատ ճշգրիտ շտկումներ ստանալու համար` վերջնական անվանական ընդհանուր շեղում `մոտ 40 մմ: Մոդուլը կազմված է միանման զույգից, որոնցից մեկը ՝ «ռովերը», շարժվում է մոլախոտի հետ, իսկ մյուսը ՝ «հիմքը» ամրացված է բաց երկնքի տակ գտնվող բևեռի վրա: Սխալների չեղարկումն իրականացվում է այն բանի շնորհիվ, որ ժամանակի ընթացքում մեծ քանակությամբ նմուշներ օգտագործելով `կարող է հասնել իսկապես ճշգրիտ շտկման: Այս նմուշներն այնուհետև միջինացվում են ՝ փոխհատուցելով փոփոխվող մթնոլորտային պայմանները: Եթե սարքը շարժվեր, ակնհայտորեն այն չէր կարողանա ստանալ միջինացվածության որևէ տեսակ և կլիներ փոփոխվող միջավայրի լիակատար ողորմածության ներքո: Այնուամենայնիվ, եթե ստատիկ և շարժվող սարքավորումները միասին աշխատեն, քանի դեռ նրանք կարող են շփվել միմյանց միջև, նրանք կարող են երկուսից էլ օգուտ քաղել: Givenանկացած պահի, բազային միավորը դեռ ունի սխալ, բայց ունի նաև նախկինում հաշվարկված գերճշգրիտ շտկում, որպեսզի կարողանա հաշվարկել իրական սխալը `մյուս կոորդինատները հանելով: Այնուհետև հաշվարկված սխալը ռովեր է ուղարկում ռադիոկապի միջոցով, որն այնուհետև սխալը ավելացնում է իր սեփական կոորդինատների վրա: Գործնական առումով, սխալի չեղարկումը տարբերություն է դարձնում 3 մետրից մինչև 40 մմ ընդհանուր շեղման միջև:

Ամբողջական համակարգը կարծես բարդ է, բայց իրականում բավականին հեշտ է կառուցվել `կամ չամրացված ոչ հաղորդիչ մակերևույթի վրա, կամ իմ նախագծած PCB- ի միջոցով, որը թույլ է տալիս բոլոր մոդուլներին ապահով կերպով ամրացնել: Ապագա զարգացումը կառուցված է PCB- ի վրա, ինչը թույլ է տալիս Arduinos- ի հսկայական զանգված ներառել ղեկի, առաջ շարժման և ներկառուցված CNC մեքենայի շարժիչները վերահսկելու համար: Նավիգացիային կօգնի նաև օբյեկտների ճանաչման առնվազն մեկ համակարգ ՝ օգտագործելով տեսախցիկներ ՝ գունավոր առարկաները զգալու համար, օրինակ ՝ լյումինեսցենտ գոլֆի գնդակներ, որոնք զգուշորեն տեղադրված են ինչ -որ ցանցում: Դիտեք այս տարածությունը:

Քայլ 2: Բաղադրիչներ

Բաղադրիչներ
Բաղադրիչներ
Բաղադրիչներ
Բաղադրիչներ
Բաղադրիչներ
Բաղադրիչներ
  • Ublox C94 M8M (Rover և 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 -ից
  • 1206 SMD զրոյական օմ դիմադրություններ x 12 -ից
  • 1206 լուսադիոդ x 24 հատ

PCB ֆայլը բացվում է «Design Spark» ծրագրակազմով:

Քայլ 3: Մոդուլների միացում

Մոդուլների միացում
Մոդուլների միացում

Սա հեշտ մասն է, հատկապես հեշտ ՝ իմ պատրաստած PCB- ով, պարզապես հետևեք վերևի գծապատկերին: Անհրաժեշտ է խնամք `3v մոդուլների 5V- ին միացումից խուսափելու համար, նույնիսկ սերիական և I2C գծերի վրա:

Քայլ 4: Կոդ

Կոդ
Կոդ

Կոդի մեծ մասը վերաբերում է համակարգում համակարգված կերպով տվյալներ տեղաշարժելուն, և հաճախ անհրաժեշտություն է առաջանում տվյալների ձևաչափերը ամբողջ թվերից վերածել լողերի տողերի և կերպարների, ինչը կարող է շատ շփոթեցնող լինել: «Սերիական» արձանագրությունը կպահպանի միայն նիշերը, իսկ I- ը2C արձանագրությունը կպարունակի շատ փոքր ամբողջ թվեր, ես ավելի լավ գտա դրանք կերպարների վերածել, այնուհետև նորից վերածել ամբողջ թվերի `հաղորդման գծի մյուս ծայրում:

Weedinator վերահսկիչը հիմնականում 8 բիթանոց համակարգ է `բազմաթիվ անհատական Arduinos- ով կամ MCU- ով: Երբ 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- ում մենք կարող ենք փոխանցել մինչև 32 ASCII նիշ կամ բայթ, օգտագործելով I- ը2C, որը շատ ավելի օգտակար է, և նիշերի հավաքածուն ներառում է թվեր, տառեր և կառավարման նիշեր 7 բիթանոց ձևաչափով ՝ ստորև.

Պատկեր
Պատկեր

Բարեբախտաբար, Arduino կոմպիլյատորը հետին պլանում կատարում է կերպարից երկուական փոխակերպման բոլոր աշխատանքները, սակայն այն դեռ ակնկալում է տվյալների փոխանցման բնույթի ճիշտ տեսակ և չի ընդունի «Լարեր»:

Այժմ այն ժամանակն է, երբ ամեն ինչ կարող է շփոթեցվել: Նիշերը կարող են արտահայտվել որպես մեկական նիշ `օգտագործելով char սահմանումը կամ որպես 20 -նիշանոց մեկ ծավալային զանգված` օգտագործելով char [20]: Arduino String- ը շատ նման է կերպարների զանգվածին և բառացիորեն հանդիսանում է կերպարների շարք, որոնք հաճախ մարդկային ուղեղը մեկնաբանում է որպես «բառեր»:

// Կառուցում է «distanceCharacter» բնույթը.

Լարերի նախաձեռնող = ""; distanceString = նախաձեռնող + distanceString; int n = distanceString.length (); համար (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }

Վերոնշյալ ծածկագիրը կարող է կերպարների երկար տող վերածել կերպարների զանգվածի, որոնք այնուհետև կարող են փոխանցվել I- ով2C կամ սերիական:

Հաղորդման գծի մյուս ծայրում տվյալները կարող են հետ փոխարկվել տողի ՝ օգտագործելով հետևյալ ծածկագիրը.

distanceString = distanceString + c; // string = string + նիշ

Նիշերի զանգվածը չի կարող փոխարկվել ուղղակիորեն ամբողջ թվին և պետք է նախ անցնի տողի ձևաչափին, սակայն հետևյալ ծածկագիրը տողից կվերածվի ամբողջի:

int արդյունք = (distanceString).toInt ();

int distanceMetres = արդյունք;

Այժմ մենք ունենք մի ամբողջ թիվ, որը կարող ենք օգտագործել հաշվարկներ կատարելու համար: Լողերը (տասնորդական կետով թվերը) պետք է փոխանցման փուլում վերածվեն ամբողջ թվերի, այնուհետև բաժանվեն 100 -ի երկու տասնորդական նիշերի համար, օրինակ ՝

բոց հեռավորությունՄետր = հեռավորությունՄմ / 1000;

Ի վերջո, տողը կարող է ստեղծվել նիշերի և ամբողջ թվերի խառնուրդից, օրինակ ՝

// Սա այն է, որտեղ տվյալները հավաքվում են բնույթի մեջ.

dataString = նախաձեռնող + "BEAR" + zbearing + "DIST" + հեռավորություն; // Սահմանափակված է 32 նիշով // Լար = տող + նիշ + ամբողջ թիվ + նիշ + ամբողջ թիվ:

Մնացած ծածկագիրը ստանդարտ Arduino նյութեր են, որոնք կարելի է գտնել Arduino գրադարանների տարբեր օրինակներում: Ստուգեք «օրինակներ >>>> Լարերի օրինակը և« մետաղալար »գրադարանի օրինակները:

Ահա բոց փոխանցելու և ստանալու ամբողջ գործընթացը.

Փոխակերպել Float ➜ Integer ➜ String ract Character array….. ապա TRANSMIT նիշերի զանգված Master- ից

➜➜ ՍՏԱԵՔ անհատական կերպարներ Ստրուկի վրա…. ապա փոխակերպեք Նիշ ➜ Լար ➜ Ամբողջ ➜ Բոց

Քայլ 5: Տվյալների բազա և վեբ էջ

Տվյալների բազա և վեբ էջ
Տվյալների բազա և վեբ էջ
Տվյալների բազա և վեբ էջ
Տվյալների բազա և վեբ էջ

Վերևում ցուցադրվում է տվյալների բազայի կառուցվածքը և կցված են php և html կոդի ֆայլերը: Օգտվողի անունները, տվյալների բազայի անունները, աղյուսակների անուններն ու գաղտնաբառերը փակված են անվտանգության նկատառումներով:

Քայլ 6: Նավիգացիոն թեստեր

Նավիգացիոն թեստեր
Նավիգացիոն թեստեր
Նավիգացիոն թեստեր
Նավիգացիոն թեստեր
Նավիգացիոն թեստեր
Նավիգացիոն թեստեր

Ինձ հաջողվեց datalogger- ը միացնել Weedinator կառավարման տախտակին I2C- ի միջոցով և պատկերացում կազմել Ublox M8M արբանյակային դիրքավորման կատարման մասին.

Կանաչ գրաֆիկով ցուցադրվող «Սառը մեկնարկ» -ում մոդուլը սկսեց բազմաթիվ սխալներով, որոնք նման էին «սովորական» GPS- ին, և աստիճանաբար սխալը նվազեց, մինչև որ մոտ 2 ժամ անց այն ստացավ RTK շտկում ռովերի միջև: և հիմք (ցուցադրվում է որպես կարմիր խաչ): Այդ 2 ժամվա ընթացքում բազային մոդուլը շարունակաբար կառուցվում և թարմացնում է լայնության և երկայնության միջին արժեքը և նախապես ծրագրավորված ժամանակային ընդմիջումից հետո որոշում է, որ այն լավ ամրագրված է: Հաջորդ 2 գրաֆիկները ցույց են տալիս վարքագիծը «Թեժ մեկնարկից» հետո որտեղ բազային մոդուլն արդեն հաշվարկել է լավ միջին: Վերին գրաֆիկը կազմում է ավելի քան 200 րոպե, և երբեմն շտկումը կորչում է, և թռչող սարքը NMEA հաղորդագրություն է ուղարկում Weedinator- ին, որ շտկումը ժամանակավորապես անհուսալի է դարձել:

Ստորին կապույտ գրաֆիկը «խոշորացում» է վերին գրաֆիկի կարմիր տուփի վրա և ցույց է տալիս Ublox- ի կատարման լավ ներկայացուցչական կադրը, ընդհանուր 40 մմ շեղումով, ինչը ավելի քան լավ է, որ մոլախոտին ուղղորդի դեպի իր լոկացիան:, բայց, հնարավոր է, բավարար չէ հողը մշակել առանձին բույսերի շուրջ:

Երրորդ գրաֆիկը ցույց է տալիս Rover- ի և Base- ի հետ 100 մետր հեռավորության վրա հավաքված տվյալները. Լրացուցիչ սխալ չի հայտնաբերվել.

Քայլ 7: Վերջնական

Խորհուրդ ենք տալիս: