Talaan ng mga Nilalaman:

Simpleng Radar System Mula sa Magicbit: 6 na Hakbang
Simpleng Radar System Mula sa Magicbit: 6 na Hakbang

Video: Simpleng Radar System Mula sa Magicbit: 6 na Hakbang

Video: Simpleng Radar System Mula sa Magicbit: 6 na Hakbang
Video: Japan Hands Over Air Radar System to Philippines (Jan 2, 2024) 2024, Hulyo
Anonim

Ipinapakita ng tutorial na ito kung paano gumawa ng isang simpleng radar system na gumagamit ng HC-SR04 sensor at Microbit dev board na may pagproseso at Arduino IDE's.

Mga Pantustos:

  • SG90 Micro-servo motor
  • Jumper wires (generic)
  • Breadboard (generic)
  • Magicbit
  • USB-A hanggang sa Micro-USB Cable
  • Ultrasonic Sensor - HC-SR04 (Generic)

Hakbang 1: Kwento

Sa tutorial na ito matututunan namin ang tungkol sa kung paano gumawa ng isang simpleng radar system gamit ang Magicbit core dev board. Para sa hangaring ito ay gumagamit kami ng HC-SR04 ultrasonic sensor at sa pagpapakita ng data, gumagamit kami ng kapaligiran sa pagproseso. Magsimula na tayo.

Hakbang 2: Teorya at Pamamaraan

Una, pag-usapan natin kung paano ito gagana. Napakadali ng prinsipyo. Paikutin muna namin ang aming sensor sa paligid ng patayong axis sa patuloy na saklaw na 180 degree. Sa paggalaw na iyon kinukuha namin ang data tungkol sa distansya sa pinakamalapit na bagay mula sa ultrasonic sensor sa bawat anggulo. Para sa prosesong ito ginagamit namin ang Magicbit core board. Pagkatapos, kailangan nating maitaguyod ang koneksyon sa kapaligiran sa pagproseso para sa pagpapakita ng aming data. Dahil doon gumagamit kami ng serial komunikasyon na proteksyon na may angkop na rate ng baud. Pagkatapos ay dinisenyo namin ang aming interface ng radar system sa pamamagitan ng paggamit ng pagproseso ng IDE. Sa IDE na iyon i-configure namin ang aming serial na komunikasyon para makakuha ng data ng real time sa pamamagitan ng serial. Kaya't ginagawa namin ang real time na komunikasyon sa Magicbit at ipinapakita ang data na ipinadala mula sa Magicbit patungo sa pagproseso ng IDE.

Hakbang 3: Pag-setup ng Hardware

Pag-setup ng Hardware
Pag-setup ng Hardware
Pag-setup ng Hardware
Pag-setup ng Hardware

Para sa proyektong ito, pangunahing ginagamit namin ang tatlong mga bahagi ng hardware. Ang mga ito ay Magicbit, servo motor at ultrasonic sensor. Ang koneksyon sa pagitan ng lahat ng mga bahaging ito ay ipinapakita sa itaas ng Larawan.

Ginamit ng sensor ng ultrasonic ang 3.3 v para sa power up. Dahil doon ginamit namin ang kanang mas mababang port ng Magicbit board upang ikonekta ang ultrasonic sensor sa Magicbit. Ngunit ang servo motor ay ginagamit 5V para sa wastong pagtatrabaho, Dahil doon ginamit namin ang kaliwang mas mababang port upang ikonekta ang servo motor sa Magicbit. Sa kasong ito, gumagamit kami ng module ng konektor ng Magic bit servo. Ngunit kung wala kang modyul na iyon maaari kang gumamit ng tatlong mga jumper wires upang ikonekta ang 5V hanggang 5V, Gnd sa Gnd at signal pin sa 26 pin sa magicbit.

Matapos itayo ang circuit mayroon kaming maliit na bahagi ng mekanikal na maitatayo. itakda ang solong panig ng servo konektor sa servo motor gamit ang maliit na nut. Pagkatapos ay ayusin ang sensor sa konektor na iyon gamit ang ilang L na hugis na bracket o tamang paraan. Matapos ang buong system ay naayos namin sa breadboard. Ngunit maaari mong gamitin ang iba pang ibabaw upang i-mount ang servo at Magicbit.

Hakbang 4: Pag-setup ng Software

Pag-setup ng Software
Pag-setup ng Software
Pag-setup ng Software
Pag-setup ng Software

Ang panig ng software ay maliit na kumplikadong. Para sa wastong pag-unawa maaari kang mag-refer sa mga sumusunod na link bago lumipat sa susunod na bahagi.

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

hello.processing.org/editor/

Tingnan natin ang Arduino IDE code at kung paano gumagana ang code na iyon.

Para sa pagmamaneho ng servo ginagamit namin ang library ng servo ng ESP32. Ang library na ito ay halos isama sa magic bit board manager sa Arduino IDE. Upang makitungo sa ultrasonic sensor gumagamit kami ng newPing library. Maaari itong ma-download mula sa sumusunod na link.

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

I-download ang zip file at at pumunta sa mga tool> isama ang library> magdagdag ng Zip library sa Arduino. piliin ngayon ang iyong na-download na zip file ng bagong pin library. Para sa pakikipag-usap sa pagproseso ginamit namin ang serial na komunikasyon sa 115200 baud rate. Ito ang pinaka tamang dalas para sa ESP32. Sa bawat anggulo ipinapadala namin ang aming data sa computer gamit ang protokol na ito. Distansya sa pinakamalapit na harap na bagay mula sa sensor, direksyon ng pag-ikot at pag-ikot ng anggulo ay kasama sa data na ito. Ang paggamit ng dalawa para sa mga loop ay paikutin namin ang aming servo sa dalawang direksyon. Habang ang isang degree na pag-ikot ay nagpadala kami ng serial data sa 4 na beses. Ang dahilan para sa na maaari mong maunawaan sa pagproseso ng paliwanag ng bahagi.

Ngayon ay oras na upang tingnan ang pagpoproseso ng kapaligiran. Ito ay java based programming software. Maaari naming isulat ang sketch ng aming programa sa sketch na ito sa pagproseso ng IDE. Maaari rin kaming makabuo ng visual na output mula sa pagpapatakbo ng aming programa. Gayundin maaari kang kumuha ng output bilang 2D at 3d na mga bagay. Hindi lamang iyon, maaari itong magamit para sa pagproseso ng imahe at maraming iba pang mga bagay.

Sa sketch ng pagproseso muna dinidisenyo namin ang aming interface sa pagpapakita ng data gamit ang simpleng mga graphic function. Sa pagsisimula ng code itinataguyod namin ang aming serial na komunikasyon sa pamamagitan ng pagsasama ng mga serial library. Sa pag-andar ng pag-setup kailangan mong gumawa ng ilang pagbabago alinsunod sa USB port na ginamit mo upang ikonekta ang Magicbit sa computer. maaari mong suriin ang iyong port gamit ang Arduino IDE kapag na-set up mo ang Arduino IDE sa pag-upload ng code. Pagkatapos baguhin ang pangalan ng com port sa bahagi ng pag-set up sa pagproseso ng sketch. kapag ang serial data ay magagamit, Serialevent function ay awtomatikong nagti-trigger. Dahil dito ang pangunahing lohika ng code ay kasama sa pangyayari sa serial para maiwasan ang mga anggulo at nawawalang data. kapag may magagamit na bagong data, gumuhit kami ng isang linya sa screen ayon sa aming anggulo. Sa oras na iyon kung walang natukoy na object, ang buong linya ay berdeng kulay. Kung hindi pagkatapos ang ilang bahagi ng linya ay magiging pula ayon sa distansya mula sa sensor sa isang bagay. Gayundin ang ayon sa direksyon ng pag-ikot gumuhit kami ng isa pang 200 mga linya na malapit sa linyang iyon na may bumababang antas ng berdeng kulay. sa pagitan ng bawat Pangunahing mayroon kaming pagkakaiba sa 0.25 degree. Dahil dito nakakakuha kami ng 4 na pagbabasa nang paisa-isa mula sa Magicbit sa bawat pag-ikot ng degree. Dahil doon maaari kaming lumikha ng magandang paghahanap sa kamay sa screen.

Matapos ang buong pag-upload ng tagumpay ng code sa mahika at itakda ang bahagi ng hardware na matagumpay na buksan ang pagproseso ng IDE at patakbuhin ang code sa pamamagitan ng pag-click sa pindutan ng patakbuhin. Ngayon ay mayroon kang napaka-simpleng radar system.

Maaari mong ipasadya ang mga code ayon sa nais mong ipakita.

Hakbang 5: Pag-troubleshoot

Hindi tumatakbo ang pagproseso ng sketch.

  • Maghintay ng ilang oras. Dahil sa oras ng pagsisimula ay nakasalalay sa pagganap ng iyong PC at GPU.
  • Suriin ang numero ng serial port na tama sa pagproseso ng sketch.
  • Suriin ang koneksyon sa USB ay naayos nang tama.
  • Suriin ang koneksyon sa pagitan ng ultrasonic sensor at Magicbit.
  • Buksan ang serial monitor at suriin ang data ay nagmumula sa Arduino. Kung hindi, kung gayon ang problema ay ang iyong Arduino code o sa iyong koneksyon sa USB.

Si Servo ay hindi gumagana.

  • Suriin ang koneksyon sa USB ay naayos nang tama.
  • Suriin ang mga kable.
  • Suriin ang servo ay nasa mabuting kondisyon.

Hakbang 6: Arduino Code

# isama

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); # isama // isama ang distansya ng servo library; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Tinutukoy kung aling pin ang servo motor na nakakabit na pagkaantala (3000); } void loop () {// paikutin ang servo motor mula 15 hanggang 165 degree para sa (int i = 0; i <= 180; i ++) {RadarServo.write (i); antala (50); distansya = sonar.ping_cm (); // Tumatawag ng isang pagpapaandar para sa pagkalkula ng distansya na sinusukat ng sensor ng Ultrasonic para sa bawat degree para sa (int j = 0; j0) {break; } Serial.print (i); // Nagpadala ng kasalukuyang degree sa Serial Port Serial.print (","); // Nagpapadala ng karagdagan ng character sa tabi mismo ng nakaraang halaga na kinakailangan sa paglaon sa Processing IDE para sa pag-index ng Serial.print (j); // Nagpadala ng kasalukuyang degree sa Serial Port Serial.print ("*"); Serial.print (1); // Ipinapadala ang halaga ng distansya sa Serial Port Serial.print ("/"); // Nagpapadala ng karagdagan ng character sa tabi mismo ng nakaraang halaga na kinakailangan sa paglaon sa Processing IDE para sa pag-index ng Serial.print (distansya); // Ipinapadala ang halaga ng distansya sa Serial Port Serial.print ("."); // Nagpapadala ng character ng karagdagan sa tabi mismo ng nakaraang halaga na kinakailangan sa paglaon sa Processing IDE para sa pag-index}} // Inuulit ang mga nakaraang linya mula 165 hanggang 15 degree para sa (int i = 180; i> = 0; i -) {RadarServo.sulat (i); antala (50); distansya = sonar.ping_cm (); para sa (int j = 75; j> = 0; j- = 25) {kung (i == 180 && (j == 75 || j == 50 || j == 25)) {magpatuloy; } Serial.print (i); // Nagpadala ng kasalukuyang degree sa Serial Port Serial.print (","); // Nagpapadala ng karagdagan ng character sa tabi mismo ng nakaraang halaga na kinakailangan sa paglaon sa Processing IDE para sa pag-index ng Serial.print (j); // Nagpadala ng kasalukuyang degree sa Serial Port Serial.print ("*"); Serial.print (-1); // Ipinapadala ang halaga ng distansya sa Serial Port Serial.print ("/"); // Nagpapadala ng karagdagan ng character sa tabi mismo ng nakaraang halaga na kinakailangan sa paglaon sa Processing IDE para sa pag-index ng Serial.print (distansya); // Ipinapadala ang halaga ng distansya sa Serial Port Serial.print ("."); // Nagpapadala ng character ng karagdagan sa tabi mismo ng nakaraang halaga na kinakailangan sa paglaon sa Processing IDE para sa pag-index}}

}

Inirerekumendang: