Tabla de contenido:

Marcador de críquet usando NodeMCU: 9 pasos (con imágenes)
Marcador de críquet usando NodeMCU: 9 pasos (con imágenes)

Video: Marcador de críquet usando NodeMCU: 9 pasos (con imágenes)

Video: Marcador de críquet usando NodeMCU: 9 pasos (con imágenes)
Video: Вы любитель крикета? тогда посмотрите этот инструмент управления крикетом - Cricket.Jhalak.com 2024, Mes de julio
Anonim
Image
Image
El plan
El plan

¡Hola! Recientemente me presentaron al mundo de IoT (Internet de las cosas) cuando encontré el dispositivo más popular en este campo, ESP8266. Me sorprendió el número final de posibilidades que abrió este dispositivo pequeño y barato. Como soy nuevo en esto, decidí hacer un proyecto usándolo y aprender en el camino. Entonces, comencé a buscar proyectos e ideas en Internet.

Me encontré con un proyecto increíble llamado Arduino Cricket Score Ticker de W. A. Smith. En este proyecto, Arduino junto con Ethernet Shield y la tarjeta SD se utilizan para mostrar puntajes de cricket en vivo de Cricbuzz. Este proyecto me hizo pensar.

Soy de India y lo primero que me viene a la mente después de escuchar India es Cricket. Aquí, el cricket es religión. A veces se vuelve difícil sentarse frente a un televisor para seguir todo el partido. Entonces, ¿por qué no hacer algo que haga que ver la partitura sea fácil, inalámbrico y portátil? Un dispositivo diminuto dedicado que muestra suficiente información para mantenerte actualizado con solo un vistazo.

¿No eres fanático del cricket? ¡No hay problema! El código contiene el analizador XML que se puede utilizar para obtener datos de cualquier archivo XML. Simplemente use las funciones correctas para obtener los datos.

Paso 1: el plan

El plan
El plan

El plan es utilizar la placa de desarrollo NodeMCU (con el módulo ESP-12E) para acceder a Internet y solicitar el código XML de Cricbuzz, que contiene toda la información sobre los partidos en curso / próximos. Este código se guarda en la tarjeta SD como un archivo.xml. Luego, el archivo se lee de la tarjeta SD para analizar los datos requeridos del código XML. Usaré el código de W. A. Smith para analizar la información. Gracias a sus esfuerzos. Consulte su proyecto si desea hacer lo mismo usando Arduino y Ethernet Shield.

Mi idea es hacerlo lo más pequeño posible, construir un PCB personalizado y una carcasa para él. Por ahora, hagamos un prototipo. Pero primero, familiaricémonos con los componentes utilizados en este proyecto.

¡Empecemos

Paso 2: pantalla OLED

Pantalla OLED
Pantalla OLED
Pantalla OLED
Pantalla OLED

Decidí optar por una pantalla OLED debido a su pequeño tamaño y están disponibles por poco dinero. Estoy usando una pantalla de 0.96 que será suficiente para mostrar la información del partido. Puede usar cualquier tamaño de pantalla.

La pantalla que estoy usando es monocromática con el controlador SSD1306 y la interfaz I2C (2 cables). También se encuentran disponibles versiones SPI de la pantalla. Ejecutarlos es una tarea fácil. Descargue las bibliotecas SSD1306 y GFX necesarias para ejecutar las pantallas. Gracias a Adafruit por escribir estas bibliotecas.

Las conexiones son muy sencillas.

  • GND a GND
  • VCC a 3,3 V
  • SCL a D1
  • SDA a D2.

Paso 3: Adaptador y tarjeta SD

Adaptador y tarjeta SD
Adaptador y tarjeta SD

La tarjeta SD almacena el archivo XML de Cricbuzz hasta que se ha analizado toda la información. Una vez que se muestra la información necesaria, se elimina el archivo. Usar una tarjeta SD para almacenar un archivo XML de 10 a 20 kB es un poco excesivo, pero hace que el análisis sea mucho más fácil y fácil de entender.

Se puede utilizar cualquier tarjeta de memoria. Elegí la tarjeta micro SD por su pequeño factor de forma. Puede soldar cables directamente a la tarjeta SD, pero el uso de una placa de conexión facilita el trabajo. Cabe señalar que todas las tarjetas SD están diseñadas para funcionar con 3.3V. Esto significa que no solo debe alimentarse con 3.3V, sino que también la comunicación entre el microcontrolador y la tarjeta SD debe ser de nivel lógico de 3.3V. ¡El voltaje por encima de 3.3V lo MATARÁ! No nos preocuparemos por eso en lo que respecta a NodeMCU porque NodeMCU en sí funciona con 3.3V, lo cual está bien. Si planea usar cualquier otro microcontrolador con nivel lógico de 5V, asegúrese de que su placa de ruptura tenga un cambiador de nivel incorporado (como se muestra en la imagen). Básicamente, convierte o 'cambia' los 5V del microcontrolador a 3.3V compatibles con la tarjeta SD. El uso de la palanca de cambios de nivel junto con 3.3V (como hice yo) no afecta su funcionamiento.

La tarjeta SD utiliza la interfaz SPI para la comunicación. El pin CS o Chip Select se puede conectar a cualquiera de los pines GPIO. Elegí GPIO15 (D8). Simplemente realice los cambios necesarios en el código si utilizó un pin que no sea GPIO15

  • SCK a D5
  • MISO a D6
  • MOSI a D7
  • CS a D8
  • VCC a 3,3 V
  • GND a GND

Formatea tu tarjeta SD

La biblioteca que usaremos es compatible con los sistemas de archivos FAT16 o FAT32. Asegúrese de formatear la tarjeta SD con el formato correcto.

Paso 4: Hacer el teclado

Hacer el teclado
Hacer el teclado
Hacer el teclado
Hacer el teclado
Hacer el teclado
Hacer el teclado

Quiero que el proyecto sea lo más pequeño posible. Entonces, decidí hacer una placa separada para el teclado y luego montarla sobre la placa principal. Esto le ahorrará algo de espacio.

Se puede comprar una matriz de teclas lista para usar, pero tenía botones por ahí. Además, quería hacerlo lo más pequeño posible. Una disposición típica de conectar filas y columnas necesitaría un total de 6 pines GPIO para una matriz de 3 x 3. Esto es bastante considerando que la pantalla OLED y la tarjeta SD también estarán conectadas.

En caso de duda, ¡búscalo en Google! Eso es lo que hice y encontré una forma que necesitará solo 1 pin para controlar toda la matriz. Esto es posible utilizando la matriz de divisores de voltaje. Las resistencias están conectadas entre cada fila y columna. Cuando se presiona una tecla, una cierta combinación de resistencias se conecta en serie, lo que crea un divisor de voltaje. Consulte el diagrama del circuito. El microcontrolador leerá el voltaje variable. Cada tecla producirá un voltaje diferente y, por lo tanto, se puede encontrar fácilmente qué tecla se presionó leyendo el voltaje de salida de la matriz. Como queremos leer diferentes niveles de voltaje y ahora solo alto y bajo, necesitaremos un pin analógico. Afortunadamente, hay un pin analógico etiquetado como A0 en NodeMCU. ¡Problema resuelto!

Si desea comprar una matriz, consulte las conexiones internas que se muestran en el diagrama. Se puede utilizar una matriz de cualquier dimensión. Asegúrese de usar una resistencia de 2.2kΩ entre las filas y una resistencia de 680Ω entre las columnas.

Conexión de botones pulsadores

Los pines 1 y 2 están conectados internamente. Lo mismo con los pines 3 y 4. Cuando se presiona el botón, todos los pines están conectados entre sí. Consulte la imagen para tener una idea de cómo conectar los interruptores en una placa de perforación.

He conectado un cabezal macho de 3 pines para que pueda conectarse a la placa principal más tarde.

Paso 5: Poner todo junto

Poniendo todo junto
Poniendo todo junto
Poniendo todo junto
Poniendo todo junto
Poniendo todo junto
Poniendo todo junto

Puede planear colocar los componentes donde desee. Sin restricciones. Te mostraré cómo lo hice para hacerlo compacto, ya que quería algo que quepa en la palma. Puede ensuciarse un poco, así que prueba a mi manera si te sientes cómodo soldando. Decidí rellenar ambos lados de la placa como lo haría una PCB de dos capas. NodeMCU y placa de conexión de tarjeta SD en un lado y OLED y teclado en el otro lado.

La ruptura de la tarjeta SD simplemente encaja entre los dos encabezados hembra que son para NodeMCU. Desolde los encabezados macho en ángulo con los que venía la placa de ruptura, los giré y volví a soldar para que los pines vayan perpendicularmente hacia abajo como se muestra en la imagen. Acceder a la ranura de la tarjeta SD se vuelve más fácil.

Doblé los pines de un cabezal hembra de 4 pines en ángulo recto y lo soldé en el lado de cobre de la placa perfilada como se muestra en la imagen.

Cubra las juntas de soldadura debajo del teclado para evitar cortocircuitos. Agregue un trozo delgado de espuma dura (alrededor de 5 mm de grosor) entre el teclado y la placa base para mayor protección y rigidez. Finalmente, suelde el teclado que hicimos anteriormente. Tener un soldador con punta puntiaguda seguramente facilitará su trabajo. Fue un trabajo complicado hacerlo lo más compacto posible, pero finalmente logré hacerlo.

¡Verifique todas sus conexiones en busca de cortocircuitos antes de encender el dispositivo

Paso 6: Configuración del teclado

Configuración del teclado
Configuración del teclado

Una vez que haya verificado todas las conexiones, estará listo para encender su dispositivo por primera vez. ¡Dedos cruzados! ¿Sin humo mágico? ¡Felicitaciones!

Ahora estamos listos para configurar el teclado. Recuerde el funcionamiento del teclado. Cada pulsación de tecla generará un voltaje diferente que se alimenta al pin analógico de NodeMCU. ESP-12E tiene un convertidor analógico a digital (ADC) de 10 bits de resolución. 2 elevado a la potencia 10 dará 1024. Esto significa que obtendremos una lectura entre 0 y 1024 por cada tecla presionada. Veamos qué lecturas obtenemos. Pero primero, tenemos que escribir un pequeño programa para obtener esos valores. Abra Arduino IDE, copie y pegue el siguiente código y cárguelo en NodeMCU.

int keypadPin = A0;

configuración vacía () {Serial.begin (115200); } bucle vacío () {int r = analogRead (keypadPin); Serial.println (r); }

  • Abra el monitor de serie. Establezca la velocidad en baudios en 115200.
  • Ahora presione cualquier botón. Debería obtener una lectura constante en el monitor serial. Las pequeñas fluctuaciones están bien. Estos serán tratados en el código principal. Haz lo mismo con cada tecla.
  • Cada clave debe tener una lectura diferente.
  • Anote todos los valores. Los necesitaremos más tarde.

Paso 7: Codifiquemos

Vamos a codificar
Vamos a codificar
Vamos a codificar
Vamos a codificar
Vamos a codificar
Vamos a codificar

Descargue el archivo Scoreboard.ino que se proporciona a continuación en su computadora y ábralo usando el IDE de Arduino.

Antes de subir

1) Establezca el tiempo de actualización del marcador. Por ejemplo, 15L por 15 segundos.

2) Ingrese el SSID y la contraseña del enrutador al que desea conectarse.

3) Realice los cambios necesarios si elige conectar el pin CS de la tarjeta SD a un pin que no sea GPIO15.

4) ¿Recuerda los valores que anotamos para todas las claves? Tenemos que asignar un número de clave para cada valor. También les había hablado de las fluctuaciones en la lectura. Esto se debe a que los contactos del interruptor no son perfectos. A largo plazo, este valor puede desviarse del valor actual debido al envejecimiento de los contactos, lo que agrega resistencia adicional en el circuito y, por lo tanto, cambia el voltaje. Podemos solucionar este problema en el código.

Agregaremos un límite superior y un límite inferior del valor con un margen de 5. Por ejemplo, obtuve una lectura de 617 para la clave 1.

  • Reste 5 de él. 617 - 5 = 612. Este es el límite inferior.
  • Ahora agregue 5. 617 + 5 = 622. Este es el límite superior.
  • Desplácese hasta el final del código. Llene el espacio provisto para los dos valores en el código como se muestra en la imagen.
  • Haga esto por cada 9 valores.

si (r> 612 && r <622) {keyNumber = 1; }

¿Qué significa esto?

SI la lectura (r) es mayor que 612 Y menor que 622, entonces se presiona la tecla 1. Cualquier valor entre 612 y 622 se tratará como clave 1. Esto resuelve el problema de la lectura fluctuante.

Paso 8: Elaboración del caso

Construyendo el caso
Construyendo el caso
Construyendo el caso
Construyendo el caso
Construyendo el caso
Construyendo el caso
Construyendo el caso
Construyendo el caso

Esto es completamente opcional. Pensé que el proyecto se vería ordenado y completo con un estuche alrededor. Sin las herramientas adecuadas para este trabajo, iba a ser una gran tarea para mí. La caja está construida con acrílico.

Se prepararon las piezas para pegar alisando los bordes con papel de lija. Usé Fevi Kwik (Super Glue) para unir todas las piezas. El superpegamento deja un residuo blanco después de que se ha curado. Por lo tanto, aplíquelo solo entre las articulaciones. Debe ser rápido y preciso cuando trabaje con superpegamento, ya que se fija rápidamente. El cemento acrílico es el más adecuado para este trabajo.

Hizo una pequeña abertura para acceder al puerto USB mediante un archivo. Debe ser lo suficientemente grande para insertar el cable USB.

Creó una cuadrícula de 3x3 en la portada para los botones pulsadores. Esto dificultará el acceso a los botones pulsadores. Para resolver este problema, corté piezas cuadradas para cada tecla para que sus botones ahora se extiendan hasta la superficie.

Después de tanto lijar, cortar, arreglar y ajustar, ¡finalmente estaba listo!

Paso 9: ¡Diviértete

¡Divertirse!
¡Divertirse!

Finalmente, todo el trabajo duro está hecho. Enciende tu mini marcador y mantente actualizado con el juego.

Después de encender, primero se conecta al punto de acceso. Inicializa la tarjeta SD. Mostrará un error si la tarjeta SD no está inicializada.

Se mostrará una lista de todas las coincidencias junto con el número de coincidencia.

Seleccione el número de coincidencia usando el teclado.

Se mostrarán las puntuaciones. Puede personalizar todas las cosas que desea ver en la pantalla. No profundizaría demasiado en explicar el código. Puede encontrar una explicación detallada aquí sobre cómo funciona el análisis.

Para volver al menú, mantenga presionado el botón ATRÁS (tecla 8) hasta que se muestre la página "Obteniendo puntajes …".

Planes futuros

  • Diseñe una PCB personalizada con el módulo ESP8266 12-E.
  • Agregue una batería recargable.
  • Mejora el código con nuevas funciones.

Espero que hayas disfrutado de la construcción. ¡Hágalo usted mismo y diviértase! Siempre hay algo de espacio para mejorar y mucho que aprender. Piensa en tus propias ideas. No dude en comentar cualquier sugerencia relacionada con la construcción. Gracias por quedarte hasta el final.

Recomendado: