モバイル Raspberry Pi 3B システム設定

システム関連の設定を少し修正
 OpenGL有効
 swapファイル設定値変更
 LXPanel

OpenGL

webブラウザや動画プレイヤーからの再生はOpenGLを有効にしないとcpu使用率が上がってcpu温度マークが現れます。
/boot/config.txt 末尾のコメントを外す

[all]
dtoverlay=vc4-fkms-v3d

Swap

デフォルトのswapファイルは100MBに設定しているのですぐ使い切ってしまいます。
/etc/dphys-swapfile 1GiBに設定

CONF_SWAPSIZE=1024

再起動で有効になります。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          923Mi       426Mi       135Mi        13Mi       361Mi       419Mi
Swap:         1.0Gi        56Mi       967Mi

LXPanel

自称モバイルPiを称していることからWiFiはGUIで設定できたほうが便利です。
RaspiOSのdhcpcdは適当なGUIツールが見つかりません。LXDE同様lxpanelを起動してpluginを利用することにします。

$ lxpanel

下部にdebianデフォルトのlxpanelが起動(Ctrl + c 終了)
空のディレクトリができるのでファイル(panel)作成(メインメニュー、Bluetooth、WiFi)
~/.config/lxpanel/default/panels/panel

# lxpanel  config file. Manually editing is not recommended.
# Use preference dialog in lxpanel to adjust config when you can.

Global {
  edge=right
  align=left
  margin=0
  widthtype=percent
  width=100
  height=50
  transparent=0
  tintcolor=#000000
  alpha=0
  autohide=0
  heightwhenhidden=2
  setdocktype=1
  setpartialstrut=1
  usefontcolor=0
  fontsize=12
  fontcolor=#ffffff
  usefontsize=0
  background=0
  backgroundfile=/usr/share/lxpanel/images/background.png
  iconsize=36
  monitor=0
  point_at_menu=0
}
Plugin {
  type=menu
  Config {
    padding=4
    image=start-here
    system {
    }
    separator {
    }
    item {
      image=system-run
      command=run
    }
    separator {
    }
    item {
      image=system-shutdown
      command=logout
    }
  }
}
Plugin {
  type=bluetooth
  Config {
  }
}
Plugin {
  type=dhcpcdui
  Config {
  }
}

再度lxpanel起動

WiFi設定


アイコンは表示出来ませんがBluetooth設定(アイコンの間クリック)


メインメニュー

# apt install blueman


Bluetoothは依存関係の少ないbluemanも利用できます。

pythonメニューから実行

#!/usr/bin/python3

from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import subprocess
import time

root = Tk()
root.title('Raspberry Pi 3 debian Buster 10')
root.configure(background='#333333') # Background color
style = ttk.Style()
style.theme_use('default') #('clam', 'alt', 'default', 'classic')
style.configure('TButton', background='#D9D9D9') # Button color

# Frame as Widget Container
frame1 = ttk.Frame(
    root,
    padding=5)
frame1.grid()

# icon dir
dir = "~/.icons/64x64/"

# Button911 LXPanel
def x912():
    subprocess.Popen("xterm -e lxpanel", shell=True)
icon912 = PhotoImage(file=dir+'lxpanel.png')
button912 = ttk.Button(frame1,image=icon912,command=x912)
button912.grid(row=1,column=4)

# Button558 blueman
def tool559():
    subprocess.Popen("blueman-manager &", shell=True)
icon559 = PhotoImage(file=dir+'bluetooth.png')
button559 = ttk.Button(frame1,image=icon559,command=tool559)
button559.grid(row=1,column=5)

root.mainloop()

 

 

 

アプリケーション

モバイル Raspberry Pi 3B インストール環境設定

前回に続いて環境の設定をしていきます。 7インチモニターは1024×600の解像度がありかなりのアプリケーションをカバーしてくれます。 小さいディスプレイを有効に活用するためウインドウマネージャーなど当サイトにとって使いやすいように変更してみたいと思います。

RaspberryPiOS インストール

