ラズパイ電光掲示板用のOSをJessieからstretchにバージョンアップした
電光掲示板を操作しているラズパイ3の microSD カードの調子が悪いです。最近では、upgrade できない状態となっています。
どうやら、microSD カードが壊れかけている模様です。
この microSD カードに書き込んでいるOSは jessie でラズパイのOSとしては、二世代前に相当します。
root@raspberrypi:~# lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie
ラズパイOSの変遷
- Lenny (Debian GNU 5.0) 2009年~2012年
- Squeeze (Debian 6.0)2011年~2014年
- Wheezy (Debian 7.0)2013年~2016年
- Jessie (Debian 8.0)2015年~2018年
- Stretch (Debian9.0)2017年~2020年
- Buster 2019年6月~
そこで、完全に壊れてしまう前に、microSD カードを交換することにしました。OSは最新にした方が良いのですが、OSに追いついていないソフトがあったりして問題になることもあるようです。
そこで、それらの事情に詳しくない60爺としては、1世代前のものにした方が無難であるとの結論で、上記にある一世代前の Stretch を採用します。
ラズパイ電光掲示板microSD設定
それでは、電光掲示板の環境設定を行います。次の手順で実施しました。
- Stretch のダウンロード
- microSD カードへの書込み
- ラズパイの設定開始
- 電光掲示板のライブラリのコピー
- 関連アプリケーションのインストール
- 開発プログラム、シェルのコピー
それでは、1.から順に作業を実施していきましょう。
Stretch のダウンロード
参考記事に「stretchの入手について」がありますので、そこから、「Raspbian Stretch Full」をダウンロードします。
microSD カードへの書込み
使用する microSD カードはこれです。最近は随分と安く手に入れることが出来るようになりました。
書き込みに使用したソフトは「Win32DiskImager」です。定番ですね。


イメージファイル名と、Device名を間違えないようにして、write をクリックします。

「Complete」画面(Write Succesful.)が表示されたら終了です。
ラズパイの設定開始
書き込みの終わった microSD カードをラズパイに設定して初期設定を行います。

電光掲示板のライブラリのコピー
下記コマンドで、電光掲示板のライブラリをコピーします。
git clone https://github.com/hzeller/rpi-rgb-led-matrix/
関連アプリケーションのインストール
次の順で、下記の関連アプリケーションをインストールします。
- imagemagick インストール
- 日本語フォントをインストール
- PHPをインストール
それでは、各々のインストール方法を示しましょう。
imagemagick インストール
日本語を電光掲示板に出すためにイメージファイルを作成するために必要です。
電光掲示板でpythonのサンプルプログラム実行。ラズパイで電光掲示板 part3
sudo apt-get install imagemagick
policy.xmlに対して次の訂正をしないとエラーが出ますので修正を行います。
【ファイル名】/etc/ImageMagick-6/policy.xml
旧)<policy domain="path" rights="none" pattern="@*" />
新)<!-- <policy domain="path" rights="none" pattern="@*" /> -->
日本語フォントをインストール
pi@raspberrypi:~ $ sudo apt-get install fonts-ipafont
pi@raspberrypi:~ $ ls /usr/share/fonts/truetype/
crosextra fonts-japanese-gothic.ttf gentium liberation openoffice
dejavu fonts-japanese-mincho.ttf gentium-basic liberation2 piboto
droid freefont lato noto
PHPをインストール
NHKニュースを電光掲示板に書き出すプログラムは、PHPで作成しています。
sudo apt-get install php
インストール後、バージョンを確認しました。
pi@raspberrypi:~ $ php -v
PHP 7.0.33-0+deb9u7 (cli) (built: Feb 16 2020 15:11:40) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.33-0+deb9u7, Copyright (c) 1999-2017, by Zend Technologies
jessieでは、PHP 5.6.33-0+deb8u1 (cli) (built: Jan 9 2018 05:01:31)したので、だいぶバージョンがアップしましたね。
ここでは合わせて、PHPでXMLを読み込むためのライブラリをインストールします。
pi@raspberrypi:~ $ sudo apt -y install php7.0-xml
開発プログラム、シェルのコピー
60爺の開発した天気予報やニュースを電光掲示板に表示するプログラムと実行shellをjessieの環境からコピーします。
① shell
SCPコマンドを使用してコピーします。
pi@raspberrypi:~ $ scp *.sh pi@192.168.XXX.XXX:/home/pi
pi@192.168.XXX.XXX's password:
00.sh 100% 252 0.3KB/s 00:00
30.sh 100% 259 0.3KB/s 00:00
jikan.sh 100% 1027 1.0KB/s 00:00
news.sh 100% 36 0.0KB/s 00:00
tenki_new.sh 100% 2482 2.4KB/s 00:00
tenki.sh 100% 426 0.4KB/s 00:00
time_display.sh 100% 250 0.2KB/s 00:00
② pythonプログラム
天気予報やNHKニュースを電光掲示板に書き出す元のテキストを作成しているpythonプログラムです。
天気予報を電光掲示板に表示! ラズパイで電光掲示板 part4
ニュース速報を電光掲示板でまとめて表示 ラズパイで電光掲示板 part5
ディレクトリ(python-pg)を作成後、ディレクトリに入った後、SCPコマンドでコピーします。
pi@raspberrypi:~/python-pg $ scp * pi@192.168.XXX.XXX:/home/pi/python-pg
pi@192.168.XXX.XXX's password:
jikan_file.py 100% 1749 1.7KB/s 00:00
tenki_file.py 100% 3323 3.3KB/s 00:00
tenki_out_gif.py 100% 3898 3.8KB/s 00:00
tenki_out.py 100% 4141 4.0KB/s 00:00
test_com.py 100% 105 0.1KB/s 00:00
test.py 100% 315 0.3KB/s 00:00
txt_print.py 100% 1433 1.4KB/s 00:00
③ phpプログラム
NHKニュースを電光掲示板に書き出すPHPプログラムをSCPコマンドでコピーします。
ニュース速報を電光掲示板でまとめて表示 ラズパイで電光掲示板 part5
pi@raspberrypi:~ $ scp test2.nhk_news.php pi@192.168.XXX.XXX:/home/pi
pi@192.168.XXX.XXX's password:
④ シェルコマンド停止シェル
stopafterというshell停止用のコマンドを作成していたので、これも同一ヶ所に設定します。
shellで Ctrl-c を実現した!最初はミスって電光掲示板5時間動きっぱなし
pi@raspberrypi:~ $ scp stopafter /home/pi/rpi-rgb-led-matrix/bindings/python/samples/stopafter
pi@192.168.XXX.XXX's password:
電光掲示板表示テスト
準備が整いましたので、電光掲示板用のラズパイに作成した microSD カードをセットして、実行テストをします。
crontabの中を見ると、2つの設定がなされています。
00 7,9,12,15,17,20 * * * sh /home/pi/00.sh
30 8,10,11,13,14,16,18,19 * * * sh /home/pi/30.sh
動かしているのは、00.sh と 30.sh ですね。
00.sh を実行してみると、最初の時間表示で先に進まなくなってしまいました。
最後の led-image-viewer が止まらないようです。
stopafter が正常に作動しません!
sudo /home/pi/rpi-rgb-led-matrix/bindings/python/samples/stopafter 10 sudo /home/pi/rpi-rgb-led-matrix/utils/led-image-viewer -C --led-rows=16 --led-chain=2 --led-no-hardware-pulse /home/pi/work/jikan2.gif
しかし、個別にみていくと、stopafter が正常に作動しているのです。どうやら、電光掲示板向けのライブラリの構成が変わったように思えます。
さんざん悩んだのですが、シェルコマンドを止める timeout コマンドがあるというのでテストしてみると、こちらは問題なく動きました。
sudo timeout 10 sudo /home/pi/rpi-rgb-led-matrix/utils/led-image-viewer -C --led-rows=16 --led-chain=2 --led-no-hardware-pulse /home/pi/work/jikan2.gif
このため、stopafter を使用している個所を全て timeout に変更して事なきを得ました。
最後に、crontab へ上記の設定を実施して、今回のミッションは終了です。
いやーーー、大変でした!
※気づけば魚へんの漢字の記事も増えてきました
参考
stretchの入手について
一定時間でシェルコマンドを終了させるたった1つの方法
ディスカッション
コメント一覧
まだ、コメントがありません