Mündəricat:

Magicbit -dən Sadə Radar Sistemi: 6 addım
Magicbit -dən Sadə Radar Sistemi: 6 addım

Video: Magicbit -dən Sadə Radar Sistemi: 6 addım

Video: Magicbit -dən Sadə Radar Sistemi: 6 addım
Video: Learn Coding with MagicBit 2024, Noyabr
Anonim

Bu təlimat, HC-SR04 sensoru və işlənmiş və Arduino IDE ilə Microbit inkişaf etdirici lövhədən istifadə edərək sadə bir radar sisteminin necə qurulacağını göstərir.

Təchizat:

  • SG90 Mikro-servo motor
  • Jumper telləri (ümumi)
  • Çörək paneli (ümumi)
  • Magicbit
  • USB-A-dan Mikro-USB Kabelinə
  • Ultrasonik Sensor - HC -SR04 (Ümumi)

Addım 1: Hekayə

Bu dərslikdə Magicbit nüvə qurğusundan istifadə edərək sadə bir radar sisteminin necə qurulacağını öyrənəcəyik. Bu məqsədlə HC-SR04 ultrasəs sensorundan istifadə edirik və məlumatları göstərmək üçün emal mühitindən istifadə edirik. Başlayaq.

Addım 2: nəzəriyyə və metodologiya

Əvvəlcə bunun necə işlədiyini müzakirə edək. Prinsip çox asandır. Əvvəlcə sensoru 180 dərəcə aralığında davamlı olaraq şaquli ox ətrafında döndəririk. Bu hərəkət zamanı ultrasəs sensorundan hər açıdan ən yaxın obyektə olan məsafə haqqında məlumat alırıq. Bu proses üçün Magicbit əsas kartından istifadə edirik. Bundan sonra, məlumatlarımızı göstərmək üçün emal mühiti ilə əlaqə qurmalıyıq. Buna görə də uyğun baud dərəcəsi ilə serial rabitə protokolundan istifadə edirik. Sonra IDE -dən istifadə edərək radar sistem interfeysimizi hazırlayırıq. Bu IDE -də serial vasitəsilə real vaxt məlumatları əldə etmək üçün serial ünsiyyətimizi konfiqurasiya edirik. Beləliklə, Magicbit ilə real vaxtda əlaqə qururuq və Magicbit -dən emal IDE -yə göndərilən məlumatları göstəririk.

Addım 3: Hardware Setup

Avadanlıq Quraşdırması
Avadanlıq Quraşdırması
Avadanlıq Quraşdırması
Avadanlıq Quraşdırması

Bu layihə üçün əsasən üç hardware komponentindən istifadə etdik. Bunlar Magicbit, servo motor və ultrasəs sensoru. Bütün bu hissələr arasındakı əlaqə yuxarıdakı Şəkildə göstərilmişdir.

Ultrasonik sensor güc üçün 3.3 v istifadə edir. Beləliklə, ultrasəs sensoru Magicbit -ə bağlamaq üçün Magicbit lövhəsinin sağ alt limanından istifadə etdik. Ancaq servo motor düzgün işləmək üçün 5V istifadə olunur, buna görə də servo motoru Magicbit ilə bağlamaq üçün sol aşağı portdan istifadə etdik. Bu vəziyyətdə Magic bit servo bağlayıcı modulundan istifadə edirik. Ancaq bu modulunuz yoxdursa, 5V -dan 5V -a, Gnd -Gnd -ə və magicbit -də 26 pin -ə siqnal pinini bağlamaq üçün üç keçid teli istifadə edə bilərsiniz.

Dövr qurduqdan sonra qurmaq üçün kiçik mexaniki hissələrimiz var. kiçik bir qoz istifadə edərək servo motora bir tərəfli servo konnektoru təyin edin. Daha sonra L konnektorundakı sensoru L şəkilli bir mötərizə və ya düzgün şəkildə düzəldin. Bütün sistemdən sonra çörək taxtasına bərkidik. Ancaq servo və Magicbit qurmaq üçün başqa bir səthdən istifadə edə bilərsiniz.

Addım 4: Proqram Quraşdırması

Proqram Quraşdırması
Proqram Quraşdırması
Proqram Quraşdırması
Proqram Quraşdırması

Proqram tərəfi kiçik bit kompleksidir. Düzgün başa düşmək üçün növbəti hissəyə keçməzdən əvvəl aşağıdakı bağlantılara müraciət edə bilərsiniz.

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

hello.processing.org/editor/

Arduino IDE koduna və bu kodun necə işlədiyinə baxaq.

Sürücülük üçün ESP32 servo kitabxanasından istifadə edirik. Bu kitabxana demək olar ki, Arduino IDE -də sehrli bit lövhə menecerinə daxildir. Ultrasonik sensorla məşğul olmaq üçün newPing kitabxanasından istifadə edirik. Bunu aşağıdakı linkdən yükləmək olar.

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

Zip faylını yükləyin və alətlərə keçin> kitabxana daxil edin> Arduinoda Zip kitabxanası əlavə edin. İndi yeni pin kitabxanasının yüklənmiş zip faylını seçin. İşləmə ilə əlaqə qurmaq üçün 115200 baud dərəcəsi ilə ardıcıl ünsiyyətdən istifadə etdik. Bu ESP32 üçün ən uyğun tezlikdir. Hər tərəfdən məlumatlarımızı bu protokoldan istifadə edərək kompüterə göndəririk. Sensora ən yaxın ön cisimə olan məsafə, fırlanma istiqaməti və dönmə bucağı bu məlumatlara daxildir. Döngələr üçün ikisini istifadə edərək servomuzu iki istiqamətə döndəririk. Bir dərəcə fırlandıqda 4 dəfə serial məlumat göndərdik. Bunun səbəbini hissənin izahını işləyərkən başa düşə bilərsiniz.

İndi emal mühitinə baxmaq vaxtıdır. Bu java əsaslı proqramlaşdırma proqramdır. IDE -nin işlənməsində bu eskizdə proqramımızın eskizini yaza bilərik. Proqramımızı işlədərək vizual çıxış da yarada bilərik. Çıxışı 2D və 3d obyektlər kimi də götürə bilərsiniz. Yalnız bu deyil, bu, görüntü işlənməsi və daha çox şey üçün istifadə edilə bilər.

Emal eskizində əvvəlcə sadə qrafik funksiyalardan istifadə edərək məlumatların göstərilməsi interfeysini tərtib edirik. Kodun başlanğıcında serial kitabxanaları daxil edərək serial əlaqəmizi qururuq. Quraşdırma funksiyasında, Magicbit'i kompüterə bağlamaq üçün istifadə etdiyiniz USB portuna uyğun olaraq bir az dəyişiklik etməlisiniz. kodu yükləmək üçün Arduino IDE qurarkən Arduino IDE istifadə edərək portunuzu yoxlaya bilərsiniz. Sonra eskizin işlənməsində quraşdırma hissəsində com port adını dəyişdirin. serial məlumatları mövcud olduqda, Serialevent funksiyası avtomatik olaraq işə düşür. Buna görə kodun əsas məntiqi, açıların və məlumatların itməməsi üçün seriya hadisəsinə daxil edilməsidir. yeni məlumatlar əldə edildikdə, bucağımıza uyğun olaraq ekranda bir xətt çəkirik. O zaman heç bir obyekt aşkarlanmırsa, tam xətt yaşıl rəngdədir. Əks təqdirdə, xəttin bir hissəsi sensordan obyektə olan məsafəyə görə qırmızı olacaq. Eyni zamanda, fırlanma istiqamətinə uyğun olaraq, yaşıl rəng səviyyəsinin azalması ilə bu xəttin yanına daha 200 xətt çəkirik. hər Main arasında 0,25 dərəcə fərqimiz var. Buna görə Magicbit -dən hər dərəcə fırlanmada bir anda 4 oxu alırıq. Bunun sayəsində ekranda gözəl bir axtarış yarada bilərik.

