Агуулгын хүснэгт:

Magicbit -аас энгийн радар систем: 6 алхам
Magicbit -аас энгийн радар систем: 6 алхам

Видео: Magicbit -аас энгийн радар систем: 6 алхам

Видео: Magicbit -аас энгийн радар систем: 6 алхам
Видео: Cherry Magic - New Thai BL Series 2024, Долдугаар сарын
Anonim

Энэхүү гарын авлагад HC-SR04 мэдрэгч, Microbit dev хавтанг боловсруулж, Arduino IDE ашиглан энгийн радар системийг хэрхэн хийхийг харуулав.

Хангамж:

  • SG90 бичил servo мотор
  • Холбогч утас (ерөнхий)
  • Талхны самбар (ерөнхий)
  • Magicbit
  • USB-A-аас микро-USB кабель
  • Хэт авианы мэдрэгч - HC -SR04 (Ерөнхий)

Алхам 1: Түүх

Энэхүү гарын авлагад бид Magicbit core dev board ашиглан энгийн радар системийг хэрхэн хийх талаар сурах болно. Энэ зорилгоор бид HC-SR04 хэт авианы мэдрэгчийг ашиглаж, өгөгдлийг харуулахын тулд боловсруулах орчныг ашигладаг. Эхлээд үзье.

Алхам 2: Онол, арга зүй

Эхлээд энэ нь хэрхэн ажилладаг талаар ярилцъя. Зарчим нь маш амархан. Эхлээд бид мэдрэгчээ босоо тэнхлэгийн эргэн тойронд 180 градусын зайд тасралтгүй эргүүлдэг. Энэ хөдөлгөөний явцад бид өнцөг булан бүрт байгаа хэт авианы мэдрэгчээс хамгийн ойрын объект хүртэлх зайны мэдээллийг авдаг. Энэ процесст бид Magicbit цөмийн хавтанг ашигладаг. Үүний дараа бид өгөгдлөө харуулахын тулд боловсруулах орчинтой холбоо тогтоох ёстой. Тиймээс бид тохиромжтой дамжуулах хурдтай цуваа холбооны протоколыг ашигладаг. Дараа нь бид IDE -ийг ашиглан радарын системийн интерфейсийг боловсруулдаг. Энэхүү IDE -д бид цуваа холболтоо цувралаар бодит цагийн мэдээлэл авахаар тохируулдаг. Тиймээс бид Magicbit -тэй бодит цаг хугацаанд харилцаж, Magicbit -аас IDE боловсруулж буй өгөгдлийг харуулдаг.

Алхам 3: Тоног төхөөрөмжийн тохиргоо

Тоног төхөөрөмжийн тохиргоо
Тоног төхөөрөмжийн тохиргоо
Тоног төхөөрөмжийн тохиргоо
Тоног төхөөрөмжийн тохиргоо

Энэ төслийн хувьд бид үндсэндээ тоног төхөөрөмжийн гурван бүрэлдэхүүн хэсгийг ашигласан. Эдгээр нь Magicbit, servo мотор, хэт авианы мэдрэгч юм. Эдгээр бүх хэсгүүдийн хоорондын холболтыг Зураг дээр үзүүлэв.

Хэт авианы мэдрэгчийг асаахын тулд 3.3 вольт ашигладаг. Тиймээс бид Magicbit хавтангийн баруун доод портыг ашиглан хэт авианы мэдрэгчийг Magicbit -тэй холбосон. Гэхдээ servo моторыг зөв ажиллахын тулд 5V ашигладаг тул бид servic моторыг Magicbit -тэй холбохын тулд зүүн доод портыг ашигласан. Энэ тохиолдолд бид Magic bit servo холбогч модулийг ашигладаг. Гэхдээ хэрэв танд ийм модуль байхгүй бол та гурван холбогч утсыг ашиглан 5V -аас 5V, Gnd -аас Gnd -ийг холбож, magicbit дээрх 26 зүү рүү дохио зүүгээр холбож болно.

Хэлхээг байгуулсны дараа бидэнд барих жижиг механик хэсэг бий. Жижиг самар ашиглан нэг талын servo холбогчийг servo моторт тохируулна уу. Дараа нь холбогч дээрх мэдрэгчийг L хэлбэрийн хаалт эсвэл зөв аргаар засаарай. Системийг бүхэлд нь хийсний дараа бид талхны самбар дээр суулгасан. Гэхдээ та servo болон Magicbit -ийг холбохын тулд өөр гадаргууг ашиглаж болно.

Алхам 4: Програм хангамжийн тохиргоо

Програм хангамжийн тохиргоо
Програм хангамжийн тохиргоо
Програм хангамжийн тохиргоо
Програм хангамжийн тохиргоо

Програм хангамжийн тал нь бага зэрэг төвөгтэй юм. Зөв ойлгохын тулд та дараагийн хэсэг рүү шилжихээсээ өмнө дараах холбоосыг үзэх боломжтой.

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

hello.processing.org/editor/

Arduino IDE код, энэ код хэрхэн ажилладаг талаар авч үзье.

Серво жолоодохын тулд бид ESP32 servo номын санг ашигладаг. Энэ номын санд Arduino IDE -ийн ид шидийн самбарын менежер бараг ордог. Хэт авианы мэдрэгчтэй ажиллахын тулд бид newPing номын санг ашигладаг. Үүнийг дараах линкээс татаж авах боломжтой.

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

Зип файлыг татаж аваад хэрэгслүүд рүү очно уу> номын сан оруулах> Arduino дахь Zip номын сан нэмэх. одоо татаж авсан шинэ пин номын сангийн zip файлыг сонгоно уу. Боловсруулахтай холбогдохын тулд бид 115200 baud хурдтай цуваа холболтыг ашигласан. Энэ бол ESP32 -ийн хувьд хамгийн тохиромжтой давтамж юм. Бүх өнцөг булан бүрт бид энэхүү протоколыг ашиглан өгөгдлөө компьютерт илгээдэг. Мэдээлэгчээс хамгийн ойрын урд объект хүртэлх зай, эргэх чиглэл, эргэх өнцгийг энэ өгөгдөлд оруулсан болно. Гогцоонд хоёрыг ашиглан бид servo -гоо хоёр чиглэлд эргүүлнэ. Нэг градусын эргэлт хийх үед бид цуваа өгөгдлийг 4 удаа илгээсэн. Үүний шалтгааныг тайлбарыг боловсруулахдаа ойлгох боломжтой.

Одоо боловсруулах орчныг харах цаг болжээ. Энэ бол java дээр суурилсан програмчлалын програм хангамж юм. Бид IDE боловсруулахад энэ схемд хөтөлбөрийнхөө тоймыг бичиж болно. Бид мөн програмаа ажиллуулснаар харааны үр дүнг бий болгож чадна. Мөн та гаралтыг 2D ба 3d объект болгон авах боломжтой. Түүгээр ч зогсохгүй үүнийг зураг боловсруулах болон бусад олон зүйлд ашиглаж болно.

Боловсруулах тоймд эхлээд бид график функцийг ашиглан өгөгдөл харуулах интерфэйсийг боловсруулдаг. Кодын эхэнд бид цуваа номын санг оруулснаар цуваа холбоогоо бий болгодог. Тохиргооны функц дээр та Magicbit -ийг компьютерт холбохын тулд ашиглаж байсан USB портоо өөрчлөх хэрэгтэй. Кодыг байршуулахын тулд Arduino IDE -ийг тохируулахдаа та Arduino IDE ашиглан портоо шалгаж болно. Дараа нь ноорог боловсруулах явцад тохируулах хэсэгт ком портын нэрийг өөрчилнө үү. Цуваа өгөгдөл байгаа үед Serialevent функц автоматаар идэвхждэг. Тиймээс кодын үндсэн логик нь өнцөг, өгөгдлийг алдахаас урьдчилан сэргийлэх зорилгоор цуврал арга хэмжээнд оруулах явдал юм. Шинэ өгөгдөл гарах үед бид өнцгийнхөө дагуу дэлгэцэн дээр шугам зурдаг бөгөөд тухайн үед объект илрүүлэх боломжгүй бол бүтэн шугам нь ногоон өнгөтэй болно. Үгүй бол шугамнаас зарим хэсэг нь мэдрэгчээс объект хүртэлх зайны дагуу улаан өнгөтэй болно. Мөн эргэлтийн чиглэлд нийцүүлэн ногоон шугамын түвшин буурч буй шугамын ойролцоо өөр 200 шугам зурна. Үндсэн бүрийн хооронд бид 0.25 градусын зөрүүтэй байдаг. Иймээс бид эргэлт бүрт Magicbit -ээс нэг дор 4 уншилт авдаг. Үүний ачаар бид дэлгэцэн дээр сайхан хайлт хийж чадна.

Кодыг амжилтанд хүргэсний дараа ид шид, тоног төхөөрөмжийн хэсгийг боловсруулж IDE -ийг амжилттай нээж, ажиллуулах товчийг дарж кодыг ажиллуулна уу. Одоо танд маш энгийн радар систем байна.

Та кодыг харуулахыг хүссэн зүйлээ хүссэнээрээ өөрчилж болно.

Алхам 5: Алдааг олж засварлах

Ноорог боловсруулах ажил хийгдээгүй байна.

  • Жаахан хүлээ. Эхлэх хугацаа нь таны компьютер болон GPU -ийн гүйцэтгэлээс хамаарна.
  • Ноорог боловсруулахдаа серийн портын дугаар зөв эсэхийг шалгаарай.
  • USB холболт зөв хийгдсэн эсэхийг шалгаарай.
  • Magicbit болон хэт авианы мэдрэгч хоёрын холболтыг шалгана уу.
  • Цуваа мониторыг нээгээд өгөгдөл Arduino -аас ирсэн эсэхийг шалгана уу. Үгүй бол асуудал нь таны Arduino код эсвэл USB холболт дээр байна.

Servo ажиллахгүй байна.

  • USB холболт зөв хийгдсэн эсэхийг шалгаарай.
  • Цахилгааны утсыг шалгана уу.
  • Серво сайн байгаа эсэхийг шалгаарай.

Алхам 6: Arduino код

#оруулах

#TRIGGER_PIN 21 тодорхойлох #ECHO_PIN 22 тодорхойлох #MAX_DISTANCE 200 NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE) тодорхойлох; #include // servo library int masofыг оруулах; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Серво мотор хавсаргасан саатал (3000) ямар зүү болохыг тодорхойлно; } void loop () {// servo моторыг 15 -аас 165 градус эргүүлнэ (int i = 0; i <= 180; i ++) {RadarServo.write (i); саатал (50); зай = sonar.ping_cm (); // (int j = 0; j0) {break; } Serial.print (i); // Одоогийн зэрэглэлийг Serial Port Serial.print (",") руу илгээдэг; // Serial.print (j) индексжүүлэхийн тулд боловсруулах IDE -д шаардлагатай байсан өмнөх утгын хажууд нэмэлт тэмдэгт илгээдэг; // Одоогийн зэрэглэлийг Serial Port Serial.print руу илгээдэг ("*"); Цуваа.хэвлэх (1); // Зайны утгыг Serial Port Serial.print ("/") руу илгээдэг; // Serial.print (зай) индексжүүлэхийн тулд Processing IDE -д шаардлагатай байсан өмнөх утгын хажууд нэмэлт тэмдэгт илгээдэг. // Зайны утгыг Serial Port Serial.print (".") Руу илгээдэг; // Нэмэх тэмдэгтийг индексжүүлэлтийн IDE-д боловсруулах шаардлагатай өмнөх утгын дэргэд шууд илгээдэг}} // Өмнөх мөрүүдийг 165-15 хэм хүртэл давтана (int i = 180; i> = 0; i-) {RadarServo. бичих (i); саатал (50); зай = sonar.ping_cm (); for (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {үргэлжлүүлэх; } Serial.print (i); // Одоогийн зэрэглэлийг Serial Port Serial.print (",") руу илгээдэг; // Serial.print (j) индексжүүлэхийн тулд Processing IDE -д шаардлагатай байсан өмнөх утгын хажууд нэмэлт тэмдэгт илгээдэг; // Одоогийн зэрэглэлийг Serial Port Serial.print руу илгээдэг ("*"); Цуваа.хэвлэх (-1); // Зайны утгыг Serial Port Serial.print ("/") руу илгээдэг; // Serial.print (зай) индексжүүлэхийн тулд Processing IDE -д шаардлагатай байсан өмнөх утгын хажууд нэмэлт тэмдэгт илгээдэг. // Зайны утгыг Serial Port Serial.print (".") Руу илгээдэг; // Нэмэх тэмдэгтийг индексжүүлэхийн тулд боловсруулах IDE -д шаардлагатай байсан өмнөх утгын хажууд илгээнэ}}

}

Зөвлөмж болгож буй: