Spisu treści:

Lampka nocna do hokeja NHL i wyświetlacz LCD: 4 kroki (ze zdjęciami)
Lampka nocna do hokeja NHL i wyświetlacz LCD: 4 kroki (ze zdjęciami)

Wideo: Lampka nocna do hokeja NHL i wyświetlacz LCD: 4 kroki (ze zdjęciami)

Wideo: Lampka nocna do hokeja NHL i wyświetlacz LCD: 4 kroki (ze zdjęciami)
Wideo: Hokej podwodny Bałtyckie Foki 2024, Listopad
Anonim
Image
Image
Lampka nocna do hokeja NHL i wyświetlacz LCD
Lampka nocna do hokeja NHL i wyświetlacz LCD

Wstęp

„NHL Light” jest przeznaczony dla fanów hokeja, którzy chcą śledzić swoją drużynę, ale nie mogą oglądać każdego meczu. Najlepszą cechą jest to, że symuluje wynik gola za pomocą rogu hokejowego (niestandardowego dla twojej drużyny) i światła.

Oprócz rogu hokejowego i światła, „Light NHL” posiada wyświetlacz, który wyświetla aktualny lub ostatni wynik meczu, czas gry lub czas następnego meczu oraz aktualną datę i godzinę.

„NHL Light” działa na prostej liście części, łatwej w montażu elektronice i ogólnodostępnym kodzie.

Cechy

  1. Konfiguracja oparta na stronie internetowej do wyboru zespołu i Wi-Fi
  2. Gra światłem i klaksonem, gdy twoja drużyna zdobędzie bramkę (nawet jeśli jesteś drużyną gości)
  3. Odtwarza dźwięk, aby ogłosić początek gry
  4. Odtwarza dźwięk informujący o zakończeniu gry
  5. Podaje czas i datę następnej gry, jeśli żadna gra nie jest w toku.
  6. Wyświetla aktualny czas i okres gry, jeśli gra jest w toku.
  7. Wyświetla aktualną datę i godzinę.

Krok 1: Krok 1: Złóż swoje części

Krok 1: Złóż swoje części
Krok 1: Złóż swoje części

Oto lista części.

  1. Raspberry Pi W*

    1. Amazonka
    2. Wolę kupić mój z Microcenter, ale można go znaleźć online za mniej w innych miejscach.
    3. $10
  2. Karta SD (minimum 4 GB)*
  3. głośnik - Amazon - ~ 2 USD *
  4. wzmacniacz - PAM8403* - Amazon - ~1 USD każdy
  5. jasny - Amazon - ~5 USD
  6. Etui - $1*

    1. Michaela
    2. Polecam małą drewnianą skrzynkę rzemieślniczą ze sklepu rzemieślniczego Michaela, ale zostawię tobie!
  7. I2C 2004 LCD - 3-7 USD

    1. Amazonka
    2. Kod obsługuje 3 typy wyświetlaczy LCD, ale I2C 2004 to ten, który wybrałem jako najlepszą wartość i rozmiar. (SSD1306 jest również możliwy)
  8. 2 tranzystory - 2N2222A- Amazon
  9. Inne przewody / lut 12V
  10. zasilacz - Amazon
  11. Konwerter buck 12V -> 5V - Amazon

*Istnieje elastyczność, jeśli chodzi o wybór tej części.

UWAGA: Możesz zacząć większość tego projektu od samego Raspberry Pi, czekając na wysłanie innych przedmiotów.

Krok 2: Krok 2: Okablowanie i elektronika

Krok 2: Okablowanie i elektronika
Krok 2: Okablowanie i elektronika
Krok 2: Okablowanie i elektronika
Krok 2: Okablowanie i elektronika
  1. Montaż światła
    1. Okablowanie do światła ma prowadzić 12 + do światła.
    2. Przebiegnij ujemnie od światła przez jeden z tranzystorów.
    3. Emetr tranzystora przechodzi do masy.
    4. Kolektor tranzystora trafia do Raspberry Pi.
  2. Zbierz dźwięk

    1. Uruchom prawy lub lewy dźwięk z PI do wzmacniacza
    2. Uruchom +5 V do wzmacniacza
    3. Podłącz uziemienie wzmacniacza do drugiego tranzystora.
    4. Doprowadzić emmeter drugiego tranzystora do ziemi
    5. Uruchom kolektor tranzystora do Raspberry Pi
  3. Zamontuj okablowanie do PI
  4. To są instrukcje pinout dla PI (niektóre z nich można skonfigurować za pomocą JSON)

    1. LCD

      1. 3 - SDA
      2. 5 - SCL
      3. 5 - VCC (+5)
    2. AMP 8 (GPIO 14)
    3. Światło 10 (GPIO15)
    4. Prawy dźwięk - GPIO 18

Krok 3: Krok 3: Konfiguracja oprogramowania systemu operacyjnego

  1. Przygotuj Raspberry Pi W

    1. Na rasberry pi musi być uruchomiona najnowsza wersja Raspbiana (lub innego Debiana).
    2. Zaleca się przestrzeganie tych instrukcji:
    3. Pamiętaj, aby dołączyć plik wifi wpa_supplicant.
    4. Umieść plik ssh na karcie sdcard, aby umożliwić dostęp do ssh.
  2. Przygotuj oprogramowanie innej firmy:

    1. Zautomatyzowałem ten proces, aby pobrać wszystkie potrzebne narzędzia innych firm, ale możesz je uruchamiać ręcznie i sprawdzać, aby upewnić się, że żadne kroki nie zakończą się niepowodzeniem.
    2. Pobierz i uruchom następujący skrypt:

Oto zestawienie tego, co robi skrypt instalacyjny do konfiguracji systemu operacyjnego. Najlepiej uruchamiać te linie ręcznie, aby obserwować błędy.

Nagłówek skryptu:

#!/bin/sh -e#można wywołać przez #curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: zautomatyzuj ten skrypt za pomocą czegoś takiego: curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # TODO: skonfiguruj wifi # TODO: skonfiguruj hasło i autoryzowane klucze # notatki:

Zaktualizuj oprogramowanie na poziomie systemu operacyjnego:

#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

Konfiguracja sieci. Częściowym celem tutaj było umożliwienie konfiguracji systemu za pośrednictwem punktu dostępowego, aby połączyć się z własnym Wi-Fi, ale nie zostało to jeszcze w pełni przetestowane. Obecnie zaleca się użycie metody wpa_supplicant do konfiguracji Wi-Fi.

#networking setupecho nhllight > /etc/hostname #TODO: napraw /etc/hosts #TODO: setup br0 mkdir /etc/hostapd/ # uwaga: inne ustawienia są wykonywane za pomocą plików konfiguracyjnych i powłoki ściągniętej jako część aktualizacji

Zaktualizuj Node i biblioteki Node

#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 LICENCJA cp -R * /usr/local/ rm -R /tmp/node-v${nodeversion}-linux- armv6l rm /tmp/node-v${nodeversion}-linux-armv6l.tar.xz #DO ZROBIENIA: utworzyć link sym dla binarnego węzła? apt-get remove -y --purge npm node nodejs

#Konfiguracja węzłamkdir /opt/nhl mkdir /opt/nhl/logs mkdir /opt/nhl/horns mkdir /opt/nhl/node_modules/

#aktualizacja węzła

#install zależności węzła do katalogu nhl export NODE_PATH=/usr/local/lib/node_modules

#HACK - TODO - napraw, że lame nie instaluje się globalnie

cd /opt/nhl npm install lame # lame, jest lame, nie instaluje globalnie cp -R /opt/nhl/node_modules/lame $NODE_PATH npm install speaker #nie instaluje globalnie cp -R /opt/nhl/node_modules/speaker $NODE_PATH npm zainstaluj i2c-bus # nie instaluj globalnie cp -R /opt/nhl/node_modules/i2c-bus $NODE_PATH npm instaluj oled-i2c-bus # nie instaluj globalnie cp -R /opt/nhl/node_modules/oled-i2c-bus $NODE_PATH npm instaluj lcd #wont instaluj globalnie cp -R /opt/nhl/node_modules/lcd $NODE_PATH npm instaluj lcdi2c #wont instaluj globalnie cp -R /opt/nhl/node_modules/lcdi2c $NODE_PATH

npm zainstaluj oled-font-5x7 # nie instaluj globalnie

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

npm install onoff # nie instaluje globalnie

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

#npm instaluj pm2 #nie instaluj globalnie

#cp -R /opt/nhl/node_modules/pm2 $NODE_PATH #npm instaluj express #nie instaluj globalnie #cp -R /opt/nhl/node_modules/express $NODE_PATH

# dowolne moduły globalne

npm install express body-parser child_process pm2 -g

Pobierz najnowszy kod:

#pull kodek git /opt/nhl #JSON to jednorazowe tworzenie 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… #wywołaj automatyczny skrypt, aby zainstalować wszystko inne dla NHL curl -sL https://raw.githubusercontent.com/wga22/nodejs /ma… | sudo -E bash -

Pobierz rogi!

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

zaktualizuj pliki konfiguracyjne Raspberry pi - - może wymagać zmiany dla twojego systemu

#config file updates#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 #włącz i2c printf '\n\ndtparam=i2c1=on\n' >> /boot/config.txt printf '\n\ndtparam=i2c_arm=on\n' >> /boot/config. tekst

#TODO: czy to jest potrzebne?cp /etc/modules /etc/modules.bak printf '\ni2c-dev\ni2c-bcm2708\n' >> /etc/modules

mikser cset numid=1

#TODO: ustawić głośność, 60%?

Zautomatyzuj automatyzację, taką jak uruchamianie i aktualizacje kodu:

# update rc.local# UWAGA: przeniesienie pliku, ponieważ standardowy zawiera "exit" w ostatniej linii, więc nie można po prostu dołączyć mv /etc/rc.local /etc/rc.local.bak dotknąć /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 wyjście 0' >> /etc/rc.local

#DO ZROBIENIA: muszę coś dodać, aby regularnie aktualizować oprogramowanie co tydzień, tak jak to# Może po prostu skopiuj ten plik bezpośrednio do folderu 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

Różne rzeczy, takie jak ustawianie strefy czasowej:

ln -sf /usr/share/zoneinfo/Ameryka/Nowy_Jork /etc/localtime

# zaktualizuj zmienną środowiskową za pomocą ścieżki_węzła

cp /etc/environment /etc/environment.bak printf '\nexport NODE_PATH=/usr/local/lib/node_modules\n' >> /etc/environment #TODO: zdefiniuj to dla węzła self.ipaddress = process.env. NODEJS_IP; #TODO: self.port = process.env. NODEJS_PORT || 80;

Wykorzystaj PM2 do konfiguracji serwera węzła:

#DO ZROBIENIA: konfiguracja testowa PM2cd /tmp/ npm install -g pm2 pm2 startowy cd /opt/nhl pm2 start NHL_work.js --node-args="--max_old_space_size=100 exposé-gc" pm2 start webserver.js --node -args="--max_old_space_size 100M" pm2 zapisz pm2 uruchamianie wyjście 0

Krok 4: Krok 4: Zaktualizuj konfigurację JSON

Skonfiguruj plik konfiguracyjny JSON dla preferowanego zespołu itp. Ten plik znajduje się w /opt/nhl GO CAPITALS! konfiguracyjny plik JSON

Oprogramowanie używa pliku JSON do konfiguracji sprzętu i zespołu, który obserwujesz. Zespół można ustawić za pośrednictwem działającego serwera WWW, ale konfigurację sprzętu należy ustawić ręcznie:

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

Oto wyjaśnienie każdej możliwej wartości:

  • myteam: to trzyliterowy kod drużyny, którą chcesz śledzić
  • debug: Możliwe wartości to 1 (prawda) lub 0 (fałsz) i będą kontrolować, ile rejestrów jest zapisywanych.
  • wyjście: jest to metoda, za pomocą której mają być pokazywane wyniki/szczegóły. Możliwe wartości to:

    • lcd: to jest lcd 2004
    • konsola: zapisuje tylko do terminala (do uruchomienia wiersza poleceń)
    • oled: obsługa wyświetlacza oled SSD6404
  • światło: obsługiwane są dwa rodzaje świateł

    • alarm: spowoduje to uruchomienie pojedynczego GPIO do włączania/wyłączania tranzystora
    • multi-led: obsługuje wielokolorowe lub wiele diod led
    • brak: brak podłączonego światła
  • wzmacniacz: to jest GPIO, które steruje tranzystorem dla wzmacniacza

Zalecana: