diy: простые интересные РАДИОСХЕМЫ сделанные своими руками

» ДАТАШИТ
Например: TDA2050


» РАДИОБЛОГИ
Стабилизатор тока для светодиодов двух выводной
Литий-ионные аккумуляторы стандарта 21700 (2170)
Беспроводной осциллограф из смартфона
Рекорд эффективности светодиодов от Nichia
Совет по заработку для радиолюбителей
Звуковой модуль для игрушек
Сбербанк Онлайн или как «не остаться без штанов»
Как я делал Гаусс-ган, а получился шокер
Цветомузыка на микросхеме индикаторе уровня
Генератор импульсов на микросхеме К174ХА11


Самодельный радар с монитором на Ардуино

Не знаю кто как, но я давно хотел сделать радар, такой чтоб туда-сюда излучатель крутился и на экране видно было наличие и дистанцию до объектов. Конечно в домашних условиях вещь, подобную военным или авиа службам сделать не получится - там и мощности, и размеры недосягаемые. Но что-то похожее, причём совсем не сложное и не дорогое (пару тысяч рублей) соорудить возможно. Итак, на основе популярного Ардуино вы можете сделать такую себе мини РЛС с помощью ультразвукового детектора и собственно платы Arduino. Схема подсмотрена на сайте "Мехатроник". Все, что нужно для этого проекта: ультразвуковой датчик для обнаружения объектов, маленький серводвигатель для поворота датчика и плата Arduino для управления ими. Ну и макетка с проводами.

Сначала сделаем крепление для подключения ультразвукового датчика к серводвигателю. Изготавливаем его, как это показано на рисунке ниже, потом он приклеивается и крепится к двигателю с помощью винта.

Теперь прикрепите штырьки, на которые припаяем 4 провода для подключения датчика.

Прикрепите мотор сервопривода к плате Arduino, используя обычную резинку для волос.

Мы подключили ультразвуковой датчик HC-sr04 к выводам 10 и 11, а серводвигатель к 12 контакту на плате Arduino.

Исходный код

Теперь нужно взять код и загрузить его на плату Ардуино, которая позволит взаимодействовать между Arduino и обработкой сигнала. Здесь будем получать значения для угла и расстояние, измеренное с помощью датчика с платы Arduino на обработку IDE с помощью функции SerialEvent(), которая считывает данные из последовательного порта, и будем ставить значения угла и расстояния в переменные iAngle и iDistance. Эти переменные будут использоваться для построения линии обнаружения объектов.

void drawRadar() {
  pushMatrix();
  translate(960,1000); // moves the starting coordinats to new location
  noFill();
  strokeWeight(2);
  stroke(98,245,31);
  // draws the arc lines
  arc(0,0,1800,1800,PI,TWO_PI);
  arc(0,0,1400,1400,PI,TWO_PI);
  arc(0,0,1000,1000,PI,TWO_PI);
  arc(0,0,600,600,PI,TWO_PI);
  // draws the angle lines
  line(-960,0,960,0);
  line(0,0,-960*cos(radians(30)),-960*sin(radians(30)));
  line(0,0,-960*cos(radians(60)),-960*sin(radians(60)));
  line(0,0,-960*cos(radians(90)),-960*sin(radians(90)));
  line(0,0,-960*cos(radians(120)),-960*sin(radians(120)));
  line(0,0,-960*cos(radians(150)),-960*sin(radians(150)));
  line(-960*cos(radians(30)),0,960,0);
  popMatrix();
}

Для рисования линии, которая движется вдоль радара, сделана функция drawLine(). Переменная iAngle используется как линия, что перерисовывается для каждой ступени.

void drawLine() {
  pushMatrix();
  strokeWeight(9);
  stroke(30,250,60);
  translate(960,1000); // moves the starting coordinats to new location
  line(0,0,950*cos(radians(iAngle)),-950*sin(radians(iAngle))); // draws the line according to the angle
  popMatrix();
}

Для прорисовывания обнаруженных объектов служит функция drawObject(). Она получает расстояние от ультразвукового датчика, преобразует его в пикселах, и в сочетании с углом датчика рисует объект на радаре - экране ЖК монитора.

void drawObject() {
  pushMatrix();
  translate(960,1000); // moves the starting coordinats to new location
  strokeWeight(9);
  stroke(255,10,10); // red color
  pixsDistance = iDistance*22.5; // covers the distance from the sensor from cm to pixels
  // limiting the range to 40 cms
  if(iDistance<40){
    // draws the object according to the angle and the distance
  line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),950*cos(radians(iAngle)),-950*sin(radians(iAngle)));
  }
  popMatrix();
}

Текст на экране - функция drawtext(), которая рисует полосы на конкретных местах.

Все эти функции вызываются в основном функцией Draw (), которая повторяется все время и рисует на экране картинку окружающего пространства. Также здесь используется имитации размытия движения и медленное затухание движущейся линии.

void draw() {
  
  fill(98,245,31);
  textFont(orcFont);
  // simulating motion blur and slow fade of the moving line
  noStroke();
  fill(0,4); 
  rect(0, 0, width, 1010); 
  
  fill(98,245,31); // green color
  // calls the functions for drawing the radar
  drawRadar(); 
  drawLine();
  drawObject();
  drawText();
}

Вот окончательный внешний вид радара. Как видите, ничего сложного нет. И хоть мощность и дальность небольшие, но тут главное понять сам принцип и заставить хотя бы это заработать. А дальше, при желании, можно экспериментировать над увеличением дальности и чёткости засекания предметов.

Видео

А по этой ссылке скачайте полный исходный код обработки радиолокационной станции на Ардуино.

Maestro - 30.09.2016 - Прочитали: 1843

        
Ваши комментарии к материалу
1 Gromov   (07.10.2016 18:50)
прикольно получилось, и что он может по дальности? если усилить ультразвук то до 2-3м пойдет хотябы?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
» ПОИСК СХЕМ


» РАДИОЭЛЕМЕНТЫ

» ТРЕКЕР GPS



Группа вконтакте Канал ютуб Группа в фэйсбук Мобильная версия © 2010-2016, "Радиосхемы". Все права защищены. Почта