Raspberry Pi 3 Model B+ を購入 |
---|
2018年6月3日 |
3月14日にイギリスで発売となった Raspberry Pi 3 Model B+ の総務省技術適合証明手続きが5月17日に完了し、国内でも内蔵のWiFiが使えるようになったようなので早速購入してみることにしました。ネットで安いところを探してみましたが、国内では4,980円+送料とまだ少し高いようです。イギリスのネットショップを検索してみると26.67ポンド(現在のレートで約3,900円)とかなり安い。送料5.5ポンド(804円)を足しても合計32.17ポンド(約4,700円)なのでこのショップ(Primoroni LTD)で買うことにしました。ただし、PayPalで支払ったら4%の為替手数料をとられて合計4,913円になってしまいました。到着まで5〜10日かかるとのことです。 |
2018年6月11日 |
Raspberry Pi の初期設定 |
---|
2018年6月12日 |
Raspberry Pi 3 Model B+ に Raspbian をインストールする手順を残しておきます。(追記:Raspberry Pi 1 〜 4 も同じ手順) Windows10 パソコンを使って Raspbian を「Download Raspbian for Raspberry Pi」からダウンロードします。次に、ダウンロードした ZIP ファイルを 7-Zip 等の解凍ソフトを利用して展開します。展開すると .img ファイルが現れるので、これをDDforWindows 等でSDカードに書き込みます。これで Raspbian の準備ができました。Raspberry Pi にモニタとキーボード、マウスを接続しSDカードを挿入します。電源は5V2.5Aを推奨しているようですが、電源容量1Aのものでも問題ないようです。電流計を挿入して消費電流を測ってみましたが0.35A程度しか流れていません。電源を入れるとGUIで立ち上がり自動ログインします。起動時間がRaspberry Pi 3Bに比べて早くなった印象です。 まず、「Raspberry Pi 」の設定をします。画面左上の Raspberry Pi アイコンから設定メニューを選び、ロケールの設定、タイムゾーンの設定、キーボードの設定、無線LANの国設定を行い再起動します。これでGUIが日本語表示になり無線LANも使えるようになりました。無線LANは右上のLANアイコンをクリックして受信できている WiFi アクセスポイントを選択しパスワードを入力します。5GHzの WiFiも利用できます。 さらに、Raspberry Pi の設定メニューからインターフェースを選択し SSH を有効にします。その他利用したいインターフェースがあればこれも有効にします。次にシステムを選択しユーザー(pi)のパスワードの変更やホスト名の変更を行い、ブートをCUI に変更します。再起動すると SSH でのリモートログインが可能となります。リモートログインで利用する前にIPアドレスを固定にしておきます。 #vi /etc/dhcpcd.conf interface wlan0 static ip_address=192.168.xx.xx/24 : 割り振るIPアドレス static routers=192.168.xx.xx : ルーターのIPアドレス static domain_name_servers=192.168.xx.xx : DNSサーバがあればこれのIPアドレス 以上で無線LANを使用して Raspberry Pi をリモートログイン利用するための準備は完了です。 root パスワードの変更とユーザーの追加をします。 rootパスワードの変更 #passwd root ユーザーの追加 #useradd -m XXXX #passwd XXXX 追加ユーザーの所属グループを pi の所属グループと同じにします。(追記:2022年以降のRaspberry Pi OSにはデフォルトでユーザー:pi は設定されていません。) #groups pi pi : pi adm diaout cdrom sudo audio video plugdev games users input netdev spi i2c gpio #usermod -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio <ユーザー名> Raspberry Pi のファームウェアとOSカーネルのバージョンアップをします。(必要な場合のみ、通常は不要) #rpi-update #reboot パッケージ情報のアップデートとパッケージのアップグレードをします。 #apt update #apt upgrade 不要なファイルを削除します。 #apt autoremove -y #apt autoclean #reboot 以上で Raspberry Pi 3 Model B+ の初期設定は完了です。 |
|
Raspberry Pi に各種パッケージをインストール(nmap ftp ftpd apache2 php) |
---|
2018年6月13日 |
既にインストールされているパッケージの確認 #dpkg -l ===> nmapのインストール : ポート確認ツール #apt-get install nmap #nmap localhost ===> ftp、ftpdのインストール : FTPサーバ #apt-get install ftp ftpd ffftpなどの FTPクライアントで接続確認します。 ===> apache2、php7.0のインストール : ウェブサーバ #apt-get install apache2 php ウェブブラウザで http://192.168.xx.xx/ を開いてみます。apache2の Default Page が表示されればOKです。 デフォルトのドキュメントルートは /var/www/html となっています。 php のテスト用スクリプトファイルを作成します。 #vi /var/www/html/info.php <?php phpinfo(); ?> ウェブブラウザで http://192.168.xx.xx/info.php を開きます。「PHP Version 7.0.27- ・・・・」の画面が表示されればOKです。 (追記) 2019/8 PHPの最新バージョンは、PHP7.3です。 (追記)2022/11 PHPの最新バージョンは、PHP7.4です。 (追記)2024/10 PHPの最新バージョンは、PHP8.2です。 次にapache2のベーシック認証が利用できるように設定をします。 ・ベーシック認証の対象ディレクトリー:/var/www/html/htdocs ・パスワードファイル:/etc/apache2/.htpasswd ・設定ファイル:/etc/apache2/conf-available/basic-auth.conf ベーシック認証対象ディレクトリーの作成 #mkdir /var/www/html/htdocs テスト用のHTMLファイルを /var/www/html/htdocs へコピー #cp /var/www/html/index.html /var/www/html/htdocs/index.html .htpasswdの作成 #htpasswd -m -c /etc/apache2/.htpasswd xxxx 続けてログインIDを作成する場合は以下のとおり。 #htpasswd -m /etc/apache2/.htpasswd xxxx ベーシック認証用設定ファイルの作成 (これは変更されています。) #vi /etc/apache2/conf-available/basic-auth.conf <Directory /var/www/html/htdocs> AllowOverride None AuthType Basic AuthName Documents AuthBasicProvider file AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory> ベーシック認証用ファイル basic-auth.conf の有効化 #a2enconf basic-auth apache2のリロード #service apache2 reload または、#systemctl reload apache2 (追記)2022/11 ベーシック認証用設定ファイルの場所とファイル名が変更されています。 ベーシック認証用設定ファイルの作成 #vi /etc/apache2/apache2.conf (または #vi /etc/apache2/sites-available/000-default.conf でもよい) <Directory /var/www/html/htdocs> AllowOverride None AuthType Basic AuthName Documents AuthBasicProvider file AuthUserFIle /etc/apache2/.htpasswd Require valid-user </Directory> apache2の再起動 #service apache2 reload ウェブブラウザで http://192.168.xx.xx/htdocs/ を開いてみます。ベーシック認証のポップアップ画面が出て、設定したIDとパスワードで認証でき apache2の Default Page が表示されればOKです。 続いて、CGIスクリプトが利用できるようにします。CGIスクリプトを置くディレクトリィは/usr/lib/cgi-bin 000-default.confの編集 #vi /etc/apache2/sites-available/000-default.conf <Directory "/usr/lib/cgi-bin"> (DocumentRoot /var/www/html の下あたりに追加) Options +Indexes +FollowSymLinks +MultiViews +ExecCGI AllowOverride All Require all granted </Directory> ・・・・・・・・・・・・・・・・・・・・・ Include conf-available/serve-cgi-bin.conf (アンコメント) シンボリックリンクの作成 #ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load mime.confの編集 #vi /etc/apache2/mods-available/mime.conf AddHandler cgi-script .cgi (アンコメント) apache2の再起動 #service apache2 restart ディレクトリィー /usr/lib/cgi-bin/ にテスト用perlスクリプト(serverck.txt)をダウンロードして動作確認をします。 #cd /usr/lib/cgi-bin #wget https://www.tonaru.net/download/serverck.cgi serverck.cgi ファイルの属性変更 #chmod 655 serverck.cgi ウェブブラウザで http://192.168.xx.xx/cgi-bin/serverck.cgi を開いてみます。表示されればOKです。 |
|
Raspberry Pi に各種パッケージをインストール(postfix dovecot) |
---|
2018年6月14日 |
===> postfix、dovecotのインストール : メールサーバ #apt-get install postfix SASL認証用にsasl2-binをインストール #apt-get install sasl2-bin OP25B対策のため自宅で利用しているプロバイダー(eo光)のメールサーバでメールリレーさせます。 (追記)2023/12 eoメールのセキュリティ強化実施により、独自のメールアドレスでのメールリレーがブロックされました。gmailメールリレーなどに変更が必要です。 「eoメールでのメールリレーができなくなった(postfix)」を参照してください。 saslの認証ファイルを作成 #vi /etc/postfix/sasl_passwd [smtpauth.eonet.ne.jp]:587 xxx@xxx.eonet.ne.jp:<passward> 作成した認証ファイルをpostfixに反映 #postmap /etc/postfix/sasl_passwd postfixのリロード #/etc/init.d/postfix reload 次にpostfixのmain.cfを変更 #vi /etc/postfix/main.cf myhostname = xxx.xxx (変更) mydestination = $myhostname, xxx.xxx, raspi3p, localhost.localdomain, localhost (変更) relayhost = [smtpauth.eonet.ne.jp]:587 (変更) mynetworks = 192.168.xxx.0/24, 127.0.0.1 (変更) mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = ipv4 (変更) home_mailbox = Maildir/ (追加) smtp_sasl_auth_enable = yes (追加) smtp_sasl_mechanism_filter = plain, login, cram-md5 (追加) smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd (追加) smtp_sasl_security_options = noanonymous (追加) postfixの再起動 #service postfix restart さらにpopサーバとしてdovecotをインストール #apt-get install dovecot-pop3d dovecot.confの編集 #vi /etc/dovecot/dovecot.conf listen = *, :: (コメントアウト) disable_plaintext_auth = no (追加) 10-mail.confの編集 #vi /etc/dovecot/conf.d/10-mail.conf mail_location = maildir :~/Maildir (変更) dovecotの再起動 #service dovecot restart 以上でメールサーバのインストールが完了しました。メーラーでメールの送受信テストをして動作確認をします。 メールエイリアスの設定 root宛のメールをユーザーに転送できるようメールエイリアスを設定しておきます。 #vi /etc/aliases root: user1 (追記) #newaliases |
|
Raspberry Pi に各種パッケージをインストール(samba) |
---|
2018年6月15日 |
===> sambaのインストール : ファイルサーバ #apt-get install samba ファイルを置くディレクトリーの作成 #mkdir /home/samba #chmod 777 /home/samba smb.confファイルの編集 #vi /etc/samba/smb.conf 以下を修正または追加 workgroup = HOME (変更) interfaces = 127.0.0.1 192.168.xx.0/24 (変更) bind interfaces only = yes (アンコメント) [public] (これより下追加) comment = public path = /home/samba public = yes read only = no browsable = yes writable = yes guest ok = yes guest only = yes sambaの再起動 #service smbd restart Windows PC等でファイルサーバへのアクセスとファイルの読み書きができるか確認をします。 Windowsエクスプローラーで \\<hostname> を入力するとファイルサーバーが表示されます。 Windows10のアップデートで機能更新プログラムをインストールした後、sambaサーバへのアクセスができず、「エラーコード0x80070035ネットワークパスが見つかりません」と表示されることがよくあります。この場合、一旦ネットワークを切断して再接続するか、ネットワークリセット([Windowsの設定]→[ネットワークとインターネット]→[ネットワークのリセット])を行うとsambaサーバへのアクセスが可能となります。 |
Raspberry Pi に各種パッケージをインストール(unbound) |
---|
2018年6月16日 |
===> unboundのインストール : DNSサーバ #apt-get install unbound unbound.confファイルを新規に作成します。ファイル名は任意(xxxxx.conf) #vi /etc/unbound/unbound.conf.d/unbound.conf server: interface: 0.0.0.0 access-control: 127.0.0.1 allow access-control: 192.168.0.0/24 allow local-data: "raspi3.xxxxxx.net. IN A 192.168.0.xx" ・・・・・・・・・・・・ local-data-ptr: "192.168.0.xx raspi3.xxxxxx.net." ・・・・・・・・・・・・ forward-zone: name: "." forward-addr: 8.8.8.8 forward-addr: 8.8.4.4 forward-addr: 192.168.0.xx (ルーターのIPアドレス) 作成したunbound.conf ファイルのチェックをします。 #unbound-checkconf unboundの再起動 #service unbound restart または、#systemctl restart unbound 次に、クライアントのネットワーク設定で、DNSアドレスをDNSサーバーのIPアドレスに変更しておきます。 #vi /etc/dhcpcd.conf static domain_name_servers=192.168.0.xx クライアントから、hostまたはnslookupコマンドで動作確認をします。コマンドがなければインストール(#apt-get install host または、#apt-get install dnsutils)します。 正引きのテスト #host raspi3.xxxxxx.net 逆引きのテスト #host 192.168.xx.xx 名前解決ができていれば完了です。 |
Raspberry Pi に各種パッケージをインストール(logwatch) |
---|
2018年6月16日 |
===> logwatchのインストール : サーバのログレポート #apt-get install logwatch configファイルの作成 デフォルトのlogwatch.conf が /usr/share/logwatch/default.conf にあるので /etc/logwatch/conf へコピーします。 #cp /usr/share/logwatch/defoult.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf logwatch.confの編集 #vi /etc/logwatch/conf/logwatch.conf MailTo = xxxx (メールの宛先、ユーザー名、root等) Detail = Med (情報の詳細レベル、Low/Med/Highを好みで) logwatchの標準出力テスト #logwatch --output stdout /var/cache/logwatch のディレクトリーがないと次のエラーメッセージが出ます。 /var/cache/logwatch No such file or directory at /usr/sbin/logwatch line 643. ディレクトリーを作成します。 #mkdir /var/cache/logwatch 再度、テストします。 #logwatch --output stdout 何も表示されません。 デフォルトの設定では昨日のログを表示しますが、昨日のログが無いようなので今日のログを表示してみます。 #logwatch -range today レポートが出力されればOK 次に、レポートのメール送信テストを行います。 #logwatch --output mail レポートが設定したメール送信先へ届けばOK cronにlogwatchの起動設定がされているので、毎朝06:25にレポートがメール送信されます。 |
Raspberry Pi に各種パッケージをインストール(mrtg) |
---|
2018年6月16日 |
===> mrtgのインストール : サーバの監視ツール(CPU温度) #apt-get install mrtg mrtgを出力するディレクトリィの作成 #mkdir /var/www/html/mrtg (追記)2024/10 自動でディレクトリィが作成されました。bookworm mrtg.cfg の編集 #vi /etc/mrtg.cfg WorkDir: /var/www/html/mrtg (変更) # CPU temperature (以下追加) Target[cputemp]: `cat /sys/class/thermal/thermal_zone0/temp|cut -c1-2 && cat /sys/class/ thermal/thermal_zone0/temp|cut -c1-2 && echo && uname -n` MaxBytes[cputemp]: 70 Title[cputemp]: CPU Temperature Log PageTop[cputemp]: CPU Temperature Log Options[cputemp]: gauge,growright,absolute,noinfo,nopercent,unknaszero,integer Unscaled[cputemp]: dwmy YLegend[cputemp]: Temperature ShortLegend[cputemp]: deg-C LegendI[cputemp]: CPU Temp LegendO[cputemp]: CPU Temp Legend1[cputemp]: CPU Temp Legend2[cputemp]: CPU Temp (追記)2024/10 mrtg.cfgの保存先が変更されていました。/etc/mrtg/mrtg.cfg また、設定ファイルmrtg.cfgをここに置いておきました。 mrtg の起動 #env LANG=C mrtg /etc/mrtg.cfg (追記)2024/10 #env LANG=C mrtg /etc/mrtg/mrtg.cfg に変更 警告が出なくなるまで起動する。 ウェブブラウザで http://192.168.xx.xx/mrtg/cputemp.html を開いて動作確認をします。 (追記)2024/10 5分ごとに自動起動しないので、/etc/cron.d を見てみるとmrtg がありませんでした。手動で作成しました。 #vi /etc/cron.d/mrtg */5 * * * root /usr/bin/mrtg /etc/mrtg/mrtgfg > /dev/null 2>&1 #systemctl restart cron |
Raspberry Pi に各種パッケージをインストール(webalizer) |
---|
2018年6月18日 |
(追記)webalizerは既に廃止になっています。bullseye (追記)bookworm で復活しました。 ===> webalizerのインストール : アクセスログ解析ツール #apt-get install webalizer webalizerを出力するディレクトリィの作成 #mkdir /var/www/html/webalizer webalizer.conf の編集 #vi /etc/webalizer/webalizer.conf OutputDir /var/www/html/webalizer (変更) Incremental yes (変更) HostName www.tonaru.net (必要あれば変更) DNSCache dns_chache.db (アンコメント) DNSChildren 5 (アンコメント) HTMLHead <META HTTP-EQUIV="content-Type" CONTENT="text/html;charset=UTF-8"> (追加) SearchEngine .yahoo. p= (変更) SearchEngine bing.co q= (追加) DNSキャッシュの作成 #webazolver ログファイルの解析実施 #webalizer -c /etc/webalizer/webalizer.conf /var/log/apache2/access.log.4.gz #webalizer -c /etc/webalizer/webalizer.conf /var/log/apache2/access.log.3.gz #webalizer -c /etc/webalizer/webalizer.conf /var/log/apache2/access.log.2.gz #webalizer -c /etc/webalizer/webalizer.conf /var/log/apache2/access.log.1 #webalizer -c /etc/webalizer/webalizer.conf /var/log/apache2/access.log ウェブブラウザで http://192.168.xx.xx/webalizer/ を開いて動作確認をします。 毎朝6時25分に自動実行するようにクローンに登録されています。 |
Raspberry Pi 3 Model B+ をSSDで起動 |
---|
2018年6月18日 |
Raspberry Pi をサーバとして長期間連続使用する上で、microSDによる運用は信頼度面で不安があります。このため、メインディスクをSSDに変更することにしました。 最初に、ファイルシステムをSSDに切り替える前にSSDのトラブル等に備えmicroSDでの起動に必要な cmdline.txtファイルを他のPCなどを利用してバックアップ・コピーしておきます。次に、microSDをRaspberry Piに戻して Raspbianを起動し、SSDをSTA-USB変換アダプターを介して接続します。 SSDのID確認 #fdisk -l 「/dev/sda1」などと表示されます、 SSDのフォーマット #fdisk /dev/sda /dev/sda1にLinux(83)を設定 #mke2fs -j /dev/sda1 #e2fsck /dev/sda1 SSDをアンマウント #umount /dev/sda1 ファイルシステムのコピー #mkdir /tmp/usd /tmp/ssd #mount /dev/mmcblk0p2 /tmp/usd #mount /dev/sda1 /tmp/ssd #(cd /tmp/usd;tar --backup -c *)|tar -C /tmp/ssd -xv 起動時のファイルシステムのパーテション変更 #mkdir /tmp/boot #mount /dev/mmcblk0p1 /tmp/boot cmdline.txt の編集 #vi /tmp/boot/cmdline.txt root=PARTUUID=9c21e37e-02 を root=/dev/sda1 に変更 ( PARTUUID=9c21e37e-02)などマシンによって異なる メモリー内データを同期して再起動 #sync #reboot これでSSD起動します。念のためディスクの空き容量を確認しておきます。 #df なお、SSDのトラブルなどで Raspberry Pi が起動しなくなった場合、保存しておいた cmdline.txtファイルを他のPCでmicroSDへ上書きするか、エディタで元の内容に書き戻せばmicroSDにて起動することができます。 |
動画ストリーミング MJPG-Streamer |
---|
2019年8月28日 |
動画ストリーミングソフト MJPG-Streamerをインストールしてみました。 USBカメラは手持ちのロジクールのC270を使用します。まず、MJPG-Streamerに必要なパッケージをインストールします。 #apt-get install subversion libjpeg-dev imagemagick MJPG-Streamerのソースコードを取得します。 #cd home/pi #svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer #cd mjpg-streamer ソースコードをgccでコンパイルします。 #make 次のエラーメッセージが出てコンパイルに失敗しました。 make: *** [<ビルトイン>: utils.o] エラー 1 Raspverry Pi のOSは、Raspbianの最新OS Busterです。試しに、古いOS Raspbian Stretchをインストールしている別のRaspberry Piでは問題なくコンパイルできました。 原因調査に時間がかかりそうなので、Raspberian Stretch OSを使用しているマシンの/hone/pi/mjpg-streamer配下ににあるすべてのファイルをBusterのマシンに丸ごとコピーしたら問題なくMJPG-Streamerが動作したのでこれを利用することにしました。 コンパイル済のファイルをFTP等で転送しMJPG-Streamerをインストールします。 #cd /home/pi/mjpg-streamer #make install (追記)その後、よく調べてみたらコンパイル時に utils.o ファイルが見つからないようです。 Raspberian Stretch OS マシンの /home/pi/mjpg-streamer 配下に utils.o ファイルがあったので、それをコピーして持ってきたらコンパイルが正常に終了しました。 MJPG-Streamerの起動スクリプトを作成します。 #vi start-mjpg.sh #!/bin/sh PORT="8080" SIZE="960x720" FRAMERATE="15" export LD_LIBRARY_PATH=/usr/local/lib /home/pi/mjpg-streamer/mjpg_streamer -i "input_uvc.so -f $FRAMERATE -r $SIZE -d /dev/video0 -y -n" -o "output_http.so -w /usr/local/www -p $PORT" -b MJPG-Streamerを起動します。 #sh start-mjpg.sh ウェブブラウザでhttp://アドレス:8080/で表示されればOKです。 Respberry Piを起動したときに自動でMJPG-Streamerを立ち上げるには、/etc/rc.localに以下の記述を追加します。 #vi /etc/rc.local sh /home/pi/mjpg-streamer/start-mjpg.sh MJPG-Streamerのスナップショット(静止画)をウェブ上に残すために、以下のスクリプトを作成します。 # vi /home/pi/snapshot.sh #!/bin/bash FILENAME=`date +%Y%m%d%H%M` wget -O /var/www/html/webcam/$FILENAME.jpg http://192.168.0.**:8080/?action=snapshot #mkdir /var/www/html/webcam crontabに登録 #crontab -e MAILTO="" 1-59/5 * * * * sh /home/pi/snapshot.sh 以上で5分毎のスナップショットが記録されます。 |
監視カメラのパン・チルトをサーボモーターで制御する雲台の製作 |
---|
2019年9月1日 |
MJPG-Streamerで動画ストリーミングを行っていますが、カメラの向きが固定で使い勝手が悪いため、安価なサーボモーターを利用してパン・チルトを遠隔で制御できる電動雲台を製作してみました。 ネットで検索してみると、サーボモーター:SG90、SG90用雲台:A838、サーボモーターコントローラー:PCA9685を利用した電動雲台の記事がたくさん出てきます。これらの機材をAmazonで調達し組み立ててみました。プログラムはネットからダウンロードしました。最初、木材を加工した箱の中にコントローラーを納めて箱の上に雲台とUSBカメラを設置しましたが、サーボーモーターを動かしたとき、雲台を設置した箱がひっくり返ってしまうので鉄のアングルを組み合わせて重たくしました。 Raspberry PiからサーボコントロールのためのI2C信号線を引き出しているので、気圧、温度、湿度計測用のセンサーAE-BME280も箱の上に取り付けました。 |
Raspberry Pi 起動不能 Karnel Panic |
---|
2019年10月17日 |
監視カメラに使用していたRaspberry Pi のアップデートをしていたところ、パッケージの更新中にエラーが出て アップグレードに失敗しました。そこで、Raspberry Pi をリブートしたところ起動できなくなりました。起動の途中 にKarnel Panickのエラーが出て先へ進みません。一部のファイルがクラッシュしたようです。 SDカードを他のLinuxマシン(Debian)にUSBカードリーダーを介して接続し、fsckを実行してファイルシステム の修復を試みてみました。 SDカードがどのデバイスとして認識されているか調べます。 #ls /dev USBカードリーダーを抜き差ししてデバイス名を比較すると、sdg1とsdg2が認識されました。 fsckを実行します。 #fsck -af /dev/sdg1 #fsck -af /dev/sdg2 エラー修正があれば実行するか否かyes,noを聞いてくるので、ひたすらYキーを押し続けます。 sdg2にエラー修正が大量にありました。しかし、SDカードをRaspberry Pi に戻し、起動してみたら Karnel Panic のエラーが再度出て起動できません でした。お手上げです。OSを再インストールすることにします。 |
Motion動体検知監視カメラ |
---|
2020年6月20日 |
動体検知で撮影した映像を保存できるMotionを入れてみました。 USBカメラはUVCタイプのものを使用します。 必要なパッケージをインストールします。 #apt-get install motion 映像を保存するための任意のディレクトリーを作成。保存ファイルをウェブからダウンロードできるようにします。 #mkdir /var/www/html/motion/log motionの設定ファイルmotion.confを編集します。 #vi /etc/motion/motion.conf 以下の項目を変更します。 daemon on width 960 height 720 framerate 30 threshold 3000 event_gap 10 target_dir /var/www/html/motion/log stream_localhost off webcontrol_localhost off movie_filename %Y-%m-%d_%H:%M:%S 保存ファイル名の変更 movie_filename の変更で、「/」を使用すると保存ディレクトリーの配下に自動で / の前の文字列のディレクトリーが作成されます。例えば、movie_filename %Y/%m/%d_%H%M%S とするとY(年)のディレクトリーとその配下にm(月)のディレクトリーが作成されでデーターが自動的に整理されます。 自動起動の設定 #vi /etc/default/motion start_motion_daemon=yes Raspberry Pi起動時にmortion起動させます。 #vi /etc/rc.local motion & を一行追加 #motion & にて起動テストします。 http://<Raspberry PiのIPアドレス>:8081/ を閲覧して表示できればOKです。 長時間運用すると録画された映像ファイルが大きくなるので定期的に削除するcronを設定します。 ファイルを削除するスクリプトを作成します。 #vi /home/pi/delete_motionfile.sh #!/bin/bash find /var/www/html/motion/log -name "*.mkv" -mtime +1 -delete exit 0 (注) 「+1」は1日変更がないファイルを削除。半日の場合は「+0.5」とします。 ファイルの属性を変更します。 #chmod 755 /home/pi/delete_motionfile.sh crontab に登録します。 #crontab -e 0 0 * * * sh /home/pi/delete_motionfile.sh |
Raspberry Pi 4 8GB に64bit版OSを入れてみる |
---|
2020年6月21日 |
Raspberry Pi 4B 8GB が手に入ったので、Raspberry Pi OS の64bit版をインストールしてみました。現時点ではbetaテスト版です。 イメージファイルは、https://downloads.raspberrypi.org/raspios_arm64/images/よりダウンロードします。 現時点での最新ファイルは、 2020-05-27-raspios-buster-arm64.zip です。 ファイルをダウンロードして解凍し、マイクロSDにイメージをコピーすればOKです。 SDカードをRaspberry Pi にセットし電源を入れたら問題なく起動しました。 32bit版の推奨ソフトが入ったものよりパッケージソフトがだいぶ少ないみたいで、日本語入力もできません。 #apt-get install fcitx-mozc を実行し日本語入力が可能になりました。 bata版のためか動作が不安定で、WiFiが時々つながらなくなりrebootしなければならないこともことも時々あります。レスポンス感は32bit版と変わらないようです。使い倒すには正式版がリリースされるまで待った方がよさそうです。 (追記) Raspverry Pi 4をUSBからbootするには以下の確認と設定をします。 bootloaderのバージョン確認 #vcgencmd bootloader_version bootloaderのアップデート #rpi-eeprom-update -a #reboot bootの優先順位確認、設定 #raspi-config 「Advanst Options」 → 「Boot Order」 → 「USB Boot」を選択 |
Raspberry Pi 4 8GB に Ubuntu20.10を入れてみる |
---|
2020年11月16日 |
Raspberry Pi4 8GB 向けに Ubuntu20.10 64bit Desktop OS がリリースされたのでインストールしてみました。 Raspberry Pi Imager を利用してSDカードにイメージファイルをコピーするだけで準備完了です。SDカードをRaspberry Piにセットし電源を入れるだけで問題なく起動しました。初期設定もRaspberry Pi OSよりもわかりやすいように感じました。 さすがに完成度が高いOSで、使い勝手が非常に良いように思います。SDカードでも結構サクサクと動作しデスクトップパソコンとして十分利用できます。ただ、Buluetoothの動作が不安定で接続して直ぐに切断されます。使用したBluetooth機器はエレコムのワイヤレスキーボードです。いろいろ調査した結果、「bluetooth.service」を手動で再起動すると接続できることがわかりました。 #systemctl restart bluetooth.service そこでOS起動時にこのコマンドを自動実行させることにしました。rc.localに書こうと思ったら、/etc/rc.localがありません。どうやら最近のubuntuにはrc.localがないようですが、ファイルを作成すれば利用できるようなので、新たにファイルを作成し目的のコマンドを記述しました。 #touch /etc/rc.local #chmod 744 /etc/rc.local #vi /etc/rc.local #!/bin/sh systemctl restart bluetooth.service さらに、bluetoothが切断されても自動的に再接続させるように「bluetoothctl」で接続したい機器の信頼設定をしました。 #bluetoothctl >devices >trust xx:xx:xx:xx:xx:xx:xx:xx #exit #reboot 次にUSB接続のSSDで動作させてみることにしました。 Raspberry PiにSSDを接続しパーティションを作成します。 #lsblk SSDが認識されているデバイスを確認 → /dev/sda1 #fdisk /dev/sda /dev/mmcblk0p2にUbuntuが入っているのでこれをまるごとSSDにコピーします。 #dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=16M conv=noerror,sync SSDのパーティションラベルを変更します。 現在のパーティションラベルを確認 #e2label /dev/sda1 パーティションラベルをUbutuに変更 #e2label /dev/sda1 Ubuntu カーネルコマンドラインのブートパーティションを変更する。 #vi /boot/firmware/cmdline.txt root=LABEL=writable を root=LABEL=Ubuntu に変更 再起動します。 #reboot かなり速くなりました。 micrSDカードなしでUSB接続SSDを起動する方法も試してみました。 Raspberry Pi 4 のboot EEPROMが2020-09-03以降のものであればUSBから起動できるようなので、EEPROMのバージョンを確認します。 Raspberry Pi 4をSDカードからRaspberry OSで起動します。 #vcgencmd bootloader_version 2020-09-03以前であればEEPROMを更新します。 #apt update #apt full-upgrede #reboot EEPROMに書かれているboot orderを確認して、ブート順序を確認します。 #vcgencmd bootloader_config BOOT_ORDER=0xf41 となっていればUSBで起動され起動できなければSDで起動されます。 UbuntuはWindous PCでRaspberry Pi Imagerを利用してSSDにイメージファイルをコピーします。Raspberry Pi 4のUSBに接続するだけで問題なくubuntu20.10が起動できました。 |
Raspberry Pi(64bit) に JTDX をインストール |
---|
2022年3月10日 |
Raspverry Pi OSの64ビット版が先般正式リリースされたので早速Raspverry Pi 4にインストールしてみました。RaspverryPi Imagerを利用してSSDにOSイメージをコピーするだけなのでインストールはいたって簡単です。Raspberry Pi 4のUSBコネクタにOSイメージをコピーしたSSDを接続し電源ONで直ぐに起動しました。 以前からRaspberry PiにJTDXをインストールして常時稼働のFT8モニターシステムつくろうと考えていたこともあり、今回RaspiOS(64bit)でJTDXを動かすことにトライしてみました。JTDXのダウンロードサイトではRaspverry Pi 64bit版のソフトウエアが未公開なので、ソースコードをダウンロードしてRaspberry Pi上でコンパイルすることにしました。ネット検索すると、「Raspi4にUbuntu20.04LTS+JTDX-rc150+CQRLOG2.4.0+TQSLをインストール」という記事がヒットしたのでこれを参考にJTDXをインストールしてみました。 JTDX本体とJTDXの設定に必要な無線機のライブラリー Hamlibをインストールします。 最初に、コンパイルに必要な各種のライブラリーソフトをインストールします。 #apt update #apt full-upgrade #apt install build-essential cmake automake libtool gfortran pkg-config asciidoc asciidoctor qttools5-dev qttools5-dev-tools qtmultimedia5-dev libqt5serialport5-dev libudev-devlibfftw3-dev cmake git libhamlib-dev libhamlib-utils portaudio19-dev libqt5multimedia5-plugins coderay dialog libsamplerate0-dev python3-pip python3-tk python3-dev python3-numpy python3-setuptools python3-dev subversion texinfo libfreetype6-dev libgtk-3-dev libgtk2.0-dev libjpeg-dev liblcms2-dev libtiff5-dev libwebp-dev tcl8.6-dev tk8.6-dev libusb-dev libusb-1.0-0-dev .imagetk libqt5websockets5-dev 上記の文字列が長くタイプミスがあるかもしれないので、文字列のテキストファイルをここに置いておきます。 Hamlibをインストールします。 インストール先は、/home/user 配下とします。 #mkdir /home/user/hamlib-prefix #cd /home/user/hamlib-prefix #git clone https://github.com/jtdx-project/jtdxhamlib src #cd src #./bootstrap #mkdir ../build #cd ../build #HOME='/home/user' #../src/configure --prefix=$HOME/hamlib-prefix 上記はCAT機能を使わない場合です。CAT機能を使う場合はコンパイルオプションを以下のように変更します。 #../src/configure --prefix=$HOME/hamlib-prefix--disable-shared --enable-static --without-cxx-binding --disable-winradio CFLAGS="-g -O2 -fdata-sections -ffunction- sections" LDFAGS="-WL,--gc-sections" #make #vi /etc/ld.so.conf nclude /etc/ld.so.conf/*.conf /home/user/hamlib-prefix/lib (一行追加) #make install-strip #ldconfig #ldconfig -p | grep libham* JTDXをインストールします。 #mkdir -p /home/user/jtdx-prefix/build #cd /home/user/jtdx-prefix #git clone https://github.com/jtdx-project/jtdx src #cd /home/user/jtdx-prefix/build #cmake -D CMAKE_PREFIX_PATH=/home/user/hamlib-prefix -D CMAKE_INSTALL_PREFIX=/home/user/jtdx-prefix ../src #cmake --build . #cmake --build . --target install これでJTDXのインストールが完了しました。 #/home/pi/jtdx-prefix/bin/jtdx でJTDXが起動します。 JTDXのバージョンはv2.2.159でした。2022/3/1 にリリースされた最新版です。 なお、QSOログwsjtx.log、wsjtx_log.adiの保存先は以下のディレクトリィです。 /home/pi/.local/share/JTDX (追記)2023/12 JTDXをUbuntu Desktop 23.10(64-bit)にインストールしたところ、#cmake -D CMAKE_PREFIX_PATH=/home/pi/hamlib-prefix -D CMAKE_INSTALL_PREFIX=/home/pi/jtdx-prefix ../srcの実行で以下のエラーがでました。 そこで、libqt5websockets5-dev をインストールしたところエラーが解消しました。コンパイルに必要なライブラリーを入れ忘れたようです。 #apt install libqt5websockets5-dev 2024/1 追記 Ubuntu Desktop 23.10(64-bit)でもJTDXが動作することを確認しました。 2024/7 追記 Raspberry Pi OS(64bit) bookwormでもJTDXが動作することを確認しました。 2024/8 追記 パッケージソフト jtdx v2.2.159 がありました。#apt install jtdx これだけで簡単にインストールできます。 パッケージソフト wsjtx もありました。#apt install wsjtx Raspberry Piにはマイク入力端子がないので受信機からの音声信号を取り込むことができません。そこで、USBオーディオ変換ケーブルを利用して音声信号を取り込むことにしました。少し古い機種ですが、BUFFALOのBSHSAU01BKという変換ケーブルが手持ちにあったのでRaspberry Piにつないでみました。ドライバーのインストール無しで問題なく動作しました。 次にJTDXの起動アイコンを作成します。 JTDXのアイコン画像はネット上にあるフリーのアイコン素材を提供しているサイトからJTDXのマークによく似たアイコン素材をダウウンロードしました。 アイコン画像(jtdx.bmp)は/home/user/Picturesに置きました。 #mkdir /home/user/Pictures #cd /home/user/Pictures #wget https://www.tonaru.net/download/jtdx.bmp #chmod 755 jtdx.bmp desktopファイルを作成します。 #vi /usr/share/applications/JTDX.desktop [Desktop Entry] Type=Application Encoding=UTF-8 Name=JTDX Comment=JTDX V2.2.159 Exec=/home/user/jtdx-prefix/bin/jtdx Categories=Network;WebBrowser; Icon=/home/user/Pictures/jtdx.bmp Terminal=false #chmod 644 /usr/share/applications/JTDX.desktop #reboot これでJTDXの起動アイコンが作成できました。ファイルマネージャーで/usr/share/applicationsを開いてその中にあるJTDXアイコンをコピーしてデスクトップに張り付けます。 (追記)2023/12 Ubuntuのデスクトップに上記起動アイコンを置く場合は、/home/pi/Desktop配下にJTDX.desktopファイルを置きます。 表示されたアイコンを右クリックして「起動を許可する」をクリックするとアイコンの右下の×印が消えます。 この状態で起動アイコンをクリックするとJTDXを起動することができます。 |
Raspberry Pi (64bit) でSDRソフトウェアラジオを動作させる |
---|
2022年3月15日 |
10年近く前にWindows PCでSDRドングル(RTL2832U)とアップコンバータを利用した短波帯の無線受信を実験していたときの機材が残っていたので、これを活用してRaspberry PiでSDRソフトウエアラジオを動作させてみました。SDRドングルはDVT-T+DAB+FMという型番で、アップコンバーター(100MHzアップ)はHF Conv/RTl SDR v1.7という型番です。 ソフトウエアはGqrxというパッケージを使います。 Gqrxのインストール #apt update #apt full-upgrade #apt install gqrx-sdr これでインストールが完了です。デスクトップアイコンも自動で作成されています。 Raspberry PiにSDRドングルを接続して、これが認識されているか確認します。 #lsusb GUI画面でアイコンをクリックしてGqrxを起動し、I/O inputやAudiooptput等の設定を行えば受信可能となります。 受信出力を既にインストールしているJTDXに入力すれば、FT8等のデジタル通信をRaspberry Piのみでモニタできます。Gprxの音声出力(Raspiのオーディオ端子またはUSBオーディオ変換ケーブルのオーディオ出力端子)とJTDXのマイク入力(USBオーディオ変換ケーブルのマイク入力端子)をオーディオケーブルで接続します。受信感度は非常にすばらしく、通常使用しているFTDX101MP+Windows11PCよりも微弱な信号がデコードできていま PSK-Reporterにもレポートできているので、省電力の常時運用モニターとして活用できます。 |
防犯カメラ映像モニター用ソフトウェアのインストール |
---|
2022年11月7日 |
Amazonのタイムセールで中華製の屋外防犯カメラが4500円で販売されていたいたので試しに買ってみました。DEKCOというブランドの商品で値段の割には機能が豊富です。映像の監視や様々な操作はスマートフォンのアプリ(CloudEdge)でできます。 この製品は Onvif に対応しているので、パソコンで映像監視するには iSpy というフリーのソフトウェアを利用することができます。常時監視するのであれば、Windowsパソコンより
Raspberry Piが電力消費の面で有利なので、手持ちのRaspberrry Pi4にインストールしてみました。 OSはRaspverry Pi OS 64bitです。まず、curlというパッケージをインストールする必要があるようです。 #apt install curl curlは既にインストールされていました。 #bash <(curl -s "https://raw.githubusercontent.com/ispysoftware/agetn-install-scripts/main/v2/install.sh") ソースコンパイルにかなりの時間がかかり、インストール完了までに1時間以上必要でした。 Onvifを利用するには、CloudEdgeの設定画面から「Onvifの設定」を開いてパスワードを設定しOnvifを有効にします。 iSpyはウェブブラウザ上で起動します。ウェブブラウザを立ち上げて、http://localhost:8090/を開けばiSpyの画面が出てきます。Onvif設定画面で必要な設定を行えばOKです。 |
2022年11月27日 |
以前、GooglrChartを使用して温湿度、気圧センサーBME280のデータをWeb画面に表示するシステムを構築していましたが、残念ながら2019年にGoogleChartのサービスが終了しシステムが動作しなくなりました。このため、別の方法で再構築することにしました。Webで検索したところ、「MBE280で取得した温湿度気圧をWeb画面に表示する」というブログ記事を見つけたのでこれを参考に再構築しました。 構築環境は以下のとおりです。 Raspverry Pi モデル:Raspverry Pi odel B Pulus Rev 1.2 OS:Raspbian GNU/Linux 11 (bullseye) Apache:Apache/2 .4.54 (Raspbian) Python:Python 3.9.2 インストール手順のみ記録しておきます。 bme280の計測データ取得 #apt install libapache2-mod-wsgi-py3 #pip3 install wiringpi #pip3 install Flask wiringoi-python-bme280からiringpi-python-bme280-main.zipをダウンロードし/home/user に転送します。 #unzip wiringpi-python-bme280-main.zip #cd /home/user/wiringpi-python-bme280-main/opt #chmod 755 bme280.py #./bme280.py /var/log/bme280log 配下にYYYYMMDD.logが作成されていればOK. 自動起動の設定 #cd /home/user/wiringpi-python-bme280-main/opt # cp -p bme280.py bme280_inc.py lcd1602_inc.py /opt/ # vi /etc/rc.local exit 0 の前に /opt/bme280.py を追加 Web画面へグラフを表示するプログラムの配置 #cd /home/user/wiringpi-python-bme280-main # cp html/bme280.html /var/www/html #cp -r js /var/www/html #mkdir /var/www/flask #cp py/app.wsgi /var/www/flask #cp py/app.py /var/www/flask #cp py/getlogdata.py /var/www/flask #chown -R www-data:www-data /vaw/www/html /var/www/flask /var/log/bme280log apacheの設定 #vi /etc/apache2/sites-available/flask_wsgi.conf <VirtualHost *:80> ServerName 192.168.0.XX ServerAdmin 192.168.0.XX DocumentRoot /var/www/html WSGIDaemonProcess app user=www-data group=www-data threads=5 WSGIScriptAlias /flask /var/www/flask/app.wsgi WSGIChunkedRequest On ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/flask/> WSGIProcessGroup app WSGIScriptReloading On Require all granted Options FollowSymLinks AllowOverride All </Directory> </VirtualHost> 設定の反映 #a2ensite flask_wsgi #systemctl restart apache2 http://192.168.0.XX/bme280.htmlにアクセスし画面が表示されればOK。 |
Raspberry Pi をHTTPSに対応させる |
---|
2023年2月21日 |
HomeServerをRaspberry Pi 4にアップグレードするついでに、WebサーバーをHTTPSに対応させることにしました。 Let's Encryptのデジタル証明書を自動的にドメイン名と紐づけしてくれるパッケージソフトをインストールします。 #apt install certbot python3-certbot-apache certbotを利用してデジタル証明書を得るには、Apache2が動作している必要があります。また、ルーターのポート変換設定(TCPポート80)が対象とするHomeServerに設定されていることを確認しておきます。インターネット側からHomeServerにポート80でアクセスできないと以下の作業でエラーが出ます。 #certbot --apache 証明書の紐づけにあたり、対話形式で入力を求められるので適宜必要な入力を行います。 入力がうまくいくと、「Congratulations! You have successfully enabled https://xxxx.xxxx」の表示が返ってきます。これで証明書の紐づけは完了です。 HomeServerのWebサイトをhttps://www.xxxx.yyy/とhttps://xxxx.yyy/両方でアクセスできるようにしてあるので、証明書を両者に対応させるため以下のコマンドを実行します。 #certbot certonly --webroot -w /var/www/html -d xxxx.yyy -d www.xxxx.yyy 要求を実行しますか?と聞かれるので E と入力します。 Apache2のHTTPSを有効化し、Apache2を再起動します。 #a2ensite default-ssl #systemctl restart apache2 ルーターのポート変換設定(TCPポート443)をHomeServerに設定します。 これでインタネット側からHTTPSでアクセスできるようになりました。 WiFiをOFFにしたスマホからアクセスし、URLの左側に南京錠のマークが出ればOKです。また、無料のサーバー監視サービスを提供しているCMANのSSLチェック機能を利用すればSSLの正常動作確認ができます。 Let's EncryptのSSL証明書の有効期限は3ヶ月ですが、certbotには自動更新の機能があるので特別なことをする必要はありません。 自動更新機能が正しく動作しているかは、以下のコマンドで確認できます。 #systemctl status certbot.timer |
ホームページアイコンを作成する |
---|
2023年3月14日 |
まず、アイコンのデザインを作成する必要がありますが、面倒なのでフリーのアイコン素材サイトを利用することにしました。非常に多くのアイコン素材を提供しているICON MONOから気に入った画像をダウンロードすることにしました。 次にダウンロードした画像をホームページアイコン用に変換する必要があります。Favicon.ico & App Icon Generatorというオンラインツールを利用して変換します。 変換したい画像ファイルを選択して変換し、変換されたファイルをダウンロードします。サイズ違いのファイルが多く作成されますが、この中から以下のファイルを選択して保存します。 favicon.ico android-icon-192x192.png apple-icon-180x180.png これらのファイルをホームぺージの index.html ファイルを置くディレクトリー(/var/www/html)に転送します。 次に、 index.html ファイルの最初にある <head> と </head> の間に以下の行を追加します。 <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> <link rel="apple-touch-icon" href="apple-icon-180x180.png" size="180x180"> <link rel="icon" type="image/png" href="android-icon-192x192.png" size="192x192"> 以上でアイコンが作成されました。ウェブブラウザでアイコンが表示されることを確認します。 |
Let's Encryptから証明書の有効期限切れの通知が届いた |
---|
2023年5月1日 |
本WebサーバーをHTTPSに対応させるためにLet's Encryptのデジタル証明書を利用していますが、Let's Encryptからその有効期限が切れますという通知メールがきました。メールのタイトルは、「Let's Encrypt certificate expiration notice for domain "tonaru.net"」です。メールの内容を読むと、有効期限が切れるまで19日となっているので証明書の有効期限を更新してくださいとのことです。 最新のLet's Encryptのcertbotには自動更新の機能があるので更新の操作をする必要がないと思っていましたが、念のため手動で更新操作をしてみました。 certbotから証明書の期限は7月20日まであるので更新できませんでしたと返ってきました。期限が1か月以上あると更新できないからです。 ブラウザの南京錠マークを右クリックして「接続がセキュリティで保護されています」を開き、右上の証明書マークをクリックすると証明書ビューアーが表示されるので、これで確認すると有効期限が7月20日となっています。4月21日に自動更新されていたようです。なにもしなくてよいみたいです。 |
Raspberry Piに小型OLEDをつないでみる |
---|
2023年8月20日 |
安価なOLED(有機EL小型ディスプレイモジュール)が手に入ったので、Raspberry Piのコンソールにしてみました。 OLEDは128x64ドット、0.96インチ、コントローラチップがSSD1306です。Raspberry PiのモデルはRaspberry Pi Zero W、OSはRaspberry Pi OS Lite(32-bit)を使いました。 「OLEDをRaspberry Piのコンソールにする」というサイトを参考にしました。 OLEDのピンGND、VCC、SCL、SDAをそれぞれRaspberry PiのGPIOのピン6、1、5、3に接続します。 次にI2C通信を有効にします。 #raspi-config OLEDデバイスが認識されているか確認します。 #apt install i2c-tools #i2cdetect -y 1 "3C"が表示デバイスのアドレスになります。 上記サイトから自動設定スクリプトを含むoled.zipファイルをダウンロードして、Raspberry Piの任意のディレクトリーに転送します。 zipファイルを解凍します。 #unzip oled.zip 自動設定スクリプトInstall.shを実行します。 #sh Install.sh /bin/oledが存在しないようなので、zipファイルを解凍した中にあるoledファイルを/bin配下にコピーし実行権限を与えます。 #cp oled /bin/oled #chmod 755 /bin/oled 再度Install.shを実行します。 #sh Install.sh Raspberry Piを再起動します。 #reboot OELDにRaspberry Piのログイン画面が表示されました。 リモート端末よりコンソール(/dev/tty1)にテキストをリダイレクト出力してみます。 #echo "test test test" > /dev/tty1 入力したテキストが表示されました。 (追記)2024/11 コンソールを日本語対応にするには、「Raspberry Pi のコンソールを日本語対応にする」を参照願います。 Raspberry Pi Zero Wのケースに取り付けました。 (追記)2024/8 Raspberry Pi OS bookwormでは正常に動作しないようです。 画面表示が以下のようになりました。 「Raspberry Pi 4で小さなSSD1306 OLEDディスプレーに文字を表示させてみた」というサイトを参考にして、Raspberry Pi OS (bookwormでOLED(SSD1306)で文字を表示させてみました。 まず、I2C通信を有効にしておきます。 #raspi-config SSD1306が認識されているか確認します。 #i2cdetect -y 1 CircuitPythonドライバーをPythonの仮想環境を作成してインストールします。 #python3 -m venv virutual (virutualは仮想環境のディレクトリィ名で何でもよい) #source virtual/bin/activate (virtual)#pip3 install adafruit-circuitpython-ssd1306 (virtual)#pip3 list (virtual)#deactivate 仮想環境から出る Adfruit_CircuitPython_SSD1306のサンプルプログラムの中から必要なPythonプログラムをダウンロードします。 ssd1306_pillow_demo.py、ssd1306_pillow_text、ssd1306_stats.py、ssd1306_pillow_ip.py、ssd1306_pillow_clock.pyをダウンロードして実行してみました。 #source virtual/bin/activate (virtual)#python3 ssd1306_pillow_demo.py (virtual)#python3 ssd1306_pillow_text.py (virtual)#python3 ssd1306_stats.py (virtual)#python3 ssd1306_pillow_ip.py (virtual)#python3 ssd1306_pillow_clock.py bookwormではPythonの仮想環境を作成しないとpip installでエラーが出ます。 仮想環境を作成せずにpip installするには、推奨されていませんがコマンドオプション --break-system-packeges を付ければ強制インストールできます。 #pip3 install --break-system-packages adafruit-circuitpython-ssd1306 これで仮想環境に入らずSSD1306 OLEDのPythonプログラムを動作させることができます。 |
温度センサー DS18B20を使って室温を記録する |
---|
2023年9月17日 |
温度センサー DS18B20 と Raspberry Pi で室温を連続して記録するシステムを作ってみました。 DS18B20 は Amazon 等で安価に入手可能な温度センサーで、防水処理がされているので水温測定にも利用できます。 Raspberry Pi には3本のリード線(赤、黄、黒)をGPIO端子に接続します。赤(VDD)を電源端子(3.3Vまたは5V)、黄(DQ)を1-Wire端子、黒(GND)を接地端子に接続します。また、赤(VDD)と黄(DQ)を5KΩ程度の抵抗器で接続し、DQを電源電圧にプルアップします。 DS18B20 は 1-Wire通信を利用するので、Raspberry Pi の 1-Wire を有効にします。 raspi-config コマンドで Interfacing Options から 1-Wire を有効化するか、または /boot/config.txt に dtoverray=w1-gpio の行を追記します。 次に、接続した DS18B20 が動作しているか確認します。 DS18B20 のディレクトリーを確認します。 #ls /sys/bus/w1/devices 「28-3c01d07564cf」がセンサーの固有IDです。 センサーIDを指定して内容を表示してみます。 #cat /sys/bus/w1/devices/28-3c01d07564cf/w1_slave 「t=27750」が測定温度の1000倍の値です。 DS18B20 の温度データを Python で取得します。 Python で 1-Wire データを取得できるライブラリーを pip3 でインストールします。 #pip3 install w1thermsensor 温度データを Python で取得するプログラム temp.py を作成します。 temp.py を Raspberry Pi の適当なディレクトリィに転送し、実行属性を付加し実行します。 #chmod 755 /home/user/temp.py #python /home/user/temp.py 温度が取得できました。 取得した温度データをテキストファイルに書き込むシェルスクリプト templog.sh を作成します。 #vi /home/user/templog.sh #!/bin/sh echo "$(date '+%m/%d %H:%M') $(python /home/user/temp.py)" >> /home/user/templog/temp.txt #chmod 755 /home/user/templog.sh 空のテキストファイルとこれを置くディレクトリィを作成します。 #mkdir /home/user/templog #touch /home/user/templog/temp.txt templog.sh を実行してみます。 #sh /home/user/templog.sh #cat /home/user/templog./temp.txt 時刻と温度がテキストファイルに記録できました。 一定間隔で温度を取得し、テキストファイルに書き込むため cron に登録します。 #crontab -e */10 * * * * sh /home/user/templog.sh これで、テキストファイル temp.txt に10分間隔で取得した温度データを書き加えていきます。 次に、1日分の温度データを日付を付けたファイルにコピーするとともに、temp.txt ファイルの中身を空にするためのシェルスクリプトを作成します。 #vi /home/user/filecopy.sh #!/bin/sh cp /home/user/templog/temp.txt /home/user/templog/$(data +"%Y%m%d").txt cp /dev/null /home/useru/templog/temp.txt #chmod 755 /home/user/filecopy.sh このシェルスクリプトを cron に登録します。 #crontab -e 59 23 * * * sh /home/user/filecopy.sh 以上で、毎日23時59分にその日の温度データを日付の付いたファイルに格納し、temp.txt 内のデータをクリアしてくれます。 temp.txt のデータをウェブブラウザで表示できるように、HTMLファイル temp.html を作成します。 作成した temp.html ファイルを Apache2 のドキュメントルート /var/www/html 配下に転送します。 /home/user/templog 配下にある temp.txt ファイルをドキュメントルート /var/www/html 配下に置く必要があるので、シンボリックリンクを張ります。 #ln -s /home/user/templog/temp.txt /var/www/html/temp.txt ウェブブラウザで http://(Raspberry PiのIPアドレス)/temp.html を開くと temp.txt に記録された温度データを表示することができます。 なお、/home/user/templog 配下に保存された過去の温度データ(テキストファイル)をウェブブラウザからダウンロードできるようにするには、HTMLファイル temp.html の10行目と11行目の間に、「 <a href="templog">Past Templog</a><br> 」を追記し、以下のディレクトリィのシンボリックリンクを張っておきます。 #ln -s /home/user/templog /var/www/html (追記) 上記システムを Rspberry Pi 3 Model B Rev1.2 で構築したところ、比較的低い頻度で測定エラーが発生しました。発生頻度は、システムを起動してから数時間後や十数時間後、数日後など不規則です。 一旦エラーが発生すると自動で復旧しません。エラー発生時にDS18B20が認識されているか #ls /sys/bus/w1/devices で調べてみると、センサー固有IDが表示されません。 センサー個体の不具合かもしれないと考え、別のセンサーで試してみましたが同じエラーが発生しました。センサーの問題ではないようです。 リブートではエラーが復旧せず、電源を入れ直すと復旧します。メモリー関係で何らかのバグがあるようです。 Raspberry Pi Model B Pulus Rev1.2 と Raspberry Pi Zero W 、Raspberry Pi 4 では問題なく動作しています。OSはすべて Raspberry Pi OS Bullseye です。 |
温度センサー BME280を使って室温を記録する |
---|
2023年9月26日 |
温度センサー BME280 と Raspberry Pi で室温を連続して記録するシステムを作ってみました。 BME280は Raspberry Pi の I2C通信を利用するので、#raspi-config で I2C を有効化します。 Raspberry Pi に BME280 を接続し、センサーが認識されているか確認します。 #i2cdetect -y 1 I2C アドレス 76 が表示されば認識されています。 今回は、Python3 で BME280 のデータを取得して表示するプログラムを使用します。 Python3 の I2C通信ライブラリー smbus2 をインストールします。 #pip3 install smbus2 スイッチサイエンスのGitHub BME280から bme280_sample.py をダウンロードします。 bme280_sample.py は Python2.7 用のプログラムなので、Python3 で実行すると print 文の箇所で構文エラーが出ます。print の後全体を()でくくります。 データを表示する型式の修正を含めて、print 文3か所を以下のとおり変更しました。 95行目 print "pressure : %7.2f hPa" % (pressure/100) → print("pressure :%7.1f hPa" % (pressure/100)) 103行目 print "temp : %-6.2f ℃" % (temperature) → print("temp : %-5.1f ℃" % (temperature)) 117行目 print "hum : %6.2f %" % (var_h) → print("hum :%5.1f %" % (var_h)) 修正した Python3 プログラム bme280_sample.py を Raspberry Pi の適当なディレクトリィに転送し、実行属性を与えます。 #python3 /home/user/bme280_sample.py 温度、気圧、湿度がそれぞれ表示されました。 なお、Raspberry Pi 3 Model B Rev1.2 では smbus2 エラーが出たので、#pip install smbus2 でPython2.7の smbus2 をインストールしたところ正常に動作しました。 温度のみ表示させたいときは、bme280_sample.py プログラムの気圧(pressure)と湿度(hum)のプリント文 print の頭に # を挿入し、温度(temp)のプリント文中の temp : を削除しbme280.py とリネイムして保存します。そして、bme280.py ファイルを Raspberry Pi の適当なディレクトリィに転送し実行属性を与えます。 #python3 /home/user/bme280.py 温度のみが表示されました。 取得した温度データをテキストファイルに書き込んだり、ウェブブラウザで表示するには、「温度センサー DS18B20 を使って室温を記録する」で作成したシェルスクリプト templog.sh の中の temp.py を bme280.py に置き換えます。 |
eoメールでのメールリレーができなくなった(postfix) |
---|
2023年12月8日 |
ホームメールサーバー(postfix)を構築して独自ドメインのメールアドレスを作成し、eoメールを利用したメールリレーでグローバルなメール送信をしていましたが、eoメールのセキュリティ強化により2023年12月5日からこれができなくなりました。 これに対処するため、OP25B対策のためのメールリレーをgmailに変更しました。 postfixで使用するgmailパスワードには、Googleアカウントの「アプリ パスワード」を作成しこれを利用する必要があります。 「アプリ パスワード」の作成方法は以下のとおりです。 作成した16桁のコードをメモしておきます。 postfixの設定変更は、main.cfファイルとsaslの認証ファイル二つです。 main.cfの変更 #vi /etc/postfix/main.cf relayhost = [smtpauth.eonet.ne.jp]:587 → relayhost = [smtp.gmail.com]:587 saslの認証ファイルの変更 #vi /etc/postfix/sasl_passwd [smtpauth.eonet.ne.jp]:587 xxx@xxx.eonet.ne.jp:<passward> → [smtp.gmail.com]:587 xxx@gmail.com:<password> gmailの<password>には、先に作成した「アプリ パスワード」を入力します。 変更したsasl認証ファイルをpostfixに反映 #postmap /etc/postfix/sasl_passwd 念のため設定が正しいか確認 #postfix check postfixの再起動 #systemctl restart postfix これでgmailでのメールリレーができるようになりました。 |
Raspberry Pi OSをbullseyeからbookwormにアップグレードする |
---|
2024年3月24日 |
2023年10月にRaspberry Pi OSがVer.11からVer.12にアップグレードされたので、Raspberri Pi 4にインストールしていたRaspberry Pi OS(64bit)をアップグレードしてみました。 Raspberry Pi OS Ver.12はDebian GNU/Linux 12 (bookworm)です。 アップグレードはCLIでsshターミナルから行います。 最初に、現在のOSのソフトウェアパッケージをアップグレードします。 #apt update #apt upgrade 不要なパッケージを削除します。 #apt autoremove sources.listファイルを編集します。 コメントアウトされている行のbullseyeをbookwormに置き換えて、non-free-firmwareを追加します。 #vi /etc/apt/sources.list deb http://deb.debian.org/debianbookwormmain contrib non-freenon-free-firmware deb http://security.debian.org/debiab-securitybookworm-security main contrib non-freenon-free-firmware deb http://deb.debian.org/debianbookworm-updates main contrib non-freenon-free-firmware Debian 12のパッケージ更新します。なお、新しいパッケージは追加せず、既存のパッケージのみアッグレードします。 #apt update #apt upgrade --without-new-pkgs システムのアップグレードを行います。 #apt full-upgrade システムの再起動を行います。 #reboot OSのバージョンを確認します。 #cat /etc/debian_version #lsb_release -d OSバージョンが新しくなりました。 最後に、不要なパッケージを削除しておきます。 #apt autoremove しかし、Raspberry Pi起動時の画面やGUI画面が正常に表示されず異常動作することがわかりました。 新しいOSのパッケージをアップグレードしてみたところ、「以下のパッケージは保留されます:xxxxx」という表示が出て、いくつかのパッケージがアップグレードできていませんでした。そこで、該当のパッケージを再インストールしてみました。 #apt update #apt upgrade #apt install xxxxx #apt upgrade これでGUIも正常に動作するようになりました。 |
Raspberry Pi OS bookwormの固定IPアドレス設定 |
---|
2024年6月10日 |
久しぶりにRaspberry Pi OS bookwormをインストールしてIPアドレスを固定化するために/etc/dhcpcd.confを編集しようとしましたが、そのファイルが見つかりませんでした。ネットで調べてみるとbookwormから固定IPアドレスの設定方法が変更されたようです。Raspberry Pi OS bookwormからネットワーク設定がdhcpcdではなくLinux標準のNetworkManagerになったようです。 ネットワークインターフェースは nmcli コマンドで設定できます。 #nmcli connection show ネットワークインターフェースの状況が表示されました。 nmcli modify コマンドによりネットワーク設定ができますが、今回はネットワーク設定ファイルを直接編集する方法でIPアドレスを固定化してみました。 /etc/NetworkManager/system-connectios/xxxxx.nmconnectionを以下のように編集します。xxxxxはWiFiのSSIDです。Raspberry Pi Imager等でSSIDを設定した場合は、preconfigured.nmconnectionとなります。 #ls /etc/NetworkManager/system-connections #vi /etc/NetworkManager/system-connections/xxxxx.nmconnection [ipv4]の行の下のmode=autoをmode=manualに変更します。そして、 address1=192.168.0.85/24,192.168.0.20 を追加します。192.168.0.85 は固定化したいIPアドレスで、192.168.0.20 はデフォルトゲートウェイ(ルーター)のIPアドレスです。さらに、dns=192.168.0.20を追加します。192.168.0.20はルーターのIPアドレスです。 #reboot IPアドレスが変更されたか確認しておきます。 #ifconfig |
Raspberry Pi OS bookworm で apt update を実行したときWARNINGが出る |
---|
2024年7月8日 |
Raspberry Pi OS bookworm (32bit) をインストールして apt update を実行するとapt-keyに関するWARNINGが出ます。これは、apt-keyが廃止されたためこれを利用しないように警告が出されているようです。なお、bookworm (64bit) では警告がでませんでした。 この警告を解消する方法は、raspberrypi fourumに記載されています。 #apt-key list | grep -A4 "trusted.gpg$" ・・・・・ pub rsa2048 2012-04-01 [SC] A0DA 38D0 D76E 8B5D 6388 7201 9165 938D 90FD DD2E ・・・・・ #apt-key export 90FDDD2E | gpg --dearmor -o /tmp/raspi.gpg #file /tmp/raspi.gpg #apt-key del 90FDDD2E #mv /tmp/raspi.gpg /etc/apt/trusted.gpg.d/ 以上でWARNINGはでなくなります。 #apt update |
Raspberry Pi (OS bookworm) に motion をインストール |
---|
2024年8月20日 |
PiカメラOV5647を取り付けたRaspverry Pi Zero 2 W (OSはbookoworm 64ビット)にmotionをインストールして使用してみました。 Raspberry Pi OS bullseye以前のOSでは、raspi-configでPiカメラを有効にして使用することができましたが、OS bookwormからraspi-configの「Legacy Camera」の有効/無効の設定項目が消えてしまっています。従来のカメラドライバが使えなくなったようです。OS bullseyeから新しいカメラドライバlibcameraを使うようになったらしい。公式サイトを確認すると、/boot/firmware/config.txtを以下のように編集してカメラを有効化する必要があると書いていました。 @ camera_auto_detect=1 の行を探して、camera_auto_detect=0 に書き換える A [all]の行を探して、dtoverlay=ov5647を一行追加する #vi /boot/firmware/config.txt #reboot カメラが認識されたか確認します。 #libcamera-hello --list-camera 認識されました。 ちなみに旧のカメラドライバ有効化確認コマンド vcgencmd get_camera を実行してみても有効化されていません。 静止画を撮って保存してみます。 #libcamera-still -n -o test.jpg 動画を撮って保存してみます。 #libcamera-vid -n -o test.h264 何故かERRORやWARNが出ますが、カレントディレクトリィにtest.jpg、test.h264が保存され再生できました。 Raspberry PiのLXTerminalを起動して、libcamera-hello -t 0 を入力するとraspiモニタにカメラ映像が表示されます。 motionをインストールします。 #apt install motion motion.confの編集は、以前のインストールメモを参照します。 motionの起動は以下のコマンドです。 #libcamerify motion 次のようなエラーが出ました。 libcamera-v4l2が無いようなのでインストールします。 #apt install libcamera-v4l2 再度motionを起動します。 #libcamerify motion エラーが消えました。 http://<Raspberry PiのIPアドレス>:8081/をブラウザで開くと映像が表示されます。 motionの停止は以下のコマンドです。 #pkill motion なお、#motionコマンドでも起動しますが画面が真っ黒でなにも映りません。 USBカメラを使用する場合は上記の設定は不要です。motion.conf に v4l2_palette 8 を追加するだけでOKです。 #vi /etc/motion/motion.conf V4l2_palette 8 #motion |
Raspberry Pi (OS bookworm) で TFTタッチスクリーンを使ってみる |
---|
2024年8月23日 |
Raspberry Pi OSがbookwormになってからRaspberry Piの周辺機器がうまく動作しないケースが少なからず見受けられます。 Alliexpressで購入した2.4インチのTFTタッチスクリーン(SHCHV 2.4inch RPi Display)もbookwormでは正常に動作しませんでした。 説明書に記載されているインストール手順は以下のとおりです。 #rm -fr LCD-show #git clone https://github.com/goodtft/LCD-show.git #chmod -R 755 LCD-show #cd LCD-show/ #./LCD24-show 手順どおりRaspberry Pi Zero 2 W bookworm(64bit) にインストールしましたが画面には何も映りません。 Raspberry Pi OS bullseye にインストールすると正常に映ります。 そこで、LCD24-showのファイルの中身を見てみると、「sudo cp -rf ./boot/config.txt.bak /boot/config.txt」という行がありました。bookowormから/boot/config.txtの場所が/boot/firmware/config.txtの変わったはずなので、ここを修正して再度インストールし直します。 結果、コンソール(CLI)モードでは画面が表示されるようになりましたが、GUIモードでは何も表示されませんでした。他にも修正する箇所があるようです。 ssh端末から、#clear > /dev/tty1 とコマンド入力すると画面が消去されます。 #echo "TEST TEST TEST" > /dev/tty1 #date > /dev/tty1 画面の表示向きや解像度の変更は、/boot/firmware/config.txt を編集します。 #vi /boot/firmware/config.txt rotate=270をrotate=90にすると180度表示の向きが変わります。 hdmi_cvt 480 360 60 6 0 0 0 をモニタの解像度(320x240)に合わせて、hdmi_cvt 320 240 60 6 0 0 0 に変更します。 解像度を変更したら見やすくなりました。 表示の向きの変更は、次のコマンドでも可能です。 #/home/user/LCD-show/rotate.sh 180 GUIモードで表示の向きを変えるにはこの方法で行います。タッチスクリーンの操作方向も同時に変更されます。 なお、モニタをHDMIに戻すには次のコマンドを入力します。 #./LCD-hdmi 再度TFTタッチスクリーンに戻すには次のコマンドを入力します。 #./LCD24-show 次に、Raspberry Pi Zero 2 W に bookworm (32bit)をインストールして別の機種のドライバを試してみました。 #rm -fr LCD-show #git clone https://github.com/waveshare/LCD-show.git #chmod -R 755 LCD-show #cd LCD-show #ls LCD24-showが無いのでLCD32-showを使うことにしました。 LCD32-showを編集して /boot/config.txt を /boot/firmware/config.txt に置き換えます。9か所あります。 #vi LCD32-show #./LCD32-show CLI モードでは以下のように画面が表示されましたが、GUI モードでは何も表示されませんでした。 なお、このドライバは、bookworm(64bit)では動作しませんでした。 |
Raspberry Pi のTFTタッチスクリーン(CLI)に画像を表示する |
---|
2024年8月26日 |
Raspberry Pi Zero 2 W に2.4インチのTFTタッチスクリーン(SHCHV 2.4inch RPi Display)を取り付けて、CLI 画面に画像を表示してみました。 OSはRaspberry OS bookworm(64bit)を利用しました。 タッチスクリーンのドライバのインストール手順は「Raspberry Pi (OS bookworm) で TFTタッチスクリーンを使ってみる」のとおりです。 CLI 画面に画像を表示することができるパッケージソフト fbi をインストールします。 #apt install fbi 画像を/home/user/Picturesフォルダーに転送しておきます。 Raspberry Pi のコンソールから以下のコマンドを打ち込みます。リモート端末からはNGです。 #fbi -d /dev/fb0 -a --noverbose /home/user/Pictures/test.jpg > /dev/null 2>&1 タッチスクリーンに画像が表示されます。 Raspberry Pi 起動時に画像を自動表示するには、/home/user/.bashrc ファイルの末尾にfbi 起動コマンドを登録します。 #vi /home/user/.bashrc /usr/bin/fbi -d /dev/fb0 -a --noverbose /home/user/Pictures/test.jpg > /dev/null 2>&1 raspberri-configコマンドでCLI への自動ログインを有効にします。 #raspi-config 「1 System Options」→「S5 Boot / Auto Login」→「B2 Console Autologin」 #reboot Raspberry Pi で写真スライドショーというサイトを参考にしてスライドショーを自動実行してみました。 #vi /home/user/.bashrc /usr/bin/fbi --device /dev/fb0 --autozoom --noverbose --timeout 5 --random $(find /home/user/Pictures -type d -name '.*' -prune -or -not -name '.*') #reboot なお、このコマンドを自動実行中にsshリモート端末からRaspberry Piにログインすると以下のようなメッセージが出ました。自動実行を停止するとメッセージは消えます。 fbi を停止するには、#pkill fbi と入力します。 |
Raspberry Pi 2inch IPS LCD Display を使ってみる |
---|
2024年9月14日 |
Raspberry Pi Zero シリーズに装着して使用するにサイズ感が丁度よく高画質で視野角が大きい2インチのIPS液晶ディスプレイを使ってみました。 Raspberry Pi Zero 2W にRaspberry Pi OS bulluseye(32bit)およびbookworm(32bit)、bookworm(64bit)をインストールして動作確認を行いました。 ドライバーのインストール方法は、SpotpearのUser Guidに記載されています。 OS imgファイルも用意されているので、OSを丸ごとSDカードにコピーすることができます。 上記サイトから「2inch-240x320-230822.img」をダウンロードし、Raspberry Pi Imager 等でSDカードにコピーするだけで動作します。OSはRaspberry Pi OS bulluseye(32bit)です。 ドライバーのみインストールする場合は以下の手順で行います。 User GuidのサイトからDisplay driver「lcd2.dtbo」をダウンロードし、これを/boot/overlaysにコピーします。 次に/boot/config.txt(bookwormの場合は/boot/firmware/config.txt)を以下のとおり編集します。 #vi /boot/congig.txt dtoverlay=vc4-kms-v3d および max_framebuffers=2 の行をコメントアウトします。 #dtoverlay=vc4-kms-v3d #max_framebuffers=2 [all]の行の下に以下の行を追加します。 dtparam=spi=on dtoverlay=lcd2:rotate=90 hdmi_force_hotplug=1 max_usb_current=1 hdmi_group=2 hdmi_mode=1 hdmi_mode=87 hdmi_cvt 480 320 60 6 0 0 0 * CLIで利用する場合は、hdmi_cvt 240 160 60 6 0 0 0 にした方が文字が大きくなり見やすい。* hdmi_drive=2 display_rotate=0 次にfbcpをインストールします。 #apt install git #git clone https://github.com/tasanakorn/rpi-fbcp.git #cd ./rpi-fbcp #mkdir -m 777 ./build #cd ./build #apt install libraspberrypi-dev #apt install cmake #cmake .. #make #install fbcp /usr/local/bin/fbcp /etc/rc.local ファイルの最後、fi と exit 0 の間に次の2行を追加します。 #vi /etc/rc.local sleep 20 fbcp & #reboot デスクトップモード(GUI)でブートすると以下のような画面が表示されます。ただし、OSがbookwormの場合32bit、64bitともに動作しませんでした。 コンソールモード(CLI)でブートすると以下のような画面が表示されます。bookworm(32bit、64bit)でも動作しました。 HDMIに戻すには、config.txtとrc.localファイルを元の設定に戻します。 HDMIとLCDの切り替えをシェルスクリプト作成しておくと便利です。 HDMI用のconfig.txtとrc.localファイルをぞれぞれconfig.txt.HDMI、rc.local.HDMIとして保存します。 同様にLCD用のconfig.txtとrc.localファイルをぞれぞれconfig.txt.LCD、rc.local.LCDとして保存します。 HDMIへの切り替えシェスクリプトを作成します。 #vi HDMI.sh #!/bin/sh cp /boot/config.txt.HDMI /boot/config.txt cp /etc/rc.local.HDMI /etc/rc.local raspi-config nonint do_boot_behaviour B4 reboot #sh HDMI.sh 同様にLCDへの切り替えシェルスクリプトを作成します。 #vi LCD.sh #!/bin/sh cp /boot/config.txt.LCD /boot/config.txt cp /etc/rc.local.LCD /etc/rc.local raspi-config nonint do_boot_behaviour B2 reboot #sh LCD.sh なお、bookwormでは、raspi-config nonint do_boot_behaviour コマンドが使えないので手入力でraspi-config設定を行います。 この2インチIPS液晶ディスプレイには2個のモジュールボタンが付属しています。 Spotpear User guide のサイトより key_test.py をダウンロードしてテストプログラムを動作させてみます。 #python3 ./key_test.py ボタンを押すと、「Key 1 pressed ! ! ! ! ! 」や「Key 2 pressed ! ! ! ! ! 」と表示されます。 pythonプログラムを一部修正し、リブートとシャットダウンのボタンに置き換えました。 プログラムを自動起動させるために、rc.local に登録しておきます。 #vi /etc/rc.local ファイルの最後 exit 0 の前に python3 /home/user/LCD-key.py & を一行追加します。 この2インチIPS液晶ディスプレイにはスピーカーも付属しています。 このスピーカーを利用するには以下の手順で設定を行います。 /boot/config.txt に dtoverlay=audremap,pins_18_19 の行を追加します。 #vi /boot/config.txt dtoverlay=audremap,pins_18_19 #reboot $sudo raspi-config 「1 System Options」→「S2 Audio」→「1 Headphones」 この設定は root ログインでは行えません。エラーが出ます。 音楽ファイル(wav、mp3等)をRaspberry Pi に転送します。 $vlc -I rc --play-and-stop test_music.mp3 スピーカーから音楽を再生することができました。root ログインでは再生できません。 なお、bookworm(32bit、64bit)では動作しませんでした。 |
Raspberry Pi のコンソールを日本語対応にする |
---|
2024年9月17日 |
Raspberry Pi Zero に 2inch IPS LCD Display を装着してコンソール(CLI)が手軽に使えるようにしましたが、日本語での入力や表示ができません。このため、「コンソールで日本語入力」というネットの記事を参考にしてRaspberry Pi のコンソールを日本語対応にしてみました。 使用したハードはRaspberry Pi Zero 2W 、OSはraspberry Pi OS bookworm(64bit)です。 コンソールで日本語の表示、入力が行える fbterm をインストールします。 #apt install fbterm fonts-ipafont uim-fep uim-mozc #chomd u+s /usr/bin/fbterm 日本語入力処理を行う uim-fep の設定ファイルを一部修正します。 #vi /usr/share/uim/generic-key-custom.scm デフォルトの設定 修正後の設定 「"<Control> "」の「> "」の間にはスペースが入ります。また、「Control」を別のキーに設定することもできます。 再起動後、fbterm を立ち上げます。 #reboot #fbterm uim-fep コンソールが日本語対応になりました。 日本語入力の切り替えは、[ Ctrl ] + [ Space ] です。画面の下部に mozc[Mzあ RM] の表示が出ているときが日本語入力モードです。 日本語フォントとフォントサイズは /home/user/.fbtermrc に設定されています。使えるフォント一覧は #fc-list で表示できます。 #vi /home/user/.fbtermrc #reboot フォントとフォントサイズの設定例 都度 fbterm を起動するのは面倒なので、/home/pi/.bashrc の任意の場所に起動コマンドを一行追加しておきます。 #vi /home/user/.bashrc fbterm uim-fep #reboot |
Raspberry Pi 2inch IPS LCD Display に Yahoo News を表示する |
---|
2024年9月24日 |
Raspberry Pi Zero 2W に2インチのIPS液晶ディスプレイを取り付けた日本語対応のコンソールができあがったので、これにYahoo Newsを表示させてみました。 OSはbookworm(64bit)を使用しました。 Yahoo NewsのRSSサイトから最新のニュースコンテンツを取り出すプログラムをpythonで作成します。 pythonのfeedparserモジュールをインストールします。OSがbookwormなのでpythonの仮想環境でインストールする必要がありますが、仮想環境外で動作させたいので強制インストールします。 #pip3 install --break-system-packages feedparser YahooNewsのRSSサイトからニュースコンテンツをダウンロードするプログラムです。ディスプレイ画面が小さいのでニュースタイトルのみ取り出します。 #python3 /home/user/Yahoo-news.py ニュースタイトル一覧が取り出せました。 10分間隔でニュースタイトルを取り出すシェルスクリプトを作成します。 コンソールからシェルスクリプトを起動します。 #sh /home/user/Yahoo-news.sh 停止は、[ Ctrl ] +[ C ]です。自動起動するには、/home/user/.bash.rc に起動コマンドを一行加えます。 |
Raspberry Pi Connect を Raspberry Pi Z 2W で試してみた |
---|
2024年9月26日 |
先日、Raspberry Pi Z 2W で使用している OS bookworm(64bit) を upgrade していたら、rpi-connect がインストールされたのでこれを試してみました。 最初に、Sign up - Raspberry Pi ID のサイトでアカウント登録をします。 必要な項目を入力して、Sign up すると確認メールが送られてきます。 確認メールの 「Verify email」ボタンをクリックすると登録完了です。 次に、Raspberry Pi にユーザーログインして Raspberry Pi Connect にサインインします。 $rpi-connect signin 指定されたURL [ https://connect.raspberrypi.com/verify/XXXXXXXX ] をブラウザで開きます。 「 Sign in as ・・・ 」ボタンをクリックします。 Raspberry Pi のデバイス名を入力して「 Create device and sign in 」ボタンをクリックします。 パソコンやスマホのブラウザで、https://connect.raspberrypi.com/devicces にアクセスしてログインします。 登録したデバイスを選択して接続します。 Raspberry Pi のコンソール画面が表示されます。 Raspberry Pi Connect をサインアウトするには以下のコマンドを入力します。 $rpi-connect signout (注)Raspberry Piからユーザーログアウトすると自動的にRaspberry Pi Connect もサインアウトされ、リモートでサインインできなくなります。常時Raspberry Pi Connect にリモートでサインインできる状態にしておくには、Raspberry Pi にユーザーログイン状態を保つ必要があります。 |