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

Сонар с использованием Arduino и отображение при обработке IDE

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

Arduino UNO
× 1
Микро-серводвигатель SG90
× 1
Ультразвуковой датчик - HC-SR04 (общий)
× 1
Перемычки (общие)
× 1
Беспаечная макетная плата, полный размер
× 1

Необходимые инструменты и машины

Пистолет для горячего клея (общий)
Комплект паяльника, SolderPro 150

Приложения и онлайн-сервисы

IDE Arduino
Обработка основы обработки

Об этом проекте

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

У меня не было экрана tft lcd, из-за которого я не знал, как отображать выходные данные сонара. Тогда я подумал использовать IDE обработки, поскольку это позволило отображать выходные данные сонара на моем компьютере с хорошим разрешением! но поскольку я был новичком в обработке IDE, я не знал, как ее использовать, поэтому для практики я использовал веб-редактор p5 (просто для практики), чем я использовал обработку Ide и некоторые библиотеки для чтения вывода сонара и отображения на ПК!

Я прикрепил ультразвуковой датчик к серводвигателю с помощью пистолета для горячего клея, так что ультразвуковой датчик вращается вместе с сервоприводом и охватывает диапазон 180 градусов, а затем вывод, обнаружен объект или нет, отображается при обработке IDE, и я написал еще код, который точно отображает расстояние и угол!

Друзья, я также поделился тем, как выглядит результат обработки IDE, как будто вы можете использовать изображение в качестве ссылки в своем проекте :)

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

Код

  • Код сонара для Arduino IDE
  • Код сонара для обработки IDE
Код сонара для Arduino IDE C / C ++
 #include  const int trigPin =12; const int echoPin =11; long duration; int distance; Servo s1; void setup () {Serial.begin (9600); pinMode (trigPin, ВЫХОД); pinMode (echoPin, ВХОД); s1.attach (9);} void loop () {для (int я =0; я <180; я =я + 1) {s1.write (я); задержка (30); расстояние =calDist (); Serial.print (i); Serial.print (","); Serial.print (расстояние); Serial.print ("."); } для (int я =180; я> 0; я =я-1) {s1.write (я); задержка (30); расстояние =calDist (); Serial.print (i); Serial.print (","); Serial.print (расстояние); Serial.print ("."); }} int calDist () {digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration =pulseIn (echoPin, HIGH); расстояние =продолжительность * 0,034 / 2; расстояние возврата;} 
Код сонара для обработки IDE Java
 import processing.serial. *; Последовательный myPort; String ang =""; String distance =""; String data =""; int angle, dist; void setup () {size (2000,800); myPort =новый последовательный порт (это, «COM3», 9600); myPort.bufferUntil ('.'); фон (0);} void draw () {fill (0,5); noStroke (); rect (0, 0, ширина, высота * 0,93); noStroke (); заполнить (0,255); rect (0, высота * 0,93, ширина, высота); drawRadar (); drawLine (); drawObject (); drawText ();} void serialEvent (Serial myPort) {данные =myPort.readStringUntil ('.'); data =data.substring (0, data.length () - 1); int index1 =data.indexOf (","); ang =data.substring (0, index1); расстояние =data.substring (index1 + 1, data.length ()); угол =int (угол); dist =int (расстояние); System.out.println (угол);} void drawRadar () {pushMatrix (); noFill (); strokeWeight (0,5); инсульт (10,255,10); перевести (ширина / 2, высота-высота * 0,06); линия (-ширина / 2,0, ширина / 2,0); arc (0,0, (ширина * 0,5), (ширина * 0,5), PI, TWO_PI); arc (0,0, (ширина * 0,25), (ширина * 0,25), PI, TWO_PI); arc (0,0, (ширина * 0,75), (ширина * 0,75), PI, TWO_PI); arc (0,0, (ширина * 0,95), (ширина * 0,95), PI, TWO_PI); строка (0,0, (- ширина / 2) * cos (радианы (30)), (- ширина / 2) * sin (радианы (30))); строка (0,0, (- ширина / 2) * cos (радианы (60)), (- ширина / 2) * sin (радианы (60))); строка (0,0, (- ширина / 2) * cos (радианы (90)), (- ширина / 2) * sin (радианы (90))); строка (0,0, (- ширина / 2) * cos (радианы (120)), (- ширина / 2) * sin (радианы (120))); строка (0,0, (- ширина / 2) * cos (радианы (150)), (- ширина / 2) * sin (радианы (150))); инсульт (175,255,175); строка (0,0, (- ширина / 2) * cos (радианы (15)), (- ширина / 2) * sin (радианы (15))); строка (0,0, (- ширина / 2) * cos (радианы (45)), (- ширина / 2) * sin (радианы (45))); строка (0,0, (- ширина / 2) * cos (радианы (75)), (- ширина / 2) * sin (радианы (75))); строка (0,0, (- ширина / 2) * cos (радианы (105)), (- ширина / 2) * sin (радианы (105))); строка (0,0, (- ширина / 2) * cos (радианы (135)), (- ширина / 2) * sin (радианы (135))); строка (0,0, (- ширина / 2) * cos (радианы (165)), (- ширина / 2) * sin (радианы (165))); popMatrix ();} void drawLine () {pushMatrix (); strokeWeight (9); инсульт (0,255,0); перевести (ширина / 2, высота-высота * 0,06); линия (0,0, (ширина / 2) * cos (радианы (угол)), (- ширина / 2) * sin (радианы (угол))); popMatrix ();} void drawObject () {pushMatrix (); strokeWeight (9); инсульт (255,0,0); перевести (ширина / 2, высота-высота * 0,06); float pixleDist =(расстояние / 40.0) * (ширина / 2.0); float pd =(ширина / 2) -pixleDist; float x =-pixleDist * cos (радианы (угол)); float y =-pixleDist * sin (радианы (угол)); if (dist <=40) {линия (-x, y, -x + (pd * cos (радианы (угол))), y- (pd * sin (радианы (угол)))); } popMatrix ();} void drawText () {pushMatrix (); заполнить (100,200,255); textSize (25); текст («10см», (ширина / 2) + (ширина * 0,115), высота * 0,93); текст («20см», (ширина / 2) + (ширина * 0,24), высота * 0,93); текст («30см», (ширина / 2) + (ширина * 0,365), высота * 0,93); текст («40см», (ширина / 2) + (ширина * 0,45), высота * 0,93); если (расстояние <=40) {текст ("Расстояние:" + расстояние, ширина * 0,7, высота * 0,99); } translate (ширина / 2, высота-высота * 0,06); textSize (25); текст ("30", (ширина / 2) * cos (радианы (30)), (- ширина / 2) * sin (радианы (30))); текст ("60", (ширина / 2) * cos (радианы (60)), (- ширина / 2) * sin (радианы (60))); текст ("90", (ширина / 2) * cos (радианы (91)), (- ширина / 2) * sin (радианы (90))); текст ("120", (ширина / 2) * cos (радианы (123)), (- ширина / 2) * sin (радианы (118))); текст ("150", (ширина / 2) * cos (радианы (160)), (- ширина / 2) * sin (радианы (150))); popMatrix (); } 

Схема


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

  1. Детектор языка TinyML на основе Edge Impulse и Arduino
  2. Игра с гироскопом Arduino с MPU-6050
  3. Цифровые игральные кости Arduino
  4. Ультразвуковой левитационный аппарат с использованием ARDUINO
  5. Вольтметр своими руками с использованием Arduino и смартфона
  6. Регистратор данных температуры и влажности
  7. IOT - Smart Jar с использованием ESP8266, Arduino и ультразвукового датчика
  8. Счетчик автомобилей с использованием Arduino + Обработка + PHP
  9. Управление яркостью светодиода с помощью Bolt и Arduino
  10. Как сделать компас с помощью Arduino и Processing IDE