สำคัญ
หากคุณกำลังอัพเกรดจาก v7 เป็น v8 โปรดอย่าลืมอ่านส่วนการใช้งาน เนื่องจากคำสั่งเริ่มต้นมีการเปลี่ยนแปลง!
ป้ายบอกคะแนน LED สำหรับ Major League Baseball แสดงกระดานคะแนนสดสำหรับเกมของทีมของคุณในวันนั้น
ต้องใช้ Raspberry Pi และบอร์ด LED ที่เชื่อมต่อผ่านพิน GPIO
บอร์ดที่รองรับในปัจจุบัน:
หากคุณต้องการดูการรองรับสำหรับขนาดบอร์ดชุดอื่น หรือมีข้อเสนอแนะในการออกแบบสำหรับขนาดที่มีอยู่แล้ว โปรดแจ้งปัญหา!
Pi มีปัญหาที่ทราบแล้ว
มันสามารถแสดงเกมสดในการดำเนินการ และเลือกที่จะหมุนเวียนทุกๆ 15 วินาทีผ่านแต่ละเกมของวัน
คณะกรรมการจะรีเฟรชรายชื่อเกมทุกๆ 15 นาที
หากเกมยังไม่เริ่ม หน้าจอก่อนเกมจะแสดงขึ้นพร้อมกับเหยือกเริ่มต้นที่เป็นไปได้
สามารถแสดงอันดับของดิวิชั่นที่จัดให้ได้ เนื่องจากบอร์ดขนาด 32x32 มีขนาดเล็กเกินไปที่จะแสดงการชนะและแพ้พร้อมกัน การชนะและแพ้จะสลับกันบนกระดานทุกๆ 5 วินาที คุณยังสามารถระบุ "NL Wild Card" หรือ "AL Wild Card" เป็น 'ดิวิชั่น' เพื่อดูทีม 5 อันดับแรกในการแข่งขันไวด์การ์ดของแต่ละลีกได้
ดูหน้าวิกิสำหรับโครงการต้นฉบับสำหรับคำแนะนำทีละขั้นตอน README นี้มุ่งเน้นไปที่ซอฟต์แวร์ MLB เป็นหลัก แต่สำหรับผู้ที่มาจาก Reddit หรือที่อื่น ๆ ที่ไม่เคยสร้างสิ่งต่าง ๆ ด้วย Raspberry Pi สิ่งนี้จะช่วยให้คุณก้าวต่อไปได้
ตัวอย่างสูตรการผลิต (BOM) อยู่ที่นี่
คุณต้องใช้ Git เพื่อโคลน repo นี้และ PIP เพื่อติดตั้งซอฟต์แวร์กระดานคะแนน
sudo apt-get update
sudo apt-get install git python3-pip
กระบวนการติดตั้งนี้จะใช้เวลาประมาณ 10-15 นาที Raspberry Pis ไม่ใช่คอมพิวเตอร์ที่เร็วที่สุด ดังนั้นโปรดอดทนรอ!
git clone https://github.com/MLB-LED-Scoreboard/mlb-led-scoreboard.git
cd mlb-led-scoreboard/
sudo ./install.sh
สิ่งนี้จะสร้าง Python Virtual Environment และติดตั้งการขึ้นต่อกันที่จำเป็นทั้งหมด สภาพแวดล้อมเสมือนจริงจะอยู่ที่ mlb-led-scoreboard/venv/
สิ่งนี้จะติดตั้งไบนารี rgbmatrix ซึ่งเราได้รับจากไลบรารีโอเพ่นซอร์สอื่น โดยจะควบคุมการเรนเดอร์จริงของกระดานคะแนนบน LED หากคุณสงสัย คุณสามารถอ่านเอกสารประกอบเกี่ยวกับวิธีการทำงานของระดับล่างทั้งหมดได้
นอกจากนี้ยังจะติดตั้งไลบรารี Python ต่อไปนี้ซึ่งจำเป็นสำหรับบางส่วนของกระดานคะแนนในการทำงาน
มีการตั้งค่าสถานะเพิ่มเติมสำหรับการปรับแต่งการติดตั้งของคุณ:
-a, --skip-all Skip all dependencies and config installation (equivalent to -c -p -m).
-c, --skip-config Skip updating JSON configuration files.
-m, --skip-matrix Skip building matrix driver dependency. Video display will default to emulator mode.
-p, --skip-python Skip Python 3 installation. Requires manual Python 3 setup if not already installed.
-v, --no-venv Do not create a virtual environment for the dependencies.
-e, --emulator-only Do not install dependencies under sudo. Skips building matrix dependencies (equivalent to -m)
-d, --driver Specify a branch name or commit SHA for the rpi-rgb-led-matrix library. (Optional. Defaults may change.)
-h, --help Display this help message
สคริปต์การติดตั้งได้รับการออกแบบสำหรับฮาร์ดแวร์ฟิสิคัล เมื่อพยายามติดตั้งบนแพลตฟอร์มอื่น คุณไม่ควรใช้ sudo
เพื่อติดตั้งการขึ้นต่อกัน นอกจากนี้ คุณยังสามารถส่งผ่านอาร์กิวเมนต์ --emulator-only
เพื่อข้ามขั้นตอนการติดตั้งที่ไม่จำเป็นได้
sh install.sh --emulator-only
git pull
ในโฟลเดอร์ mlb-led-scoreboard เพื่อดึงข้อมูลการเปลี่ยนแปลงล่าสุด หลายครั้งก็เพียงพอแล้ว แต่ถ้ามีอะไรเสียหาย:sudo ./install.sh
อีกครั้ง การอ้างอิงเพิ่มเติมใดๆ ที่เพิ่มเข้ามาพร้อมกับการอัปเดตจะถูกติดตั้งด้วยวิธีนี้ หากคุณกำลังจะย้ายไปยังเวอร์ชันหลักรุ่นใหม่ ให้ตอบ "Y" เพื่อให้เวอร์ชันดังกล่าวสร้างไฟล์กำหนดค่าใหม่ให้กับคุณนั่นควรจะเป็นอย่างนั้น! เวอร์ชันล่าสุดของคุณควรใช้งานได้กับฟีเจอร์ใหม่ที่เพิ่งเพิ่มเข้ามา
คุณสามารถตรวจสอบข้อมูลเวอร์ชันสำหรับการติดตั้ง mlb-led-scoreboard ได้โดยการรัน python3 version.py
ซอฟต์แวร์เวอร์ชันล่าสุดมีให้ที่นี่
ตรวจสอบให้แน่ใจว่าเขตเวลาของ Raspberry Pi ได้รับการกำหนดค่าตามเขตเวลาท้องถิ่นของคุณ พวกเขามักจะมีเวลาลอนดอนเป็นค่าเริ่มต้น คุณสามารถเปลี่ยนเขตเวลาของ raspberry pi ของคุณได้โดยการเรียกใช้ sudo raspi-config
สคริปต์การติดตั้งจะเพิ่มบรรทัดที่ด้านบนของ main.py
เพื่อรับสภาพแวดล้อมเสมือนโดยอัตโนมัติ ซึ่งหมายความว่าไม่จำเป็นต้องเปิดใช้งานสภาพแวดล้อมอีกครั้ง ( source ./venv/bin/activate
)
sudo ./main.py
การรันในฐานะรูทนั้นเป็นสิ่งจำเป็น 100% ไม่เช่นนั้นเมทริกซ์จะไม่แสดงผล
ผู้ใช้ Adafruit HAT/Bonnet: คุณต้องระบุการตั้งค่าสถานะบรรทัดคำสั่ง:
sudo ./main.py --led-gpio-mapping="adafruit-hat"
ดูส่วนธงด้านล่างสำหรับธงเพิ่มเติมที่คุณสามารถเลือกระบุได้
ป้ายบอกคะแนนสามารถทำงานบนแพลตฟอร์มอื่นได้โดยใช้การจำลองซอฟต์แวร์ผ่าน RGBMatrixEmulator
เมื่อทำงานผ่านโปรแกรมจำลอง คุณไม่จำเป็นต้องเพิ่มคำสั่งเริ่มต้นด้วย sudo
:
./main.py
คุณยังสามารถบังคับให้กระดานคะแนนเข้าสู่โหมดการจำลองได้โดยใช้แฟล็ก --emulated
:
./main.py --emulated
เมื่อทำงานในโหมดจำลอง คุณสามารถใช้แฟล็กบรรทัดคำสั่งที่มีอยู่ต่อไปได้ตามปกติ
ดู RGBMatrixEmulator สำหรับตัวเลือกการกำหนดค่าโปรแกรมจำลอง
ไฟล์ config.json.example
เริ่มต้นจะรวมไว้เพื่อใช้อ้างอิง คัดลอกไฟล์นี้ไปที่ config.json
และแก้ไขค่าตามต้องการ
"preferred": Options for team and division preference
"teams" Array An array of preferred teams. The first team in the list will be used as your 'favorite' team. Example: ["Cubs", "Brewers"]
"divisions" Array An array of preferred divisions that will be rotated through in the order they are entered. Example: ["NL Central", "AL Central"]
"news_ticker": Options for displaying a nice clock/weather/news ticker screen
"always_display" Bool Display the news ticker screen at all times. Supercedes the standings setting.
"team_offday" Bool Display the news ticker when your prefered team is on an offday.
"preferred_teams" Bool Include headlines from your list of preferred teams. Will only use the first 3 teams listed in your preferred teams.
"display_no_games_live" Bool Display news and weather when none of your games are currently live.
"traderumors" Bool Include headlines from mlbtraderumors.com for your list of preferred teams. Will only use the first 3 teams listed in your preferred teams.
"mlb_news" Bool Include MLB's frontpage news.
"countdowns" Bool Include various countdowns in the ticker.
"date" Bool Display today's date to start the ticker. This will always be enabled if no other ticker options are.
"date_format" String Display the date with a given format. You can check all of the date formatting options at https://strftime.org
"standings": Options for displaying standings for a division
"always_display" Bool Display standings for your preferred divisions.
"mlb_offday" Bool Display standings for your preferred divisions when there are no games on the current day.
"team_offday" Bool Display standings for your preferred divisions when the one of your preferred teams is not playing on the current day.
"display_no_games_live" Bool Display standings when none of your games are currently live.
"rotation": Options for rotation through the day's games
"enabled" Bool Rotate through each game of the day according to the configured `rates`.
"scroll_until_finished" Bool If scrolling text takes longer than the rotation rate, wait to rotate until scrolling is done.
"only_preferred" Bool Only rotate through games in your preferred teams.
"only_live" Bool Only rotate through games which are currently playing. Can be composed with `only_preferred`.
"rates" Dict Dictionary of Floats. Each type of screen can use a different rotation rate. Valid types: "live", "pregame", "final".
Float (DEPRECATED) A Float can be used to set all screen types to the same rotate rate.
"while_preferred_team_live": Options for rotating between screens while one of your preferred teams is live
"enabled" Bool Enable rotation while a preferred team is live.
"during_inning_breaks" Bool Enable rotation while a preferred team is live during an inning break.
"weather": Options for retrieving the weather
"apikey" String An API key is required to use the weather service.
You can get one for free at Open Weather Map (https://home.openweathermap.org/users/sign_up).
"location" String The `{city name},{state code},{country code}` according to ISO-3166 standards (https://www.iso.org/obp/ui/#search).
Check out the OpenWeather documentation (https://openweathermap.org/current#name) for more info.
Ex: `"Chicago,il,us"`
"metric_units" Bool Change the weather display to metric units (Celsius, m/s) instead of imperial (Fahrenheit, MPH).
"time_format" String Sets the preferred hour format for displaying time. Accepted values are "12h" or "24h" depending on which you prefer.
"end_of_day" String A 24-hour time you wish to consider the end of the previous day before starting to display the current day's games. Uses local time from your Pi.
"full_team_names" Bool If enabled on a board width >= 64, displays the full team name on the scoreboard instead of their abbreviation. This config option is ignored on 32-wide boards.
"short_team_names_for_runs_hits" Bool If full_team_names is enabled, will use abreviated team names when runs or hits > 9 to prevent overflow of long names into RHE.
"scrolling_speed" Integer Sets how fast the scrolling text scrolls. Supports an integer between 0 and 6.
"preferred_game_update_delay_in_10s_of_seconds" Integer Sets how long to wait before updating the preferred game. Must be positive.
"pregame_weather" Bool If enabled, will display the weather for the game's location on the pregame screen.
"debug" Bool Game and other debug data is written to your console.
"demo_date" String A date in the format YYYY-MM-DD from which to pull data to demonstrate the scoreboard. A value of `false` will disable demo mode.
การรัน/การชม/ข้อผิดพลาด - การรันจะแสดงบนหน้าจอเกมเสมอ แต่คุณสามารถเปิดใช้งานหรือปรับระยะห่างของการแสดงผล "การรัน การกระทบ ข้อผิดพลาด" ดูรายละเอียดไฟล์พิกัด readme
ข้อมูลสนาม - ข้อมูลสนามสามารถแสดงบนหน้าจอเกมได้ ดูไฟล์พิกัด readme เพื่อดูรายละเอียด นอกจากนี้ สามารถเปลี่ยนคำอธิบายระดับเสียง short
และ long
ได้ใน data/pitches.py
ข้อมูลการเล่นก่อนหน้า - ข้อมูลสำหรับการเล่นครั้งก่อนสามารถแสดงบนหน้าจอเกมได้ ดูไฟล์พิกัด readme สำหรับรายละเอียด คำอธิบายการเล่นแบบสั้นและแบบยาวสามารถเปลี่ยนแปลงได้ใน data/plays.py
คุณสามารถกำหนดค่าเมทริกซ์ LED ของคุณด้วยแฟล็กเดียวกับที่ใช้ในไลบรารี rpi-rgb-led-matrix ข้อมูลเพิ่มเติมเกี่ยวกับข้อโต้แย้งเหล่านี้สามารถพบได้ในเอกสารประกอบของห้องสมุด
--led-rows Display rows. 16 for 16x32, 32 for 32x32. (Default: 32)
--led-cols Panel columns. Typically 32 or 64. (Default: 32)
--led-chain Daisy-chained boards. (Default: 1)
--led-parallel For Plus-models or RPi2: parallel chains. 1..3. (Default: 1)
--led-pwm-bits Bits used for PWM. Range 1..11. (Default: 11)
--led-brightness Sets brightness level. Range: 1..100. (Default: 100)
--led-gpio-mapping Hardware Mapping: regular, adafruit-hat, adafruit-hat-pwm
--led-scan-mode Progressive or interlaced scan. 0 = Progressive, 1 = Interlaced. (Default: 1)
--led-pwm-lsb-nanosecond Base time-unit for the on-time in the lowest significant bit in nanoseconds. (Default: 130)
--led-show-refresh Shows the current refresh rate of the LED panel.
--led-slowdown-gpio Slow down writing to GPIO. Range: 0..4. (Default: 1)
--led-no-hardware-pulse Don't use hardware pin-pulse generation.
--led-rgb-sequence Switch if your matrix has led colors swapped. (Default: RGB)
--led-pixel-mapper Apply pixel mappers. e.g Rotate:90, U-mapper
--led-row-addr-type 0 = default; 1 = AB-addressed panels. (Default: 0)
--led-multiplexing Multiplexing type: 0 = direct; 1 = strip; 2 = checker; 3 = spiral; 4 = Z-strip; 5 = ZnMirrorZStripe; 6 = coreman; 7 = Kaler2Scan; 8 = ZStripeUneven. (Default: 0)
--led-limit-refresh Limit refresh rate to this frequency in Hz. Useful to keep a constant refresh rate on loaded system. 0=no limit. Default: 0
--led-pwm-dither-bits Time dithering of lower bits (Default: 0)
--config Specify a configuration file name other, omitting json xtn (Default: config)
--emulated Force the scoreboard to run in software emulation mode.
--drop-privileges Force the matrix driver to drop root privileges after setup. (Default: true)
หากคุณรู้สึกอยากผจญภัย (และเราขอแนะนำอย่างยิ่ง!) ส่วนต่างๆ ด้านล่างจะสรุปว่าคุณสามารถปรับแต่งป้ายบอกคะแนนในแบบของคุณอย่างแท้จริงและทำให้เป็นของคุณเองได้อย่างไร!
คุณมีความสามารถในการปรับแต่งวิธีการวางสิ่งต่าง ๆ บนกระดานได้ (บางทีคุณอาจต้องการเห็นข้อความเลื่อนสำหรับเกมก่อนสูงขึ้นหรือต่ำลงเล็กน้อย) ดู coordinates/
ไดเรกทอรีสำหรับข้อมูลเพิ่มเติม
คุณสามารถปรับแต่งสีของทุกสิ่งบนกระดานได้ ดูไดเรกทอรี colors/
สำหรับข้อมูลเพิ่มเติม
ป้ายบอกคะแนนนี้จะใช้ API สภาพอากาศเพื่อรวบรวมข้อมูลสภาพอากาศในช่วงเวลาต่างๆ ข้อมูลนี้จะแสดงในวันหยุดของทีมของคุณในพื้นที่ของคุณและยังแสดงในระหว่างข้อมูลก่อนเกมของแต่ละเกมด้วย API สภาพอากาศที่เราใช้มาจาก OpenWeatherMaps OpenWeatherMaps API ต้องใช้คีย์ API เพื่อดึงข้อมูลนี้ ดังนั้นคุณจะต้องใช้เวลาสักครู่เพื่อลงชื่อสมัครใช้บัญชีและคัดลอกคีย์ API ของคุณเองลงใน config.json
ของคุณ
คุณสามารถค้นหาหน้าลงทะเบียนสำหรับ OpenWeatherMaps ได้ที่ https://home.openweathermap.org/users/sign_up เมื่อเข้าสู่ระบบแล้ว คุณจะพบแท็บ API keys
ซึ่งคุณจะพบว่ามีการสร้างคีย์เริ่มต้นสำหรับคุณแล้ว คุณสามารถคัดลอกคีย์นี้และวางลงใน config.json
ใต้ "weather"
, "apikey"
คุณสามารถเปลี่ยนสถานที่ที่ใช้ได้โดยป้อนรหัสเมือง รัฐ และประเทศโดยคั่นด้วยเครื่องหมายจุลภาค หากคุณต้องการใช้การวัดแบบเมตริก ให้ตั้งค่าตัวเลือก "metric"
เป็น true
โปรเจ็กต์นี้อาศัยสองไลบรารี: MLB-StatsAPI เป็นไลบรารี Python ที่ใช้สำหรับดึงข้อมูลเกมสด rpi-rgb-led-matrix เป็นไลบรารีที่ใช้เพื่อทำให้ทุกอย่างทำงานร่วมกับบอร์ด LED ได้
ป้ายบอกคะแนนจะอัปเดตบ่อยครั้ง แต่ไม่สามารถดึงข้อมูลที่ MLB ยังไม่ได้เผยแพร่ได้ หากมีบางอย่างผิดปกติหรือดูเหมือนล้าหลัง ผู้ต้องสงสัยคนแรกคือ MLB web API
หากคุณพบปัญหาใดๆ และมีขั้นตอนในการทำซ้ำ ให้เปิดปัญหา หากคุณมีคำขอคุณลักษณะ ให้เปิดปัญหา หากคุณต้องการสนับสนุนการเปลี่ยนแปลงขนาดเล็กถึงขนาดกลาง ให้เปิดคำขอดึง หากคุณต้องการสนับสนุนคุณลักษณะใหม่ ให้เปิดปัญหาก่อนที่จะเปิด PR
ข้อกำหนดการพึ่งพาได้รับการจัดการโดยใช้ pipreqs
หากคุณกำลังเพิ่มหรือเปลี่ยนแปลงการขึ้นต่อกัน (เช่น การอัปเดตเวอร์ชัน) ตรวจสอบให้แน่ใจว่าได้อัปเดตไฟล์ข้อกำหนดด้วย pipreqs
:
# If not already installed
pip3 install pipreqs
pipreqs . --force
โครงการนี้ ณ เวอร์ชัน 1.1.0 ใช้ GNU Public License หากคุณต้องการขายโค้ดเหล่านี้ โค้ดจะต้องยังคงเป็นโอเพ่นซอร์ส
เวอร์ชั่นดั้งเดิมของบอร์ดนี้
แรงบันดาลใจจากบอร์ดนี้ ลองดูกระดานคะแนนของ NHL ไหม