Tabla de contenido:
Video: Pantalla y luz de hockey de cabecera de la NHL: 4 pasos (con imágenes)
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Introducción
El "NHL Light" es para los fanáticos del hockey que quieren seguir a su equipo, pero no pueden ver todos los partidos. Su mejor característica es que simula un marcador de gol con un cuerno de hockey (personalizado para su equipo) y ligero.
Además de la bocina y la luz de hockey, la "NHL Light" tiene una pantalla que muestra la puntuación del juego actual o más reciente, la hora del juego o la hora del próximo juego y la fecha y hora actuales.
El "NHL Light" se ejecuta en una lista simple de piezas, que es fácil de ensamblar y un código que está disponible gratuitamente.
Características
- Configuración basada en página web para seleccionar tu equipo y wifi
- Suena la luz y la bocina cuando tu equipo anota (incluso cuando eres el equipo visitante)
- Reproduce sonido para anunciar el comienzo del juego.
- Reproduce un sonido para anunciar la conclusión del juego.
- Proporciona la hora y la fecha del próximo juego, si no hay ningún juego en curso.
- Muestra la hora y el período del juego actual, si el juego está en curso.
- Muestra la fecha y hora actuales.
Paso 1: Paso 1: Ensamble sus piezas
Aquí hay una lista de piezas.
-
Frambuesa Pi W *
- Amazonas
- Prefiero obtener el mío de Microcenter, pero se puede encontrar en línea por menos en otros lugares.
- $10
- Tarjeta SD (mínimo 4 GB) *
- altavoz - Amazon - ~ $ 2 *
- amplificador - PAM8403 * - Amazon - ~ $ 1 cada uno
- ligero - Amazon - ~ $ 5
-
Caso - $ 1 *
- De Michael
- Recomiendo un pequeño estuche de madera para manualidades de la tienda de manualidades de Michael, ¡pero te lo dejo a ti!
-
LCD I2C 2004 - $ 3-7
- Amazonas
- El código admite 3 tipos de LCD, pero I2C 2004 es el que me he decidido por el mejor valor y tamaño. (SSD1306 también es posible)
- 2 transistores - 2N2222A- Amazon
- Cables misceláneos / solder12V
- fuente de alimentación - Amazon
- Convertidor buck 12V -> 5V - Amazon
* Existe flexibilidad a la hora de seleccionar esta pieza.
NOTA: Puede comenzar en la mayor parte de este proyecto solo con su Raspberry Pi, mientras espera que se envíen otros artículos.
Paso 2: Paso 2: cableado y electrónica
-
Ensamblar luz
- El cableado de la luz debe correr 12 + a la luz.
- Ejecute el negativo de la luz a través de uno de los transistores.
- La emisión del transistor va a tierra.
- El colector del transistor va a la Raspberry Pi.
-
Ensamblar sonido
- Ejecute el sonido derecho o izquierdo desde PI al amplificador
- Ejecute + 5V al amplificador
- Ejecute la tierra del amplificador al segundo transistor.
- Ejecute el emmetter del segundo transisitor a tierra
- Ejecute el colector del transistor a la Raspberry Pi
- Ensamble el cableado al PI
-
Estas son las instrucciones de asignación de pines para el PI (algunas de ellas se pueden configurar a través de JSON)
-
LCD
- 3 - SDA
- 5 - SCL
- 5 - VCC (+5)
- AMP 8 (GPIO 14)
- Luz 10 (GPIO15)
- Sonido correcto - GPIO 18
-
Paso 3: Paso 3: Configuración del software del sistema operativo
-
Prepara la Raspberry Pi W
- La rasberry pi debe ejecutar una versión reciente de Raspbian (u otra Debian).
- Se recomienda seguir estas instrucciones:
- Asegúrese de incluir el archivo wifi wpa_supplicant.
- Coloque el archivo ssh en la tarjeta sd para permitir el acceso a ssh.
-
Prepare el software de terceros:
- Automaticé este proceso para extraer todas las herramientas de terceros necesarias, pero siéntase libre de ejecutarlas manualmente y revisar para asegurarse de que ningún paso falle.
- Descargue y ejecute el siguiente script:
Aquí hay un desglose de lo que hace el script de instalación para configurar el sistema operativo. Es mejor ejecutar estas líneas manualmente, para que pueda estar atento a los errores.
Encabezado del script:
#! / bin / sh -e # se puede llamar a través de #curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: automatiza este script con algo como: curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: setup wifi # TODO: setup passwd y claves autorizadas # notas:
Actualice el software a nivel del sistema operativo:
# apt-get stuff (apt-get update && apt-get -y upgrade)> / dev / null apt-get dist-upgrade -y # Desarrollo general apt-get install -y git build-essential python-dev python-pip python-smbus libasound2-dev nodejs # GPIO apt-get install -y raspi-gpio python-Imaging python-smbus libasound2-dev #networking apt-get install -y bridge-utils hostapd dnsmasq apt-get clean -y
Configuración de redes. Parte del objetivo aquí era permitir que el sistema se configurara a través de un punto de acceso para conectarse a su propio wifi, pero esto aún no se ha probado completamente. Actualmente se recomienda utilizar el método wpa_supplicant para configurar wifi.
#networking setupecho nhllight> / etc / hostname #TODO: arregla / etc / hosts #TODO: setup br0 mkdir / etc / hostapd / # nota: otra configuración se realiza a través de los archivos de configuración y el shell se despliega como parte de la actualización
Actualizar nodos y bibliotecas de nodos
#update nodecd / tmp export nodeversion = 8.9.0 #wget https://nodejs.org/dist/v7.4.0/node-v7.4.0-linux-… #wget https://nodejs.org/dist/v7. 4.0 / node-v7.4.0-linux-… wget https://nodejs.org/dist/v7.4.0/node-v7.4.0-linux-… tar -xvf node-v $ {nodeversion} -linux-armv6l. tar.xz cd node-v $ {nodeversion} -linux-armv6l rm -f *.md rm -f LICENCIA cp -R * / usr / local / rm -R / tmp / node-v $ {nodeversion} -linux- armv6l rm /tmp/node-v${nodeversion}-linux-armv6l.tar.xz #TODO: ¿hacer un enlace simbólico para el nodo binario? apt-get remove -y --purge npm node nodejs
#Configuración de nodo mkdir / opt / nhl mkdir / opt / nhl / logs mkdir / opt / nhl / horns mkdir / opt / nhl / node_modules /
#update Node
#instalar las dependencias de los nodos en el directorio nhl exportar NODE_PATH = / usr / local / lib / node_modules
#HACK - TODO - corrige que lame no se instalará globalmente
cd / opt / nhl npm install cojo # cojo, es cojo, no se instalará globalmente cp -R / opt / nhl / node_modules / cojo $ NODE_PATH npm install speaker # no se instalará globalmente cp -R / opt / nhl / node_modules / speaker $ NODE_PATH npm install i2c-bus #wont install globally cp -R / opt / nhl / node_modules / i2c-bus $ NODE_PATH npm install oled-i2c-bus #wont install globally cp -R / opt / nhl / node_modules / oled-i2c-bus $ NODE_PATH npm install lcd # no se instalará globalmente cp -R / opt / nhl / node_modules / lcd $ NODE_PATH npm install lcdi2c # no se instalará globalmente cp -R / opt / nhl / node_modules / lcdi2c $ NODE_PATH
npm install oled-font-5x7 # no se instalará globalmente
cp -R / opt / nhl / node_modules / oled-font-5x7 $ NODE_PATH
npm install onoff # no se instalará globalmente
cp -R / opt / nhl / node_modules / onoff $ NODE_PATH
#npm install pm2 # no se instalará globalmente
#cp -R / opt / nhl / node_modules / pm2 $ NODE_PATH #npm install express # no instalará globalmente #cp -R / opt / nhl / node_modules / express $ NODE_PATH
# cualquier módulo global
npm instalar express body-parser child_process pm2 -g
Extraiga el último código:
#pull git codecd / opt / nhl #JSON es una creación única wget --no-cache -O /opt/nhl/nhl_config.json https://raw.githubusercontent.com/wga22/nodejs/ma… #wget -O /opt/nhl/NHL_work.js https://raw.githubusercontent.com/wga22/nodejs/ma… #call script automatizado para instalar todo lo demás para NHL curl -sL https://raw.githubusercontent.com/wga22/nodejs / ma… | sudo -E bash -
¡Descarga los cuernos!
#pull hornscd / opt / nhl / horns curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash -
actualice los archivos de configuración de Raspberry pi - - es posible que deba cambiarlos para su sistema
# actualizaciones de archivos de configuración # agregar sonido cp /boot/config.txt /boot/config.txt.bak printf '\ ndtoverlay = pwm-2chan, pin = 18, func = 2, pin2 = 13, func2 = 4' >> / boot / config.txt #turn on i2c printf '\ n / ndtparam = i2c1 = on / n' >> /boot/config.txt printf '\ n / ndtparam = i2c_arm = on / n' >> / boot / config. TXT
#TODO: ¿es necesario? Cp / etc / modules /etc/modules.bak printf '\ ni2c-dev / ni2c-bcm2708 / n' >> / etc / modules
amixer cset numid = 1
#TODO: ¿establecer volumen, 60%?
Automatice la automatización, como el arranque y las actualizaciones de código:
# actualizar rc.local # NOTA: mover el archivo, porque uno estándar incluye una "salida" en la última línea, por lo que no se puede simplemente agregar mv /etc/rc.local /etc/rc.local.bak touch /etc/rc.local chmod u + x /etc/rc.local printf '#! / bin / sh'> /etc/rc.local printf '\ n /etc/bootup_nhl.sh> /tmp/rclocal.log' >> / etc / rc.local printf '\ n salir 0' >> /etc/rc.local
#TODO: necesito agregar algo para hacer las actualizaciones de software regulares semanalmente como esta # ¿Quizás simplemente copie este archivo directamente a la carpeta rc.weekly? rm /etc/cron.weekly/nhl_updater printf '#! / bin / sh / ncurl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - '> /etc/cron.weekly/nhl_updater chmod u + x /etc/cron.weekly/nhl_updater
Cosas varias, como configurar la zona horaria:
ln -sf / usr / share / zoneinfo / America / New_York / etc / localtime
# actualizar la variable de entorno con node_path
cp / etc / environment /etc/environment.bak printf '\ nexport NODE_PATH = / usr / local / lib / node_modules / n' >> / etc / environment #TODO: defina esto para el nodo self.ipaddress = process.env. NODEJS_IP; #TODO: self.port = process.env. NODEJS_PORT || 80;
Utilice PM2 para la configuración del servidor de nodo:
#TODO: configuración de prueba PM2cd / tmp / npm install -g pm2 pm2 inicio cd / opt / nhl pm2 start NHL_work.js --node-args = "- max_old_space_size = 100 expose-gc" pm2 start webserver.js --node -args = "- max_old_space_size 100M" pm2 guardar pm2 salida de inicio 0
Paso 4: Paso 4: actualice la configuración JSON
Configure su archivo de configuración JSON para el equipo que prefiera, etc. Este archivo se encuentra en / opt / nhl GO CAPITALS! archivo JSON de configuración
El software usa un archivo JSON para configurar el hardware y el equipo que está siguiendo. El equipo se puede configurar a través del servidor web que se ejecutará, pero la configuración del hardware debe configurarse manualmente:
Aquí hay una explicación de cada valor posible:
- myteam: este es el código de 3 letras del equipo que desea seguir
- debug: los valores posibles son 1 (verdadero) o 0 (falso), y controlarán la cantidad de registro que se escribe.
-
salida: este es el método por el cual se mostrarán las puntuaciones / detalles. Los posibles valores son:
- lcd: este es el lcd 2004
- consola: esto escribirá solo en la terminal (para ejecutar la línea de comando)
- oled: soporte para pantalla oled SSD6404
-
luz: hay dos tipos de luces compatibles
- alarma: esto activará un solo GPIO para encender / apagar un transistor
- multi-led: admite un leds multicolor o múltiples
- ninguno: sin luz adjunta
- amplificador: este es el GPIO que impulsa el transistor para el amplificador