RasPiOSはデスクトップ版の2021-01-11-raspios-buster-armhf.imgをカードに焼きます。 boot/config.txtには以下を設定(見やすいところでOK)

hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=87
hdmi_drive=2
hdmi_cvt=1024 600 60 6 0 0 0

wpa_supplicant.confがあればbootにコピーしておくことでWiFi設定を自動化出来ます。 出来上がったカードで起動。今回使用するキーボードはUS配列になるので起動後最初の画面でUse US keyboardにチェックを入れて通常通り進めます。

 

ウインドウマネージャー
7インチの小さいディスプレイなのでここはキーボード主体で操作可能なタイル型のdwmを採用することにします。モニターのタッチ機能も良好で読み込みが済めばスマホ並に操作可能で慣れ次第ではマウス無しで操作可能と思います。(文字列の選択コピーはタッチペンが必要かな・・・でも慣れたマウスはやはりあると便利)
ファイルマネージャーはranger、基本構成は当サイトのvnc serverで設定している内容と同じ

echo "--- X11 ---"
apt -y install dwm xterm xbindkeys feh
echo "--- filer ---"
apt -y install ranger w3m-img mediainfo ffmpegthumbnailer mupdf
echo "--- jp ---"
apt -y install fcitx-mozc
echo "--- udiskie ---"
apt -y install udiskie libblockdev-crypto2 libblockdev-mdraid2

 

~/.xsession (chmod 755 ~/.xsession)
ディスプレイマネージャー(lightdm)からXを起動している場合~/.xsessionがあると優先して実行します。
デフォルトのLXDE設定は失ってしまうのでバックアップを取るか”.bashrc .profile”のみのホームディレクトリを作成、再起動することで上記画像の新規環境を作成できます。

#!/bin/sh
xrdb ~/.Xresources
xmodmap ~/.Xmodmap
xbindkeys &
udiskie -F -N &
sh ~/.fehbg
~/bin/date.sh &
/usr/bin/dwm &
sleep 3
xkbcomp ~/.Xkeymap $DISPLAY
exec xterm -e ranger ~/

設定例
~/.Xresources xterm設定
~/.Xmodmap キーボード
~/.xbindkeysrc キーボードコマンド
/etc/polkit-1/localauthority/50-local.d/10-udisks.pkla udiskie(オートマウント)
~/bin/date.sh 時計 (chmod 755 date.sh)
~/.Xkeymap キーボード

 

dwm
取り敢えずパッケージをインストール

# apt install dwm

インストールされたdwmはタイプを選べます。

# update-alternatives --config dwm
alternative dwm (/usr/bin/dwm を提供) には 4 個の選択肢があります。

  選択肢    パス                   優先度  状態
------------------------------------------------------------
  0            /usr/bin/dwm.default      100       自動モード
* 1            /usr/bin/dwm.default      100       手動モード
  2            /usr/bin/dwm.maintainer   50        手動モード
  3            /usr/bin/dwm.web          50        手動モード
  4            /usr/bin/dwm.winkey       50        手動モード

現在の選択 [*] を保持するには 、さもなければ選択肢の番号のキーを押してください:

dwm.default [mod]キー Altキー
dwm.winkey [mod]キー Windowsキー
キーバインド、タイトルバーのフォント、色などを変更するにはコンパイルが必要になります。
コンパイルしたdwmは/usr/local/bin/dwm
~/.xsessionの/usr/bin/dwm ー>/usr/local/bin/dwm に変更

 

日本語入力 fcitx-mozc

$ fcitx-configtool

全体の設定 入力メソッドのオンオフキーを設定
外観 システムトレイアイコンを使う チェックを外す
外観 状態パネル隠すモードを設定

 

壁紙の設定
https://wiki.archlinux.jp/index.php/Feh

# apt install feh

~/.fehbg (chmod 755 ~/.fehbg)

#!/bin/sh
feh --bg-scale '/home/pi/background.jpg'

任意の画像を~/background.jpgとするかまたはリンクを張る

ln -s /usr/share/rpd-wallpaper/bridge.jpg background.jpg

 

 

 

7インチHDMIモニター モバイルPC風 Raspberry Pi 3B

以前より7インチモニターサイズのPi-PCに興味があったのですが最近になってあくまでインチ比ですがある程度納得のいく価格帯になってきました。
手元にはRaspberry Pi 3があることからモバイルPCサイズのPi-PCを組み上げて見ようと思います。用途はメインのPi4B新規インストール時のサポート、RasPiOSの新規カードインストール、またほかOSのインストール実験などいろいろ考えられます。

7インチHDMIモニター


AliExpress
1024*600
ケーブル付き $ 33.19(33.08 + 送0.11)

キーボード付きケース


6〜7年前androidのために購入(555円)キーボードはお世辞にも使いやすいとは言えませんが無いよりは遥かに役に立ちます。
マイクロUSBを変換して延長

組み立て


ディスプレイ背面カバーは廃材のアルミ板(0.5mm)を加工(ネジはケーブルセットに付属)
ケースはバネの効いた金具がありうまく引っかかるように加工
POWER(+5V)は直接リード線をハンダ付け


Pi3は裏面にアルミ板を敷いてファスナーテープで固定(取り外し可)


付属のHDMIケーブルと電源ケーブル
スイッチ、コネクタ基板作成
加工、作成したケーブル


Pi3側


Pi3本体,HDMIケーブルは盛大にはみ出していますが仕様です。


電源はPi3とモニターに供給
USB端子はPi3から延長
電源入力はマイクロUSB

低電圧警告対策(稲妻マーク)

このHDMIモニターを最初に使う場合稲妻マークを目にする人が多いかもしれません。パネル単体で電源を供給すると0.7〜0.8A、Pi3に接続して1.5A前後消費しています。
パネルにはTOUCHとPOWERのマイクロUSBがありTOUCHから全ての電力を供給できますが不足した場合は別アダプタからPOWERに供給します。

ここで2個のアダプタを接続することはモバイルPC(?)として許せないので2Aクラスのアダプタ1個でなんとか稲妻マークを撃退する方法を考慮してみることにします。

電源基板


Pi3本体とモニターに電源を振り分けるために一旦電源アダプタからの出力をコネクタで受けます。テストではマイクロUSB経由の電源は不安定なのでメインの電源受けはUSB_Bコネクタを採用することにしました。比較テスト用にマイクロBコネクタはパラに接続しています。

電源は背が低めのスライドスイッチを経由して3系統のピンヘッダに接続、1個は電圧チェックに使用します。
スライドスイッチは十分電流を通してくれそうです。

Piに直接続してネックになるのがUSB経由のモニタ電源になると思います。電源基板からはモニターへ直に接続していますがUSB経由の電源を完全に切るためVCC電源を接続しないケーブルを作成しました。TOUCH動作は問題ありません。
但しこれは後述する条件が整えば不要と思います。

テスト電源


テスト用の電源を用意しました。5V 2A
一般的な低電圧ユニット。古いものですが現在はもう少し小型で効率も良くなっていると思います。
出力電圧を可変できるのがメリットです。
5.2Vにセット(多少の変動はあります)


USB A – USB B ケーブルを作成、線材は0.75mm いわゆる赤黒のスピーカーケーブル
マイクロBケーブルはモニター(ケーブルセット)に含まれていたもの
スマホ付属などのケーブルは全滅です。

テスト開始


Pi3、モニタのコネクタは外しています。無負荷なので低電圧ユニットの設定値を表示


Pi3、モニタのコネクタを接続、USB B – マイクロBとも電源供給して起動(マイクロBはスマホケーブル)
起動中は5V台をキープ稲妻マークも出現することもありません。
起動後マイクロBケーブルを外して作成したUSB Bケーブルのみで確認、常に変動しますが約0.02V降下、低電圧ユニットの設定値からは約0.1V降下
0.1Vのロスは線材の長さ、太さ、コネクタの接触抵抗、基板側のスイッチ、半田付けなど微小な抵抗が流れる電流によって全てマイナス方向に作用してきます。
モニタ側ではバックライトの消灯時以外大きな変動は無いと考えています。(消灯時はプラス方向)
ここでPiが多少踏ん張っても5V台をキープしていれば通常の動作になります。


今度はUSB Bケーブルを外してマイクロBケーブルに交代
稲妻マークが出現してまもなくwarnningメッセージ表示、スクショでは稲妻マークは撮れませんでした。
モニタ付属のケーブルでは約5.0Vをマークしますが稲妻マークを抑えるためには低電圧ユニットの出力を5.35V位にする必要があります。

0.2Vの差はマイクロUSBを経由するPi3側の影響も大きくなります。

電源アダプタ1個で構成するRaspberry Pi3B + 7インチHDMIモニターのまとめ

今回は手持ちの都合で5V 2A電源アダプタで実験をしています。
電源アダプタの出力電圧は5.2V以上とする(5.3V以内が安全)
ケーブルその他十分電流の通る部品を使用する
HDMIモニタにはPOWERラインから電源を供給する
マイクロBケーブルを使用する際はマイクロBコネクタを含めて吟味する(難しいかも)

手持ちのアダプタの中に定格5V2A 実測5.3Vを出力するアダプタでは実験同様問題無く運用出来ています。 ・・・>続く

追記 2021年2月27日
動画再生は電源アダプタの出力を高めに設定する必要があります。Pi3のマイクロBコネクタ経由の電圧はPi3内部で電圧降下が大きくなります。GPIO 5Vラインに直接供給することにしました。

電圧チェック用TPから供給。抵抗の大きいマイクロBコネクタ、ポリスイッチを経由しないことからほとんどGPIOピンから電流は流れます。3.3Vピンに5Vを加えるとPi3を壊してしまうことになるので基板を用いて物理的に誤刺し出来ないようにしています。

USB_A – USB_Bケーブルでは電源アダプタ電圧5.1Vで稲妻マークを排除することが出来ました。マイクロBケーブルでは5.3V必要になります。どうしても工作用マイクロBコネクタがネックになります。

Raspberry Pi Pico ゆるピコでいこう(テスト環境)

Raspberry Pi PicoをスイッチサイエンスからGetできました。Raspberry Piといってもマイコンボードなので使いこなすには相応のスキルが必要になるかと思います。
但しMicroPythonが使えるのでRaspberryPiデスクトップを開発環境にすることで簡単に遊ぶことが出来ます。
https://www.raspberrypi.org/documentation/pico/getting-started/

またArduinoIDEのサポートがアナウンスされています。Arduinoで蓄積されたライブラリなどがPicoのRP2040で動くようになればRaspberry Piの知名度と相まって普及が進むことが予想されます。
https://www.seeedstudio.com/blog/2021/01/29/arduino-ide-support-announced-for-the-raspberry-pi-pico/
現時点では日本語マニュアルや情報が少ないためまったりゆるピコで行ってみようと思います。

取り敢えず動かしてみる

開発環境はRaspberryPi4B

新品のPicoはUSBに挿すだけで/media以下にマウントされます。
/media/RPI-RP2以下には2つのファイルが見えます。INDEX.HTMは冒頭のPicoのgetting-startedページが開きます。INFO_UF2.TXTにはボード情報が記載されています

スタートページからMicroPythonとC/C++のUF2ファイルをダウンロード

取り敢えずC/C++のLチカ確認
ダウンロードしたblink.uf2を/media/RPI-RP2にコピーすると自動でRunします。

MicroPython

今度はBOOTSELボタンを押したままUSBポートに接続、マウントしたらダウンロードしたrp2-pico-20210205-unstable-v1.14-8-g1f800cac3.uf2をコピー


Thonny Python IDEを起動
右下のPython 3.7.3をクリックしてMicroPython(Raspberry Pi Pico)を選択

blink.py

#test
import machine
import utime
led = machine.Pin(25, machine.Pin.OUT)
while True:
    led.high()
    utime.sleep(1)
    led.low()
    utime.sleep(1)


ファイルは母艦(Pi4B)にあるテキストファイルからも読み込めます。
取り敢えずThonny IDEのエディタに書き込んでRunをクリック、Picoにsave


もう1度Runをクリックするとファイル名を入れろと聞いてきます。
準備完了、RunするとLチカスタート

テスト環境

今後はPico SDKを導入する予定ですがその前にピンヘッダを取り付けます。またBOOTSELボタンを押しながらUSBポートに接続、モードを切り替える手順が気に入らないのでついでに工夫をしてみます。(そう頻繁に使うことは無いと思うのですがあれば便利)
簡単にディスクリートで構成してみました。

PicoのTP
TP2,TP3,TP6の3Pinをコネクタ化
TP5(GPIO25)を外部に引き出し


USB Aからの+5Vはリレーのbreak側からVBUSに供給、単体使用時と同じ。タクトスイッチを1回叩くとリレーオン(電源オフ)、+5VをQ2のベースに供給、Q2オン(BOOTSEL PUSH) Picoはすぐ再起動します。Q2もオフになりますがトランジスタのオフ動作に比べてPicoの起動が早いため(と思われる)この定数でも正常にモードが切り替わります。
Pi4Bのオートマウントには数秒かかります。
GPIO端子はPi4Bの適当なGPIO端子から信号を送ることで同様の動作を得られます。


ピンソケットを上部に取り付け。
上部1番側(左)はピンソケット(21P)
1Pin余分にしてGPIO25を接続
小さいブレッドボード基板を載せる予定


上部1番側(左)の0番にTP5(GPIO25)
TP5の使用は非推奨ですが10Kを介して信号のみ取り出し


ベース基板側は20P+20P


裏面


合体して完成
USB A + BOOTSELボタンは有効ですがMICRO USB + ベース基板のBOOTボタンは不可


Pi4BとのUART接続もこのままいけそうです。
タクトスイッチは一瞬でもリレーをオン(電源オフ)すればモードが切り替わります。


100均ランタン改USB延長コード仕様ゆるピコランタン
モードを切り替えた後のキャンセル(何もしない)は想定していませんでした。抜き差しが必要ですね。
ゆるピコランタンは底にスイッチがあってランタンLEDとUSB5Vをオンオフしています。

moOde audio 7.0.1 chromium-browserメモリリーク

前回chromium-browserでメモリを喰い潰していく現象から夜間はchromium-browserを終了するようにしたのですが平常時でも発生してしまいます。 発生する条件としてはvncサーバー上で起動したchromium-browserでクライアントから接続したモニタがsleep、ある一定時間経過後発生するようです。

メモリリーク

必ずしもvncサーバー上にchromium-browserを起動しておく必要は無いのですが操作上モニタとして見やすいことから暫定対策ですがメモリを監視、一定の値になったらchromium-browserを終了することにします。(夜間は今までどおりchromium-browserを終了) chromium-browserを起動した状態では通常300M前後消費(500M以上で終了)
~/bin/free.py

#!/usr/bin/python3

import subprocess
import time

command = ("free | sed -n 2p | awk '{print substr($3,1,3)}'")
free = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
free = free.strip()
#print(free)

if int(free) >= 500: # 500M
    subprocess.run ("/bin/killall -q /usr/lib/chromium-browser/chromium-browser-v7", shell=True)
$ chmod 755 ~/bin/free.py

crontabに登録(取り敢えず15分に設定)

$ crontab -e
30 00 * * *   /bin/killall -q /usr/lib/chromium-browser/chromium-browser-v7
*/15 * * * *  ~/bin/free.py

 

Adwaita-dark テーマ

Adwaitaテーマはインストールされているのですがlxappearanceを起動してもリストに挙がってきません。
以下をインストールするとAdwaitaテーマ、HighContrastアイコンが有効になります。(好みで)

# apt -y install lxappearance gnome-accessibility-themes gnome-themes-extra

 

 

 

 

 

 

Top