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

Պարզ ռադիոտեղորոշիչ համակարգ Magicbit- ից ՝ 6 քայլ
Պարզ ռադիոտեղորոշիչ համակարգ Magicbit- ից ՝ 6 քայլ

Video: Պարզ ռադիոտեղորոշիչ համակարգ Magicbit- ից ՝ 6 քայլ

Video: Պարզ ռադիոտեղորոշիչ համակարգ Magicbit- ից ՝ 6 քայլ
Video: ՉԻՆԱՍՏԱՆԻ ՏԱՐՕՐԻՆԱԿ ՔԱՅԼԸ․ Սկսվում է նոր պայքար․ Ի՞նչ ծրագրեր ունի Պեկինը Երևանում 2024, Հուլիսի
Anonim

Այս ձեռնարկը ցույց է տալիս, թե ինչպես կարելի է պատրաստել պարզ ռադիոտեղորոշիչ համակարգ `օգտագործելով HC-SR04 սենսորը և Microbit dev տախտակը` մշակմամբ և Arduino IDE- ով:

Պարագաներ:

  • SG90 միկրո servo շարժիչ
  • Թռիչքային լարեր (ընդհանուր)
  • Հացաթուղթ (ընդհանուր)
  • Magicbit
  • USB-A- ից մինչև Micro-USB մալուխ
  • Ուլտրաձայնային տվիչ - HC -SR04 (ընդհանուր)

Քայլ 1: Պատմություն

Այս ձեռնարկում մենք կսովորենք, թե ինչպես պատրաստել պարզ ռադիոտեղորոշիչ համակարգ ՝ օգտագործելով Magicbit core dev board- ը: Այդ նպատակով մենք օգտագործում ենք HC-SR04 ուլտրաձայնային տվիչ և տվյալների ցուցադրման համար օգտագործում ենք մշակման միջավայր: Եկեք սկսենք:

Քայլ 2. Տեսություն և մեթոդաբանություն

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

Քայլ 3: Սարքավորման կարգավորում

Սարքաշարի տեղադրում
Սարքաշարի տեղադրում
Սարքաշարի տեղադրում
Սարքաշարի տեղադրում

Այս նախագծի համար մենք հիմնականում օգտագործեցինք ապարատային երեք բաղադրիչ: Դրանք են Magicbit, servo motor և ուլտրաձայնային տվիչ: Այս բոլոր մասերի միջև կապը ներկայացված է վերևում նկարում:

Ուլտրաձայնային տվիչն օգտագործում էր 3.3 վ հզորության համար: Այսպիսով, մենք օգտագործեցինք Magicbit տախտակի աջ ստորին նավահանգիստը `ուլտրաձայնային տվիչը Magicbit- ին միացնելու համար: Բայց servo շարժիչը օգտագործվում է 5V պատշաճ աշխատանքի համար, ուստի մենք ձախ ստորին նավահանգստից օգտվել ենք servo շարժիչը Magicbit- ի հետ միացնելու համար: Այս դեպքում մենք օգտագործում ենք Magic bit servo միակցիչ մոդուլ: Բայց եթե դուք չունեք այդ մոդուլը, կարող եք օգտագործել երեք ցատկող լար `5V- ին 5V- ին, Gnd- ին Gnd- ին և ազդանշանի կապին` 26bit- ին magicbit- ում:

Շղթայի կառուցումից հետո մենք պետք է կառուցենք փոքր մեխանիկական մաս: մի կողքի միացնող servo միակցիչը միացրեք servo շարժիչին `օգտագործելով փոքր ընկույզ: Այնուհետև ամրացրեք սենսորը այդ միակցիչի վրա ՝ օգտագործելով L ձևի փակագիծ կամ համապատասխան եղանակ: Ամբողջ համակարգից հետո մենք ամրացվեցինք տախտակի վրա: Բայց դուք կարող եք օգտագործել այլ մակերես `servo և Magicbit տեղադրելու համար:

Քայլ 4: Softwareրագրաշարի տեղադրում

Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում

Softwareրագրային ապահովման կողմը փոքր -ինչ բարդ է: Properիշտ հասկանալու համար կարող եք հղում կատարել հետևյալ հղումներին ՝ հաջորդ մասին անցնելուց առաջ:

magicbit-arduino.readthedocs.io/hy/latest/

hello.processing.org/editor/

Եկեք նայենք Arduino IDE կոդին և ինչպես է աշխատում այդ կոդը:

Սերվո վարելու համար մենք օգտագործում ենք ESP32 servo գրադարանը: Այս գրադարանը գրեթե ներառում է Arduino IDE- ի կախարդական բիթի տախտակի կառավարիչ: Ուլտրաձայնային տվիչով զբաղվելու համար մենք օգտագործում ենք newPing գրադարանը: Սա կարելի է ներբեռնել հետևյալ հղումից:

bitbucket.org/teckel12/arduino-new-ping/do…

Ներբեռնեք zip ֆայլը և գնացեք գործիքներ> ներառեք գրադարան> ավելացրեք Zip գրադարան Arduino- ում: այժմ ընտրեք ձեր նոր ներբեռնված zip ֆայլը ՝ նոր գրադարանի: Մշակման հետ հաղորդակցվելու համար մենք օգտագործեցինք սերիական հաղորդակցություն 115200 բաուդ արագությամբ: Սա ESP32- ի առավել համապատասխան հաճախականությունն է: Ամեն տեսանկյունից մենք մեր տվյալները փոխանցում ենք համակարգչին ՝ օգտագործելով այս արձանագրությունը: Այս տվյալների մեջ ներառված են սենսորից մոտակա առջևի օբյեկտի հեռավորությունը, պտույտի ուղղությունը և պտտման անկյունը: Օգտագործելով երկու օղակ `մենք մեր սերվոն պտտում ենք երկու ուղղությամբ: Մինչ մեկ աստիճանի պտույտը մենք սերիական տվյալներ ենք ուղարկել 4 անգամ: Դրա պատճառը կարող եք հասկանալ մասի բացատրությունը մշակելիս:

Հիմա ժամանակն է նայելու մշակման միջավայրին: Սա Java ծրագրավորման ծրագրակազմ է: Մենք կարող ենք գրել այս ծրագրի ուրվագիծը IDE- ի մշակման այս ուրվագծում: Մենք կարող ենք նաև տեսողական արդյունք ստեղծել մեր ծրագրի գործարկումից: Նաև կարող եք ելք վերցնել որպես 2D և 3D օբյեկտներ: Ոչ միայն դա, այն կարող է օգտագործվել պատկերի մշակման և շատ այլ բաների համար:

Մշակման ուրվագծում մենք նախ նախագծում ենք մեր տվյալների ցուցադրման ինտերֆեյսը `օգտագործելով պարզ գրաֆիկական գործառույթներ: Կոդի սկզբում մենք հաստատում ենք մեր սերիական հաղորդակցությունը `ներառելով սերիական գրադարանները: Կարգավորման գործառույթում դուք պետք է որոշ փոփոխություններ կատարեք ՝ ըստ որի USB պորտից եք օգտվել Magicbit- ը համակարգչին միացնելու համար: Դուք կարող եք ստուգել ձեր նավահանգիստը ՝ օգտագործելով Arduino IDE- ն, երբ Arduino IDE- ն կարգավորում եք ծածկագիրը վերբեռնելու համար: Այնուհետև փոխեք com նավահանգստի անվանումը մշակման ուրվագծի մշակման մասում: երբ սերիական տվյալները հասանելի են, Serialevent գործառույթը ինքնաբերաբար գործարկվում է: Հետևաբար, ծածկագրի հիմնական տրամաբանությունը ներառված է սերիական իրադարձության մեջ `անկյունները և տվյալների բացակայությունը կանխելու համար: երբ նոր տվյալներ կան, մենք գծում ենք էկրանին `ըստ մեր տեսանկյունի: Այդ ժամանակ, եթե օբյեկտ չկա, ապա ամբողջական գիծը կանաչ է: Եթե ոչ, գծի որոշ հատվածը կարմիր կլինի ՝ կախված սենսորից մինչև առարկա հեռավորությունը: Բացի այդ, ըստ պտույտի ուղղության, մենք գծի մոտ 200 գծեր ենք գծում `կանաչ գույնի նվազման մակարդակով: յուրաքանչյուր Հիմնականի միջև մենք ունենք 0.25 աստիճանի տարբերություն: Այսպիսով, մենք ստանում ենք 4 ընթերցում միաժամանակ Magicbit- ից յուրաքանչյուր աստիճանի պտույտով: Դրա շնորհիվ մենք կարող ենք ստեղծել գեղեցիկ որոնման ձեռքի էկրան:

Կոդի հաջողությունն ամբողջությամբ կախարդական և սարքավորումների հատվածը վերբեռնելուց հետո հաջողությամբ բացեք մշակման IDE- ն և գործարկեք կոդը `կտտացնելով գործարկման կոճակին: Այժմ դուք ունեք շատ պարզ ռադարային համակարգ:

Դուք կարող եք հարմարեցնել ծածկագրերը, ինչպես ցանկանում եք, այն, ինչ ցանկանում եք ցուցադրել:

Քայլ 5: Խնդիրների վերացում:

Էսքիզը մշակվում է:

  • Սպասեք որոշ ժամանակ: Գործարկման ժամանակը կախված է ձեր համակարգչի և GPU- ի կատարումից:
  • Էսքիզ մշակելիս ստուգեք, որ սերիայի պորտի համարը ճիշտ է:
  • Ստուգեք, որ USB կապը ճիշտ է ամրագրված:
  • Ստուգեք ուլտրաձայնային տվիչի և Magicbit- ի միջև կապը:
  • Բացեք սերիական մոնիտորը և ստուգեք, որ տվյալները գալիս են Arduino- ից: Եթե ոչ, ապա խնդիրը ձեր Arduino կոդն է կամ ձեր USB միացումն է:

Սերվոն չի աշխատում:

  • Ստուգեք, որ USB կապը ճիշտ է ամրագրված:
  • Ստուգեք էլեկտրագծերը:
  • Ստուգեք, որ servo- ն լավ վիճակում է:

Քայլ 6: Arduino կոդ

#ներառում

#սահմանել TRIGGER_PIN 21 #սահմանել ECHO_PIN 22 #սահմանել MAX_DISTANCE 200 NewPing սոնար (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #ներառել // ներառել servo գրադարան int distance; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Սահմանում է, թե որ քորոցի վրա է տեղադրված սերվո շարժիչի հետաձգումը (3000); } void loop () {// պտտեց servo շարժիչը 15 -ից 165 աստիճանով (int i = 0; i <= 180; i ++) {RadarServo.write (i); ուշացում (50); distance = sonar.ping_cm (); // sանգահարում է գործառույթ `յուրաքանչյուր աստիճանի համար ուլտրաձայնային տվիչով չափվող հեռավորությունը հաշվարկելու համար (int j = 0; j0) {ընդմիջում; } Serial.print (i); // Ուղարկում է ընթացիկ աստիճանը Serial. Port Serial.print (","); // Ուղարկում է լրացուցիչ նիշ անմիջապես հաջորդ արժեքի կողքին, որը անհրաժեշտ է մշակման IDE- ում `Serial.print (j) ինդեքսավորման համար; // Ուղարկում է ընթացիկ աստիճանը Serial Port Serial.print ("*"); Serial.print (1); // Ուղարկում է հեռավորության արժեքը Սերիական նավահանգստի Serial.print ("/"); // Ուղարկում է հավելյալ նիշ անմիջապես հաջորդ արժեքի կողքին, որն անհրաժեշտ է հետագայում Processing IDE- ում Serial.print (հեռավորություն) ինդեքսավորման համար; // Հեռավորության արժեքն ուղարկում է Serial. Port Serial.print ("."); // Ուղարկում է հավելյալ նիշ անմիջապես ինդեքսավորման համար մշակման IDE- ում անհրաժեշտ նախկին արժեքի կողքին}} // Կրկնում է նախորդ տողերը 165-ից մինչև 15 աստիճան (int i = 180; i> = 0; i-) {RadarServo.գրեք (i); ուշացում (50); հեռավորություն = sonar.ping_cm (); համար (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {շարունակել; } Serial.print (i); // Ուղարկում է ընթացիկ աստիճանը Serial. Port Serial.print (","); // Ուղարկում է լրացուցիչ նիշ անմիջապես հաջորդ արժեքի կողքին, որը անհրաժեշտ է մշակման IDE- ում `Serial.print (j) ինդեքսավորման համար; // Ուղարկում է ընթացիկ աստիճանը Serial Port Serial.print ("*"); Serial.print (-1); // Ուղարկում է հեռավորության արժեքը Սերիական նավահանգստի Serial.print ("/"); // Ուղարկում է հավելյալ նիշ անմիջապես հաջորդ արժեքի կողքին, որն անհրաժեշտ է հետագայում Processing IDE- ում Serial.print (հեռավորություն) ինդեքսավորման համար; // Հեռավորության արժեքն ուղարկում է Սերիական նավահանգստի Serial.print ("."); // Ուղարկում է լրացուցիչ նիշ անմիջապես ինդեքսավորման համար Processing IDE- ում հետագայում անհրաժեշտ նախորդ արժեքի կողքին}}

}

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