本記事は筆者自身のWebサイトに投稿した「発車案内板を作ろう」の2つの記事をまとめたものとなります。
元ネタとなった「運行情報掲示板」
Xを見ていたら、このような投稿$^{(1)}$が目に飛び込んできました。
引用元: @KO51TokyoHazama
おそらく発祥となった作品は大阪電気通信大学の方々が作ったもの$^{(2)}$でしょう。
学校から移動するタイミングを見計らうために作られた発車案内板です。筆者が通っている学校も駅まで10~20分くらいかかる距離に位置しています。同じような役割を持つものを個人的にも作りたいと考え、Raspberry Pi ZeroとフルカラードットマトリクスLED"SMD2121"を組み合わせた掲示板を作ることとしました。
Raspberry Pi Zeroの準備
今やむしろ貴重となった、容量わずか8GBのmicroSDを見つけたので、こちらにOSを書き込みます。筆者が動かしているのは無線通信の機能が一切ついていない**"初期型のRaspberry Pi Zero"**なので、LANケーブルコネクタがついているUSBハブを購入してきて接続を行います。
これでRaspberry Pi Zeroが問題なく作動しました。
ssh接続の確立
Raspberry Pi Zeroの貧弱なリソースでは、マウスの反応も悪く操作性がよくありません。なので、PCからリモートで操作できるようにします。
GUI左上のRaspberry Piアイコン→Preferences→Raspberry Pi Configuration→Interfaces からSSHが有効であることを確認します。
sudo raspi-config
をコマンドラインに入力し、Interface Options→SSH→Yes でSSHサーバーを有効化します。
PC側のコマンドプロンプト(筆者はGit Bashを利用)から以下のコマンドを叩いたら無事、PCとRaspberry Pi Zeroの接続ができました$^{(3)}$。
ssh pi@raspberrypi.local
(ここで示しているのはユーザ名がデフォルトのpiの場合です。OSのイメージを書き込みするときにこれらの内容を変更していた場合は、適宜その内容に変更してください)
NTPで時計合わせ
RTCを持っていないRaspberry Piでは時計がずれることは日常茶飯事です。NTPで時計合わせを自動でできるようにしておきます。
まず、nanoを使ってファイル/etc/systemd/timesyncd.confを編集します。
sudo nano /etc/systemd/timesyncd.conf
[Time]以下のNTPとFallbackNTPの行を以下のように変更します$^{(4)}$。筆者の場合はコメントアウトの除外&加筆でした。
[Time]
NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp
FallbackNTP=time.google.com
以下のコマンドでNTPを有効にし、デーモンとサービスを再起動します$^{(5)}$。
sudo timedatectl set-ntp true
sudo systemctl daemon-reload
sudo systemctl restart systemd-timesyncd.service
timedatectlを呼び出し、時刻をチェックしておきましょう。
SMD2121を駆動する
ライブラリをダウンロードしてドットマトリクスを点灯させます。
そのためにはまずRaspberry Pi Zeroとドットマトリクスをジャンパワイヤなどで接続しなければなりません。
Raspberry Pi Zero⇔SMD2121の接続
筆者が購入したSMD2121にはリボンケーブルが付属していました。これをドットマトリクスの端子に接続すると、端子の配置が反転します。
反転した状態でのピンの接続先はこうなります。
筆者の環境では、Raspberry Pi Zeroのピンも反転しています。(Raspberry Pi Zero WHなどのデフォルトのピンヘッダと表裏反対に接続している)
これを考慮したうえで、接続を示すとこうなります。
この通りに配線を行った後、最後にドットマトリクスの中央に接続できる電源の5VとGNDにもジャンパワイヤで接続を行います。
※筆者の環境では問題になりませんでしたが、このタイプのドットマトリクスが要求する電源電流はかなり大きいものになります。もし接続が切れたり、Raspberry Piが落ちるようなら電流値が大きい電源を利用してください。先行事例を見ていると、2A以上の電源を使ったほうが無難です。
ドットマトリクスを扱うためのライブラリをダウンロード
次に、Raspberrry Piにgithubからライブラリを落としてきます。
gitが無い場合は以下のコマンドでgitをインストールしておきます$^{(6)}$。
(筆者の場合は既に最新バージョンが入っていると表示されましたが、念のため実行しました)
sudo apt-get install git
gitの存在を確認したら以下のコマンドでライブラリをダウンロード(clone)します$^{(7)}$。
git clone https://github.com/hzeller/rpi-rgb-led-matrix/
lsコマンドで確認したところ、しっかり配置されています。
デモを動かす
ライブラリのディレクトリに移動し、ビルドを行います。
cd rpi-rgb-led-matrix/
make -C examples-api-use
その後、"examples-api-use"の中にある"demo"ファイルに適切な指示を与えて実行すると、しっかりドットマトリクスLEDが光ります。
例として、ライフゲームを動作するデモがあったので動かしてみます。コマンドは以下の通りです$^{(8)}$。
sudo ./examples-api-use/demo --led-no-hardware-pulse --led-rows=32 --led-cols=64 -D7
これで、Raspberry Pi Zeroとドットマトリクス、およびその接続に問題が無いことがわかりました。
日本語を扱う
電光掲示板として用いるため、日本語のフォントが扱いたいです。しかし、ライブラリが対応しているのは.bdf形式のフォントのみです。
本章では、ドットマトリクスに日本語を表示させます。
電子工作では「東雲フォント」という有名なフォントがあり、これがbdf形式で配布を行っています$^{(9)}$。ただし、フォントがotfファイルやttfファイルの場合は変換を行わなければなりません。
使いたいフォントを探し、bdfファイルに変換する
ドットマトリクスに表示したいフォントを探してきて、PCに落とします。
本記事では「ベストテン」という10x10ドットのフォントを利用します$^{(10)}$。
フォントサイズの問題上取り上げませんでしたが、「KHドットフォント」シリーズも個人的にはいいと思います$^{(11)}$。
PCから手早くファイルやディレクトリをRaspberry Piへ移動させる手段としては、scpコマンドを使うのが良いでしょう。新たにPC側でコマンドプロンプト(筆者はWindowsのpowershell)を開き、以下のコマンドでファイルを全て転送します。
scp -r ./MyFonts pi@raspberrypi.local:~
-rオプションを付けることで、ディレクトリの中身を再帰的に転送できます。パスやファイル/ディレクトリの名前は適宜変更してください。
raspberry piへ戻り、以下のコマンドで"otf2bdf"というツールをインストールします。
sudo apt install otf2bdf
フォントを以下のようなフォーマットで変換します。
今回は「ベストテン」のフォントを変換するのでこのようなフォーマットとなりました。
otf2bdf -p 10 -r 72 -o ~/Myfonts/BestTen-DOT.bdf ~/Myfonts/BestTen-DOT.otf
(上記のコマンドでは作業ディレクトリの位置を指定していません。状況に合わせて適宜変更してください)
これで正しくフォントファイルが変換されたはずです。
Windows側でfontforgeというソフトウェアを用いて変換する手もあるようですが、筆者は試していません$^{(12)}$$^{(13)}$。
ライブラリのデモで日本語フォントを表示
ライブラリのディレクトリに戻り、フォントが正しく表示されるかチェックします。
デモプログラムの"scrolling-text-example"を使用して、文字列をドットマトリクスへ流します。
そのコマンドがこちらです$^{(6)}$。
cd ~/rpi-rbg-led-matrix
sudo ./examples-api-use/scrolling-text-example -f ~/Myfonts/BestTen-DOT.bdf --led-no-hardware-pulse --led-rows=32 --led-cols=64 The quick brown fox jumps over the lazy dog. 色は匂えど散りぬるを 我が世誰ぞ常ならむ 有為の奥山今日超えて 浅き夢見し酔ひもせず。
(上記の例では、変換後のフォントファイルのパスは~/clock/fonts/BestTen-DOT.bdfとなっている)
これで正しく表示が行えたことを確認できました。
Pythonに対応させる
Pythonのデモ
記述するコードはC++, Python, Node.js, Go, Rustで動かすことができるようです$^{(7)}$。基本的にこのライブラリはC++で動作させることを想定しているようですが、今回は記述と読解が容易なPythonを用います。このため、PythonからライブラリのAPIを叩く方法を確認します。
まずライブラリのファイル直下に移動し、ビルドを行います。
cd ~/rpi-rgb-led-matrix
sudo apt-get update && sudo apt-get install python3-dev cython3 -y
make build-python
sudo make install-python
ここまで来たら、sampleディレクトリ内のデモを動かせます。
以下のコマンドを用いて、Hello Worldを表示します。
cd ~/rpi-rgb-led-matrix/bindings/python/samples
sudo ./runtext.py --led-rows=32 --led-cols=64 --led-no-hardware-pulse 1 -t "Hello World!"
Pythonで自分のコード(+日本語フォント)を動かす
デモ用のファイルのコードを見てみると読み込んでいるフォントはfontsディレクトリ直下にある7x13.bdfであることが分かります。
font = graphics.Font()
font.LoadFont("../../../fonts/7x13.bdf")
コードを作る前に、設定を変更します。
/etc/modprobe.d/の直下にblacklist-rgb-matrix.confを作成し、以下のコードをファイルに書き込みます。
blacklist snd_bcm2835
sudo update-initramfs -u
を実行し、数分待機します。
sudo reboot
を実行し、Raspberry Piを再起動します。
以上の手順を踏まないと、実行時にうまく動いてくれませんでした。
次に、パスの問題です。デフォルトの書き方だと、以下のように相対パスで"/rpi-rgb-matrix/fonts/7x13.bdf"にアクセスするようになっていました。
font.LoadFont("../../../fonts/7x13.bdf")
matrix_debug.pyというファイルを作り、Raspberry Piのホームディレクトリ直下に配置します。そしてsudoで実行すると以下のようになります。
pi@raspberrypi:~ $ sudo python3 matrix_debug.py
Traceback (most recent call last):
File "/home/pi/matrix_debug.py", line 24, in <module>
File "graphics.pyx", line 32, in rgbmatrix.graphics.Font.LoadFont
Exception: Couldn't load font /home/pi/rpi-rgb-led-matrix/fonts/BestTen-DOT.bdf
ライブラリの"graphics.pyx"が"~/Myfonts/BestTen-DOT.bdf"を読み取ろうとして失敗しています。
これは実行ユーザがdaemonに格下げされており、アクセス権限が無いことに由来しています。(これらはライブラリのissueにて議論されています$^{(15)}$。解決に1日かかりました)
問題解決のため、ディスプレイとファイルにアクセス許可を与えます。
sudo chmod a+rx /home
sudo chmod a+rx /home/pi
sudo chmod a+rx /home/pi/Myfonts
sudo chmod a+r /home/pi/Myfonts/BestTen-DOT.bdf
このような状態で、以下のようなコードを書きました。
#!/usr/bin/env python3
import time
import sys
from rgbmatrix import RGBMatrix, RGBMatrixOptions, graphics
options = RGBMatrixOptions()
options.rows = 32
options.cols = 64
options.chain_length = 1
options.parallel = 1
matrix = RGBMatrix(options = options)
font = graphics.Font()
font_path = "/home/pi/Myfonts/BestTen-DOT.bdf"
font.LoadFont(font_path)
offscreen_canvas = matrix.CreateFrameCanvas()
pos = offscreen_canvas.width
def draw():
global pos
global offscreen_canvas
textColor = graphics.Color(0, 255, 0)
text = "メロスは激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。メロスには政治がわからぬ。メロスは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。"
offscreen_canvas.Clear()
text_width = graphics.DrawText(offscreen_canvas, font, pos, 10, textColor, text)
pos -= 1
if (pos + text_width < 0):
pos = offscreen_canvas.width
offscreen_canvas = matrix.SwapOnVSync(offscreen_canvas)
try:
print("Press CTRL-C to stop.")
while True:
draw()
time.sleep(0.05)
except KeyboardInterrupt:
sys.exit(0)
以上のコードをホームディレクトリ直下に置き、以下の指示で実行してみます。
pi@raspberrypi:~ $ sudo python3 matrix_debug.py
Press CTRL-C to stop.
Press CTRL-C to stop.が出ている間はドットマトリクスに文字列が表示されています。これで基本的な準備が整いました。
ドットマトリクスLEDの増設
ここで取り扱っているドットマトリクスLED(64x32px)1枚ではあまりに表示できる情報が少ないです。実際に内容を表示すると、このように詰め詰めとなってしまいます。
これでは5文字はおろか、4文字の駅名表示にも難儀してしまいます。「京王八王子」「東葉勝田台」「代々木上原」といった駅名は表示できないわけです。かと言ってフォントの解像度を落とし、一文字8ピクセル単位にすれば可読性が大幅に低下してしまいます。
というわけで、同じ商品をもう一つ購入して、OUTPUT端子ともう一つのINPUT端子をケーブルで接続します。勿論電源ケーブルも両方のドットマトリクスLEDに接続しておきます。
写真は1枚のドットマトリクスLEDです。接続が上手くいっていれば、後はライブラリ側から制御可能です。
電光掲示板に表示する情報を集める
掲示板のキモとなる列車情報は基本的にリアルタイムに取得する必要があります。今回は、PythonからWebの情報をスクレイピングするコードを作成します。
※この手法はかなりグレーです。個人的なものなのでスクレイピングで済ませていますが、商用・公的なものでは使わないようにしてください。サーバ負荷を減らすため、通信頻度が多くならないようにしているつもりですが、それでも相当な回数呼び出しているという点にご留意ください。
発車時刻検索
Yahoo乗り換え案内は、URLパラメータを調整してやることで乗り換え情報を取得することができます$^{(16)}$。fromに出発駅、toに到着駅...というように直接文字列を指示することでhtml情報を取得することができます。例えば、以下のURIは東京から新宿までの乗り換え案内を表示するページにつながります。
https://transit.yahoo.co.jp/search/result?from=東京&to=新宿
他にも、type(重視するもの)、y m d hh m1 m2(日時を示す6つのパラメータ)などを詳細に指定することで、列車案内のデータがHTML形式で返ってきます。
運行情報の取得
同じくYahooでは「関東の列車運行情報」が公開されているWebページがあるため、こちらのデータも取得することが可能です$^{(17)}$。
ここでは、列車の運転見合わせや遅延に関する情報を取得できます。
https://transit.yahoo.co.jp/diainfo/area/{エリアコード}
エリアコードの部分を変更すれば、各地方別の情報を取得できます。関東のエリアコードは"4"です。
天気予報
天気関連の情報は、気象庁が提供しているAPIを利用することで、json形式で取得することができます$^{(18)}$。
jsonは以下のURLで取得することができます。
https://www.jma.go.jp/bosai/forecast/data/forecast/{エリアコード}.json
「エリアコード」はあなたの街の防災情報(https://www.jma.go.jp/bosai/)で選択した先に出てくるURLパラメータと同様です。例えば、東京都の情報は以下のURIで得られるページで確認できます $^{(19)}$。
https://www.jma.go.jp/bosai/#pattern=default&area_type=offices&area_code=130000
area_code=130000となっていますが、この値がエリアコードになります。東京の予報情報を得たいのであれば
https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json
と指定してやればよいということです。
また、天気以外にも更新時間情報がjsonの"reportDatetime"要素に入っています。
メインのコード
上記の内容を元にGeminiにコードの大枠を作らせました。
完成したコード群は、GitHubへ公開しています。なお、Raspberry Pi Zeroで動いたものを直接アップロードしているわけではないので、そのままでは動かない可能性があります。
基本ファイル構造
/infomation_board
┣/rpi-rgb-led-matrix // ライブラリファイル群(リポジトリ段階では未配置)
┃
┣/fonts
┃ ┗ Bestten-DOT.bdf // .bdf形式の10x10フォントファイル
┃
┣ /infomation_json_files
┃ ┣ departure.json // 発車情報
┃ ┣ first_last_train.json // 始発&終電情報
┃ ┣ operation.json // 運行情報
┃ ┣ jma_forecast_raw.json // 天気情報生データ
┃ ┗ weather_forecast.json // 天気情報
┃
┣ get_train_info.py // 列車情報取得
┣ get_weather_info.py // 天気情報取得
┣ draw_matrix.cc // 表示系のプログラム
┣ json.hpp // json解析ライブラリ
┣ MakeFile // c++のコンパイル用
┗ infomation_board.py // メインのプログラム(エントリーポイント)
使用方法
"information_board"をRaspberry Pi Zeroのホームディレクトリ直下に配置したら、cdで"information_board"直下へ移動します。その状態で、"rpi-rgb-matrix"ライブラリをクローンしてください。
cd ~/information_board/ # 想定箇所
git clone https://github.com/hzeller/rpi-rgb-led-matrix/
"information_board"フォルダ内に"rpi-rgb-led-matrix"ライブラリが配置されたら、draw_matrix.ccをコンパイルします。Makefileを作成してあるので、それを呼び出すmakeコマンドを呼び出せば正しくコンパイルが通るはずです。ビルドが正しく終了したら、"information_board.py"を実行できるようになるはずです。
make
sudo pyhton3 ./information_board.py
ssh接続などターミナルが切断されても点灯したままにしたい場合は以下のように"nohup"と"$"を付けて実行するのが手っ取り早いです。
nohup sudo sudo pyhton3 ./information_board.py $
プロセスを停止させたいときはps auxコマンドから該当のプロセスIDを探し、killコマンドを打ち込む必要があります。
コードの概要
厳密な流れではありませんが、コードがおおよそやっていることを示すと以下のようになります。
function information_board.py :
(セットアップ部分)
get_train_info.py を呼び出し :
/infomation_json_files/departure.json を生成(上下線情報を取得)
/infomation_json_files/first_last_train.json を生成(始発終電情報を取得)
/infomation_json_files/operation.json を生成(運行情報を取得)
get_weather_info.py を呼び出し :
/infomation_json_files/jma_forecast_raw.json を生成(生データをそのまま保存)
/infomation_json_files/weather_forecast.json を生成(抽出した天気情報を保存)
draw_matrixを起動(サブプロセス) :
① /infomation_json_files内の情報を取得
② 時刻情報を取得
③ ①と②を整理して情報を表示
④ ①へ戻る
(メインループ開始点)
もし "発車時刻の一定期間前(15分前)である" 場合 :
search_thread_taskを立ち上げる(スレッド) :
get_train_info.py を呼び出し
get_weather_info.py を呼び出し
もし キーボードによる停止操作があった 場合 :
draw_matrixを停止
スレッドを停止し、ループを抜ける
(メインループ終了点)
c++の利用
このコードにはc++とPythonが混在しています。そのワケは単純に"Pythonが遅すぎて電光掲示板として使いものにならなかった"からです。記事の前編の段階では全てのコードをPythonで記述しています。
詳細を書くことはしませんが、Pythonで作業を続けていった結果出来上がった電光掲示板はあまりにも明滅が激しいものとなってしまいました。Pythonの処理が遅すぎてチカチカするのです。その上、スクレイピングの処理中はリソースがそっちに食われてさらに表示が乱れます。
この件に関しては"rpi-rgb-led-matrix"ライブラリの作者も以下のように言及しています。
On a Pi-1/Pi Zero, the difference is even worse: 1/24 of the speed to the corresponding C++ program. Given that this Pi is already about 1/10 the speed of a Pi-3, this almost makes Python unusable on a Pi-1 (~0.015 Megapixels/s Python vs. ~0.36 Megapixels/s C++)
(https://github.com/hzeller/rpi-rgb-led-matrix/tree/master/bindings/python より引用)
筆者的に端折って翻訳するとこうです。
Raspberry Pi ZeroでPythonを実行すると、最悪c++の1/24のスピードになる。ただでさえスピードが1/10になっているのに、この有様では全く使い物にならない
私たちが普段見ている画面は一般的に30fps以上の描画速度を持っていると言ってよいでしょう。筆者が肉眼で確認できる程に画面がチラついているということは、1フレームの描画に0.1秒(=100ms)以上かかっているということが推定されます。つまり10fpsを下回っているということです。古びた蛍光灯が如くチラつく電光掲示板など、誰が見たがるか。という文句が出てきます。
こういった問題はソフトウェアだけで予想することが難しく、実際に動作させるまでわかりません。これらの工程があるからこそ、まだまだ人間の手が必要だと感じさせられます。
動作テスト
ソフトウェアが出来上がったので実際に動作させます。小田急線の快速急行を表示してほしいという友人の要望があったため、fromに「登戸」、toに「新宿」と「町田」を指示してテストしてみます。
この状態で何日か連続動作をさせて、列車情報、運行情報、天気、時刻など表示に問題がなさそうだということを確認できました。
Raspberry Piとドットマトリクスの接続を基板化
ソフトウェアが終わったのでハードウェアの仕上げに入りましょう。
ここまで、ドットマトリクスLEDとRaspberry Pi Zeroはジャンパワイヤで接続していました。実験するにはこれでよいですが、ジャンパワイヤはすっぽ抜けやすく、折れやすく、再配線も一本一本確認しなければならず非常に不便です。加えて、電源端子とコネクタをワニ口クリップで接続しています。これも不格好です。
なので、これらの接続を一発で行える基板を作ります。回路を書き出し、ユニバーサル基板で手はんだします。
電源端子はターミナルブロック、Raspberry Pi ZeroとドットマトリクスLEDの接続にはピンヘッダを用います。
完成した接続部はこのようになりました。
ねじでドットマトリクス2つをくっつける
筆者が購入したドットマトリクスLEDには付属していませんでしたが、同系統のドットマトリクスLEDには「マグネットねじ」が付属している場合があります。
このねじをドットマトリクスLEDの裏側にある穴にはめる事で、鉄製の壁に貼り付けられる仕様になっています。
2枚のドットマトリクスLEDをバラバラに置こうとするのは不格好です。なので2枚のドットマトリクスLEDをねじとステー(ねじ穴が等間隔に空いた板)で固定します。
ほぼ同じであろうドットマトリクスLEDの販売サイトの情報を見ると、マグネットねじはM3ねじであることが分かりました。
計測したところ、2枚のドットマトリクスLEDの穴の距離は16mmなので、穴の間隔が16mmとなるステーを購入すれば良いことが分かります。
近所のホームセンターへ向かい、8mmのm3ねじのセットと"16"の刻印があるステーを購入しました。
実際取り付けて見ると、ぴったりとはまってくれました。
完成
組みあがった列車案内板を研究室へ持っていき、ネットワークの接続、電源供給、設置箇所をチェックします。少々の改良を加え、プログラムを起動します。
1日経っても問題が無い事を確認しました。本作はこれで完成です。
それではまた別の記事でお会いしましょう。
付録
作業中、bdfフォントの確認用でシミュレータっぽいものをGeminiに作らせました。以下のリンクにアップロードしておきます。
HTML/CSS + JSで動作する(サーバ側の処理が無い)ものなので、どなたでも容易に使用できます。
※ただし、bdf形式のフォントファイルが手元に無いと動きません
問題点・注意点
解決していない問題や懸念点を列挙します。
①権限絡みのトラブル
実行権限の問題により、うまく実行が通らない場合があります。特に、フォントの読み込みは何度か問題に遭遇したものの根本的な問題解決に至っておりません。rpi-rgb-led-matrixライブラリでは、daemonによる権限の弱い呼び出しが挟まっている箇所があるため、ファイルの実行権限や読み込みが通っていないとうまく働かない事例を確認しています。
②フォントの問題
筆者が変換したbdf形式の「ベストテンフォント」には、1ピクセルはみ出した領域がなぜか残っています。この問題はドットマトリクスの処理で「上から輝度0の直線で塗りつぶす」ことで場当たり的に対処しています。(draw_matrix.cc 434・435行目)
③SDカード容量の懸念
nohupコマンドを利用してきプログラムを実行した場合、標準出力がnohup.outというテキストに保存されるようになります。筆者が利用したRaspberry Pi Zeroに搭載しているSDカードの容量は8GBです。同じような容量のSDカードを用いて、長時間稼働するような場合はテキストデータが容量を食い尽くす可能性があります。出力を無くしたり、定期的に削除するなどして対処してください。
参考文献
-
(1) マチノ ヒゲ @KO51TokyoHazama (7:19 PM May 17, 2025) https://x.com/KO51TokyoHazama/status/1923684743230652520
-
(2) 大阪電通大の学生が「運行情報掲示板」を4週間で開発!電車に間に合う歩行速度を表示 - こどもとIT https://edu.watch.impress.co.jp/docs/news/1640256.html
-
(3) ラズベリーパイをリモート操作(SSHコマンド) https://raspi-school.com/ssh/
-
(4) Raspberry Pi(Raspbian)にやっといたほうがいい設定(運用:NTPでの時刻合わせ) https://gris-et-blanc.net/raspi/152/
-
(5) Raspberry Pi NTPクライアント(時刻同期)の設定 https://tksfj17.hatenablog.com/entry/2022/03/20/095334
-
(6) LED Matrix SMD2121 (64×32dot) RaspberryPI接続メモ https://karappi.mydns.jp/kousaku/ledmatrix.html
-
(7) hzeller/rpi-rgb-led-matrix: Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO https://github.com/hzeller/rpi-rgb-led-matrix/tree/master
-
(8) Raspberry PiでP3 RGB LED Matrix Display 64×32 を動かすまで - YOMON8.NET https://yomon.hatenablog.com/entry/2018/09/p3rgbdisplay
-
(9) shinonome font family http://openlab.ring.gr.jp/efont/shinonome/
-
(10) ベストテンFONT - フロップデザインフォント - BOOTH https://booth.pm/ja/items/2747965
-
(11) KHドットフォントシリーズ | 自家製フォント工房 http://jikasei.me/font/kh-dotfont/#google_vignette
-
(12) OTF フォントを BDF 形式に変換する Zenn@yamatoiizuka https://zenn.dev/yamatoiizuka/articles/0f9e571e73fe50
-
(13) Download FontForge https://fontforge.org/en-US/downloads/
-
(14) rpi-rgb-led-matrix/bindings/python at master · hzeller/rpi-rgb-led-matrix https://github.com/hzeller/rpi-rgb-led-matrix/tree/master/bindings/python
-
(15) Error loading font using systemd python service (Bookworm) · Issue #1682 · hzeller/rpi-rgb-led-matrix https://github.com/hzeller/rpi-rgb-led-matrix/issues/1682
-
(16) yahoo路線乗り換え案内の情報を抽出したい @hirohiroto522(Hiroto Ishikawa) | Qiita:
https://qiita.com/hirohiroto522/items/2fc33cbc36ea8600f867 -
(17) yahoo路線の運行情報を取得したい @hirohiroto522(Hiroto Ishikawa) | Qiita:
https://qiita.com/hirohiroto522/items/6ff29be1344be805ecb0 -
(18)【Python】気象庁のAPIから天気予報を取得する方法 | Python超入門部:
https://python.joho.info/scraping/get-weather-forecast-jma/#toc2 -
(19) 気象庁APIから天気予報を取得する際のエリアコード一覧 @ようかん | Zenn:
https://zenn.dev/inoue2002/articles/2e07da8d0ca9ca














