46
59

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RaspberryPiのBluetoothを使って、スマホをワイヤレスディスプレイとして使う方法

Posted at

#はじめに

Raspberry PIのディスプレイを接続するのに、毎回HDMIケーブル指すのが面倒だなと思いまして、bluetoothのPAN(Personal Area Network)を利用してVNCServerにつなげられるようにすれば、RasPIのモニター事情を改善できるのでは、という試みです。

こういうイメージです、WiFiではない分、ハブなどのネットワーク機器もいりませんし、イーサネットをふさがないので、良いのでは、というはなしです。
image.png

#用意するもの

  • Raspberry PI (Bluetooth有のタイプ)もしくは、Raspberry PI + Bluetooth2.1以上のプロファイルが使えるアダプタ

  • VNCクライアントの入ったスマホもしくはタブレット

VNC Viewer - Remote Desktopがおすすめ

iOS系なら
https://itunes.apple.com/jp/app/vnc-viewer/id352019548?mt=8&ign-mpt=uo%3D4

Androidなら
https://play.google.com/store/apps/details?id=com.realvnc.viewer.android&hl=ja

#RaspberryPIの設定

  • OSはRaspbian stretch(ライブラリの関係でLiteじゃないほうにしてください)が入っていること

  • /boot/ssh を作っておくか、sshdを有効にしておくこと

  • /boot/config.txt にて dtoverlay=pi3-disable-bt がコメントアウトしてあること(有効だとBluetoothが使えません)

  • ロケーション設定などはここで済ませてください

設定例:

sudo apt update
sudo apt install -y bc vim screen nkf lv wget curl lynx unzip zip lsof git ntpdate
sudo apt install -y task-japanese fcitx-mozc fonts-takao fonts-takao-gothic fonts-takao-mincho fonts-ipafont fonts-ipafont-gothic fonts-ipafont-mincho jfbterm
sudo apt remove -y nano 

cat << _VIMRCCFG_ > ~/.vimrc
syntax on
colorscheme pablo
set mouse=
_VIMRCCFG_

mkdir -p ~/.vim/after/plugin
cat << _VINSTOPAC_ > ~/.vim/after/plugin/common-settings.vim
au FileType * setlocal formatoptions-=ro
_VINSTOPAC_

sudo localectl set-locale LANG=ja_JP.utf8
sudo localectl set-keymap jp106
sudo localectl status
sudo timedatectl set-timezone Asia/Tokyo
sudo timedatectl status
sudo ntpdate time.google.com
  • PAN を使うためのツールをインストールします
sudo apt install python-dbus
sudo curl -L https://raw.githubusercontent.com/mk-fg/fgtk/master/bt-pan -o /usr/bin/bt-pan
sudo chown root.root /usr/bin/bt-pan
sudo chmod 777 /usr/bin/bt-pan
  • スマホorタブレットのbluetoothの検出を有効にして、以下のコマンドをたたきMacアドレスが取れるか確認
hcitool scan
  • ペアリングを実施します
bluetoothctl

[bluetooth]# agent DisplayOnly
[bluetooth]# default-agent
[bluetooth]# discoverable on
[bluetooth]# scan on
[NEW] Device XX:XX:XX:XX:XX:XX (スマホorタブレットのMacアドレス)
[bluetooth]# pair XX:XX:XX:XX:XX:XX (スマホorタブレットのMacアドレス)
[bluetooth]# trust XX:XX:XX:XX:XX:XX (スマホorタブレットのMacアドレス)
[bluetooth]# exit
  • PANを接続します
sudo bt-pan client XX:XX:XX:XX:XX:XX (スマホorタブレットのMacアドレス)

※以後自動で接続したい場合は、bt-pan client XX:XX:XX:XX:XX:XX/etc/rc.local に追記してしまうのがいいかもしれません。

  • インターフェースができたか確認します、以下のコマンドで bnep0 があるか確認してください

IPが取れていれば、一応メモを。

ip a
  • VNC Serverをインストールします
sudo apt install tightvncserver
  • VNCの設定をします、この際、スマホ、タブレット側の解像度に設定を合わせますので、サイズを確認しましょう

Xの動作設定、これがないとVNCがつながらない、個々の環境で設定するのでsudoはしないこと。

cat << _VNCXCFG_ >~/.vnc/xstartup
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
setxkbmap -model jp106 -layout jp
awesome &
virt-manager
_VNCXCFG_

以下の設定中にあるgeometrの後ろの数値が(横)x(縦)になります

sudo cat << _VNC1CFG_ > /etc/systemd/system/vncserver@1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=pi
PAMName=login
PIDFile=/home/pi/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target
_VNC1CFG_
  • VNCの自動起動設定
sudo systemctl daemon-reload && sudo systemctl enable vncserver@1.service

スマホorタブレットから繋いでみよう

PANで接続しているので、インターネットとかは関係なくつながります

VNCクライアントで raspberrypi:5901 と繋いでみましょう。名前解決ができない場合は、確認したIPを使って (IPアドレス):5901 に繋いでみましょう。つながりましたか?

#さいごに

これでRasPIの画面事情が少しでも楽になれば幸いです。何かの参考までに。

46
59
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
59

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?