Mundarija:

Magicbit -dan oddiy radar tizimi: 6 qadam
Magicbit -dan oddiy radar tizimi: 6 qadam

Video: Magicbit -dan oddiy radar tizimi: 6 qadam

Video: Magicbit -dan oddiy radar tizimi: 6 qadam
Video: Learn Coding with MagicBit 2024, Iyul
Anonim

Ushbu qo'llanma HC-SR04 sensori va Microbit dev platasi yordamida ishlov berish va Arduino IDE yordamida oddiy radar tizimini qanday qilishni ko'rsatadi.

Ta'minot:

  • SG90 mikro-servo dvigateli
  • Jumper simlari (umumiy)
  • Non paneli (umumiy)
  • Magicbit
  • USB-A-Micro-USB kabeli
  • Ultrasonik sensor - HC -SR04 (umumiy)

1 -qadam: hikoya

Ushbu qo'llanmada biz Magicbit yadro devi yordamida oddiy radar tizimini qanday yasashni bilib olamiz. Buning uchun biz HC-SR04 ultratovush sensoridan foydalanamiz va ma'lumotlarni ko'rsatish uchun biz ishlov berish muhitidan foydalanamiz. Boshlaylik.

2 -qadam: nazariya va metodologiya

Birinchidan, bu qanday ishlashini muhokama qilaylik. Printsip juda oson. Birinchidan, biz sensorni vertikal o'q atrofida 180 daraja doimiy ravishda aylantiramiz. Harakat paytida biz ultrasonik sensordan har burchakda eng yaqin ob'ektgacha bo'lgan masofa haqidagi ma'lumotlarni olamiz. Bu jarayonda biz Magicbit yadro kartasidan foydalanamiz. Shundan so'ng, biz ma'lumotlarni ko'rsatish uchun ishlov berish muhiti bilan aloqani o'rnatishimiz kerak. Shuning uchun biz mos keladigan tezlik bilan ketma -ket aloqa protokolidan foydalanamiz. Keyin biz IDE -ni qayta ishlash orqali radar tizimi interfeysini loyihalashtiramiz. Ushbu IDE -da biz ketma -ket aloqani real vaqt rejimida ma'lumotlarni ketma -ket olish uchun sozlaymiz. Shunday qilib, biz Magicbit bilan real vaqtda muloqot qilamiz va Magicbit -dan IDE -ga ishlov beriladigan ma'lumotlarni ko'rsatamiz.

3 -qadam: Uskuna sozlamalari

Uskunani sozlash
Uskunani sozlash
Uskunani sozlash
Uskunani sozlash

Ushbu loyiha uchun biz asosan uchta apparat komponentidan foydalanganmiz. Ular Magicbit, servo dvigatel va ultratovush sensori. Bu qismlar orasidagi aloqa yuqoridagi rasmda ko'rsatilgan.

Ultrasonik datchik 3.3 volt quvvat olish uchun ishlatilgan. Shunday qilib, biz ultrasonik sensorni Magicbit -ga ulash uchun Magicbit kartasining pastki pastki portidan foydalandik. Servo dvigatel 5V to'g'ri ishlashi uchun ishlatiladi, shuning uchun biz servik motorni Magicbit -ga ulash uchun chap pastki portdan foydalanganmiz. Bunday holda, biz Magic bit servo ulagich modulidan foydalanamiz. Agar sizda bunday modul bo'lmasa, siz 5V dan 5V gacha, Gnd dan Gndgacha va signal pinini 26 bitga ulashingiz mumkin.

O'chirishdan keyin bizda kichik mexanik qismlar quriladi. bir tomonlama servo ulagichni kichik somun yordamida servo dvigatelga o'rnating. Keyin ulagichga sensorni L shaklidagi qavs yoki to'g'ri usulda mahkamlang. Butun tizimdan keyin biz non paneliga o'rnatdik. Ammo servo va Magicbit -ni o'rnatish uchun siz boshqa sirtdan foydalanishingiz mumkin.

4 -qadam: dasturiy ta'minotni sozlash

Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash
Dasturiy ta'minotni sozlash

Dasturiy ta'minot tomoni kichik bit. To'g'ri tushunish uchun keyingi qismga o'tishdan oldin quyidagi havolalarga murojaat qilishingiz mumkin.

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

hello.processing.org/editor/

Keling, Arduino IDE kodini va bu kod qanday ishlashini ko'rib chiqaylik.

Servo haydash uchun biz ESP32 servo kutubxonasidan foydalanamiz. Bu kutubxona deyarli Arduino IDE -dagi sehrli bitlar boshqaruvchisiga kiradi. Ultrasonik sensor bilan ishlash uchun biz newPing kutubxonasidan foydalanamiz. Buni quyidagi havoladan yuklab olish mumkin.

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

Zip faylini yuklab oling va asboblarga o'ting> kutubxonani qo'shing> Arduino -da Zip kutubxonasini qo'shing. Endi yangi pin kutubxonasining yuklab olingan zip faylini tanlang. Qayta ishlash bilan aloqa qilish uchun biz 115200 bayd tezligi bilan ketma -ket aloqadan foydalanganmiz. Bu ESP32 uchun eng to'g'ri chastota. Biz har tomondan o'z ma'lumotlarimizni ushbu protokol yordamida kompyuterga yuboramiz. Datchikdan eng yaqin oldingi ob'ektgacha bo'lgan masofa, aylanish yo'nalishi va burilish burchagi bu ma'lumotlarga kiritilgan. Ikkita pastadir yordamida biz servoimizni ikki tomonga aylantiramiz. Bir darajali aylanish paytida biz ketma -ket ma'lumotlarni 4 marta yubordik. Buning sababini tushuntirishni ishlov berishda tushunishingiz mumkin.

Endi ishlov berish muhitini ko'rib chiqish vaqti keldi. Bu java -ga asoslangan dasturiy ta'minot. Biz IDE -ni qayta ishlashda ushbu eskizga o'z dasturimizning eskizini yozishimiz mumkin. Shuningdek, biz dasturni ishga tushirish orqali vizual chiqindilarni ishlab chiqarishimiz mumkin. Bundan tashqari, siz chiqishni 2D va 3d ob'ektlar sifatida qabul qilishingiz mumkin. Bu nafaqat tasvirni qayta ishlash va boshqa ko'p narsalar uchun ishlatilishi mumkin.

Qayta ishlash eskizida biz oddiy grafik funktsiyalari yordamida ma'lumotlarni ko'rsatish interfeysini yaratamiz. Kodning boshida biz ketma -ket kutubxonalarni kiritish orqali ketma -ket aloqani o'rnatamiz. O'rnatish funktsiyasida siz Magicbit -ni kompyuterga ulash uchun ishlatilgan USB portiga qarab biroz o'zgartirish kiritishingiz kerak. kodni yuklash uchun Arduino IDE ni o'rnatganingizda, Arduino IDE yordamida portingizni tekshirishingiz mumkin. Keyin eskizni qayta ishlashning sozlash qismida com port nomini o'zgartiring. ketma -ket ma'lumotlar mavjud bo'lganda, Serialevent funktsiyasi avtomatik ravishda ishga tushadi. Shunday qilib, kodning asosiy mantig'i, burchaklar va ma'lumotlarning yo'qolishini oldini olish uchun ketma -ket hodisaga kiritiladi. Agar bizda yangi ma'lumotlar mavjud bo'lsa, biz burchakka qarab ekranda chiziq chizamiz, agar ob'ekt aniqlanmasa, to'liq chiziq yashil rangda bo'ladi. Aks holda, chiziqning bir qismi sensordan ob'ektgacha bo'lgan masofaga qarab qizil bo'ladi. Shuningdek, aylanish yo'nalishi bo'yicha biz yashil chiziqning pasayishi bilan bu chiziqqa yaqinroq yana 200 ta chiziq chizamiz. har bir asosiy o'rtasida bizda 0,25 daraja farq bor. Shunday qilib, biz Magicbit -dan har bir daraja aylanishida bir vaqtning o'zida 4 ta o'qishni olamiz. Shu tufayli biz qo'lda chiroyli qidiruvni yaratishimiz mumkin.