Kodu uğurla yüklədikdən sonra sehrli və qurğu hissəsini emal IDE -ni uğurla açın və "Çalıştır" düyməsini basaraq kodu işlədin. İndi çox sadə bir radar sisteminiz var.

Göstərmək istədiyinizi kodları istədiyiniz kimi düzəldə bilərsiniz.

Addım 5: Problemlərin aradan qaldırılması

Eskiz işlənmir.

  • Bir az gözləyin. Başlanğıc vaxtı PC və GPU performansından asılıdır.
  • Eskizin işlənməsində seriya port nömrəsinin düzgün olub olmadığını yoxlayın.
  • USB bağlantısının düzgün qurulduğunu yoxlayın.
  • Ultrasonik sensor ilə Magicbit arasındakı əlaqəni yoxlayın.
  • Serial monitoru açın və məlumatların Arduinodan gəldiyini yoxlayın. Əks təqdirdə, problem Arduino kodunuzda və ya USB bağlantınızdadır.

Servo işləmir.

  • USB bağlantısının düzgün qurulduğunu yoxlayın.
  • Kabelləri yoxlayın.
  • Servonun yaxşı vəziyyətdə olduğunu yoxlayın.

Addım 6: Arduino Kodu

#daxil edin

#define TRIGGER_PIN 21 #dexine ECHO_PIN 22 #dexine MAX_DISTANCE 200 NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // servo kitabxananı int məsafəsinə daxil edin; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Servo motorun bağlı olduğu gecikmənin hansı pin üzərində olduğunu təyin edir (3000); } void loop () {// (int i = 0; i <= 180; i ++) {RadarServo.write (i); üçün servo motoru 15 ilə 165 dərəcə döndürür; gecikmə (50); məsafə = sonar.ping_cm (); // (int j = 0; j0) {break; } Serial.print (i); // Mövcud dərəcəni Serial Port Serial.print (",") göndərir; // Serial.print (j) indekslənməsi üçün daha sonra Qenerasiya IDE -də lazım olan əvvəlki dəyərin yanında əlavə xarakter göndərir; // Mövcud dərəcəni Serial Port Serial.print ("*") göndərir; Serial çapı (1); // Məsafə dəyərini Serial Port Serial.printə göndərir ("/"); // Serial.print (məsafə) indeksləşdirilməsi üçün daha sonra Processing IDE -də lazım olan əvvəlki dəyərin yanında əlavə xarakter göndərir; // Məsafə dəyərini Serial Port Serial.print (".") Göndərir; // Əlavə xarakteri indeksləmə üçün IDE-də daha sonra lazım olan əvvəlki dəyərin yanına göndərir}} // Əvvəlki sətirləri 165 ilə 15 dərəcə arasında təkrarlayır (int i = 180; i> = 0; i-) {RadarServo. yaz (i); gecikmə (50); məsafə = sonar.ping_cm (); for (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {davam; } Serial.print (i); // Mövcud dərəcəni Serial Port Serial.print (",") göndərir; // Serial.print (j) indekslənməsi üçün daha sonra Qenerasiya IDE -də lazım olan əvvəlki dəyərin yanında əlavə xarakter göndərir; // Mövcud dərəcəni Serial Port Serial.print ("*") göndərir; Serial. çap (-1); // Məsafə dəyərini Serial Port Serial.printə göndərir ("/"); // Serial.print (məsafə) indeksləşdirilməsi üçün daha sonra Processing IDE -də lazım olan əvvəlki dəyərin yanında əlavə xarakter göndərir; // Məsafə dəyərini Serial Port Serial.print (".") Göndərir; // Əlavə xarakteri indeksləşdirmək üçün daha sonra Qenerasiya IDE -də lazım olan əvvəlki dəyərin yanına göndərir}}

}

Tövsiyə: