重要
v7 から v8 にアップグレードする場合は、起動コマンドが変更されているため、「使用法」セクションを必ずお読みください。
メジャーリーグベースボールのLEDスコアボード。その日のチームの試合のライブスコアボードを表示します。
Raspberry Pi と GPIO ピン経由で接続された LED ボードが必要です。
現在サポートされているボード:
別の基板寸法セットのサポートを確認したい場合、または既存の基板寸法の設計提案が必要な場合は、問題を提出してください。
既知の問題がある Pi
試合中の試合をライブで表示でき、オプションでその日の各試合を 15 秒ごとにローテーションできます。
ボードは 15 分ごとにゲームのリストを更新します。
試合がまだ始まっていない場合は、試合前画面に予想される先発投手が表示されます。
指定された部門の順位を表示できます。 32x32 のボードは小さすぎて勝ちと負けを同時に表示できないため、勝ちと負けは 5 秒ごとにボード上で交互に表示されます。 「地区」として「ナ・リーグ ワイルドカード」または「ア・リーグ ワイルドカード」を指定して、各リーグのワイルドカード レースの上位 5 チームを表示することもできます。
段階的なガイドについては、元のプロジェクトの wiki ページを参照してください。この README は主に 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/ボンネット ユーザー: コマンド ライン フラグを指定する必要があります。
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 で変更できます。
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
にコピーするのに少し時間がかかります。
OpenWeatherMaps のサインアップ ページは、https://home.openweathermap.org/users/sign_up にあります。ログインすると、 API keys
タブが表示され、デフォルトのキーがすでに作成されていることがわかります。このキーをコピーして、 config.json
"weather"
、 "apikey"
の下に貼り付けることができます。
使用する場所を変更するには、市、州、国コードをカンマで区切って入力します。メトリック測定を使用したい場合は、 "metric"
オプションをtrue
に設定します。
このプロジェクトは 2 つのライブラリに依存しています。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 Public License を使用しています。これらを販売する場合は、コードをオープンソースのままにしておく必要があります。
このボードのオリジナルバージョン
このボードに触発されて、NHL スコアボードをチェックしてみてください。