Índice:

NHL Bedside Hockey Light and LCD: 4 Steps (with pictures)
NHL Bedside Hockey Light and LCD: 4 Steps (with pictures)

Vídeo: NHL Bedside Hockey Light and LCD: 4 Steps (with pictures)

Vídeo: NHL Bedside Hockey Light and LCD: 4 Steps (with pictures)
Vídeo: GamePro Issue #23 - June 1991 2024, Novembro
Anonim
Image
Image
NHL Bedside Hockey Light e LCD
NHL Bedside Hockey Light e LCD

Introdução

O "NHL Light" é para os fãs de hóquei que querem seguir seu time, mas não podem assistir a todos os jogos. Sua melhor característica é que ele simula um gol com uma buzina de hóquei (personalizada para o seu time) e luz.

Além da buzina e da luz de hóquei, o "NHL Light" tem um visor que fornece a pontuação do jogo atual ou mais recente, a hora do jogo ou a hora do próximo jogo e a data e hora atuais.

O "NHL Light" é executado em uma lista simples de peças, que é fácil de montar eletrônicos, e código que está disponível gratuitamente.

Recursos

  1. Configuração baseada na página da web para selecionar sua equipe e wi-fi
  2. Toca luz e buzina quando seu time marca (mesmo quando você é o time visitante)
  3. Toca som para anunciar o início do jogo
  4. Toca um som para anunciar a conclusão do jogo
  5. Fornece hora e data do próximo jogo, se não houver jogo em andamento.
  6. Exibe a hora e o período do jogo atual, se o jogo estiver em andamento.
  7. Exibe a data e hora atuais.

Etapa 1: Etapa 1: montar suas peças

Etapa 1: monte suas peças
Etapa 1: monte suas peças

Aqui está uma lista de peças.

  1. Raspberry Pi W *

    1. Amazonas
    2. Eu prefiro obter o meu no Microcenter, mas posso ser encontrado online por menos em outros lugares.
    3. $10
  2. Cartão SD (mínimo de 4 GB) *
  3. alto-falante - Amazon - ~ $ 2 *
  4. amp - PAM8403 * - Amazon - ~ $ 1 cada
  5. light - Amazon - ~ $ 5
  6. Caixa - $ 1 *

    1. Michael's
    2. Eu recomendo pequena caixa de artesanato de madeira da loja de artesanato de Michael, mas vou deixar com você!
  7. I2C 2004 LCD - $ 3-7

    1. Amazonas
    2. O código suporta 3 tipos de LCDs, mas I2C 2004 é aquele que escolhi como o melhor valor e tamanho. (SSD1306 também é possível)
  8. 2 transistores - 2N2222A- Amazon
  9. Fios diversos / solda 12V
  10. fonte de alimentação - Amazon
  11. 12V -> 5V conversor buck - Amazon

* Existe flexibilidade quando se trata de selecionar esta parte.

NOTA: Você pode iniciar a maior parte deste projeto apenas com o seu Raspberry Pi, enquanto espera o envio de outros itens.

Etapa 2: Etapa 2: Fiação e eletrônicos

Etapa 2: Fiação e eletrônicos
Etapa 2: Fiação e eletrônicos
Etapa 2: Fiação e eletrônicos
Etapa 2: Fiação e eletrônicos
  1. Montar luz

    1. A fiação da luz deve passar 12+ para a luz.
    2. Execute o negativo da luz através de um dos transistores.
    3. O emissor do transistor vai para o aterramento.
    4. O coletor do transistor vai para o Raspberry Pi.
  2. Montar som

    1. Execute o som direito ou esquerdo do PI para o amplificador
    2. Execute + 5V para o amplificador
    3. Execute o amplificador aterrado para o segundo transistor.
    4. Execute o emmetter do 2º transisitor para aterrar
    5. Execute o coletor do transistor para o Raspberry Pi
  3. Monte a fiação no PI
  4. Estas são as instruções de pinagem para o PI (algumas delas são configuráveis por meio do JSON)

    1. LCD

      1. 3 - SDA
      2. 5 - SCL
      3. 5 - VCC (+5)
    2. AMP 8 (GPIO 14)
    3. Light 10 (GPIO15)
    4. Som certo - GPIO 18

Etapa 3: Etapa 3: Configuração do software do sistema operacional

  1. Prepare o Raspberry Pi W

    1. O rasberry pi deve estar executando uma versão recente do Raspbian (ou outro Debian).
    2. Recomendado para seguir estas instruções:
    3. Certifique-se de incluir o arquivo wpa_supplicant wi-fi.
    4. Coloque o arquivo ssh no sdcard para permitir o acesso ssh.
  2. Prepare o software de terceiros:

    1. Automatizei esse processo para obter todas as ferramentas de terceiros necessárias, mas sinta-se à vontade para executá-las manualmente e revisar para garantir que nenhuma etapa falhe.
    2. Baixe e execute o seguinte script:

Aqui está uma análise do que o script de instalação para configurar o sistema operacional faz. É melhor executar essas linhas manualmente, para que você possa observar os erros.

Cabeçalho do Script:

#! / bin / sh -e # pode ser chamado via #curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: automatize este script com algo como: curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: setup wifi # TODO: setup passwd e chaves autorizadas # notas:

Atualize o software no nível do sistema operacional:

# 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

Configuração de rede. Parte do objetivo aqui era permitir que o sistema fosse configurado através de um ponto de acesso, para se conectar ao seu próprio wi-fi, mas isso ainda não foi totalmente testado. Atualmente recomendado usar o método wpa_supplicant para configurar wi-fi.

#networking setupecho nhllight> / etc / hostname #TODO: conserte o / etc / hosts #TODO: setup br0 mkdir / etc / hostapd / # observação: outra configuração é feita por meio dos arquivos de configuração e do shell retirado como parte da atualização

Atualizar Nó e bibliotecas de nós

#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 LICENÇA cp -R * / usr / local / rm -R / tmp / node-v $ {nodeversion} -linux- armv6l rm /tmp/node-v${nodeversion}-linux-armv6l.tar.xz #TODO: criar link sym para o nó binário? 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 /

#update Node

#install dependências do nó no diretório nhl export NODE_PATH = / usr / local / lib / node_modules

#HACK - TODO - conserta que lame não instala globalmente

cd / opt / nhl npm instalar coxo # coxo, é coxo, não vai instalar globalmente cp -R / opt / nhl / node_modules / lame $ NODE_PATH npm instalar alto-falante # não instalar globalmente cp -R / opt / nhl / node_modules / alto-falante $ NODE_PATH npm instala i2c-bus # não instala globalmente cp -R / opt / nhl / node_modules / i2c-bus $ NODE_PATH npm instala oled-i2c-bus # não instala globalmente cp -R / opt / nhl / node_modules / oled-i2c-bus $ NODE_PATH npm instala lcd # não instala globalmente cp -R / opt / nhl / node_modules / lcd $ NODE_PATH npm instala lcdi2c # não instala globalmente cp -R / opt / nhl / node_modules / lcdi2c $ NODE_PATH

npm install oled-font-5x7 #wont install globalmente

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

npm install onoff #não instalará globalmente

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

#npm install pm2 #não instalará globalmente

#cp -R / opt / nhl / node_modules / pm2 $ NODE_PATH #npm install express # não instalará globalmente #cp -R / opt / nhl / node_modules / express $ NODE_PATH

# quaisquer módulos globais

npm install express body-parser child_process pm2 -g

Extraia o código mais recente:

#pull git codecd / opt / nhl #JSON é criação ú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 o resto para NHL curl -sL https://raw.githubusercontent.com/wga22/nodejs / ma… | sudo -E bash -

Baixe os chifres!

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

atualizar os arquivos de configuração do Raspberry pi - - pode ser necessário alterar para o seu sistema

# atualizações do arquivo de configuração # add sound 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: isso é necessário? Cp / etc / modules /etc/modules.bak printf '\ ni2c-dev / ni2c-bcm2708 / n' >> / etc / modules

amixer cset numid = 1

#TODO: definir volume, 60%?

Automatize a automação, como inicialização e atualizações de código:

# update rc.local # NOTA: mover o arquivo, porque o padrão inclui uma "saída" na última linha, então não pode simplesmente anexar 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: preciso adicionar algo para fazer atualizações semanais regulares de software como este # Talvez apenas copiar este arquivo diretamente para a pasta 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

Coisas diversas, como definir o fuso horário:

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

# atualize a variável de ambiente com node_path

cp / etc / environment /etc/environment.bak printf '\ nexport NODE_PATH = / usr / local / lib / node_modules / n' >> / etc / environment #TODO: defina isso para o nó self.ipaddress = process.env. NODEJS_IP; #TODO: self.port = process.env. NODEJS_PORT || 80;

Utilize PM2 para configuração de servidor de nó:

#TODO: teste de configuração PM2cd / tmp / npm install -g pm2 pm2 inicialização 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 salvar pm2 inicialização saída 0

Etapa 4: Etapa 4: Atualizar a configuração JSON

Defina seu arquivo de configuração JSON para a equipe de sua preferência, etc. Este arquivo está localizado em / opt / nhl GO CAPITALS! arquivo de configuração JSON

O software usa um arquivo JSON para configurar o hardware e a equipe que você está seguindo. A equipe pode ser definida por meio do servidor da web que estará em execução, mas a configuração do hardware precisa ser definida manualmente:

Aqui está uma explicação de cada valor possível:

  • myteam: este é o código de 3 letras da equipe que você deseja seguir
  • debug: os valores possíveis são 1 (verdadeiro) ou 0 (falso) e controlam quanto log é gravado.
  • saída: este é o método pelo qual as pontuações / detalhes devem ser mostrados. Os valores possíveis são:

    • lcd: este é o lcd de 2004
    • console: isso vai gravar apenas no terminal (para executar a linha de comando)
    • oled: suporte para display SSD6404 oled
  • luz: há dois tipos de luzes com suporte

    • alarme: isso irá conduzir um único GPIO para ligar / desligar um transistor
    • multi-led: suporta leds multicoloridos ou múltiplos
    • nenhum: nenhuma luz anexada
  • amp: este é o GPIO que aciona o transistor para o amp

Recomendado: