Kazalo:

Preprost radarski sistem Magicbit: 6 korakov
Preprost radarski sistem Magicbit: 6 korakov

Video: Preprost radarski sistem Magicbit: 6 korakov

Video: Preprost radarski sistem Magicbit: 6 korakov
Video: Брайан Китинг и Ли Кронин: Жизнь во Вселенной 2024, Julij
Anonim

Ta vadnica prikazuje, kako narediti preprost radarski sistem s senzorjem HC-SR04 in Microbit dev board z obdelavo in Arduino IDE-ji.

Zaloge:

  • SG90 Mikro servo motor
  • Mostične žice (generično)
  • Ogledna plošča (splošna)
  • Magicbit
  • Kabel USB-A do Micro-USB
  • Ultrazvočni senzor - HC -SR04 (generično)

1. korak: Zgodba

V tej vadnici se bomo naučili, kako narediti preprost radarski sistem z uporabo Magicbit core dev board. V ta namen uporabljamo ultrazvočni senzor HC-SR04, za prikaz podatkov pa uporabimo procesorsko okolje. Začnimo.

2. korak: teorija in metodologija

Najprej se pogovorimo, kako to deluje. Načelo je zelo enostavno. Najprej neprekinjeno vrtimo senzor okoli navpične osi v območju 180 stopinj. Med tem gibanjem od ultrazvočnega senzorja za vsak kot vzamemo podatke o razdalji do najbližjega predmeta. Za ta postopek uporabljamo Magicbit jedrno ploščo. Nato moramo vzpostaviti povezavo z obdelovalnim okoljem za prikaz naših podatkov. Zato uporabljamo serijski komunikacijski protokol z ustrezno hitrostjo prenosa. Nato z obdelavo IDE oblikujemo vmesnik našega radarskega sistema. V tem IDE -ju konfiguriramo našo serijsko komunikacijo za pridobivanje podatkov v realnem času prek serijske. Tako komuniciramo v realnem času z Magicbitom in prikažemo podatke, ki jih pošljemo iz Magicbita v IDE za obdelavo.

3. korak: Namestitev strojne opreme

Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme
Namestitev strojne opreme

Za ta projekt smo v glavnem uporabili tri komponente strojne opreme. So Magicbit, servo motor in ultrazvočni senzor. Povezava med vsemi temi deli je prikazana na zgornji sliki.

Ultrazvočni senzor za vklop uporablja 3.3 V. Zato smo za priključitev ultrazvočnega senzorja na Magicbit uporabili desno spodnje vrata Magicbit plošče. Toda servo motor se uporablja za pravilno delovanje 5V, zato smo za povezavo servo motorja z Magicbitom uporabili levo spodnje vrata. V tem primeru uporabljamo Magic bit servo priključni modul. Če pa tega modula nimate, lahko uporabite tri mostične žice za priključitev 5V na 5V, Gnd na Gnd in signalni zatič na 26 pin na magicbit.

Po izdelavi vezja imamo za izdelavo majhen mehanski del. enostranski servo priključek z majhno matico nastavite na servo motor. Nato pritrdite senzor na ta priključek z nosilcem v obliki črke L ali na ustrezen način. Po celotnem sistemu smo pritrdili na ploščo. Za namestitev servo in Magicbita pa lahko uporabite drugo površino.

4. korak: Namestitev programske opreme

Namestitev programske opreme
Namestitev programske opreme
Namestitev programske opreme
Namestitev programske opreme

Programska stran je malo zapletena. Za pravilno razumevanje se lahko obrnete na naslednje povezave, preden nadaljujete z naslednjim delom.

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

hello.processing.org/editor/

Poglejmo kodo IDE Arduino in njeno delovanje.

Za pogon servo uporabljamo servo knjižnico ESP32. Ta knjižnica je skoraj vključena v upravitelja magičnih bitnih plošč v Arduino IDE. Za obravnavo ultrazvočnega senzorja uporabljamo knjižnico newPing. To lahko prenesete s naslednje povezave.

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

Prenesite datoteko zip in pojdite na orodja> vključi knjižnico> dodaj knjižnico Zip v Arduinu. zdaj izberite preneseno datoteko zip nove knjižnice pin. Za komunikacijo z obdelavo smo uporabili serijsko komunikacijo s hitrostjo 115200 baud. To je najustreznejša frekvenca za ESP32. Pod vsakim kotom s tem protokolom pošiljamo svoje podatke v računalnik. Ti podatki vključujejo razdaljo do najbližjega sprednjega predmeta od senzorja, smer vrtenja in kot vrtenja. Z dvema zankama for zavrtimo servo v dve smeri. Med vrtenjem za eno stopinjo smo štirikrat poslali serijske podatke. Razlog za to lahko razumete pri obdelavi razlage dela.

Zdaj je čas, da pogledamo okolje obdelave. To je programska oprema za programiranje, ki temelji na javi. V to skico lahko v obdelavo IDE zapišemo skico našega programa. Vizualni izhod lahko ustvarimo tudi z izvajanjem našega programa. Izhod lahko vzamete tudi kot 2D in 3d predmete. Ne samo to, to lahko uporabite za obdelavo slik in še veliko več.

Na skici za obdelavo najprej oblikujemo vmesnik za prikaz podatkov s preprostimi grafičnimi funkcijami. Na začetku kode vzpostavimo serijsko komunikacijo z vključitvijo serijskih knjižnic. V nastavitveni funkciji morate spremeniti, katera vrata USB ste uporabili za povezavo Magicbita z računalnikom. svoja vrata lahko preverite z uporabo Arduino IDE, ko nastavite Arduino IDE za nalaganje kode. Nato spremenite ime vmesniškega dela v nastavitvenem delu pri obdelavi skice. ko so na voljo serijski podatki, se samodejno sproži funkcija Serialevent. Zato je glavna logika kode vključitev v serijski dogodek za preprečevanje manjkajočih kotov in podatkov. ko so na voljo novi podatki, na zaslonu potegnemo črto glede na naš kot. Takrat, če ni zaznanega predmeta, je celotna črta zelene barve. V nasprotnem primeru bo del črte rdeč glede na razdaljo od senzorja do predmeta. Prav tako glede na smer vrtenja potegnemo še 200 črt blizu te črte z padajočo stopnjo zelene barve. med vsakim Mainom imamo 0,25 stopinje razlike. Zato dobimo 4 odčitke hkrati iz Magicbita pri vsaki rotaciji stopinj. Zaradi tega lahko ustvarimo čudovito iskanje ročno po zaslonu.

Po nalaganju kode uspeh v celoti do čarovnije in nastavitev strojne komponente uspešno odprite IDE za obdelavo in kodo zaženite s klikom na gumb Zaženi. Zdaj imate zelo preprost radarski sistem.

Kode lahko prilagodite po želji, kaj želite prikazati.

5. korak: Odpravljanje težav

Obdelava skice se ne izvaja.

  • Počakajte nekaj časa. Čas zagona je odvisen od zmogljivosti računalnika in grafičnega procesorja.
  • Pri obdelavi skice preverite, ali je številka serijskih vrat pravilna.
  • Preverite, ali je povezava USB pravilno pritrjena.
  • Preverite povezavo med ultrazvočnim senzorjem in Magicbitom.
  • Odprite serijski monitor in preverite, ali podatki prihajajo iz Arduina. Če ne, potem je težava vaša koda Arduino ali vaša povezava USB.

Servo ne deluje.

  • Preverite, ali je povezava USB pravilno pritrjena.
  • Preverite ožičenje.
  • Preverite, ali je servo v dobrem stanju.

6. korak: Arduino koda

#vključi

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // vključi servo knjižnico int distance; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Določa, na katerem zatiču je zakasnitev priklopa servo motorja (3000); } void loop () {// vrti servo motor od 15 do 165 stopinj za (int i = 0; i <= 180; i ++) {RadarServo.write (i); zamuda (50); distance = sonar.ping_cm (); // Pokliče funkcijo za izračun razdalje, ki jo ultrazvočni senzor izmeri za vsako stopinjo za (int j = 0; j0) {break; } Serial.print (i); // Pošilja trenutno stopnjo v Serial Port Serial.print (","); // pošlje dodani znak tik ob prejšnji vrednosti, ki je pozneje potrebna v IDE -ju za obdelavo za indeksiranje Serial.print (j); // Pošilja trenutno stopnjo v Serial Port Serial.print ("*"); Serial.print (1); // Pošlje vrednost razdalje v Serial Port Serial.print ("/"); // pošlje dodani znak tik ob prejšnji vrednosti, ki je pozneje potrebna v IDE -ju za obdelavo za indeksiranje Serial.print (razdalja); // Pošlje vrednost razdalje v Serial Port Serial.print ("."); // Pošlje dodani znak tik ob prejšnji vrednosti, ki je pozneje potrebna v indeksu obdelave za indeksiranje}} // Ponovi prejšnje vrstice od 165 do 15 stopinj za (int i = 180; i> = 0; i-) {RadarServo.pisati (i); zamuda (50); razdalja = sonar.ping_cm (); for (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {nadaljevanje; } Serial.print (i); // Pošilja trenutno stopnjo v Serial Port Serial.print (","); // pošlje dodani znak tik ob prejšnji vrednosti, ki je pozneje potrebna v IDE -ju za obdelavo za indeksiranje Serial.print (j); // Pošilja trenutno stopnjo v Serial Port Serial.print ("*"); Serial.print (-1); // Pošlje vrednost razdalje v Serial Port Serial.print ("/"); // pošlje dodani znak tik ob prejšnji vrednosti, ki je pozneje potrebna v IDE -ju za obdelavo za indeksiranje Serial.print (razdalja); // Pošlje vrednost razdalje v Serial Port Serial.print ("."); // Pošlje dodani znak tik ob prejšnji vrednosti, ki je pozneje potrebna v IDE -ju za obdelavo za indeksiranje}}

}

Priporočena: