สารบัญ:
วีดีโอ: ไฟฮอกกี้ข้างเตียง NHL และ LCD: 4 ขั้นตอน (พร้อมรูปภาพ)
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
บทนำ
"NHL Light" สำหรับแฟนฮ็อกกี้ที่ต้องการติดตามทีมของพวกเขา แต่ไม่สามารถรับชมได้ทุกเกม คุณลักษณะที่ดีที่สุดคือจำลองคะแนนเป้าหมายด้วยฮอกกี้ฮอกกี้ (กำหนดเองสำหรับทีมของคุณ) และแสง
นอกจากแตรฮอกกี้และไฟแล้ว "NHL Light" ยังมีหน้าจอแสดงคะแนนของเกมปัจจุบันหรือล่าสุด เวลาเล่นเกมหรือเวลาของเกมถัดไป ตลอดจนวันที่และเวลาปัจจุบัน
"NHL Light" ทำงานบนรายการชิ้นส่วนง่ายๆ ที่ประกอบอุปกรณ์อิเล็กทรอนิกส์ได้ง่าย และโค้ดที่ใช้ได้ฟรี
คุณสมบัติ
- การกำหนดค่าตามหน้าเว็บสำหรับการเลือกทีมและ wifi ของคุณ
- เล่นเบา ๆ เมื่อทีมของคุณทำคะแนน (แม้ว่าคุณจะเป็นทีมเยือน)
- เล่นเสียงเพื่อประกาศการเริ่มต้นเกม
- เล่นเสียงประกาศบทสรุปของเกม
- ระบุเวลาและวันที่ของเกมถัดไป หากไม่มีเกมอยู่ในระหว่างดำเนินการ
- แสดงเวลาและช่วงเวลาของเกมปัจจุบัน หากเกมอยู่ในระหว่างดำเนินการ
- แสดงวันที่และเวลาปัจจุบัน
ขั้นตอนที่ 1: ขั้นตอนที่ 1: ประกอบชิ้นส่วนของคุณ
นี่คือรายการชิ้นส่วน
-
ราสเบอร์รี่ Pi W*
- อเมซอน
- ฉันชอบที่จะได้รับของฉันจาก Microcenter แต่สามารถพบได้ทางออนไลน์น้อยกว่าที่อื่น
- $10
- การ์ด SD (ขั้นต่ำ 4GB)*
- ลำโพง - อเมซอน - ~$2 *
- amp - PAM8403* - Amazon - ตัวละประมาณ $1
- แสง - อเมซอน - ~ $ 5
-
เคส - $1*
- Michael's
- ขอแนะนำเคสไม้เล็กๆ จากร้าน Michael's craft store แต่จะฝากถึงคุณ!
-
จอแอลซีดี I2C 2004 - $3-7
- อเมซอน
- รหัสรองรับ LCD 3 ประเภท แต่ I2C 2004 เป็นรหัสที่ฉันได้ตัดสินว่าเป็นค่าและขนาดที่ดีที่สุด (SSD1306 ก็ได้)
- 2 ทรานซิสเตอร์ - 2N2222A- Amazon
- สายไฟอื่นๆ / บัดกรี12V
- แหล่งจ่ายไฟ - Amazon
- ตัวแปลงบั๊ก 12V -> 5V - Amazon
* มีความยืดหยุ่นในการเลือกชิ้นส่วนนี้
หมายเหตุ: คุณสามารถเริ่มโครงการนี้ได้เกือบทั้งหมดโดยใช้ Raspberry Pi ของคุณ ในขณะที่คุณรอสินค้าอื่นๆ เพื่อจัดส่ง
ขั้นตอนที่ 2: ขั้นตอนที่ 2: การเดินสายไฟและอุปกรณ์อิเล็กทรอนิกส์
-
ประกอบไฟ
- เดินสายไฟให้ไฟวิ่ง 12+ กับไฟ
- เรียกใช้ค่าลบจากแสงผ่านทรานซิสเตอร์ตัวใดตัวหนึ่ง
- ตัวปล่อยของทรานซิสเตอร์ลงไปที่กราวด์
- ตัวเก็บประจุของทรานซิสเตอร์ไปที่ Raspberry Pi
-
ประกอบเสียง
- เรียกใช้เสียงขวาหรือซ้ายจาก PI ไปยังแอมป์
- เรียกใช้ +5V ไปยังแอมป์
- รันแอมป์กราวด์ไปที่ทรานซิสเตอร์ตัวที่ 2
- เรียกใช้ emmetter ของทรานซิสเตอร์ตัวที่ 2 กับกราวด์
- เรียกใช้ตัวสะสมของทรานซิสเตอร์ไปที่ Raspberry Pi
- ประกอบสายไฟเข้ากับ PI
-
นี่คือคำแนะนำ pinout สำหรับ PI (บางส่วนสามารถกำหนดค่าได้ผ่าน JSON)
-
LCD
- 3 - SDA
- 5 - SCL
- 5 - วีซีซี (+5)
- แอมป์ 8 (GPIO 14)
- ไฟ 10 (GPIO15)
- เสียงขวา - GPIO 18
-
ขั้นตอนที่ 3: ขั้นตอนที่ 3: การตั้งค่าซอฟต์แวร์ระบบปฏิบัติการ
-
เตรียม Raspberry Pi W
- ราสเบอร์รี่ pi ต้องใช้ Raspbian เวอร์ชันล่าสุด (หรือ Debian อื่นๆ)
- แนะนำให้ทำตามคำแนะนำเหล่านี้:
- อย่าลืมใส่ไฟล์ wifi wpa_supplicant
- วางไฟล์ ssh บน sdcard เพื่ออนุญาตการเข้าถึง ssh
-
เตรียมซอฟต์แวร์บุคคลที่สาม:
- ฉันได้ดำเนินการตามกระบวนการนี้โดยอัตโนมัติเพื่อดึงเครื่องมือของบุคคลที่สามที่จำเป็นทั้งหมด แต่อย่าลังเลที่จะเรียกใช้ด้วยตนเอง และตรวจสอบเพื่อให้แน่ใจว่าไม่มีขั้นตอนใดที่ล้มเหลว
- ดาวน์โหลดและเรียกใช้สคริปต์ต่อไปนี้: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 ที่ขับเคลื่อนทรานซิสเตอร์สำหรับแอมป์