Turinys:

Paprasta radaro sistema iš „Magicbit“: 6 žingsniai
Paprasta radaro sistema iš „Magicbit“: 6 žingsniai

Video: Paprasta radaro sistema iš „Magicbit“: 6 žingsniai

Video: Paprasta radaro sistema iš „Magicbit“: 6 žingsniai
Video: ЭФФЕКТ - 100%!!! СОСУДЫ ИДЕАЛЬНЫЕ 2024, Liepa
Anonim

Ši pamoka parodo, kaip sukurti paprastą radarų sistemą naudojant HC-SR04 jutiklį ir „Microbit dev“plokštę su apdorojimu ir „Arduino IDE“.

Priedai:

  • SG90 mikro servo variklis
  • Trumpieji laidai (bendrieji)
  • Duonos lenta (bendra)
  • „Magicbit“
  • Kabelis nuo USB-A iki mikro-USB
  • Ultragarsinis jutiklis - HC -SR04 (bendras)

1 žingsnis: istorija

Šioje pamokoje sužinosime, kaip sukurti paprastą radarų sistemą naudojant „Magicbit core dev board“. Šiuo tikslu mes naudojame ultragarsinį jutiklį HC-SR04, o duomenims rodyti-apdorojimo aplinką. Pradėkime.

2 žingsnis: teorija ir metodika

Pirmiausia aptarkime, kaip tai veikia. Principas labai lengvas. Pirmiausia mes nuolat sukame jutiklį aplink vertikalią ašį 180 laipsnių diapazone. Šio judesio metu mes gauname duomenis apie atstumą iki artimiausio objekto nuo ultragarso jutiklio kiekvienu kampu. Šiam procesui naudojame „Magicbit“pagrindinę plokštę. Po to turime užmegzti ryšį su apdorojimo aplinka, kad būtų rodomi mūsų duomenys. Todėl mes naudojame nuoseklaus ryšio protokolą su tinkamu duomenų perdavimo greičiu. Tada mes sukuriame savo radarų sistemos sąsają naudodami apdorojimo IDE. Tame IDE mes sukonfigūruojame nuoseklųjį ryšį, kad gautume duomenis realiuoju laiku per seriją. Taigi mes bendraujame realiuoju laiku su „Magicbit“ir parodome duomenis, kurie siunčiami iš „Magicbit“į apdorojimo IDE.

3 žingsnis: Aparatūros sąranka

Techninės įrangos sąranka
Techninės įrangos sąranka
Techninės įrangos sąranka
Techninės įrangos sąranka

Šiam projektui mes daugiausia naudojome tris aparatūros komponentus. Tai „Magicbit“, servo variklis ir ultragarsinis jutiklis. Visų šių dalių jungtis parodyta aukščiau esančiame paveikslėlyje.

Ultragarsinis jutiklis įjungimui naudojo 3,3 v. Todėl mes naudojome dešinįjį apatinį „Magicbit“plokštės prievadą, kad prijungtume ultragarsinį jutiklį prie „Magicbit“. Tačiau servo variklis naudojamas 5 V, kad tinkamai veiktų, todėl mes naudojome apatinį kairįjį prievadą, kad prijungtume servo variklį prie „Magicbit“. Šiuo atveju mes naudojame „Magic bit“servo jungties modulį. Bet jei neturite to modulio, galite naudoti tris trumpiklius laidus, kad prijungtumėte 5V prie 5V, Gnd - Gnd ir signalų kaištį prie 26 kontaktų „Magicbit“.

Sukūrę grandinę, turime sukurti nedidelę mechaninę dalį. nustatykite vienos pusės servo jungtį prie servo variklio, naudodami mažą veržlę. Tada pritvirtinkite jutiklį prie tos jungties naudodami L formos laikiklį arba tinkamu būdu. Po visos sistemos pritvirtinome ant duonos lentos. Tačiau servo ir „Magicbit“tvirtinimui galite naudoti kitą paviršių.

4 žingsnis: programinės įrangos sąranka

Programinės įrangos sąranka
Programinės įrangos sąranka
Programinės įrangos sąranka
Programinės įrangos sąranka

Programinės įrangos pusė yra sudėtinga. Kad gerai suprastumėte, galite perskaityti šias nuorodas prieš pereidami prie kitos dalies.

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

hello.processing.org/editor/

Pažvelkime į „Arduino IDE“kodą ir kaip šis kodas veikia.

Vairuoti servo mes naudojame ESP32 servo biblioteką. Ši biblioteka beveik įtraukta į stebuklingą bitų plokštės tvarkyklę „Arduino IDE“. Norėdami susidoroti su ultragarso jutikliu, naudojame „newPing“biblioteką. Tai galima atsisiųsti iš šios nuorodos.

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

Atsisiųskite ZIP failą ir eikite į įrankius> įtraukite biblioteką> pridėkite „Zip“biblioteką „Arduino“. dabar pasirinkite atsisiųstą naujos PIN bibliotekos ZIP failą. Norėdami bendrauti su apdorojimu, naudojome nuoseklųjį ryšį su 115200 baudų greičiu. Tai tinkamiausias ESP32 dažnis. Kiekvienu kampu siunčiame duomenis į kompiuterį naudodami šį protokolą. Į šiuos duomenis įtrauktas atstumas iki artimiausio priekinio objekto nuo jutiklio, sukimosi kryptis ir sukimosi kampas. Naudodami du kilpoms, mes pasukame savo servą dviem kryptimis. Vieno laipsnio sukimosi metu mes serijinius duomenis išsiuntėme 4 kartus. To priežastis galite suprasti apdorodami dalies paaiškinimą.

Dabar atėjo laikas pažvelgti į apdorojimo aplinką. Tai yra „Java“pagrįsta programavimo programinė įranga. Į šį eskizą galime įrašyti savo programos eskizą apdorodami IDE. Vykdydami savo programą taip pat galime sukurti vaizdinę išvestį. Taip pat galite priimti išvestį kaip 2D ir 3D objektus. Maža to, tai gali būti naudojama vaizdų apdorojimui ir daugeliui kitų dalykų.

Apdorojimo eskize pirmiausia sukuriame duomenų rodymo sąsają naudodami paprastas grafines funkcijas. Kodo pradžioje mes sukuriame nuoseklųjį ryšį, įtraukdami serijines bibliotekas. Sąrankos funkcijoje turite atlikti tam tikrus pakeitimus pagal tai, kokį USB prievadą naudojote prijungdami „Magicbit“prie kompiuterio. galite patikrinti savo prievadą naudodami „Arduino IDE“, kai nustatote „Arduino IDE“įkelti kodą. Tada apdorojimo eskizo sąrankos dalyje pakeiskite prievado pavadinimą. kai serijiniai duomenys yra prieinami, funkcija „Serialevent“automatiškai suveikia. Todėl pagrindinė kodo logika yra įtraukti į serijinį įvykį, kad būtų išvengta kampų ir duomenų trūkumo. kai yra naujų duomenų, mes piešiame liniją ekrane pagal savo kampą. Tuo metu, jei nėra objekto aptikimo, visa linija yra žalios spalvos. Jei ne, tada kai kuri linijos dalis bus raudona pagal atstumą nuo jutiklio iki objekto. Taip pat pagal sukimosi kryptį nubrėžiame dar 200 linijų šalia tos linijos, mažėjant žalios spalvos lygiui. tarp kiekvieno pagrindinio turime 0,25 laipsnių skirtumą. Todėl kiekvieną kartą pasukdami iš „Magicbit“gauname 4 rodmenis vienu metu. Dėl to mes galime sukurti gražią ieškomą ranką ekrane.

Įkėlę sėkmingą kodą į stebuklingą ir nustatę aparatūros dalį, sėkmingai atidarykite apdorojimo IDE ir paleiskite kodą spustelėdami mygtuką Vykdyti. Dabar turite labai paprastą radarų sistemą.

Galite tinkinti kodus, kaip norite, ką norite rodyti.

5 veiksmas: trikčių šalinimas

Apdorojamas eskizas neveikia.

  • Palaukite šiek tiek laiko. Dėl paleidimo laiko priklauso jūsų kompiuterio ir GPU našumas.
  • Patikrinkite, ar apdorojant eskizą teisingas serijinio prievado numeris.
  • Patikrinkite, ar tinkamai prijungtas USB ryšys.
  • Patikrinkite ryšį tarp ultragarso jutiklio ir „Magicbit“.
  • Atidarykite serijinį monitorių ir patikrinkite, ar duomenys gaunami iš „Arduino“. Jei ne, tada problema yra jūsų „Arduino“kodas arba USB jungtis.

Servo neveikia.

  • Patikrinkite, ar tinkamai prijungtas USB ryšys.
  • Patikrinkite laidus.
  • Patikrinkite, ar servo būklė gera.

6 veiksmas: „Arduino“kodas

#įtraukti

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // include servo library int distance; Servo radarasServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Apibrėžia, ant kurio kaiščio yra prijungtas servo variklio uždelsimas (3000); } void loop () {// pasuka servo variklį nuo 15 iki 165 laipsnių (int i = 0; i <= 180; i ++) {RadarServo.write (i); vėlavimas (50); distance = sonar.ping_cm (); // Iškviečia funkciją, skirtą apskaičiuoti atstumą, išmatuotą ultragarso jutikliu kiekvienam laipsniui (int j = 0; j0) {break; } Serijinis atspaudas (i); // Siunčia dabartinį laipsnį į serijinį prievadą Serial.print (","); // Siunčia papildymo simbolį prie pat ankstesnės vertės, reikalingos vėliau apdorojimo IDE, kad būtų galima indeksuoti Serial.print (j); // Siunčia dabartinį laipsnį į serijinį prievadą Serial.print ("*"); Serijinis atspaudas (1); // Siunčia atstumo reikšmę į nuoseklųjį prievadą Serial.print ("/"); // Siunčia papildymo simbolį prie pat ankstesnės vertės, reikalingos vėliau apdorojimo IDE, kad būtų galima indeksuoti Serial.print (atstumas); // Siunčia atstumo reikšmę į nuoseklųjį prievadą Serial.print ("."); // Siunčia papildymo simbolį prie ankstesnės vertės, reikalingos vėliau apdorojant IDE indeksavimui}} // // Pakartoja ankstesnes eilutes nuo 165 iki 15 laipsnių (int i = 180; i> = 0; i-) {RadarServo.rašyti (i); vėlavimas (50); atstumas = sonar.ping_cm (); už (int j = 75; j> = 0; j- = 25) {jei (i == 180 && (j == 75 || j == 50 || j == 25)) {tęsti; } Serijinis atspaudas (i); // Siunčia dabartinį laipsnį į serijinį prievadą Serial.print (","); // Siunčia papildymo simbolį prie pat ankstesnės vertės, reikalingos vėliau apdorojimo IDE, kad būtų galima indeksuoti Serial.print (j); // Siunčia dabartinį laipsnį į serijinį prievadą Serial.print ("*"); Serijinis atspaudas (-1); // Siunčia atstumo reikšmę į nuoseklųjį prievadą Serial.print ("/"); // Siunčia papildymo simbolį prie pat ankstesnės vertės, reikalingos vėliau apdorojimo IDE, kad būtų galima indeksuoti Serial.print (atstumas); // Siunčia atstumo reikšmę į nuoseklųjį prievadą Serial.print ("."); // Siunčia papildomą simbolį šalia ankstesnės vertės, kurios vėliau prireiks apdorojant IDE indeksavimui}}

}

Rekomenduojamas: