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

UltrasonicEyes

Componentes y suministros

Sensor ultrasónico - HC-SR04 (genérico)
× 2
Arduino Nano R3
× 1
Foto resistor
× 1
Maxim Integrated 8x8 LED Matrix MAX7219
× 2
Protoboard sin soldadura de tamaño medio
× 1
Cables de puente (genéricos)
× 1
Resistencia de 330 ohmios
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Quería hacer un proyecto peculiar usando algunos LED de matriz de 8x8 y algunos sensores ultrasónicos ... algo diferente de lo que otras personas suelen hacer con ultrasonidos, y quería que fuera divertido y divertido.

Así que creé lo que llamo UltrasonicEyes - un proyecto divertido en el que te sientas en algún lugar cerca de donde la gente se mueve y verá a su alrededor donde está la gente, y parpadeará y, bueno, ¡te extrañará de una manera divertida y espeluznante!

¿Qué necesitaremos?

Los módulos de sensores ultrasónicos están diseñados para detectar obstáculos y determinar qué tan lejos está el obstáculo, por lo que generalmente tienen una distancia de detección de hasta 3-4 metros, que es una buena distancia para que este proyecto se coloque dentro de una sala de estar u oficina. área.

Estoy usando 2x módulos HC-SR04 que recogí de e-Bay. Puedes encontrarlos súper baratos.

Los módulos son bastante sencillos de usar y solo requieren 3 o 4 cables para conectarse a un microcontrolador Arduino.

Los módulos de matriz de led de 8x8 que elegí usar permiten el encadenamiento, por lo que solo uno de ellos necesita estar conectado al Arduino, y el segundo módulo se conecta al primero.

Los módulos usan SPI, por lo que solo necesitamos 5 cables para ir al Arduino para controlar las imágenes de los ojos en ambas pantallas. ¡Necesitamos dos de ellos, por supuesto!

NOTA: El código proporcionado utiliza Hardware SPI , por lo tanto, si está utilizando una placa Arduino diferente a la Nano, verifique cuáles de los pines son pines SPI de hardware para MOSI y SCK y conéctelos en consecuencia.

También necesitará un microcontrolador compatible con Arduino de algún tipo. Estoy usando un Nano (compatible) porque es lo suficientemente pequeño como para caber en el estuche, tiene USB para alimentar / programar el firmware y tiene una pila de GPIO para conectar todo también.

He soldado todo en una placa proto que es del mismo tamaño que una placa de prueba media, pero le recomiendo que primero construya todo en una placa de prueba de tamaño medio, ya que de esa manera el proyecto no requiere soldadura y se puede desmontar o desmontar fácilmente. cambiado.

Las últimas cosas que necesitará son una LDR (fotorresistencia) para detectar la luz, una resistencia de 330 ohmios y un montón de cables de placa, tanto de macho a hembra y de hembra a hembra.

NOTA: Puede utilizar cables de cualquier color en este proyecto ... no es necesario utilizar los mismos colores que especifico, pero , siempre es una buena práctica usar rojo y negro para POWER y GND, y usar otros colores para otros cables, ya que hace que sea muy fácil identificar qué cables tienen energía a través de ellos y qué cables se utilizan para datos y señales.

Poniéndolo todo junto

Comencemos conectando el Nano a la placa de pruebas justo al final para que el USB cuelgue del borde, pero manteniendo todos los pines conectados a la placa.

Conexiones POWER y GND

Ahora conecte un cable negro de la conexión GND en el Nano al riel GND en la placa de pruebas. Ahora haga lo mismo con un cable rojo, conectando el 3V (o 5V si eso es todo lo que tiene) al riel POWER en la placa de pruebas.

Mientras estamos trabajando en GND y POWER, conectemos un cable negro entre los dos rieles GND a cada lado de la placa. Haga lo mismo con un cable rojo y los dos rieles POWER.

* Nota: Algunos paneles LED de matriz pueden requerir 5V en lugar de 3.3V dependiendo de la marca. Si encuentra que sus resultados no son confiables, intente usar el pin de 5V del Arduino.

Conectemos los sensores ultrasónicos

Conecte un cable negro entre los pines GND en cada uno de los sensores ultrasónicos al riel GND en la placa de pruebas. Haz lo mismo con un cable rojo y los pines VCC (POWER) en los sensores y el riel POWER en la placa de pruebas.

Ahora conectemos los siguientes cables blanco y azul:

  • Cable blanco desde el pin TRIG en el sensor 1 al pin digital 2 en el Arduino
  • Cable azul desde el pin ECHO en el sensor 1 al pin digital 3 en el Arduino
  • Cable blanco desde el pin TRIG en el sensor 2 al pin digital 4 en el Arduino
  • Cable azul desde el pin ECHO en el sensor 2 al pin digital 5 en el Arduino

¡Gran trabajo! ¡Ese es el cuidado de los sensores ultrasónicos!

Conexión de las dos pantallas matriciales LED de 8x8

Conecte un cable negro entre el pin GND entrante en una de las pantallas de matriz LED al riel GND en la placa de pruebas. Haz lo mismo con un cable rojo y el pin VCC (POWER) entrante en la pantalla y el riel POWER en la placa de pruebas.

Conecte un cable negro entre el pin GND saliente de la pantalla uno y el pin GND entrante en la pantalla dos. Haga lo mismo con un cable rojo y el pin VCC saliente en la pantalla uno y el pin VCC entrante en la pantalla 2.

Mientras conectamos los cables entre las 2 pantallas, terminemos esa parte ...

  • Conecte un cable amarillo entre el pin SCK (Reloj) saliente en la pantalla uno y el pin SCK entrante en la pantalla dos.
  • Conecte un cable azul entre el pin MOSI (Datos) saliente en la pantalla uno y el pin MOSI entrante en la pantalla dos.
  • Conecte un cable blanco entre el pin CS (Seleccionar) saliente en la pantalla uno y el pin CS entrante en la pantalla dos.

¡Estupendo! Ahora conectemos el resto de la pantalla uno a la placa de pruebas ...

  • Conecte un cable amarillo entre el pin SCK entrante en la pantalla uno y el pin digital 13 en el Arduino.
  • Conecte un cable azul entre el pin MOSI entrante en la pantalla uno y el pin digital 11 en el Arduino.
  • Conecte un cable blanco entre el pin CS entrante en la pantalla uno y el pin digital 10 en el Arduino.

RECUERDA: El código proporcionado utiliza Hardware SPI , por lo tanto, si está utilizando una placa Arduino diferente a la Nano, verifique cuáles de los pines son pines SPI de hardware para MOSI y SCK y conéctelos en consecuencia.

Bien hecho. Ahora pasemos a los pasos finales del cableado ...

Conexión del LDR y la resistencia para detectar la luz ambiental

Antes de conectar estos cables, ¿por qué estamos haciendo este paso? Bueno, ¡me alegro de que lo hayas preguntado! El LDR conectado al Arduino nos permitirá detectar si hay luz u oscuridad alrededor de UltrasonicEyes y usaremos esa información para iluminar o atenuar las pantallas LED en consecuencia.

No queremos que las pantallas sean muy brillantes durante la noche, ya que con una luz más oscura, aún podemos ver las pantallas bastante bien cuando el brillo es de alrededor del 30%, pero a la luz del día o en una habitación luminosa, debemos aumentar el brillo para hacer que las pantallas sean más visibles.

Ok, completemos este último paso para que podamos pasar a ponerlo en la carcasa 3D.

Conecte el LDR en 2 filas de pines en la placa de pruebas, como en el diagrama de cableado anterior. Deje espacio para colocar la resistencia y un cable que irá al Arduino.

Conecte la resistencia de 330 ohmios entre una fila de pines en un lado del LDR y el riel GND de la placa de pruebas.

Conecte un cable rojo entre la fila de pines en el otro lado del LDR al riel POWER de la placa de pruebas.

Finalmente, conectemos un cable marrón entre la fila de pines a los que está conectada la resistencia de 330 ohmios y el pin analógico 5 (A5) en el Arduino. Debe ser un pin analógico porque necesitamos leer un valor entre 0 y 255 del LDR (intensidad de la luz) en lugar de solo 0 y 1, como lo obtendríamos de un pin digital.

Vamos a encenderlo y cargar el código

Ok, eso es todo, estamos todos conectados. Es hora de conectar el cable USB entre el Arduino y su computadora, y cargar el boceto de UltrasonicEyes que se proporciona a continuación para ver cómo funciona todo.

Una vez que esté encendido y se haya cargado el código, camine frente a sus sensores o mueva sus manos frente a ellos y vea qué sucede.

¿Quieres hacerlo más permanente?

¿Busca hacer que sus UltrasonicEyes sean más permanentes? Mira mi video que cubre cómo tomar la versión de placa y soldarla a una proto-placa aquí ...

¡Y luego imprima las 2 partes del estuche en cualquier impresora 3D y ensamble como lo hice en el video!

También estoy buscando expandir UltrasonicEyes para tener un botón táctil capacitivo (o botón normal) para recorrer diferentes formas de ojos ... puedes ver mis experimentos aquí ...

Puedes ver el resto de mis proyectos y videos en ... unknownmaker.com

Sígueme en Twitter, Facebook, Instagram y tindie

https://www.patreon.com/unexpectedmaker

¡Eso es todo!

Código

  • Ojos ultrasónicos
Ojos ultrasónicos C / C ++
 #include  // Usamos esto para controlar las pantallas de matriz de LED de 8x8. Deberá instalar esta biblioteca desde el administrador de la biblioteca si aún no la tiene. # include  // Usamos NewPing para controlar los sensores ultrasónicos - Deberá instalar esta biblioteca desde el administrador de la biblioteca si aún no la tiene. // definir los pines conectados a la pantalla de matriz LED 1 // # definir CLK_PIN 13 / / Estamos usando hardware SPI - asegúrese de haber conectado el pin CLK al pin CLK de hardware en su dispositivo // # defina DATA_PIN 11 // Estamos usando hardware SPI - asegúrese de haber conectado el pin MOSI al pin MOSI de hardware en su dispositivo # definir CS_PIN 10 // Chip Seleccionar pin # definir MAX_DEVICES 2 // número de pantallas - necesitamos 2, una para cada ojo # definir LIGHT A5 // Usamos el pin analógico 5 para leer el valor de luz del LDR / / Estamos usando hardware SPI que automáticamente MD_MAX72XX mx =MD_MAX72XX (CS_PIN, MAX_DEVICES); // Inicializar las 2 pantallas Matrix # definir t1 2 // Pin de disparo en el sensor ultrasónico 1 # definir e1 3 // Pin de eco en el sensor de ultrasonidos 1 # definir t2 4 // Pin de disparo en el sensor de ultrasonidos 2 # definir e2 5 // Eco pin en el sensor ultrasónico 2 # define maxDist 400 // la distancia máxima para el pulso ultrasónicoNewPing eyeR (t2, e2, maxDist); // Inicializar sensor ultrasónico 2NewPing eyeL (t1, e1, maxDist); // Inicializar el sensor ultrasónico 1 // Realizamos un seguimiento del estado actual del sistema con esta variable de número entero, de esta manera, después de un parpadeo, podemos volver a mirar la última dirección en la que estaban // Los estados posibles son:// 0:Mirando hacia adelante // 1:Mirando a la derecha // 2:Mirando a la izquierda currentState =-1; // Almacenamos el tiempo y la distancia para los pings para cada sensor ultrasónico en estas variables long duration1, duration2; int distancia1, distancia2; // Queremos que el parpadeo se inserte aleatoriamente en el flotador de ciclo nextBlink =millis () + 1000; // Almacenamos la intensidad de luz actual en esta variablefloat lightAmount =0; uint8_t eye_forward [COL_SIZE] ={0b00111100, 0b01000010, 0b01011010, 0b10101101, 0b10111101, 0b10011001, 0b01000010, 0b001100_tb011, 0b001100, 0b01000010, 0b001100_tb01100, 0b0101101, 0b10111101, 0b10011001, 0b01000010, 0b0011001100, 0b0011001 0b11011001, 0b11111001, 0b10110001, 0b01000010, 0b00111100}; eye_left uint8_t [COL_SIZE] ={0b00111100, 0b01000010, 0b01001110, 0b10010111, 0b10011111, 0b10001101, 0b01000010, 0b00111100}; uint8_t eye_blink [COL_SIZE] ={0b00000000, 0b00111100, 0b01111110, 0b11111111, 0b10111101, 0b11000011, 0b01111110, 0b00111100}; void setup () {// Inicializar la biblioteca de Matrix Display mx.begin (); // Establecer los modos de pin para el sensor ultrasónico 1 pinMode (t1, OUTPUT); pinMode (e1, ENTRADA); // Establecer los modos de pin para el sensor ultrasónico 2 pinMode (t2, OUTPUT); pinMode (e2, ENTRADA); // Configure cada pin de disparo en los sensores ultrasónicos para que comiencen en LOW digitalWrite (t1, LOW); digitalWrite (t2, LOW); // Establezca el modo pin para que el LDR sea un INPUT pinMode (LIGHT, INPUT); // Comience con los ojos mirando hacia adelante ShowEye_Forward (); currentState =0;} void loop () {// leer el nivel de luz actual lightAmount =analogRead (LIGHT); // asegúrese de que el valor de la luz esté dentro del rango de la intensidad máxima de las pantallas lightAmount =(lightAmount / 255) * MAX_INTENSITY; // establece la intensidad mx.control (MD_MAX72XX ::INTENSITY, lightAmount); // Haga ping al ojo izquierdo con una recursividad de 5 distancia1 =eyeL.ping_median (5); // Retraso 500ms antes de hacer ping al ojo derecho, para que no obtengamos resultados contradictorios delay (500); // Hacer ping al ojo derecho con recursividad de 5 distance2 =eyeR.ping_median (5); // Compruebe si es hora de intentar insertar un parpadeo if (nextBlink  0) {ShowEye_Right (); currentState =1; } // Ahora, si la distancia2 es mayor que la distancia1 y la distancia2 también es mayor que 0, entonces queremos mirar a la izquierda si no (distancia1  0) {ShowEye_Left (); currentState =2; } // retrasa el bucle 250ms para garantizar que los ojos tengan tiempo de mostrar correctamente delay (250);} / ************************* ************* // ************ MAX7219 Cosas ************ // ******* ******************************** / void ShowEye_Right () {// Limpiar las pantallas mx.clear (); // Establecer el brillo actual de la pantalla mx.control (MD_MAX72XX ::INTENSITY, lightAmount); // Recorre cada fila de las pantallas para (uint8_t fila =0; fila   

Piezas y carcasas personalizadas

Imprima con cualquier impresora 3D, no se requieren configuraciones específicas. Imprima con cualquier impresora 3D, no se requieren configuraciones específicas.

Esquemas

ultrasoniceyes_final_Th84xpUyB2.fzz

Proceso de manufactura

  1. ¡Ataque OVNI!
  2. Persianas inteligentes
  3. Arduclock 3D RGB
  4. Mi Río
  5. Iron Man
  6. Sensor de obstáculos simple con Arduino
  7. Juego de joystick
  8. Encuéntrame
  9. Control del humidificador Arduino
  10. Pequeño vagabundo
  11. Joystick de Arduino