7インチ タッチディスプレイのご使用に関して

7インチ タッチディスプレイで下記対象製品のサポートデバイス、及びOSは以下の通りとなります。

 

対象製品

  • Raspberry Pi用 7inch タッチスクリーンLCD (C) [TSI-PI020-070C]
  • 7″HDMIディスプレイ&ケースセット

使用可能デバイス&OS

Device Driver OS
Raspberry Pi 2 Model B Raspbian Raspbian, Ubuntu
Raspberry Pi 3 Model B Raspbian Raspbian, Ubuntu
BB Black Angstrom
Tinker Board TinkerOS (ver2.0.1 beta以上)
LattePanda Plug&Play Windows10

Raspberry Pi用タッチディスプレイ OSイメージダウンロード & セットアップ方法

WaveShare社製Raspberry Pi用 LCDディスプレイ(3.2インチ/3.5インチ/4インチ)セットアップ手順

2017/9/18更新
TechShare株式会社

注1)こちらはタッチディスプレイの画像表示に関するパートです。
画面の回転、およびタッチ操作部分の回転に関しては、別途こちらのドキュメントをご確認ください。

https://www.waveshare.com/wiki/5inch_HDMI_LCD_(H)

用意するもの

・Windows PC (マイクロSDカードが読み書きできるもの、ディスクに20Gbyte程度の空き容量が必要)
・マイクロSDカード(8Gbyte~64Gbyte、Class10)
・Raspberry Pi、電源、キーボード、マウス

 

使用するOSイメージファイルについて

<専用OSを使用する場合>

3.2インチディスプレイ(HDMIなし)の場合: Raspbian-2017-07-05-TFT32.7z を使用してください
3.5インチディスプレイ(HDMIなし)の場合: Raspbian-2017-07-05-TFT35.7z を使用してください
4インチディスプレイ(A)の場合: Raspbian-2017-07-05-TFT40.7z を使用してください

<通常のOSを使用する場合>
3.5インチ(480×320,IPSタイプ)、4インチ(800×480,IPSタイプ)、5インチ(B)、
5インチ(H)、7インチ(B)、7インチ(C)ディスプレイの場合: 通常のRaspbianOSイメージを使用して手順に従って書き込んでください。その際、書き込み手順の(2-1)も実施ください。

7インチディスプレイの他デバイスでのご使用はこちらを参照ください。

 

書き込み手順

OSイメージファイルは圧縮されています。
圧縮解凍ツールを使って解凍後、得られたイメージファイルを専用ツールでマイクロSDカードに
書き込んでください。
書き込んだ直後は、マイクロSDカードの4Gbyte分のみ使用する設定になっています。
全容量を使用する設定に変更するには、下記の(6)以降の操作を行ってください。

 

(1) 7zipを使い、圧縮されているOSイメージファイルを解凍する。
http://www.7-zip.org/

 

(2) 解凍したOSイメージファイルを Win32DiskImagerを使ってマイクロSDカードに書き込む。
https://sourceforge.net/projects/win32diskimager/files/latest/download

 

(2-1)お使いのモニタが3.5inch(480×320,IPS)、4inch(800×480,IPS)、5inch(B)、5inch(H)、7inch(B)、7inch(C)の場合

OSイメージを書き込んだSDカードを、Windows PCから一旦抜き、挿し直して、リムーバブルディスクとして認識させます。

リムーバブルディスクを開き、その中のconfig.txtをテキストエディターで編集します。

テキストの最後の行に次の5行を追加してください。

(注意) これら5行はこのままの文字を追加して下さい。誤って文字と文字との間にスペースを入れると認識されません。

[3.5inch(480×320,IPS)の場合]

この場合のみ、入力するのは4行です

max_usb_current=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0

[4inch(800×480,IPS)の場合]

hdmi_group=2
hdmi_mode=87
hdmi_cvt 480 800 60 6 0 0 0
dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900
display_rotate=3

[5inch(B) もしくは5inch(H)もしくは 7inch(B) の場合]

max_usb_current=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
hdmi_drive=1

[7inch (C) の場合]

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

編集がうまくいかない場合など、こちらのconfig.txtをダウンロードし、microSDカード上で置き換えてお使いください。

         config.txt

 

(3) Raspberry Piの準備
購入したLCDを取り付ける
キーボード、マウスを取り付ける
書き込んだSDカードをスロットに入れる

 

(4) Raspberry PiのマイクロUSBコネクタにACアダプタを接続し、電源を供給する。

 

(5) GUIが立ち上がったら、Terminalを起動する。

 

(6) コマンドラインにて、sudo raspi-config を実行する。

 

(7) 起動したメニューで、
7.Advanced Options を選択し、
A1 Expand Filesystem を実行する

 

(8) ESCを何回か押し、raspi-configを抜ける。

 

(9) リブートする。

 

注意事項

ドライバーインストール後にOSアップデートを実行すると、ドライバーが無効になり表示できなくなることがあります。

ドライバーはOSのバージョンに強く依存するため、OSアップデートは実施しないでください。

OSをアップデートしたい場合には、下記のメーカーサイトに、対応するドライバーが公開されているのを確認し取得の上、実施してください。

その際、LCDは表示できなくなりますので、ネットワーク経由でssh接続できるルートを確保の上、実行してください。

最悪の場合に備えて、SDカードを事前にバックアップしておくことをお勧めします。

Win32DiskImagerでSDカードをまるごとイメージファイルとして保存できます。

 

OSインストール済みのため、ドライバーのみインストールしたい場合

ドライバーは、OSのバージョンに強く依存するため、OSのバージョンにあったドライバーをインストールする必要があります。

下記のメーカーサイトにドライバーが公開されていますが、通常、最新のOSもしくは1つ前のOS (最新のOSが出たばかりで追従できていない場合)に対応したものとなります。古いバージョンのものは公開されておりませんのでご了承ください。

3.2インチディスプレイ: http://www.waveshare.com/wiki/3.2inch_RPi_LCD_(B)
3.5インチディスプレイ: http://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A)
4インチディスプレイ: http://www.waveshare.com/wiki/4inch_RPi_LCD_(A)
5インチ(B)ディスプレイ:http://www.waveshare.com/wiki/5inch_HDMI_LCD_(B)
5インチディスプレイ(GPIO接続端子付きのもの):http://www.waveshare.com/wiki/5inch_HDMI_LCD

 

インストール方法は、すべて共通しています。

※インストール前にSDカードのバックアップを取っておくことをお勧めいたします。Win32DiskImagerでSDカードをまるごとイメージファイルとして保存できます。

※ドライバーインストール後、表示がうまくいかなかった場合に備えてネットワーク経由でssh接続できるルートを確保しておいてください。

 

ドライバーのインストール方法

以下の内容はTerminalを起動し、実行してください。

例えば、Download フォルダーにファイルを保存した場合、ファイルマネージャーで、Downloadフォルダーを

右クリックし、【ターミナルで開く】を選択します。

(1)アーカイブを展開する。

tar xvf LCD-show-*.tar.gz

 

(2)作成されたLCD-showというディレクトリ内に移動する。

cd LCD-show

 

(3)対象のディスプレイをインストールするバッチファイルを実行する。実行後自動的にリブートが実行されます。

 

3.2インチディスプレイ:

chmod +x LCD32-show
./LCD32-show

 

3.5インチディスプレイ:

chmod +x LCD35-show
./LCD35-show

 

4インチディスプレイ:

chmod +x LCD4-show
./LCD4-show

 

5インチディスプレイ(5インチ(B)ディスプレイは不要):

chmod +x LCD5-show
./LCD5-show

 

(4)もし動作しなかった場合

リブート後、表示がされない場合には、sshでログインし、LCD-showディレクトリ内に移動して、./LCD-hdmiを実行することでHDMI表示に戻すことが出来ます。

万が一、sshでログインできない場合には、HDMIディスプレイとUSBキーボードを接続し、ctrl-alt-delでリブートを実行すると、起動の途中までHDMIディスプレイに表示されます。その後、crtl-alt-F2を押すとHDMIディスプレイからコマンドラインでログインできるようになります。

 

以上

4.2 Raspberry Pi B+ 温度を測ろう!

 

 4.2 PWMでサーボ-モータを回して見よう

(1) サーボ-モータの回路を作ろう

PWMを使ってサーボモータを回します。サーボモータの回る角度はPWM信号のパルス幅で変わります。

(2) 回路を作ろう

①組立
下の配線図、回路図をみて、回路を組立て下さい。

raspi_4.2_1s raspi_4.2_2s

(2) 部品を作ろう

サーボモータ(SG-90)は、

動作パルス:20ms–>周波数50Hz

0度:1.0m–>デユーティ5%

90度:1.5ms–>デユーティ7.5%

180度:2.0ms–>デユーティ10.0%

で動作します。

①電源を入れます。

RaspberryPiB+にACアダプタを繋ぎ、電源を入れます。

②ログインします。

Raspbianが立ち上がったら、ログインして下さい。

③「nano」エディター立ち上げます。

「nano rpi_bp_pwm_sv1_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

④プログラムを入れます

サンプルプログラム1

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM) # use GPIO Number

SV1 =12
GPIO.setup(SV1, GPIO.OUT)

servo = GPIO.PWM(SV1, 50) # set 20 ms / 50 Hz

angle = 0.0 # set angle
new_duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

angle = 90.0 # set angle
new_duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 90 deg”)
time.sleep(0.5)

angle = 180.0 # set angle
new_duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 180 deg”)
time.sleep(0.5)

angle = 0.0 # set angle
new_duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

servo.stop() # stop servo

 

 

⑤入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

⑥入力したプログラムを実行します。

「sudo python rpi_bp_pwm_sv1_1.py」を実行します。

*サーボモータが0度、90度、180度、0度とまわります。その後に、「sv1 done」のメッセージが出ます。

raspi_code_4.2_1

(2) 部品にしよう

初期化、回転角の制御を部品にします。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_sv1a_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます

サンプルプログラムを見て、入力します。

サンプルプログラム2

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

def sv_init(sv):
GPIO.setup(sv, GPIO.OUT)
servo = GPIO.PWM(sv, 50) # set 20 ms / 50 Hz
return servo

def angle_duty(angle):
duty =(1.0 + angle/180.0)/20.0*100.0 # calculate duty
return duty

if __name__ == (“__main__”) :
# start

GPIO.setmode(GPIO.BCM) # use GPIO Number

SV1 =12
servo = sv_init(SV1)

angle = 0.0 # set angle
new_duty = angle_duty(angle)

print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

angle = 90.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 90 deg”)
time.sleep(0.5)

angle = 180.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 180 deg”)
time.sleep(0.5)

angle = 0.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

servo.stop() # stop servo

 

 

③入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。
「sudo python rpi_bp_pwm_sv1a_1.py」を実行します。

*サーボモータが0度、90度、180度、0度とまわります。
その後に、「sv1a done」のメッセージが出ます。

raspi_code_4.2_2

(3) モジュールを使おう

(2)で作った部品(関数)の入ったファイルをモジュールとして使います。

①「nano」エディター立ち上げます。

「nano rpi_bp_pwm_bz1b_1.py」コマンドを実行して下さい。
画面が「nano」エディターの画面に変わります。

②プログラムを入れます
サンプルプログラムを見て、入力します。

サンプルプログラム3

 #! /usr/bin/env python

import RPi.GPIO as GPIO
import time

from rpi_bp_pwm_sv1a_1 import *

if __name__ == (“__main__”) :
# start

GPIO.setmode(GPIO.BCM) # use GPIO Number

SV1 =12
servo = sv_init(SV1)

angle = 0.0 # set angle
new_duty = angle_duty(angle)

print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

angle = 90.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 90 deg”)
time.sleep(0.5)

angle = 180.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.ChangeDutyCycle(new_duty)
print(“angle 180 deg”)
time.sleep(0.5)

angle = 0.0 # set angle
new_duty = angle_duty(angle) # calculate duty
print(new_duty)
servo.start(new_duty)
print(“angle 0 deg”)
time.sleep(0.5)

servo.stop() # stop servo
GPIO.cleanup()

 

 

 

③入力を終わります。

「ctrl+X」を実行します。
次に、「y/n」は「enter」を入れます。

④入力したプログラムを実行します。

「sudo python rpi_bp_pwm_sv1b_1.py」を実行します。
*サーボモータが0度、90度、180度、0度とまわります。
その後に、「sv1b done」のメッセージが出ます。

raspi_code_4.2_3

⑤電源をきります。

「sudo shutdown -h now」を入力して下さい。

*ステータスLEDの点滅が終わり、消えてからマイクロUSBのDC5Vを抜いて下さい。

raspi_code_4.2_4