Оглавление:

Простая радарная система от Magicbit: 6 шагов
Простая радарная система от Magicbit: 6 шагов

Видео: Простая радарная система от Magicbit: 6 шагов

Видео: Простая радарная система от Magicbit: 6 шагов
Видео: Самодельный радар, РЛС 2024, Июль
Anonim

В этом руководстве показано, как создать простую радиолокационную систему с использованием датчика HC-SR04 и платы разработки Microbit с обработкой и IDE Arduino.

Запасы:

  • Микро-серводвигатель SG90
  • Перемычки (общие)
  • Макетная плата (универсальная)
  • Magicbit
  • Кабель USB-A - Micro-USB
  • Ультразвуковой датчик - HC-SR04 (универсальный)

Шаг 1: история

В этом уроке мы узнаем, как создать простую радарную систему с использованием основной платы разработчика Magicbit. Для этого мы используем ультразвуковой датчик HC-SR04, а для отображения данных используем среду обработки. Приступим.

Шаг 2: теория и методология

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

Шаг 3: Настройка оборудования

Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования

В этом проекте мы использовали в основном три аппаратных компонента. Это Magicbit, серводвигатель и ультразвуковой датчик. Связь между всеми этими частями показана на рисунке выше.

Ультразвуковой датчик использовал 3,3 В. для включения. Поэтому мы использовали правый нижний порт платы Magicbit для подключения ультразвукового датчика к Magicbit. Но для правильной работы серводвигателя используется напряжение 5 В, поэтому мы использовали левый нижний порт для подключения серводвигателя к Magicbit. В данном случае мы используем модуль сервоконнектора Magic bit. Но если у вас нет этого модуля, вы можете использовать три перемычки для подключения 5V к 5V, Gnd к Gnd и сигнальный контакт к 26 pin на 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 линий рядом с этой линией с уменьшением уровня зеленого цвета. между каждым Main у нас есть разница в 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 distance; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Определяет, к какому выводу прикреплен серводвигатель delay (3000); } void loop () {// вращает серводвигатель от 15 до 165 градусов for (int i = 0; i <= 180; i ++) {RadarServo.write (i); задержка (50); distance = sonar.ping_cm (); // Вызывает функцию для расчета расстояния, измеренного ультразвуковым датчиком для каждого градуса for (int j = 0; j0) {break; } Serial.print (i); // Отправляет текущий градус в последовательный порт Serial.print (","); // Посылает дополнительный символ сразу после предыдущего значения, которое понадобится позже в Processing IDE для индексации Serial.print (j); // Отправляет текущий градус в последовательный порт Serial.print ("*"); Серийный принт (1); // Отправляет значение расстояния в последовательный порт Serial.print ("/"); // Посылает дополнительный символ сразу после предыдущего значения, которое понадобится позже в Processing IDE для индексации Serial.print (distance); // Отправляет значение расстояния в последовательный порт Serial.print ("."); // Отправляет символ добавления рядом с предыдущим значением, которое понадобится позже в среде Processing для индексации}} // Повторяет предыдущие строки от 165 до 15 градусов для (int i = 180; i> = 0; i -) {RadarServo.write (я); задержка (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.print (","); // Посылает дополнительный символ сразу после предыдущего значения, которое понадобится позже в Processing IDE для индексации Serial.print (j); // Отправляет текущий градус в последовательный порт Serial.print ("*"); Serial.print (-1); // Отправляет значение расстояния в последовательный порт Serial.print ("/"); // Посылает дополнительный символ сразу после предыдущего значения, которое понадобится позже в Processing IDE для индексации Serial.print (distance); // Отправляет значение расстояния в последовательный порт Serial.print ("."); // Отправляет дополнительный символ сразу после предыдущего значения, необходимого позже в среде Processing для индексации}}

}

Рекомендуемые: