สารบัญ:

ไฟฮอกกี้ข้างเตียง NHL และ LCD: 4 ขั้นตอน (พร้อมรูปภาพ)
ไฟฮอกกี้ข้างเตียง NHL และ LCD: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไฟฮอกกี้ข้างเตียง NHL และ LCD: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไฟฮอกกี้ข้างเตียง NHL และ LCD: 4 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ของเล่นมายากล #มายากลขั้นเทพ #มายากล | tulip kunyapak | ทิวลิป กัญญาภัค 2024, พฤศจิกายน
Anonim
Image
Image
ไฟฮอกกี้ข้างเตียง NHL และ LCD
ไฟฮอกกี้ข้างเตียง NHL และ LCD

บทนำ

"NHL Light" สำหรับแฟนฮ็อกกี้ที่ต้องการติดตามทีมของพวกเขา แต่ไม่สามารถรับชมได้ทุกเกม คุณลักษณะที่ดีที่สุดคือจำลองคะแนนเป้าหมายด้วยฮอกกี้ฮอกกี้ (กำหนดเองสำหรับทีมของคุณ) และแสง

นอกจากแตรฮอกกี้และไฟแล้ว "NHL Light" ยังมีหน้าจอแสดงคะแนนของเกมปัจจุบันหรือล่าสุด เวลาเล่นเกมหรือเวลาของเกมถัดไป ตลอดจนวันที่และเวลาปัจจุบัน

"NHL Light" ทำงานบนรายการชิ้นส่วนง่ายๆ ที่ประกอบอุปกรณ์อิเล็กทรอนิกส์ได้ง่าย และโค้ดที่ใช้ได้ฟรี

คุณสมบัติ

  1. การกำหนดค่าตามหน้าเว็บสำหรับการเลือกทีมและ wifi ของคุณ
  2. เล่นเบา ๆ เมื่อทีมของคุณทำคะแนน (แม้ว่าคุณจะเป็นทีมเยือน)
  3. เล่นเสียงเพื่อประกาศการเริ่มต้นเกม
  4. เล่นเสียงประกาศบทสรุปของเกม
  5. ระบุเวลาและวันที่ของเกมถัดไป หากไม่มีเกมอยู่ในระหว่างดำเนินการ
  6. แสดงเวลาและช่วงเวลาของเกมปัจจุบัน หากเกมอยู่ในระหว่างดำเนินการ
  7. แสดงวันที่และเวลาปัจจุบัน

ขั้นตอนที่ 1: ขั้นตอนที่ 1: ประกอบชิ้นส่วนของคุณ

ขั้นตอนที่ 1: ประกอบชิ้นส่วนของคุณ
ขั้นตอนที่ 1: ประกอบชิ้นส่วนของคุณ

นี่คือรายการชิ้นส่วน

  1. ราสเบอร์รี่ Pi W*

    1. อเมซอน
    2. ฉันชอบที่จะได้รับของฉันจาก Microcenter แต่สามารถพบได้ทางออนไลน์น้อยกว่าที่อื่น
    3. $10
  2. การ์ด SD (ขั้นต่ำ 4GB)*
  3. ลำโพง - อเมซอน - ~$2 *
  4. amp - PAM8403* - Amazon - ตัวละประมาณ $1
  5. แสง - อเมซอน - ~ $ 5
  6. เคส - $1*

    1. Michael's
    2. ขอแนะนำเคสไม้เล็กๆ จากร้าน Michael's craft store แต่จะฝากถึงคุณ!
  7. จอแอลซีดี I2C 2004 - $3-7

    1. อเมซอน
    2. รหัสรองรับ LCD 3 ประเภท แต่ I2C 2004 เป็นรหัสที่ฉันได้ตัดสินว่าเป็นค่าและขนาดที่ดีที่สุด (SSD1306 ก็ได้)
  8. 2 ทรานซิสเตอร์ - 2N2222A- Amazon
  9. สายไฟอื่นๆ / บัดกรี12V
  10. แหล่งจ่ายไฟ - Amazon
  11. ตัวแปลงบั๊ก 12V -> 5V - Amazon

* มีความยืดหยุ่นในการเลือกชิ้นส่วนนี้

หมายเหตุ: คุณสามารถเริ่มโครงการนี้ได้เกือบทั้งหมดโดยใช้ Raspberry Pi ของคุณ ในขณะที่คุณรอสินค้าอื่นๆ เพื่อจัดส่ง

ขั้นตอนที่ 2: ขั้นตอนที่ 2: การเดินสายไฟและอุปกรณ์อิเล็กทรอนิกส์

ขั้นตอนที่ 2: การเดินสายไฟและอิเล็กทรอนิกส์
ขั้นตอนที่ 2: การเดินสายไฟและอิเล็กทรอนิกส์
ขั้นตอนที่ 2: การเดินสายไฟและอิเล็กทรอนิกส์
ขั้นตอนที่ 2: การเดินสายไฟและอิเล็กทรอนิกส์
  1. ประกอบไฟ

    1. เดินสายไฟให้ไฟวิ่ง 12+ กับไฟ
    2. เรียกใช้ค่าลบจากแสงผ่านทรานซิสเตอร์ตัวใดตัวหนึ่ง
    3. ตัวปล่อยของทรานซิสเตอร์ลงไปที่กราวด์
    4. ตัวเก็บประจุของทรานซิสเตอร์ไปที่ Raspberry Pi
  2. ประกอบเสียง

    1. เรียกใช้เสียงขวาหรือซ้ายจาก PI ไปยังแอมป์
    2. เรียกใช้ +5V ไปยังแอมป์
    3. รันแอมป์กราวด์ไปที่ทรานซิสเตอร์ตัวที่ 2
    4. เรียกใช้ emmetter ของทรานซิสเตอร์ตัวที่ 2 กับกราวด์
    5. เรียกใช้ตัวสะสมของทรานซิสเตอร์ไปที่ Raspberry Pi
  3. ประกอบสายไฟเข้ากับ PI
  4. นี่คือคำแนะนำ pinout สำหรับ PI (บางส่วนสามารถกำหนดค่าได้ผ่าน JSON)

    1. LCD

      1. 3 - SDA
      2. 5 - SCL
      3. 5 - วีซีซี (+5)
    2. แอมป์ 8 (GPIO 14)
    3. ไฟ 10 (GPIO15)
    4. เสียงขวา - GPIO 18

ขั้นตอนที่ 3: ขั้นตอนที่ 3: การตั้งค่าซอฟต์แวร์ระบบปฏิบัติการ

  1. เตรียม Raspberry Pi W

    1. ราสเบอร์รี่ pi ต้องใช้ Raspbian เวอร์ชันล่าสุด (หรือ Debian อื่นๆ)
    2. แนะนำให้ทำตามคำแนะนำเหล่านี้:
    3. อย่าลืมใส่ไฟล์ wifi wpa_supplicant
    4. วางไฟล์ ssh บน sdcard เพื่ออนุญาตการเข้าถึง ssh
  2. เตรียมซอฟต์แวร์บุคคลที่สาม:

    1. ฉันได้ดำเนินการตามกระบวนการนี้โดยอัตโนมัติเพื่อดึงเครื่องมือของบุคคลที่สามที่จำเป็นทั้งหมด แต่อย่าลังเลที่จะเรียกใช้ด้วยตนเอง และตรวจสอบเพื่อให้แน่ใจว่าไม่มีขั้นตอนใดที่ล้มเหลว
    2. ดาวน์โหลดและเรียกใช้สคริปต์ต่อไปนี้:https://github.com/wga22/nodejs/blob/master/nhl/mi…

นี่คือรายละเอียดของสคริปต์การติดตั้งสำหรับการตั้งค่าระบบปฏิบัติการ เป็นการดีที่สุดที่จะเรียกใช้บรรทัดเหล่านี้ด้วยตนเอง ดังนั้นคุณจึงสามารถดูข้อผิดพลาดได้

ส่วนหัวของสคริปต์:

#!/bin/sh -e#สามารถเรียกผ่าน #curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # สิ่งที่ต้องทำ: ทำให้สคริปต์นี้เป็นอัตโนมัติด้วยสิ่งที่ชอบ: curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E bash - # สิ่งที่ต้องทำ: ตั้งค่า wifi # สิ่งที่ต้องทำ: ตั้งค่า passwd และคีย์ที่ได้รับอนุญาต # หมายเหตุ:

อัปเดตซอฟต์แวร์ที่ระดับ OS:

#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 # เครือข่าย apt-get install -y bridge-utils hostapd dnsmasq apt-get clean -y

การตั้งค่าเครือข่าย เป้าหมายส่วนหนึ่งคือการอนุญาตให้กำหนดค่าระบบผ่านจุดเชื่อมต่อ เพื่อเชื่อมต่อกับ wifi ของคุณเอง แต่ยังไม่ได้รับการทดสอบอย่างสมบูรณ์ในตอนนี้ แนะนำให้ใช้วิธี wpa_supplicant ในการตั้งค่า wifi

#networking setupecho nhllight > /etc/hostname #TODO: แก้ไข /etc/hosts #TODO: setup br0 mkdir /etc/hostapd/ # note: การตั้งค่าอื่นๆ ทำได้ผ่านไฟล์ปรับแต่งและเชลล์ถูกดึงลงมาเป็นส่วนหนึ่งของการอัปเดต

อัปเดตโหนดและไลบรารีโหนด

#อัปเดต nodecd /tmp ส่งออก 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 ใบอนุญาต cp -R * /usr/local/ rm -R /tmp/node-v${nodeversion}-linux- armv6l rm /tmp/node-v${nodeversion}-linux-armv6l.tar.xz #TODO: สร้างลิงก์ sym สำหรับโหนดไบนารีหรือไม่ apt-get remove -y --purge โหนด npm nodejs

#โหนด setupmkdir /opt/nhl mkdir /opt/nhl/logs mkdir /opt/nhl/horns mkdir /opt/nhl/node_modules/

#อัพเดทโหนด

#install การพึ่งพาโหนดในไดเร็กทอรี nhl export NODE_PATH=/usr/local/lib/node_modules

#HACK - สิ่งที่ต้องทำ - แก้ไขปัญหาที่ไม่สามารถติดตั้งได้ทั่วโลก

cd /opt/nhl npm install lame # lame, lame, wont install globally cp -R /opt/nhl/node_modules/lame $NODE_PATH npm install speaker #จะไม่ติดตั้งทั่วโลก cp -R /opt/nhl/node_modules/speaker $NODE_PATH npm ติดตั้ง i2c-bus # จะไม่ติดตั้งทั่วโลก cp -R /opt/nhl/node_modules/i2c-bus $NODE_PATH npm ติดตั้ง oled-i2c-bus # จะไม่ติดตั้งทั่วโลก cp -R /opt/nhl/node_modules/oled-i2c-bus $NODE_PATH npm ติดตั้ง lcd # จะไม่ติดตั้งทั่วโลก cp -R /opt/nhl/node_modules/lcd $NODE_PATH npm ติดตั้ง lcdi2c # จะไม่ติดตั้งทั่วโลก cp -R /opt/nhl/node_modules/lcdi2c $NODE_PATH

npm ติดตั้ง oled-font-5x7 # จะไม่ติดตั้งทั่วโลก

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

npm ติดตั้ง onoff #จะไม่ติดตั้งทั่วโลก

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

#npm ติดตั้ง pm2 # จะไม่ติดตั้งทั่วโลก

#cp -R /opt/nhl/node_modules/pm2 $NODE_PATH #npm ติดตั้งด่วน #จะไม่ติดตั้งทั่วโลก #cp -R /opt/nhl/node_modules/express $NODE_PATH

# โมดูลระดับโลกใด ๆ

npm ติดตั้ง express body-parser child_process pm2 -g

ดึงรหัสล่าสุด:

#pull git codecd /opt/nhl #JSON เป็นการสร้างครั้งเดียว 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… #เรียกสคริปต์อัตโนมัติเพื่อติดตั้งอย่างอื่นสำหรับ NHL curl -sL https://raw.githubusercontent.com/wga22/nodejs /ma… | sudo -E ทุบตี -

ดาวน์โหลดแตร!

#pull hornscd /opt/nhl/horns curl -sL https://raw.githubusercontent.com/wga22/nodejs/ma… | sudo -E ทุบตี -

อัปเดตไฟล์กำหนดค่า Raspberry pi - - อาจต้องเปลี่ยนสำหรับระบบของคุณ

#config อัปเดตไฟล์#เพิ่มเสียง cp /boot/config.txt /boot/config.txt.bak printf '\ndtoverlay=pwm-2chan, pin=18, func=2, pin2=13, func2=4' >> / boot/config.txt #เปิด i2c printf '\n\ndtparam=i2c1=on\n' >> /boot/config.txt printf '\n\ndtparam=i2c_arm=on\n' >> /boot/config. txt

#สิ่งที่ต้องทำ: จำเป็นไหมcp /etc/modules /etc/modules.bak printf '\ni2c-dev\ni2c-bcm2708\n' >> /etc/modules

amixer cset numid=1

#สิ่งที่ต้องทำ: ตั้งระดับเสียง 60%?

ทำให้การทำงานอัตโนมัติเป็นไปโดยอัตโนมัติ เช่น การบูตเครื่องและการอัปเดตโค้ด:

# update rc.local# หมายเหตุ: การย้ายไฟล์ เนื่องจากไฟล์มาตรฐานมี "exit" ในบรรทัดสุดท้าย ดังนั้นจึงไม่สามารถผนวก 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: จำเป็นต้องเพิ่มบางสิ่งเพื่อทำการอัปเดตซอฟต์แวร์เป็นประจำทุกสัปดาห์เช่นนี้# บางทีเพียงแค่คัดลอกไฟล์นี้โดยตรงไปยังโฟลเดอร์ 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

อื่นๆ เช่น การตั้งเขตเวลา:

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

# อัปเดตตัวแปรสภาพแวดล้อมด้วย node_path

cp /etc/environment /etc/environment.bak printf '\nexport NODE_PATH=/usr/local/lib/node_modules\n' >> /etc/environment #TODO: กำหนดสิ่งนี้สำหรับโหนด self.ipaddress = process.env. NODEJS_IP; #สิ่งที่ต้องทำ: self.port = process.env. NODEJS_PORT || 80;

ใช้ PM2 สำหรับการตั้งค่าเซิร์ฟเวอร์โหนด:

#TODO: ทดสอบการตั้งค่า PM2cd /tmp/ npm install -g pm2 pm2 startup 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 บันทึก pm2 ออกจากการเริ่มต้นระบบ 0

ขั้นตอนที่ 4: ขั้นตอนที่ 4: อัปเดตการกำหนดค่า JSON

ตั้งค่าไฟล์การกำหนดค่า JSON ของคุณสำหรับทีมที่คุณต้องการ ฯลฯ ไฟล์นี้อยู่ใน /opt/nhl GO CAPITALS! config ไฟล์ JSON

ซอฟต์แวร์ใช้ไฟล์ JSON เพื่อกำหนดค่าฮาร์ดแวร์และทีมที่คุณกำลังติดตาม คุณสามารถตั้งค่าทีมผ่านเว็บเซิร์ฟเวอร์ที่จะทำงาน แต่การตั้งค่าฮาร์ดแวร์จะต้องตั้งค่าด้วยตนเอง:

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

นี่คือคำอธิบายของค่าที่เป็นไปได้แต่ละค่า:

  • myteam: นี่คือรหัส 3 ตัวอักษรของทีมที่คุณต้องการติดตาม
  • ดีบัก: ค่าที่เป็นไปได้คือ 1 (จริง) หรือ 0 (เท็จ) และจะควบคุมจำนวนการเขียนบันทึก
  • ผลลัพธ์: นี่คือวิธีการแสดงคะแนน/รายละเอียด ค่าที่เป็นไปได้คือ:

    • จอแอลซีดี: นี่คือจอแอลซีดีปี 2004
    • คอนโซล: สิ่งนี้จะเขียนไปยังเทอร์มินัลเท่านั้น (สำหรับการรันบรรทัดคำสั่ง)
    • oled: รองรับ SSD6404 oled display
  • แสง: รองรับไฟสองประเภท

    • สัญญาณเตือน:สิ่งนี้จะขับ GPIO ตัวเดียวสำหรับการเปิด/ปิดทรานซิสเตอร์
    • multi-led: รองรับหลายสีหรือหลาย leds
    • ไม่มี: ไม่ติดไฟ
  • amp: นี่คือ GPIO ที่ขับเคลื่อนทรานซิสเตอร์สำหรับแอมป์

แนะนำ: