- Materiales necesarios:
- Diagrama de circuito:
- Creando la aplicación de Android usando Processing:
- Comprensión del código de procesamiento:
- Programando su Arduino:
- Diseño de circuitos y PCB con EasyEDA:
- Cálculo y pedido de muestras en línea:
- Funcionamiento de la pantalla del tablero de señal Bluetooth:
Ya sean las carreteras largas y extendidas o la puerta de entrada de sus médicos, tenemos letreros colocados en todas partes para brindarnos información. Pero estos letreros a menudo son aburridos y no se pueden configurar según nuestro interés de vez en cuando. Entonces, en este proyecto, vamos a construir un letrero controlado por Bluetooth usando una pantalla de matriz de 8 * 8. Una característica única de este proyecto es su aplicación para Android que permite al usuario controlar todos los 64 LED de forma individual desde el teléfono móvil. Esto permite al usuario crear diseños personalizados con facilidad y mostrarlos en la pantalla LED, suena interesante ¿verdad? !! Entonces empecemos…
Materiales necesarios:
- Arduino Pro mini
- MAX7219
- Módulo Bluetooth HC-05
- Pantalla de matriz de 8 * 8 LED
- Resistencia 20k
- Conector de barril DC
Diagrama de circuito:
El diagrama de circuito de esta placa LED controlada por Bluetooth construida con la aplicación EasyEDA. Usaremos los mismos esquemas para desarrollar un PCB a partir de él y fabricarlo usando EasyEDA.
El circuito es bastante sencillo. Todo el proyecto está alimentado por un adaptador de 12V, que se entrega directamente al pin Raw de la placa Arduino. Este voltaje bruto se regula luego a + 5V que se suministra al módulo Bluetooth y al IC MAX7219. Los pines Tx y Rx del módulo Bluetooth están conectados a D11 y D10 del Arduino para permitir la conexión en serie.
Los pines digitales D5 a D7 están conectados al IC MAX7219 para enviar y recibir datos a través de la comunicación SPI. El pin ISET de MAX7219 se eleva a través de una resistencia de 20k.
Para este proyecto, he fabricado un PCB, puede obtener el archivo de diseño del PCB y usar el mismo o construir el circuito en una placa. Sin embargo, debido a su complejidad, se recomienda comprar un módulo de pantalla 8x8 o usar la PCB
La matriz 8x8 es un módulo de visualización muy útil y se puede utilizar en muchos proyectos interesantes:
- Controlar la matriz de LED 8x8 con Raspberry Pi
- Desplazamiento de pantalla de texto en matriz de LED de 8x8 usando Arduino
- Matriz LED 8x8 usando Arduino
- Interfaz de matriz LED 8x8 con microcontrolador AVR
Creando la aplicación de Android usando Processing:
Antes de que podamos comenzar a programar nuestro Arduino, debemos saber qué tipo de datos recibiremos del teléfono móvil para responder. Entonces, echemos un vistazo a cómo se crea la aplicación de Android y cómo puede usarla en su teléfono inteligente para controlar la matriz LED de 8x8.
La aplicación de Android para este proyecto se creó utilizando el software Processing. Es una aplicación de desarrollo de código abierto y se puede descargar y utilizar fácilmente para desarrollar proyectos interesantes utilizando Arduino u otros microcontroladores, ya que puede desarrollar aplicaciones de sistema y aplicaciones de Android. Ya hemos realizado algunos proyectos utilizando Processing y puede consultarlos haciendo clic en los enlaces a continuación.
- Radio FM DIY con procesamiento
- Realidad virtual / control de gestos usando Arduino
- Sala de chat privada usando Arduino.
- Sistema de radar Arduino con aplicación de procesamiento y sensor ultrasónico
- Detección y seguimiento de rostros en tiempo real con Arduino
- Velocímetro de bricolaje con Arduino y procesamiento
- Juego de ping pong con acelerómetro Arduino
- Robot bípedo con Arduino
- Cámara de imágenes térmicas Arduino DIY
Volviendo al tema, es imposible para mí explicar el código completo de la aplicación de Android, por lo que tendría que aprender a procesar por sí mismo y luego mirar el código para comprender cómo funciona. Por lo tanto, las personas que estén dispuestas a omitir el proceso de aprendizaje de procesamiento pueden descargar la aplicación de Android desde el siguiente enlace.
- Descargar la aplicación para Android
A continuación se muestra la interfaz de nuestra aplicación para Android:
El archivo APK se puede instalar directamente en cualquier aplicación de Android y ejecutar como cualquier otra aplicación. Pero asegúrese de que su dispositivo Bluetooth HC-05 tenga el nombre “HC-05”, porque solo entonces funcionará.
Comprensión del código de procesamiento:
Las personas que estén interesadas en saber qué sucede detrás de la pantalla pueden leer más, otras pueden saltar al siguiente título. Básicamente, la aplicación de Android se conecta a un dispositivo Bluetooth llamado “HC-05” durante el inicio y muestra un conjunto de 64 LED en forma de círculos. Luego, cuando el usuario presiona el círculo, el círculo se vuelve rojo y el número del círculo se envía a Arduino a través de Bluetooth, al recibir el número del círculo, Arduino enciende el LED. Analicemos las líneas importantes del programa Processing para comprender mejor. El código completo de la aplicación de Android se puede descargar desde el siguiente enlace.
- Código de procesamiento para la aplicación de Android
Usamos clases y objetos para mostrar 64 LED para poder abordar cada uno fácilmente. Como puede ver en el siguiente código, usamos un bucle for para iterar de 1 a 64 usando una matriz. Cada LED tendrá su propio valor de posición X, posición Y y color y podemos cambiarlos fácilmente.
// Dipslay todos los leds para (int i = 1; i <= 64; i ++) led_array.display (); // Todos los leds mostrados clase Led { float X_Pos; float Y_Pos; Color color; // CONSTRUTOR Led (float tempx, float tempy, color tempc) { X_Pos = tempx; Y_Pos = tempy; color = tempc; } display vacío () { relleno (color); elipse (X_Pos, Y_Pos, led_dia, led_dia); } }
Los LED se cargan en la pantalla en el mismo orden que el de la pantalla. Cada LED está separado por una distancia igual al diámetro del LED, de esta manera podemos distinguir fácilmente qué LED está seleccionado actualmente por el usuario. Como se muestra en el programa a continuación, creamos una matriz en la que cada elemento contiene la información de la posición X, Y y el color del LED.
vacío load_leds () { led_array = nuevo Led; int a = 1; para (int j = 0; j <= 7; j ++) { float y = height / 6 + j * (led_dia * 1.5); para (int i = 0; i <= 7; i ++) { float x = (width / 6) + i * (led_dia * 1.5); // llenar (255); // elipse (x, y, led_dia, led_dia); led_array = nuevo Led (x, y, color (255,255,255)); a ++; } } }
El paso principal en el programa es comprobar si el usuario ha pulsado algún LED y si es así tenemos que cambiar el color del LED y enviar el número del LED a través de Bluetooth. Dado que ahora podemos dirigirnos a la ubicación y el color de cada LED fácilmente, podemos hacerlo simplemente comparando los valores X, Y de donde el usuario ha presionado con el valor X, Y de los LED. Si los valores se fusionan, cambiamos el estado del LED y también enviamos el número a través de Bluetooth como se muestra a continuación.
// comprobar si el mouse está sobre el led // En caso afirmativo, envíe el número de led para (int i = 1; i <= 64; i ++) { if ((mouseX <(led_array.X_Pos + led_dia / 2)) && (mouseX> (led_array.X_Pos - led_dia / 2)) && (mouseY <(led_array.Y_Pos + led_dia / 2)) && (mouseY> (led_array.Y_Pos - led_dia / 2))) {led_array = new Led (led_array.X_Pos, led_array. Y_Pos, led_color); datos de bytes = {byte (i)}; bt.broadcast (datos); } }
Aparte de esto, el programa también puede reiniciar el LED completo apagándolos todos y también puede hacer que un LED se vuelva rojo (ENCENDIDO) o blanco (APAGADO) por lo que también tenemos un botón de alternancia para eso. Se muestra el botón de alternancia y espera la entrada. Si se presiona, se tomará la acción respectiva. El código para hacer lo mismo se muestra a continuación como función que se llama dentro del ciclo de dibujo.
void load_buttons () { rectMode (CENTER); textAlign (CENTRO, CENTRO); noStroke (); llenar (# 1BF2D4); rect (ancho / 2-ancho / 4, alto / 1.3, ancho / 4, alto / 12); llenar (0); texto ("Restablecer", ancho / 2-ancho / 4, alto / 1.3); // botón 1 if (rojo == verdadero) {relleno (# 080F89); rect (ancho / 2 + ancho / 4, alto / 1.3, ancho / 4, alto / 12); relleno (255,0,0); text ("ROJO", ancho / 2 + ancho / 4, alto / 1.3);} // botón 2 if (rojo == falso) {relleno (# 080F89); rect (ancho / 2 + ancho / 4, alto / 1.3, ancho / 4, alto / 12); relleno (255); text ("BLANCO", ancho / 2 + ancho / 4, alto / 1.3);} // botón 2 } void read_buttons () { if (mousePressed && click_flag == true) { color_val = get (mouseX, mouseY); click_flag = falso; if (color_val == - 14945580) { datos de bytes = {0}; bt.broadcast (datos); println ("RESET"); load_leds (); // carga todos los led en posición y color } if (color_val == - 16248951) { byte data = {100}; bt.broadcast (datos); si (rojo == verdadero) rojo = falso; más si (rojo == falso) rojo = verdadero; println ("CAMBIAR"); } color_val = 0; } }
Programando su Arduino:
El programa completo de Arduino para este proyecto de placa inalámbrica controlado por Bluetooth se muestra en la parte inferior de esta pantalla; puede usarlo directamente y cargarlo en su tablero. Las líneas importantes del programa se explican a continuación.
El módulo Bluetooth está conectado a los pines 10 y 11, por lo tanto, tenemos que usar el software en serie para habilitar la comunicación en serie en estos pines y luego podemos escuchar los datos de estos pines. Obtenemos los datos recibidos del módulo Bluetooth y los guardamos en una variable llamada entrante . Si el valor de entrada es "0" apagaremos todos los LED usando el código siguiente
if (BT.available ()) { entrante = BT.read (); Serial.println (entrante); if (entrante == 0) m.clear (); // Borra la pantalla
Usando los valores de entrada tenemos que determinar qué LED ha presionado el usuario en el teléfono móvil y el clima para encender o apagar ese LED. Entonces, verificamos si el valor es igual a 100. Si el valor es 10, significa que el usuario ha pedido cambiar el color del LED. Entonces cambiamos la variable roja para saber si el LED debe encenderse o apagarse.
else if (entrante == 100) // Comprobar si debemos encender o apagar el LED { if (rojo == verdadero) rojo = falso; más si (rojo == falso) rojo = verdadero; Serial.print ("RED:"); Serial.println (rojo); }
Finalmente, si el valor es superior a 65 significa que el usuario ha pulsado un LED. Basándonos en el número del 1 al 64, tenemos que determinar qué LED ha presionado el usuario. Para alternar ese LED, necesitaremos el valor de Fila y Columna de ese LED que se calcula y almacena en la variable X e Y respectivamente y se muestra en el código a continuación. Finalmente, según el valor de la variable roja, encendemos o apagamos el LED según la solicitud del usuario.
else if (entrante <= 64) {// Calcular donde en ON ro OFF el LED de palanca = true; Y = entrante / 8; X = entrante - (Y * 8); si (% 8 entrante == 0) {X = 8; Y - = 1;} Serial.println (X - 1); Serial.println (Y); si (rojo == verdadero) m.setDot ((X - 1), (Y), verdadero); // LED ENCENDIDO else if (rojo == falso) m.setDot ((X - 1), (Y), falso); // LED APAGADO }
Diseño de circuitos y PCB con EasyEDA:
Para diseñar esta pantalla de matriz controlada por Bluetooth, hemos elegido la herramienta EDA en línea llamada EasyEDA. Anteriormente he usado EasyEDA muchas veces y lo encontré muy conveniente de usar ya que tiene una buena colección de huellas y es de código abierto. Después de diseñar la PCB, podemos solicitar las muestras de PCB mediante sus servicios de fabricación de PCB de bajo costo. También ofrecen un servicio de abastecimiento de componentes donde tienen un gran stock de componentes electrónicos y los usuarios pueden solicitar los componentes necesarios junto con el pedido de PCB.
Mientras diseña sus circuitos y PCB, también puede hacer públicos sus diseños de circuitos y PCB para que otros usuarios puedan copiarlos o editarlos y puedan beneficiarse de su trabajo, también hemos hecho públicos todos nuestros diseños de circuitos y PCB para este circuito, verifique el siguiente enlace:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
Puede ver cualquier Capa (Superior, Inferior, Topsilk, bottomsilk, etc.) de la PCB seleccionando la capa de la Ventana 'Capas'.
También puede ver la PCB, cómo se verá después de la fabricación usando el botón Vista de fotos en EasyEDA:
Cálculo y pedido de muestras en línea:
Después de completar el diseño de esta PCB de matriz controlada por Bluetooth, puede solicitar la PCB a través de JLCPCB.com. Para pedir el PCB de JLCPCB, necesita Gerber File. Para descargar archivos Gerber de su PCB, simplemente haga clic en el botón Salida de fabricación en la página del editor EasyEDA, luego descargue desde la página de pedido de EasyEDA PCB.
Ahora vaya a JLCPCB.com y haga clic en Cotizar ahora o en el botón, luego puede seleccionar la cantidad de PCB que desea pedir, cuántas capas de cobre necesita, el grosor de la PCB, el peso del cobre e incluso el color de la PCB, como la instantánea mostrado a continuación:
Una vez que haya seleccionado todas las opciones, haga clic en "Guardar en el carrito" y luego lo llevará a la página donde puede cargar su archivo Gerber que hemos descargado de EasyEDA. Sube tu archivo Gerber y haz clic en "Guardar en el carrito". Y finalmente haga clic en Checkout Securely para completar su pedido, luego obtendrá sus PCB unos días después. Están fabricando la PCB a un precio muy bajo, que es de $ 2. Su tiempo de construcción también es muy inferior, que es de 48 horas con una entrega de DHL de 3-5 días, básicamente obtendrá sus PCB dentro de una semana de realizar el pedido.
Después de unos días de ordenar PCB, obtuve las muestras de PCB en un buen empaque como se muestra en las imágenes a continuación.
Y después de obtener estas piezas, he soldado todos los componentes necesarios sobre el PCB.
En mi PCB, cometí un error contundente al seleccionar la huella incorrecta para el módulo de pantalla 8 * 8, por lo tanto, tuve que usar una placa Perf para montar la pantalla como se muestra en la imagen. Pero ahora la huella son actualizaciones en la PCB y puede solicitar la PCB corregida y montar el módulo de pantalla con facilidad.
Funcionamiento de la pantalla del tablero de señal Bluetooth:
Una vez que esté listo con el hardware, ya sea obteniendo la PCB o haciendo la conexión en la placa de prueba, use el programa Arduino que se encuentra al final de la página y cárguelo en su placa Arduino. El archivo APK de la aplicación de Android también se proporciona arriba, utilícelo e instale la aplicación en su dispositivo Android preferido.
Encienda el hardware y busque el nombre del dispositivo HC-05 en su teléfono para emparejarlo. La clave de acceso será 1234 por defecto. Después de eso, abra la aplicación que acabamos de instalar. La aplicación debería mostrar " conectado a HC-05 " en la parte superior de la pantalla, luego podrá tocar el LED en la pantalla y notar que el mismo LED también se enciende en la placa.
También puede apagar todos los LED presionando el botón Reset y decidir encender o apagar un LED en particular presionando el botón Toggle. De forma predeterminada, se encenderá el LED que presione. El funcionamiento completo del proyecto se puede encontrar en el video a continuación. Si tiene algún problema para que funcione, utilice el cuadro de comentarios a continuación o escriba en nuestros foros para obtener más ayuda técnica. Espero que haya entendido el tutorial y haya disfrutado construyéndolo.