Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye un Escáner Ultrasónico Mapeador con Arduino Yun – Guía Paso a Paso

Componentes y Suministros

ComponenteCantidad
Arduino Yun1
Sensor Ultrasónico (HC-SR04)1
Servomotor (Tower Pro MG996R)1
Cables jumpers (genéricos)10

Aplicaciones y Servicios en Línea

Sobre el Proyecto

Paso 1: Teoría

Usamos un sensor de distancia ultrasónico. Genera ondas de sonido más allá del rango auditivo humano y mide la distancia calculando el tiempo que tardan en rebotar en un obstáculo y volver. Principio similar al de murciélagos y sonares de barcos.

Construye un Escáner Ultrasónico Mapeador con Arduino Yun – Guía Paso a Paso

El servomotor difiere de un motor DC estándar: puede girar con precisión a una posición angular dada y mantenerla. Al recibir pulsos de duración específica, se mueve al ángulo correspondiente.

Construye un Escáner Ultrasónico Mapeador con Arduino Yun – Guía Paso a Paso

Combinando ambos componentes obtenemos un campo de visión de 180 grados para nuestro robot.

Paso 2: Recopilación de Materiales

Paso 3: Montaje Mecánico

Construye un Escáner Ultrasónico Mapeador con Arduino Yun – Guía Paso a Paso

Con un trozo de PCB de uso general, crea un pequeño header para el HC-SR04 y fíjalo al brazo del servo con cinta de doble cara.

Construye un Escáner Ultrasónico Mapeador con Arduino Yun – Guía Paso a Paso

Opcional: para mayor compacidad, fijé el servo a la parte saliente del shield de prototipado también con cinta de doble cara.

Construye un Escáner Ultrasónico Mapeador con Arduino Yun – Guía Paso a Paso

El resultado final recuerda al abdomen de Wall-E.

Paso 4: Código de Arduino

El código controla el movimiento del servo, cuándo y con qué frecuencia capturar lecturas del sensor ultrasónico, y envía los datos al puerto serie.

  1. Importar bibliotecas
  2. Inicializar variables y pines
  3. Inicializar objeto servo
  4. Iniciar comunicación serie
  5. Esperar 3 segundos
  6. Inicializar contadores a 0
  7. Rotar servo 1 grado
  8. Obtener datos del sensor ultrasónico 10 veces (por defecto)
  9. Calcular promedio
  10. Enviar promedio al puerto serie
  11. Volver al paso 7

Paso 5: Código de MATLAB

MATLAB maneja los datos, no el control de la placa. Los datos del sensor se envían por serie al PC, donde MATLAB los lee.

Los datos recibidos indican: ángulo de rotación del servo y distancia del obstáculo en esa dirección. Es decir, datos en coordenadas polares. Para visualizarlos comprensiblemente, deben convertirse a coordenadas cartesianas (X-Y).

Construye un Escáner Ultrasónico Mapeador con Arduino Yun – Guía Paso a Paso

El código MATLAB lee del puerto COM, guarda en matriz con el ángulo, y convierte a cartesianas con la fórmula:

x = r * cos(θ)
y = r * sin(θ)

Luego grafica los puntos. Colocando el dispositivo en una caja, obtuve este resultado:

Construye un Escáner Ultrasónico Mapeador con Arduino Yun – Guía Paso a Paso

Paso 6: Conclusión

Construye un Escáner Ultrasónico Mapeador con Arduino Yun – Guía Paso a Paso

Aunque el sistema no es perfecto, cumple su función. Estima aproximadamente ancho y largo de la caja y envía datos con precisión.

Los únicos errores visibles son por vibración del sensor al mover el servo y lecturas erróneas del propio sensor.

Fuera de eso, funciona bien y puede usarse para experimentos de percepción de profundidad y proyectos básicos de visión artificial.

Código

matlab_code_to_run_on_pc.m MATLAB

theta = 0:(pi/180):pi; 
s = serial('COM10'); 
s.BaudRate=9600 
fopen(s) 
i = 0; 
inc = 1; 
while i<180 
  A = fgets(s); 
  num(i+1) = str2num(A); 
  i = i+1; 
end 
fclose(s) 
j = 1 
while j<181 
  tab(j,1) = (j-1)*inc 
  tab(j,2) = num(j) 
  tab(j,3) = num(j)*cosd((j-1)*inc) 
  tab(j,4) = num(j)*sind((j-1)*inc) 
  j = j+1 
end 
plot(tab(:,3),tab(:,4))

Código Arduino Arduino

#include <Servo.h> 
#include <NewPing.h> 
#define TRIGGER_PIN 12 
#define ECHO_PIN 11 
#define MAX_DISTANCE 200 
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 
Servo myservo; 
int pos = 0; 
int it = 10; 

void setup() { 
  myservo.attach(9); 
  Serial.begin(9600); 
  delay(3000); 
} 

void loop() { 
  int i = 0; 
  int t = 0; 
  int a = 0; 
  for (i = 0; i < 180; i ++) { 
    unsigned int uS = sonar.ping(); 
    myservo.write(i); 
    delay(20); 
    for (t = 0; t < it; t++) { 
      uS = sonar.ping(); 
      a = uS/US_ROUNDTRIP_CM + a; 
      delay(30); 
    } 
    a = a / (it-1); 
    t = 0; 
    Serial.println(a); 
    a = 0; 
  } 
}

Esquemáticos

Archivo Fritzing para conexiones de servo y sensor ultrasónico: YunConfig.fzz

Proceso de manufactura

  1. Crea un Impresionante Sistema Ambilight para Monitor con Arduino
  2. Robot de Detección Humana con Arduino Uno: Integración de Sensores Paso a Paso
  3. Construye un Dispositivo de Levitación Ultrasónica con Arduino – Guía Paso a Paso
  4. FlickMote: Mando IR por gestos para Smart Home
  5. Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
  6. Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
  7. Vehículo Controlado por Android con Raspberry Pi, Arduino y Motor Shield: Guía Completa
  8. Construye un tarro inteligente IoT con ESP8266, Arduino y sensor ultrasónico: Monitorización en tiempo real
  9. Servidor Web Arduino Uno WiFi: Controla un LED desde el Navegador
  10. Robot Seguidor de Línea Autónomo con Arduino UNO: Guía Paso a Paso
  11. Automatiza el Juego del Dinosaurio de Chrome con Arduino y Python