You are on page 1of 25

樹莓派基礎應用

R a s p b e r r y Pi
TTU We e k # 6

1
R aspberry P i

TTU 課程大綱
 第㇐週:認識樹莓派  第四週: Python 程式簡
 樹莓派是什麼? 介 程式的編輯與執行
 樹莓派能做甚麼 ?  Python 基本指令
 基本的 Linux 指令

 第五週: GPIO 應用
 第二週:樹莓派作業系統  GPIO 簡介
與  電路與元件
常用指令  實作 – LED 控制
 QEMU 模 擬 器
 Raspberry OS
 常用 Linux 指令
 第六週:樹莓派擴充板
 常用的樹莓派擴充板
 Sense HAT 擴充板
 第三週:遠端控制樹莓派
 實作

2
R aspberry P i

TTU Raspberry Pi HAT


 RPi’s HAT
 HAT (Hardware At Top) 置頂硬體
 Raspberry Pi 是㇐個很棒的學習和實驗平台。我們

可以學習編碼、製造機器人、監控國際太空站的位
置等等。
 Raspberry Pi 因為有 GPIO 和藍牙、 WiFi 連

接,使它成為常見的 IoT 開發工具。為了充分利用


Pi ,擁有合適的 HAT 會有所幫助。 HAT 是與
Raspberry Pi B+ ㇐起於 2014 年推出的擴展
板,可連接到 Raspberry Pi 的 40 個 GPIO 引
腳,並可輕鬆添加燈、電機、傳感器和風扇等功
能,而無需雜亂的電線。

3
R aspberry P i

TTU Raspberry Pi HAT


 市場上有數百甚至數千種 Raspberry Pi HAT ,它
們中的大多數都適用於任何具有 40 個引腳的 Pi
型號。

4
R aspberry P i

TTU Sense HAT


 Sense HAT 擴充板
 Raspberry Pi Foundation 官方開發出來的㇐套多
用途擴充元件 Sense HAT ,大家可能以為它只是
㇐個 8×8 的矩陣而已,但深入了解它的內涵會發
現這片擴充版相當強大。

5
R aspberry P i

TTU Sense HAT


 Sense HAT 擴充板是 ㇐ 款很方便的 HAT ,
 具備 8*8 的 LED 矩陣及六種感測器
 溫度感測器
 氣壓感測器
 濕度感測器

 陀螺儀

 加速度計

 地磁感測器

 除了可以收集感測器的各項數值外,還可以用程式
控制 LED 做出不同的樣式,但有個缺點是由於
Sense
HAT 是直接放在 Raspberry pi 上面,因此溫
度的感測數值會受到 Raspberry pi 本身的影響,
相當不準確。但如果是作為㇐般練習玩耍使用,不
失為㇐個多功能的好選擇。 6
R aspberry P i

TTU Sense HAT


 Sense HAT 看起來很簡單,但它的來頭絕對不
小!它是由 Raspberry Pi Foundation 官方推出
的㇐款擴充版,它是專為宇航實驗 AstroPi 而開
發,在 2015 年 12 月正式投放於英國的大空站
之中,
 Sense HAT 是為了簡單編程而開發出來的工具-

它鼓勵歐洲的小朋友利用它來設計實驗,並幫助太
空人進行各樣各樣的測試。作為擴充版它的入門門
檻相當低,它同時支援 Python 與 Scratch 2 的
API 。
 隨後官方亦推出規格完全㇐樣的市場銷售版本,在

這小小的擴充版上面它有著 8 x 8 的 RGB LED


燈矩陣,有㇐個 5 方向(上下左右、下壓)的操
縱杆,方便在沒有額外屏幕的情況下操作。
7
R aspberry P i

TTU Sense HAT


 能夠用於宇宙級實驗, Sense HAT 自然有㇐系列
的感測器,包括陀螺儀、 3 軸加速感應器、磁場
感應器(對,它可以作指南針)、溫度感應器、氣
壓感應器以及濕度感應器,單單是這片擴充版就可
以做到小型的「天文台」。
 擴充版上的 40 個接
點正正對應 Raspberry
Pi 的 40 pin 接點,
但在擴充版的底部亦有
可以焊接的位置,如果
你想完全模仿原版的
Astro Pi ,就需要訂
購專用的按鈕和進行部
份焊接的工作。
8
R aspberry P i

TTU Sense HAT


 Sense HAT 上 8×8 的彩色 LED 燈陣,因為可以
顯示 256x 256 x 256 種顏色,所以可以做出很多
有趣的效果,甚至可以用它來呈現動畫,加上支援
多種不同的 API ,這是整片擴充版入門最有趣的
部份。

9
R aspberry P i

TTU Sense HAT


 仔細看 Sense Hat 的程式庫會發現可以利用它各

不同的感應器進行多元化的科學實驗,
 甚至它的每㇐個感應器都有多種用法。簡單舉㇐個
例子:你想要感應周邊的溫度除了使用溫度感應模
組之外,還可以利用
get_temperature_from_humidity 、 get_temper
ature_from_pressure
這兩套指令進行。

在網上搜尋你亦不難找到各種 Raspberry Pi
Sense
HAT 的應用例子。
10
R aspberry P i

TTU Sense HAT


 Sense HAT 規格
 8x8 矩陣彩色 LED
 溫度感測器

(Temperature)
 相對濕度感測器

(Humidity)
 大氣壓力感測器

(Barometric Pressure)
 加速計

(Accelerometer)
 電子羅盤磁力儀

(Magnetometer)
 陀螺儀 (Gyroscope)

 五鍵可進行上、下、

左、右、及按下的搖桿
(Joystick) 11
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 顯示 Hello World
from sense_hat import SenseHat
sense = SenseHat()
red=(255,0,0)
sense.show_message("Hello World")

12
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 調整顯示速度
from sense_hat import SenseHat
sense = SenseHat()
# 跑馬燈預設速度為 0.1s ,參數是以秒為單位
sense.show_message("Hello World", 0.3)

13
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 調整顯示顏色
from sense_emu import SenseHat
sense = SenseHat()
# 跑馬燈的顏色,預設為白色,可藉由參數來調整色彩
# 顏色參數為 (R, G, B) 的形式,數值介於 0~255 之間
r = (255, 0, 0)
sense.show_message("HELLO WORLD", 0.2, r )

14
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 調整顯示背景
from sense_hat import SenseHat
sense = SenseHat()
# 跑馬燈的背景顏色,預設為黑色,可藉由參數來調整色

# 顏色參數為 (R, G, B) 的形式,數值介於 0~255 之間
r=(255,0,0)
g=(0,255,0)
b=(0,0,255)
sense.show_message("HELLO WORLD", 0.2, r, b)

15
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 案例 1 :循環跑馬燈
from sense_hat import SenseHat
sense = SenseHat()
r=(255,0,0)
g=(0,255,0)
b=(0,0,255)
y=(255,255,0)
w=(255,255,255)
# 使用 while 迴圈來反覆執行
while(True):
sense.show_message("Hello World", 0.1, r, w )
16
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-hat

 案例 2 :彩燈跑馬燈
from sense_hat import SenseHat
import random
sense = SenseHat()
while(True):
cr = random.randrange(0, 255)
cg= random.randrange(0, 255)
cb= random.randrange(0, 255)
print(cr, cg, cb)
sense.show_message("HELLO WORLD", 0.1, (cr, cg,
cb))

17
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 圖示製作
from sense_hat import SenseHat
sense = SenseHat()
# 先清除資料
sense.clear()
#8x8 矩陣 RGB 顯示器可使用 XY 座標來設定 LED 顯示
sense.set_pixel( 0, 0, (255, 0, 0))
sense.set_pixel(0, 7, (0, 255, 0))
sense.set_pixel(7, 0, (0, 0, 255))
sense.set_pixel(7, 7, (255, 255, 0))

18
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-hat

 案例 3 :使用清單製圖
from sense_hat import SenseHat
sense = SenseHat()
r = (255, 0, 0)
g = (0, 255, 0)
b = (0, 0, 255)
icon = [r, r, r, r, r, r, r, r, g, g, g, g, g, g, g, g, b, b, b, b,
b, b, b, b, r, r, r, r, r, r, r, r, g, g, g, g, g, g, g, g, b, b, b,
b, b, b, b, b,
r, r, r, r, r, r, r, r, g, g, g, g, g, g, g, g]
sense.clear() sense.set_pixels(icon)

19
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 讀取感測數值–溫度
from sense_hat import SenseHat
# 增加引入時間功能
import time
sense = SenseHat()
while(True):
# 讀取溫度
t = sense.get_temperature()
print(" 溫度 = ", t)
time.sleep(1)

20
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 讀取感測數值–氣壓
from sense_hat import SenseHat
# 增加引入時間功能
import time
sense = SenseHat()
while(True):
# 讀取大氣壓力
p = sense.get_pressure()
print(" 大氣壓力 = ", p)
time.sleep(1)

21
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 讀取感測數值–濕度
from sense_hat import SenseHat
# 增加引入時間功能
import time
sense = SenseHat()
while(True):
# 讀取濕度
h = sense.get_humidity()
print(" 濕度 = ", h)
time.sleep(1)

22
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 讀取感測數值–溫度
from sense_hat import SenseHat
# 增加引入時間功能
import time
sense = SenseHat()
while(True):
# 讀取溫度
t = sense.get_temperature()
print(" 溫度 = ", t)
t_str = str(round(t,1))
sense.show_message(t_str)
time.sleep(1) 23
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat

 作業:
溫度感測
溫度偵測,當溫度低於 19 度時,顯示 Cold
圖示。溫度偵測,當溫度 20~26 度時,顯示 Fine
圖示。溫度偵測,當溫度高於 27 度時,顯示 HoT
圖示。

24
R aspberry P i

TTU Sense HAT


 Sense HAT Emulator https://trinket.io/sense-
hat
 作業解答: from sense_hat import SenseHat
import time
sense = SenseHat()
r=(255,0,0)
g=(0,255,0)
b=(0,0,255)
w=(255,255,255)
while(True):
temp =
sense.get_temperature() print(" 溫 度 = ",
temp)
if (temp>30): #hot
bg_color=r
elif (temp<20): #cold
bg_color=b
else: #fine
bg_color=g
t_str = 25
str(round(temp,1)) sense.show_message(t_str,
0.3, w, bg_color) time.sleep(0.1)

You might also like