Съдържание:

Проста радарна система от Magicbit: 6 стъпки
Проста радарна система от Magicbit: 6 стъпки

Видео: Проста радарна система от Magicbit: 6 стъпки

Видео: Проста радарна система от Magicbit: 6 стъпки
Видео: Този ДРОН Може да УНИЩОЖИ Военна База 2024, Юли
Anonim

Този урок показва как да направите проста радарна система, използвайки HC-SR04 сензор и Microbit dev платка с обработка и IDE на Arduino.

Консумативи:

  • SG90 Микро-серво мотор
  • Джъмперни проводници (родови)
  • Платформа (обща)
  • Magicbit
  • USB-A към Micro-USB кабел
  • Ултразвуков сензор - HC -SR04 (общ)

Стъпка 1: История

В този урок ще научим как да си направим проста радарна система с помощта на Magicbit core dev board. За тази цел използваме ултразвуков сензор HC-SR04 и за показване на данни използваме среда за обработка. Да започнем.

Стъпка 2: Теория и методология

Първо, нека обсъдим как работи това. Принципът е много лесен. Първо непрекъснато завъртаме сензора си около вертикалната ос в диапазон 180 градуса. По време на това движение ние вземаме данните за разстоянието до най -близкия обект от ултразвуков сензор под всеки ъгъл. За този процес използваме ядрена платка Magicbit. След това трябва да установим връзката с обработващата среда за показване на нашите данни. Затова използваме сериен комуникационен протокол с подходяща скорост на предаване. След това проектираме интерфейса на нашата радарна система, като използваме IDE за обработка. В тази IDE ние конфигурираме нашата серийна комуникация за получаване на данни в реално време чрез сериен. Така че осъществяваме комуникация в реално време с Magicbit и показваме данните, които се изпращат от Magicbit до IDE за обработка.

Стъпка 3: Настройка на хардуера

Хардуерна настройка
Хардуерна настройка
Хардуерна настройка
Хардуерна настройка

За този проект използвахме основно три хардуерни компонента. Те са Magicbit, серво мотор и ултразвуков сензор. Връзката между всички тези части е показана на горната фигура.

Ултразвуков сензор, използван 3.3 V за захранване. Затова използвахме десния долен порт на платката Magicbit за свързване на ултразвуков сензор към Magicbit. Но серво моторът се използва 5V за правилна работа, затова използвахме долния ляв порт за свързване на серво мотор с Magicbit. В този случай използваме модул за серво съединител Magic bit. Но ако нямате този модул, можете да използвате три джъмперни проводника за свързване на 5V към 5V, Gnd към Gnd и сигнален щифт към 26 пина на magicbit.

След изграждането на веригата имаме малка механична част за изграждане. поставете едностранно серво съединител към серво мотор с помощта на малка гайка. След това фиксирайте сензора върху този конектор, като използвате някаква L -образна скоба или правилен начин. След като цялата система се фиксирахме върху макет. Но можете да използвате друга повърхност за монтиране на серво и Magicbit.

Стъпка 4: Настройка на софтуера

Настройка на софтуера
Настройка на софтуера
Настройка на софтуера
Настройка на софтуера

Софтуерната страна е малко сложна. За правилно разбиране можете да се обърнете към следните връзки, преди да преминете към следващата част.

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

hello.processing.org/editor/

Нека да разгледаме IDE кода на Arduino и как работи този код.

За задвижване на серво използваме ESP32 серво библиотека. Тази библиотека почти включва в мениджъра на магически битове в Arduino IDE. За да се справим с ултразвуковия сензор използваме newPing библиотека. Това може да бъде изтеглено от следната връзка.

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

Изтеглете zip файла и отидете на инструменти> включете библиотека> добавете Zip библиотека в Arduino. сега изберете изтегления си zip файл от новата библиотека с пинове. За комуникация с обработка използвахме серийна комуникация със скорост 115200 бода. Това е най -подходящата честота за ESP32. Под всеки ъгъл изпращаме данните си към компютъра, използвайки този протокол. Разстоянието до най -близкия преден обект от сензора, посоката на въртене и ъгълът на завъртане са включени в тези данни. Използвайки два цикъла for, завъртаме нашето серво в две посоки. Докато въртене с една степен изпращахме серийни данни 4 пъти. Причината за това можете да разберете при обработката на обяснение на част.

