Sommario:

NHL Comodino Hockey Light e LCD: 4 passaggi (con immagini)
NHL Comodino Hockey Light e LCD: 4 passaggi (con immagini)

Video: NHL Comodino Hockey Light e LCD: 4 passaggi (con immagini)

Video: NHL Comodino Hockey Light e LCD: 4 passaggi (con immagini)
Video: DIY Finger Hockey Game / Изготовление деревянных игрушек / Изготовление метательных дисков 2024, Novembre
Anonim
Image
Image
NHL Comodino Hockey Luce e LCD
NHL Comodino Hockey Luce e LCD

introduzione

La "NHL Light" è per gli appassionati di hockey che vogliono seguire la loro squadra, ma non possono guardare tutte le partite. La sua caratteristica migliore è che simula un goal con un corno da hockey (personalizzato per la tua squadra) e leggero.

Oltre al corno e alla luce dell'hockey, "NHL Light", ha un display che fornisce il punteggio della partita corrente o più recente, l'ora della partita o l'ora della partita successiva e la data e l'ora correnti.

La "NHL Light" funziona su un semplice elenco di parti, componenti elettronici facili da assemblare e codice disponibile gratuitamente.

Caratteristiche

  1. Configurazione basata su pagina web per selezionare la tua squadra e il wifi
  2. Suona la luce e il clacson quando la tua squadra segna (anche quando sei la squadra in trasferta)
  3. Riproduce il suono per annunciare l'inizio del gioco
  4. Riproduce un suono per annunciare la conclusione del gioco
  5. Fornisce l'ora e la data della prossima partita, se nessuna partita è in corso.
  6. Visualizza l'ora e il periodo di gioco correnti, se il gioco è in corso.
  7. Visualizza la data e l'ora correnti.

Passaggio 1: Passaggio 1: assemblare le parti

Passaggio 1: assemblare le parti
Passaggio 1: assemblare le parti

Ecco un elenco delle parti.

  1. Lampone Pi W*

    1. Amazon
    2. Preferisco ottenere il mio da Microcenter, ma può essere trovato online per meno in altri posti.
    3. $10
  2. Scheda SD (minimo 4 GB)*
  3. altoparlante - Amazon - ~$2 *
  4. amplificatore - PAM8403* - Amazon - ~$1 ciascuno
  5. luce - Amazon - ~$5
  6. Caso - $ 1*

    1. di Michael
    2. Raccomando una piccola custodia artigianale in legno dal negozio di artigianato di Michael, ma lascerò a te!
  7. LCD I2C 2004 - $3-7

    1. Amazon
    2. Il codice supporta 3 tipi di LCD, ma I2C 2004 è quello che ho scelto come miglior valore e dimensione. (SSD1306 è anche possibile)
  8. 2 transistor - 2N2222A- Amazon
  9. Cavi vari / saldatura12V
  10. alimentatore - Amazon
  11. Convertitore buck 12V -> 5V - Amazon

* C'è flessibilità quando si tratta di selezionare questa parte.

NOTA: puoi iniziare la maggior parte di questo progetto solo con il tuo Raspberry Pi, mentre aspetti che vengano spediti altri articoli.

Passaggio 2: Passaggio 2: cablaggio ed elettronica

Passaggio 2: cablaggio ed elettronica
Passaggio 2: cablaggio ed elettronica
Passaggio 2: cablaggio ed elettronica
Passaggio 2: cablaggio ed elettronica
  1. Assemblare la luce

    1. Il cablaggio per la luce deve eseguire 12 + alla luce.
    2. Esegui negativo dalla luce attraverso uno dei transistor.
    3. L'emettitore del transistor va a massa.
    4. Il collettore del transistor va al Raspberry Pi.
  2. Assemblare il suono

    1. Esegui il suono destro o sinistro dal PI all'amplificatore
    2. Esegui +5V sull'amplificatore
    3. Esegui la massa dell'amplificatore sul secondo transistor.
    4. Portare a massa l'emettitore del 2° transistor
    5. Esegui il collettore del transistor sul Raspberry Pi
  3. Assemblare il cablaggio al PI
  4. Queste sono le istruzioni di pinout per il PI (alcune di queste sono configurabili tramite JSON)

    1. LCD

      1. 3 - SDA
      2. 5 - SCL
      3. 5 - CCV (+5)
    2. AMP 8 (GPIO 14)
    3. Luce 10 (GPIO15)
    4. Audio corretto - GPIO 18

Passaggio 3: Passaggio 3: configurazione del software del sistema operativo

  1. Prepara il Raspberry Pi W

    1. Il rasberry pi deve eseguire una versione recente di Raspbian (o altro Debian).
    2. Si consiglia di seguire queste istruzioni:
    3. Assicurati di includere il file wifi wpa_supplicant.
    4. Metti il file ssh sulla sdcard per consentire l'accesso ssh.
  2. Preparare il software di terze parti:

    1. Ho automatizzato questo processo per estrarre tutti gli strumenti di terze parti necessari, ma sentiti libero di eseguirli manualmente e rivedi per assicurarmi che nessun passaggio fallisca.
    2. Scarica ed esegui il seguente script:

Ecco una ripartizione di ciò che fa lo script di installazione per la configurazione del sistema operativo. È meglio eseguire queste righe manualmente, in modo da poter controllare gli errori.

Intestazione dello script:

#!/bin/sh -e#può essere chiamato tramite #curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: automatizza questo script con qualcosa del tipo: curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: setup wifi # TODO: setup passwd e chiavi autorizzate # note:

Aggiorna il software a livello di sistema operativo:

#apt-get stuff(apt-get update && apt-get -y upgrade) > /dev/null apt-get dist-upgrade -y #General Dev 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

Configurazione della rete. Parte dell'obiettivo qui era consentire la configurazione del sistema tramite un punto di accesso, per connettersi al proprio wifi, ma questo non è stato ancora completamente testato. Attualmente consigliato di utilizzare il metodo wpa_supplicant per configurare il wifi.

#networking setupecho nhllight > /etc/hostname #TODO: correzione di /etc/hosts #TODO: setup br0 mkdir /etc/hostapd/ # nota: l'altra configurazione viene eseguita tramite i file di configurazione e la shell scaricati come parte dell'aggiornamento

Aggiorna nodi e librerie di nodi

#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 LICENSE cp -R * /usr/local/ rm -R /tmp/node-v${nodeversion}-linux- armv6l rm /tmp/node-v${nodeversion}-linux-armv6l.tar.xz #TODO: creare un collegamento simbolico per il nodo binario? apt-get remove -y --purge npm node nodejs

#Node setupmkdir /opt/nhl mkdir /opt/nhl/logs mkdir /opt/nhl/horns mkdir /opt/nhl/node_modules/

#aggiornamento del nodo

#install le dipendenze del nodo nella directory nhl export NODE_PATH=/usr/local/lib/node_modules

#HACK - TODO - correggi quello zoppo che non si installa a livello globale

cd /opt/nhl npm install lame # lame, is zoppo, non installerà globalmente cp -R /opt/nhl/node_modules/lame $NODE_PATH npm install speaker #non installerà globalmente cp -R /opt/nhl/node_modules/speaker $NODE_PATH npm install i2c-bus #non installerà globalmente cp -R /opt/nhl/node_modules/i2c-bus $NODE_PATH npm install oled-i2c-bus #non installerà globalmente cp -R /opt/nhl/node_modules/oled-i2c-bus $NODE_PATH npm install lcd #non installerà globalmente cp -R /opt/nhl/node_modules/lcd $NODE_PATH npm install lcdi2c #non installerà globalmente cp -R /opt/nhl/node_modules/lcdi2c $NODE_PATH

npm install oled-font-5x7 #non installerà globalmente

cp -R /opt/nhl/node_modules/oled-font-5x7 $NODE_PATH

npm install onoff #wont install globalmente

cp -R /opt/nhl/node_modules/onoff $NODE_PATH

#npm install pm2 #non installerà globalmente

#cp -R /opt/nhl/node_modules/pm2 $NODE_PATH #npm install express #non installerà globalmente #cp -R /opt/nhl/node_modules/express $NODE_PATH

# qualsiasi modulo globale

npm install express body-parser child_process pm2 -g

Tira l'ultimo codice:

#pull git codecd /opt/nhl #JSON è una creazione una tantum 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 automatizzato per installare tutto il resto per NHL curl -sL https://raw.githubusercontent.com/wga22/nodejs /ma… | sudo -E bash -

Scarica le corna!

#pull hornscd /opt/nhl/horns curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash -

aggiorna i file di configurazione di Raspberry pi - - potrebbe essere necessario cambiare per il tuo sistema

#aggiornamenti file di configurazione#aggiungi suono cp /boot/config.txt /boot/config.txt.bak printf '\ndtoverlay=pwm-2chan, pin=18, func=2, pin2=13, func2=4' >> / boot/config.txt #attiva i2c printf '\n\ndtparam=i2c1=on\n' >> /boot/config.txt printf '\n\ndtparam=i2c_arm=on\n' >> /boot/config. testo

#TODO: è necessario?cp /etc/modules /etc/modules.bak printf '\ni2c-dev\ni2c-bcm2708\n' >> /etc/modules

amixer cset numid=1

#TODO: imposta il volume, 60%?

Automatizza l'automazione, come l'avvio e gli aggiornamenti del codice:

# update rc.local# NOTA: spostando il file, perché quello standard include un "exit" nell'ultima riga, quindi non può semplicemente aggiungere 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 exit 0' >> /etc/rc.local

#TODO: devo aggiungere qualcosa per fare i regolari aggiornamenti software settimanali come questo# Forse basta copiare questo file direttamente nella cartella 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

Cose varie, come l'impostazione del fuso orario:

ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime

# aggiorna la variabile di ambiente con node_path

cp /etc/environment /etc/environment.bak printf '\nexport NODE_PATH=/usr/local/lib/node_modules\n' >> /etc/environment #TODO: definiscilo per il nodo self.ipaddress = process.env. NODEJS_IP; #TODO: self.port = process.env. NODEJS_PORT || 80;

Utilizzare PM2 per la configurazione del server del nodo:

#TODO: test setup PM2cd /tmp/ npm install -g pm2 pm2 startup cd /opt/nhl pm2 start NHL_work.js --node-args="--max_old_space_size=100 require-gc" pm2 start webserver.js --node -args="--max_old_space_size 100M" pm2 salva pm2 avvio uscita 0

Passaggio 4: Passaggio 4: aggiornare la configurazione JSON

Imposta il tuo file di configurazione JSON per la squadra che preferisci, ecc. Questo file si trova in /opt/nhl GO CAPITALS! file JSON di configurazione

Il software utilizza un file JSON per configurare l'hardware e il team che stai seguendo. Il team può essere impostato tramite il server web che sarà in esecuzione, ma la configurazione dell'hardware deve essere impostata manualmente:

{ "myteam": "WSH", "debug":"1", "output": "lcd", "light": {"type":"multiled", "gpio":["10", "13"] }, "amp": {"gpio":"14"}, "lcdaddress": "0x3F", "lightid": "22" }

Ecco una spiegazione di ogni possibile valore:

  • myteam: questo è il codice di 3 lettere della squadra che vuoi seguire
  • debug: i valori possibili sono 1 (vero) o 0 (falso) e controlleranno la quantità di registrazione scritta.
  • output: questo è il metodo con cui devono essere visualizzati i punteggi/dettagli. I valori possibili sono:

    • lcd: questo è l'LCD del 2004
    • console: questo scriverà solo sul terminale (per l'esecuzione della riga di comando)
    • oled: supporto per display oled SSD6404
  • luce: sono supportati due tipi di luci

    • allarme: questo guiderà un singolo GPIO per accendere/spegnere un transistor
    • multi-led: supporta un LED multicolore o multiplo
    • nessuno: nessuna luce collegata
  • amplificatore: questo è il GPIO che pilota il transistor per l'amplificatore

Consigliato: