Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Ультразвуковой радар HC-SR04 на Arduino: визуализация в Processing в реальном времени

Компоненты и материалы

Компонент Количество
Arduino UNO 1
Ультразвуковой датчик HC-SR04 1
Сервопривод (любой стандартный, например SG90/MG996R) 1
Плата для прототипирования и провода 1

О проекте

Проект реализует «радар» на базе ультразвукового датчика HC-SR04, установленного на сервопривод. Arduino сканирует пространство поворотом сервы от -80° до +80° и передает измерения расстояния по последовательному порту в приложение на Processing, которое строит визуальную карту (сверху вниз) в реальном времени.

Архитектура

Исходники на GitHub: faweiz/My-Arduino/arduino_radar

Код Arduino (Arduino_radar_server_arduino.ino)

/* Radar Screen Visualisation for HC-SR04
 * Отправляет показания датчика для каждого градуса поворота сервы в Serial
 * для приема в Processing.
 */
#include <NewPing.h>
#include <Servo.h>

#define TRIGGER_PIN 2   // Trig HC-SR04
#define ECHO_PIN 3      // Echo HC-SR04
#define MAX_DISTANCE 150 // макс. дистанция пинга, см (датчик до 400-500 см)
#define SERVO_PWM_PIN 9 // серва на пине 9

#define ANGLE_BOUNDS 80  // предел угла ±80°
#define ANGLE_STEP 1     // шаг 1°

int angle = 0;           // текущий угол (-80..+80)
int dir = 1;             // направление: 1 = вперед, -1 = назад

Servo myservo;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  Serial.begin(9600);
  myservo.attach(SERVO_PWM_PIN);
}

void loop() {
  delay(50); // стабилизация сервы

  // Серва принимает 0..180, наш угол -80..+80 -> смещаем на +80
  myservo.write(angle + ANGLE_BOUNDS);

  // Измерение и отправка
  getDistanceAndSend2Serial(angle);

  // Смена направления на границах
  if (angle >= ANGLE_BOUNDS || angle <= -ANGLE_BOUNDS) {
    dir = -dir;
  }
  angle += (dir * ANGLE_STEP);
}

int getDistanceAndSend2Serial(int angle) {
  int cm = sonar.ping_cm(); // расстояние в см
  Serial.print(angle, DEC);
  Serial.print(",");
  Serial.println(cm, DEC);
  return cm;
}

Код Processing (Arduino_radar_client_processing.pde)

Полный код клиента доступен в репозитории GitHub. Основные моменты:

Схема подключения

Запуск

  1. Загрузите скетч в Arduino.
  2. Откройте Processing IDE, загрузите .pde файл.
  3. Выберите правильный COM-порт в коде Processing (массив Serial.list()).
  4. Запустите Processing — откроется окно радара.

Доработки и идеи

Производственный процесс

  1. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  2. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  3. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  4. Создание пользовательских LED-часов с будильником — видно с 12 метров
  5. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  6. Оптимизированные решения питания для проектов на Arduino
  7. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  8. Пошаговое руководство: сборка умного четырёхногого робота на Arduino
  9. Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
  10. Своё рулевое управление (джойстик) для игр на Arduino