Сега е време да разгледаме средата за обработка. Това е софтуер за програмиране, базиран на java. Ние можем да напишем скица на нашата програма в тази скица при обработка на IDE. Можем също така да генерираме визуален изход от изпълнението на нашата програма. Също така можете да приемате изход като 2D и 3d обекти. Не само това, това може да се използва за обработка на изображения и много други неща.

В скицата за обработка първо проектираме нашия интерфейс за показване на данни, използвайки прости графични функции. В началото на кода ние установяваме нашата серийна комуникация, като включваме серийни библиотеки. Във функцията за настройка трябва да направите някаква промяна според кой USB порт сте използвали за свързване на Magicbit с компютър. можете да проверите своя порт с помощта на Arduino IDE, когато настройвате Arduino IDE за качване на кода. След това променете името на com порта в частта за настройка при обработката на скица. когато серийните данни са налични, функцията Serialevent се задейства автоматично. Следователно основната логика на кода е включване в серийно събитие за предотвратяване на липсващите ъгли и данни. когато са налични нови данни, ние чертаем линия на екрана според нашия ъгъл. По това време, ако няма открит обект, тогава пълната линия е оцветена в зелен цвят. Ако не, тогава част от линията ще бъде червена според разстоянието от сензора до обекта. Също така според посоката на въртене ние начертаваме още 200 линии близо до тази линия с намаляващо ниво на зелен цвят. между всяка основна имаме 0,25 градусова разлика. Следователно получаваме 4 показания наведнъж от Magicbit при всяко завъртане на градуса. Поради това можем да създадем красиво търсене ръка в екран.

След качване на кода успех изцяло на магия и задаване на хардуерна част успешно отворете IDE за обработка и стартирайте кода, като щракнете върху бутона за изпълнение. Сега имате много проста радарна система.

Можете да персонализирате кодовете, както желаете това, което искате да покажете.

Стъпка 5: Отстраняване на неизправности

Обработката на скица не се изпълнява.

  • Изчакайте известно време. Поради времето за стартиране зависи от производителността на вашия компютър и графичен процесор.
  • Проверете дали номерът на серийния порт е правилен при обработката на скица.
  • Проверете дали USB връзката е фиксирана правилно.
  • Проверете връзката между ултразвуков сензор и Magicbit.
  • Отворете серийния монитор и проверете дали данните идват от Arduino. Ако не, проблемът е вашият код на Arduino или вашата USB връзка.

Сервото не работи.

  • Проверете дали USB връзката е фиксирана правилно.
  • Проверете окабеляването.
  • Проверете дали сервото е в добро състояние.

Стъпка 6: Arduino код

#включва

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing сонар (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // включва серво библиотека int разстояние; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Дефинира към кой щифт е закъснението на закрепване на сервомотора (3000); } void loop () {// завърта сервомотора от 15 на 165 градуса за (int i = 0; i <= 180; i ++) {RadarServo.write (i); забавяне (50); distance = sonar.ping_cm (); // Извиква функция за изчисляване на разстоянието, измерено от ултразвуковия сензор за всяка степен за (int j = 0; j0) {break; } Serial.print (i); // Изпраща текущата степен в Serial Port Serial.print (","); // Изпраща знак за добавяне точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране на Serial.print (j); // Изпраща текущата степен в Serial Port Serial.print ("*"); Serial.print (1); // Изпраща стойността на разстоянието в Serial Port Serial.print ("/"); // Изпраща знак за добавяне точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране на Serial.print (разстояние); // Изпраща стойността на разстоянието в Serial Port Serial.print ("."); // Изпраща знак за добавяне точно до предишната стойност, необходима по-късно в IDE за обработка за индексиране}} // Повтаря предишните редове от 165 до 15 градуса за (int i = 180; i> = 0; i-) {RadarServo.write (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 (","); // Изпраща знак за добавяне точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране на Serial.print (j); // Изпраща текущата степен в Serial Port Serial.print ("*"); Serial.print (-1); // Изпраща стойността на разстоянието в Serial Port Serial.print ("/"); // Изпраща знак за добавяне точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране на Serial.print (разстояние); // Изпраща стойността на разстоянието в Serial Port Serial.print ("."); // Изпраща добавен знак точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране}}

}

Препоръчано: