중요한
v7에서 v8로 업그레이드하는 경우 시작 명령이 변경되었으므로 사용법 섹션을 꼭 읽어보세요!
메이저리그 야구의 LED 스코어보드. 해당 날짜의 팀 경기에 대한 실시간 점수판을 표시합니다.
GPIO 핀을 통해 연결된 Raspberry Pi와 LED 보드가 필요합니다.
현재 지원되는 보드:
다른 보드 치수 세트에 대한 지원을 보거나 기존 보드 치수에 대한 디자인 제안이 있는 경우 문제를 제출하세요!
Pi에 알려진 문제가 있음
실시간 게임을 표시할 수 있으며 선택적으로 하루의 각 게임을 15초마다 순환할 수 있습니다.
보드는 15분마다 게임 목록을 새로 고칩니다.
아직 경기가 시작되지 않은 경우, 예상 선발투수와 함께 경기 전 화면이 표시됩니다.
해당 부문의 순위를 표시할 수 있습니다. 32x32 보드는 승패를 함께 표시하기에는 너무 작기 때문에 승패가 5초마다 보드에 번갈아 표시됩니다. 'NL 와일드카드' 또는 'AL 와일드카드'를 '디비전'으로 지정하여 각 리그의 와일드카드 경쟁에서 상위 5개 팀을 볼 수도 있습니다.
단계별 가이드는 원본 프로젝트의 위키 페이지를 참조하세요. 이 README는 주로 MLB 소프트웨어에 중점을 두고 있지만 Reddit이나 다른 곳에서 Raspberry Pi로 제품을 만들어 본 적이 없는 분들에게는 이 내용이 도움이 될 것입니다.
샘플 BOM(Bill of Materials)은 여기에 있습니다.
이 저장소를 복제하려면 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
루트로 실행하는 것은 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 파일을 참조하세요. 또한 short
피치와 long
피치 설명은 data/pitches.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 웹 API입니다.
문제가 발생하고 재현할 단계가 있는 경우 문제를 엽니다. 기능 요청이 있는 경우 이슈를 개설하세요. 중소 규모의 변경에 기여하려면 끌어오기 요청을 엽니다. 새로운 기능에 기여하고 싶다면 PR을 열기 전에 먼저 이슈를 열어보세요.
종속성 요구 사항은 pipreqs
사용하여 관리됩니다. 종속성을 추가하거나 변경하는 경우(예: 버전 업데이트) pipreqs
사용하여 요구 사항 파일을 업데이트해야 합니다.
# If not already installed
pip3 install pipreqs
pipreqs . --force
v1.1.0 기준으로 이 프로젝트는 GNU Public License를 사용합니다. 이러한 제품을 판매하려는 경우 코드는 오픈 소스로 유지되어야 합니다.
이 보드의 원본 버전
이 보드에서 영감을 받아 NHL 점수판을 확인해 보세요.