重要的
如果您從 v7 升級到 v8,請務必閱讀使用部分,因為啟動命令已更改!
美國職棒大聯盟的 LED 記分板。顯示您球隊當天比賽的即時記分板。
需要一個 Raspberry Pi 和一個透過 GPIO 引腳連接的 LED 板。
目前支援的主機板:
如果您希望看到另一組電路板尺寸的支持,或對現有電路板尺寸有設計建議,請提出問題!
Pi 有已知問題
它可以顯示正在進行的現場比賽,並且可以選擇每 15 秒輪播當天的每場比賽。
董事會每 15 分鐘刷新一次遊戲清單。
如果比賽尚未開始,將顯示賽前螢幕,其中顯示可能的先發投手。
它可以顯示所提供部門的排名。由於 32x32 棋盤太小,無法同時顯示勝負,因此棋盤上每 5 秒交替顯示勝負。您還可以指定“NL Wild Card”或“AL Wild Card”作為“分區”,以查看每個聯賽外卡比賽中的前 5 名球隊。
請參閱原始專案的 wiki 頁面以取得逐步指南。本自述文件主要關注 MLB 軟體,但對於那些從 Reddit 或其他地方從未使用 Raspberry Pi 構建過東西的人來說,這應該可以幫助您入門。
物料清單 (BOM) 範例位於此處
您需要 Git 來複製此儲存庫,並需要 PIP 來安裝記分板軟體。
sudo apt-get update
sudo apt-get install git python3-pip
此安裝過程大約需要 10-15 分鐘。 Raspberry Pi 不是最快的計算機,因此請耐心等待!
git clone https://github.com/MLB-LED-Scoreboard/mlb-led-scoreboard.git
cd mlb-led-scoreboard/
sudo ./install.sh
這將建立一個 Python 虛擬環境並安裝所有必要的依賴項。虛擬環境將位於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
以取得最新變更。很多時候,這就足夠了,但如果有東西看起來壞了:sudo ./install.sh
。隨更新添加的任何其他依賴項將以這種方式安裝。如果您要遷移到新的主要版本,請回答“Y”,讓它為您建立一個新的設定檔。應該是這樣吧!您的最新版本現在應該可以使用剛剛新增的任何新功能。
您可以透過執行python3 version.py
檢查安裝的 mlb-led-scoreboard 的版本資訊。
該軟體的最新版本可在此處取得。
確保您的 Raspberry Pi 時區配置為您當地的時區。預設情況下,他們通常會顯示倫敦時間。您可以透過執行sudo raspi-config
來更改樹莓派的時區。
安裝腳本在main.py
頂部新增一行以自動取得虛擬環境。這意味著不需要重新啟動環境( source ./venv/bin/activate
)。
sudo ./main.py
以 root 身分運行是 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.
跑分/命中/錯誤 - 跑分始終顯示在遊戲畫面上,但您可以啟用或調整「跑分、命中、錯誤」顯示的間距。有關詳細信息,請查看坐標自述文件。
俯仰數據 - 俯仰數據可以顯示在遊戲螢幕上,有關詳細信息,請參閱坐標自述文件。另外, short
音高和long
音高的描述可以在data/pitchs.py中更改
先前的遊戲數據 - 先前的遊戲數據可以顯示在遊戲螢幕上。有關詳細信息,請參閱坐標自述文件。長和短的遊戲描述可以在 data/plays.py 中更改
您可以使用 rpi-rgb-led-matrix 庫中使用的相同標誌來設定 LED 矩陣。有關這些參數的更多資訊可以在庫文檔中找到。
--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
中。
您可以在 https://home.openweathermap.org/users/sign_up 找到 OpenWeatherMaps 的註冊頁面。登入後,您將找到一個API keys
選項卡,其中您會發現已為您建立了預設金鑰。您可以複製此金鑰並將其貼上到"weather"
、 "apikey"
下的config.json
中。
您可以輸入以逗號分隔的城市、州和國家代碼來更改所使用的位置。如果您希望使用公制測量,請將"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
該專案從 v1.1.0 開始使用 GNU 公共授權。如果您打算出售這些,程式碼必須保持開源。
該板的原始版本
受此板的啟發,請查看 NHL 記分板?