Kodni muvaffaqiyatli yuklaganingizdan so'ng, sehr -jodu va apparat qismlarini muvaffaqiyatli ishga tushirish IDE -ni muvaffaqiyatli oching va ishga tushirish tugmachasini bosib kodni ishga tushiring. Endi sizda juda oddiy radar tizimi mavjud.

Siz ko'rsatmoqchi bo'lgan narsalarni kodlarni xohlaganingizcha sozlashingiz mumkin.

5 -qadam: Muammolarni bartaraf etish

Eskizni qayta ishlash ishlamayapti.

  • Bir oz kutib turing. Ishga tushirish vaqti kompyuter va GPU ishlashiga bog'liq.
  • Eskizni qayta ishlashda ketma -ket port raqamining to'g'riligini tekshiring.
  • USB ulanishi to'g'ri o'rnatilganligini tekshiring.
  • Ultrasonik sensor va Magicbit o'rtasidagi aloqani tekshiring.
  • Seriyali monitorni oching va Arduino -dan olingan ma'lumotlarni tekshiring. Aks holda, muammo sizning Arduino kodingizda yoki USB ulanishingizda.

Servo ishlamayapti.

  • USB ulanishi to'g'ri o'rnatilganligini tekshiring.
  • Kabelni tekshiring.
  • Servo yaxshi holatda ekanligini tekshiring.

6 -qadam: Arduino kodi

#qo'shing

#dejinani belgilang TRIGGER_PIN 21 #ECHO_PIN 22ni belgilang #MAX_DISTANCE 200ni belgilang 200 NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // servo kutubxonani o'z ichiga oladi int masofasi; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Servo dvigatel biriktirilgan kechikish qaysi pim ustida aniqlanadi (3000); } void loop () {// servo motorni 15 dan 165 gradusgacha aylantiradi (int i = 0; i <= 180; i ++) {RadarServo.write (i); kechikish (50); masofa = sonar.ping_cm (); // Har bir daraja uchun ultrasonik sensori o'lchagan masofani hisoblash funktsiyasini chaqiradi (int j = 0; j0) {tanaffus; } Serial.print (i); // Joriy darajani Serial Port Serial.print (",") ga yuboradi; // Serial.print (j) indekslash uchun IDE protsessorida kerak bo'ladigan oldingi qiymatning yoniga qo'shimcha belgini yuboradi; // Serial.print ("*") ketma -ket portiga joriy darajani yuboradi; Ketma -ket chop etish (1); // Serial.print ("/") ketma -ket portiga masofa qiymatini yuboradi; // Serial.print (masofani) indekslash uchun keyinchalik Processing IDE -da kerak bo'lgan oldingi qiymatning yoniga qo'shimcha belgini yuboradi; // Serial.print (".") Ketma -ket portiga masofa qiymatini yuboradi; // Qo'shish belgisini indekslash uchun IDE protsessorida kerak bo'lgan oldingi qiymatning yoniga yuboradi}} // oldingi satrlarni 165 dan 15 darajagacha takrorlaydi (int i = 180; i> = 0; i-) {RadarServo.yozish (i); kechikish (50); masofa = sonar.ping_cm (); for (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {davom eting; } Serial.print (i); // Joriy darajani Serial Port Serial.print (",") ga yuboradi; // Serial.print (j) indekslash uchun IDE protsessorida kerak bo'ladigan oldingi qiymatning yoniga qo'shimcha belgini yuboradi; // Joriy darajani Serial Port Serial.print ("*") ga yuboradi; Ketma-ket chop etish (-1); // Serial.print ("/") ketma -ket portiga masofa qiymatini yuboradi; // Serial.print (masofani) indekslash uchun keyinchalik Processing IDE -da kerak bo'lgan oldingi qiymatning yoniga qo'shimcha belgini yuboradi; // Masofa qiymatini Serial Port Serial.print (".") Ga yuboradi; // Qo'shish belgisini indekslash uchun Processing IDE -da kerak bo'lgan oldingi qiymatning yoniga yuboradi}}

}

Tavsiya: