Raspberry Pi 専用 7インチ タッチディスプレイを Ubuntu20.04 で使ってみる　4000円弱

# 経緯

ROS+Raspberry Piロボットに乗せれそうな小型モニタを探していたところ，
タッチパネル搭載の7インチで4000円弱と破格のモニタを見つけました．
7インチにしては安いです．
[OSOYOO 7 インチ TFT タッチ スクリーン](https://amzn.asia/d/hb18SFp)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/061bab3a-729e-460f-e41c-df633110768d.png)

しかも中国のロボット系の教材をつくっているOSOYOOさんが作っています．

DISコネクタでの接続なので，外部電源も必要なく，HDMIケーブルも必要ないので，
ロボットの配線的にはとてもスッキリします．しかもタッチパネル付きなので色々遊べそう．
Raspberry Pi 2～4に対応しているみたいです．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/8f266bfa-265b-3c6d-aace-5eb094888a1e.png)

# 開封の儀

質素な箱が届きました．
![IMG_7423.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/5fd16a64-ead6-4708-e043-bc8ec259ece7.jpeg)

開けていきましょう．
![IMG_7424.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/5de42be2-f3ac-2900-57ca-c24760c4129a.jpeg)
梱包材でしっかりと保護されています．4000円にしては良き．

内容物一覧．中華名物今回のおまけは小さいドライバーでした．
レビュープレゼントカード等は入っていませんでした．
しっかりとした会社だ．
![IMG_7425.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/7c3a3b84-e5a3-2459-6782-4e8a0742219e.jpeg)

説明書は日本語と英語で書かれています．
載っている設定方法はRaspbian OS用のようでした．
![IMG_7426.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/d4eb6cb9-7c1c-a07f-9507-5fd2d86eba75.jpeg)

ネジ4本をしめてケーブルをぶっ差すだけでインストール完了．
特にドライバーの設定する必要もなく，タッチパネルもすぐに動作しました．

![IMG_7420.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/a4048e05-6bab-b8d2-eca1-9892014a5081.jpeg)

透明のプラスチックケースもかぶせられました．
いい感じ．
![IMG_7421.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/e3055e4c-80cb-bfb6-071c-a73da888cd97.jpeg)

解像度は800×480で，画質は値段相応ですが，全然使えそうです．
四隅のネジ穴もあるので，MDFかなんかで外枠とスタンドを作ってあげればよい感じになりそうです．

# お負け　解像度を上げてみたい
説明には設定で1920×1080まで解像度を上げられると書いてあったのですが，
Raspberry Pi × Ubuntu20.04では800×480の設定しか出てきませんでした．
Ubuntu20.04のHDMI周りにはバグがあるらしく，大きなモニターをつないだ際に解像度がうまく選択できないことがあります．今回もそれかなと思い色々試しましたが，どうもうまくいきません．
まぁこいつはDSI接続だしなぁ...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/6c4f4e60-b66f-02dd-ce45-73c6bc47a706.png)

このディスプレイの用途はプログラムの動作確認をする程度で，
ロボット開発中はこの小さいディスプレイでコーディングする事はありません．
VNC接続してメインPCの画面からリモートで操作する事がメインになりますので，
しばらくは無理やり解像度を上げて運用する事にします．

あまり解像度を上げすぎても動作がもっさりしますので，今回は1280×720で設定します．
ターミナルを立ち上げて下記コマンドを実行します．
```
xrandr
```
モニタの情報が表示されます．
```
Screen 0: minimum 320 x 200, current 800 x 480, maximum 7680 x 7680
DSI-1 connected primary 800x480+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   FIXED_MODE    60.05 +
   800x480_60.00  59.48* 
  1280x720_60.00 (0x3ae) 74.500MHz -HSync +VSync
        h: width  1280 start 1344 end 1472 total 1664 skew    0 clock  44.77KHz
        v: height  720 start  723 end  728 total  748           clock  59.86Hz
```
DSI-1という所がモニターの番号になるので覚えておきます．

ここから新しい解像度の選択肢が出るように設定していきます．

```
cvt 1280 720
```
すると下記のように表示されます．
```
# 1280x720 59.86 Hz (CVT 0.92M9) hsync: 44.77 kHz; pclk: 74.50 MHz
Modeline "1280x720_60.00"   74.50  1280 1344 1472 1664  720 723 728 748 -hsync +vsync
```

Madeline　以降をコピーしておきます．
下記のコマンドsudo xrandr --newmode　以降にコピーしたコマンドを張り付けて実行します．

```
sudo xrandr --newmode "1280x720_60.00"   74.50  1280 1344 1472 1664  720 723 728 748 -hsync +vsync
```
解像度の選択肢に追加します．

```
sudo xrandr --addmode DSI-1 "1280x720_60.00"
```

この対処法は、Ubuntuが再起動されてしまうと作業が破棄されてしまいますので，
.profileにコマンドを登録しておきます．
```
sudo gedit ~/.profile
```
ファイルが開かれたら一番下の行に下記を追加して保存しておきます．
一応デフォルトの800×480にもすぐ戻せるようにコメントアウトで追加しておきました．
```
# Added for a missing resolution
sudo xrandr --newmode "1280x720_60.00"   74.50  1280 1344 1472 1664  720 723 728 748 -hsync +vsync
sudo xrandr --addmode DSI-1 "1280x720_60.00"
#sudo xrandr --newmode "800x480_60.00"   29.50  800 824 896 992  480 483 493 500 -hsync +vsync
#sudo xrandr --addmode DSI-1 "800x480_60.00"
```

再起動すると

VNCの画面上では問題なく1280×720になっています．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/eef52ddf-11f0-e5bd-58cd-eb5a2ee172a0.png)

が，本体の表示は縮小がうまくいかず大部分が見切れています．
タッチパネルはそれっぽい場所がちゃんと反応してました．
![IMG_7422.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438020/e18b7163-f262-769c-9fbd-e179f75e17b4.jpeg)

Ubuntu側で無理やりDSI出力の画面を縮小させれば，表示できそうなのですが
小一時間格闘しましたが，改善の兆しが見られなかったので
一旦，開発中は1280×720で運用⇒ロボットに搭載する際は800×480で運用
という方法で使ってみます．

また解決方法が分かったら追記します．
詳しい方いらっしゃいましたら，教えていただけますと幸いです．

# まとめ
解像度は少し低いですが，小物を作るにはちょうどいい7インチタッチパネル搭載で
かなりスッキリしたラズパイマシンを用意できます．
ロボットを搭載する以外にも色々作れそうです．
私が見た時点では10台しかなかったので，記事を公開する前にもう数台ポチっておきます．