Tabla de contenido:

Sistema de posicionamiento basado en ultrasonidos: 4 pasos (con imágenes)
Sistema de posicionamiento basado en ultrasonidos: 4 pasos (con imágenes)

Video: Sistema de posicionamiento basado en ultrasonidos: 4 pasos (con imágenes)

Video: Sistema de posicionamiento basado en ultrasonidos: 4 pasos (con imágenes)
Video: ¿ Que son los Transductores Para Ultrasonido ? 2024, Noviembre
Anonim
Sistema de posicionamiento basado en ultrasonidos
Sistema de posicionamiento basado en ultrasonidos

Todas las versiones de radares ultrasónicos que he encontrado para dispositivos arduino (Arduino - Radar / Ultrasonic Detector, Arduino Ultrasonic Radar Project) son radares muy agradables, pero todos son "ciegos". Quiero decir, el radar detecta algo, pero ¿qué detecta?

Entonces me propongo desarrollar un sistema capaz de detectar objetos e identificarlos. En otras palabras, un sistema de posicionamiento sin utilizar dispositivos GPS sino detectores ultrasónicos.

Este es el resultado que espero les guste.

Paso 1: ¿Cómo funciona?

¿Como funciona?
¿Como funciona?

El sistema de posicionamiento está formado por tres estaciones de sensores con detectores ultrasónicos e id_node 1, 2 y 3 formando un rectángulo o cuadrado que barre un ángulo de 90º y donde se conocen las distancias entre ellos como se muestra en la imagen 1.

distancia de flotación constante entre 1 y 2 = 60,0;

distancia de flotación constante entre 2 y 3 = 75,0;

Estos sensores miden la distancia y el ángulo de otros objetos con id_node mayor que 3 que también tienen un detector ultrasónico que barre un ángulo de 170 °.

Todos ellos envían las distancias, ángulos medidos y el id_node a otra estación maestra mediante comunicaciones inalámbricas para analizar, calcular la posición de los objetos mediante cálculo de trigonometría e identificarlos.

Para evitar interferencias, la estación maestra sincroniza todos los detectores ultrasónicos de tal manera que solo un detector ultrasónico está midiendo en cada momento.

Después de eso y usando una comunicación en serie, la estación maestra envía la información (ángulo, distancia, id_object) a un boceto de procesamiento para trazar los resultados.

Paso 2: Cómo configurar las tres estaciones de sensor y los objetos

Cómo configurar las tres estaciones de sensor y los objetos
Cómo configurar las tres estaciones de sensor y los objetos
Cómo configurar las tres estaciones de sensor y los objetos
Cómo configurar las tres estaciones de sensor y los objetos

La única función de cada estación de sensor es detectar objetos y enviar la lista de distancia, ángulo y nodo de identificación medidos a la estación maestra.

Por lo tanto, debe actualizar la distancia máxima de detección ("valid_max_distance") permitida y la mínima ("valid_min_distance") (centímetros) para mejorar la detección y limitar la zona de detección:

int valid_max_distance = 80;

int valid_min_distance = 1;

El nodo de identificación de estas estaciones de sensores ("this_node" en el código a continuación) son 1, 2 y 3 y el nodo de identificación de la estación maestra es 0.

const uint16_t this_node = 01; // Dirección de nuestro nodo en formato Octal (Node01, Node02, Node03)

const uint16_t otro_nodo = 00; // Dirección del nodo maestro (Node00) en formato Octal

Cada estación de sensores realiza un barrido y un ángulo de 100º ("max_angle" en el código a continuación)

#define min_angle 0

#define max_angle 100

Como se indicó anteriormente, la única función de un objeto es detectar objetos y enviar la lista de distancias, ángulos y objetos de identificación medidos a la estación maestra. La identificación de un objeto ("this_node" en el código siguiente) debe ser mayor que 3.

Cada objeto tiene un barrido y un ángulo de 170º y, como se indicó anteriormente, es posible actualizar la distancia de detección máxima y mínima.

const uint16_t this_node = 04; // Dirección de nuestro nodo en formato Octal (Node04, Node05,…)

const uint16_t otro_nodo = 00; // Dirección del nodo maestro (Node00) en formato Octal int valid_max_distance = 80; int valid_min_distance = 1; #define min_angle 0 #define max_angle 170

Paso 3: Cómo configurar la estación maestra

Cómo configurar la estación maestra
Cómo configurar la estación maestra
Cómo configurar la estación maestra
Cómo configurar la estación maestra
Cómo configurar la estación maestra
Cómo configurar la estación maestra

La función de la estación maestra es recibir las transmisiones de las estaciones sensoras y los objetos y enviar los resultados utilizando el puerto serie a un boceto de procesamiento para trazarlos. Además sincroniza todos los objetos y las tres estaciones sensoras de forma que solo uno de ellos esté midiendo en cada momento para evitar interferencias.

Primero tienes que actualizar la distancia (centímetros) entre el sensor 1 y 2 y la distancia entre 2 y 3.

distancia de flotación constante entre 1 y 2 = 60,0;

distancia de flotación constante entre 2 y 3 = 70,0;

El boceto calcula la posición de los objetos de la siguiente manera:

  • Para todas las transmisiones de los objetos (id_node mayor que 3) busque la misma distancia en cada transmisión de los sensores ultrasónicos (id_node 1, 2 o 3).
  • Todos estos puntos forman una lista de "candidatos" (distancia, ángulo, id_node) para ser la posición de un objeto ("process_pointobject_with_pointssensor" en el croquis).
  • Para cada "candidato" de la lista anterior, la función "candidato_seleccionado_entre_sensor2y3" calcula desde el punto de vista del sensor ultrasónico 2 y 3 cuál de ellos coincide con la siguiente condición de trigonometría (ver imágenes 2 y 3)

distancia flotante froms2 = sin (radianes (ángulo)) * distancia;

flotar distanciafroms3 = cos (radianes (ángulo_candidato)) * distancia_candidato; // Condición de trigonometría 1 abs (distancia de 2 + distancia de 3 - distancia entre 2 y 3) <= float (distancia_de_diferencia_máx)

Como arriba, para cada "candidato" de la lista anterior, la función "candidato_seleccionado_entre_sensor1 y 2" calcula desde el punto de vista del sensor ultrasónico 1 y 2 cuál de ellos coincide con la siguiente relación de trigonometría (ver imagen 2 y 3)

distancia flotantefroms1 = sin (radianes (ángulo)) * distancia; distancia flotantefroms2 = cos (radianes (ángulo_candidato)) * distancia_candidato; // Condición de trigonometría 2 abs (distancia de 1 + distancia de 2 - distancia entre 1 y 2) <= float (distancia_de_diferencia_máx)

Solo los candidatos (distancia, ángulo, id_node) que coinciden con las condiciones de trigonometría 1 y 2 son objetos identificados detectados por las estaciones de sensores 1, 2 y 3

Después de eso, la estación maestra envía los resultados a un boceto de procesamiento para trazarlos.

Paso 4: Lista de material

Image
Image

La lista de material necesario para una estación de sensor o un objeto es la siguiente:

  • Tablero nano
  • Sensor ultrasónico
  • Micro servomotor
  • Módulo inalámbrico NRF24L01
  • Adaptador NRF24L01

y la lista de material para la estación maestra es la siguiente:

  • Tablero nano
  • Módulo inalámbrico NRF24L01
  • Adaptador NRF24L01

Recomendado: