Professional Documents
Culture Documents
R a s p b e r r y Pi
TTU We e k # 5
1
R aspberry P i
TTU 課程大綱
第㇐週:認識樹莓派 第四週: Python 程式簡
樹莓派是什麼? 介 程式的編輯與執行
樹莓派能做甚麼 ? Python 基本指令
基本的 Linux 指令
第五週: GPIO 應用
第二週:樹莓派作業系統 GPIO 簡介
與 電路與元件
常用指令 實作 – LED 控制
QEMU 模 擬 器
Raspberry OS
常用 Linux 指令
第六週:樹莓派擴充板
常用的樹莓派擴充板
Sense HAT 擴充板
第三週:遠端控制樹莓派
實作
2
R aspberry P i
TTU GPIO 簡介
樹莓派與智慧家
庭
3
R aspberry P i
TTU GPIO 簡介
What is IoT?
IoT: Internet of
Things
需要給電燈、冰箱㇐張 sim 卡 ? 4
R aspberry P i
TTU GPIO 簡介
What is IoT?
IoT: Internet of
Things
雲端層
網路層
裝置層
5
R aspberry P i
TTU GPIO 簡介
What is IoT?
IoT: Internet of
Things
6
R aspberry P i
TTU GPIO 簡介
What is IoT?
IoT: Internet of
Transceivers :
Things 通訊模組,如上面提及
MCU : 的
Micro Control Uint 微控器,
Bluetooth 、 WiFi 、 N
這部分就是㇐顆單晶片或嵌入
式系統,負責做邏輯判斷、週 Tr a n s c e ive rs FC 、 LoRa 、 Zigbee
MCU ,或㇐般的 RF 模組等
等。
邊電路
控制、讀取 Sensor 感
資料送上雲端。
測到訊號 ( 電壓 / 電流 ) ,把訊 Original
Sensors : Sensors Original Devices :
號做轉換後再透過通訊模組將 Devices 就是㇐些傳統的物品,
感測器,有各式各樣不同的感
如電燈、冰箱、電視、
測器可以用來偵測自然界中的
冷氣、電鍋等等。
“狀態 " , e.g. 溫度、空氣濕
度、 ... ,其輸出通常為電壓訊
號或電流訊號,不過也有做成
模組可以讓 MCU 直接用
UART 、
I2C 、 SPI 等通訊介面做溝通。 7
R aspberry P i
TTU GPIO 簡介
GPIO: General Purpose Input /
Output GPIO 是㇐種可用軟體控制的數位訊
號
用軟體控制什麼 ?
決定是輸入還是輸出
寫值到某根腳位
從某根腳位讀值
決定是前緣觸發還是後緣觸發
TTU GPIO 簡介
樹莓派 3 B 腳位配置 Z 字型的腳位編號
9
R aspberry P i
介電源相關
GPIO2
GPIO3
SDA1 (I2C)
SCL1 ( C)
3
5
4
6
+5V
GND
N/A
N/A
GPIO4 GCLK 7 8 TXD0 (UART) GPIO14
3B 腳位配置
5V: 2, 4
3.3V: 1, 17
N/A GND 9 10 RXD0 (UART) GPIO15
GND: 9, 25, 39, 6, 14, 20., 30, 3 4 GPIO17 GEN0 11 12 GEN1 GPIO18
GPIO27 GEN2 13 14 GND N/A
I2C ( 一種串列通訊匯流排 )
GPIO22 GEN3 15 16 GEN4 GPIO23
I2C Bus 的 I/O: 3, 5
EEPROM 使用 : 27, 28 N/A +3V3 17 18 GEN5 GPIO24
GPIO10 MOSI (SPI) 19 20 GND N/A
UART 通用非同步收發傳輸器 GPIO9 MISO (SPI) 21 22 GEN6 GPIO25
TXD( 傳送 ): 8
GPIO11 SCLK (SPI) 23 24 CE0_N (SPI) GPIO8
RXD( 接收 ): 10
N/A GND 25 26 CE1_N (SPI) GPIO7
SPI 序列周邊介面匯流排 for Model A and Model B
MOSI: 19, MISO: 21, SCLK: 23 EEPROM ID_SD 27 28 ID_SC EEPROM
CE0: 24, CE1: 26
GPIO5 N/A 29 30 GND N/A
GPIO6 N/A 31 32 - GPIO12
GPIO 的接腳除了 3V3, 5.0V,
GND 外,其他都可以用軟體規劃輸 GPIO13 N/A 33 34 GND N/A
TTU GPIO 簡介
如何控制 Raspberry Pi 的
GPIO ? C
C ++
C#
Ruby
Perl
Python
Scratch
Java
Java Script
.. .
11
R aspberry P i
TTU GPIO 簡介
RPI3 的 GPIO 接腳依功能可分為幾大類
電源相關
5V : 第 2 、 4 腳。
3.3V : 第 1 、 17 腳。
GND : 第 9 、 25 、 39 、 6 、 14 、 20 、 30 及 34 共 8 隻腳。
I2C (Inter-Integrated Circuit) 是㇐種串列通訊匯流排
第㇐組是第 3 、 5 腳,這組能接其他 I2C Bus 的 I/O
裝置。
另㇐組是第 27 、 28 腳,但已連接 EEPROM 。
SPI 序列周邊介面匯流排
腳位為 19-MOSI 、 21-MISO 、 23-SCLK 、 24-CE0 、 26-
CE1
UART 通用非同步收發傳輸器
UART (Serial Port) ,接腳 8-TX( 傳送 ) 、 10-RX( 接收 ) 。
PWM
第 12 腳可以做 PWM 輸出,但此 PWM 是由軟體模擬出來 12
的,
並非 Timer 迴路產生。
R aspberry P i
TTU GPIO 簡介
如何控制 Raspberry Pi 的
GPIO ? C
C ++
C#
Ruby
Perl
Python
Scratch
Java
Java Script
.. .
13
R aspberry P i
TTU GPIO 簡介
Python 複習
變數 , 物件 , 型
別 , 註解 模組
縮排
條件判斷
迴圈
函式
14
R aspberry P i
TTU GPIO 簡介
變數 , 物件 , 型別 , 註解
動態型別 (dynamic typing)
# 這是註解
i = 3 # 變數 i 指到數字物件 3
i = [1, 2, 3, 4, 5] # 變數 i 指到串列
物件
p r i n t ( i [ 2 ] ) # 印出串列中第三個元素
i = “ abcde” # 變數 i 指到字串物件
p r i n t ( i [ 2 ] ) # 印出字串中第三個元素
15
R aspberry P i
TTU GPIO 簡介
模組
# 語法 1 : import MODULE
import RPi.GPIO
# 語法 2 : import MODULE as ALIAS
import RPi.GPIO as GPIO
16
R aspberry P i
TTU GPIO 簡介
縮排
用縮排取代大括號
程式碼的區塊是用縮排分
隔
不使用 tab, 使用空白
鍵 if 條 件 :
常見縮排為 4 個空白鍵
e l s e
17
R aspberry P i
TTU GPIO 簡介
條件判斷 條件判斷
語法 範例
if c o n d i t i o n 1 : grade = 60
process1 if g r a d e > 6 0 :
elif c ondi t i on2 : print "great"
process2 else:
else: print "too bad"
process3
18
R aspberry P i
TTU GPIO 簡介
迴圈
自動迭代
(iterator)
語法
for target i n list :
process
範例
n a m e S = ["paul", "mary",
" t o m " , "rita"] for n a m e in n a m e S :
print n a m e
19
R aspberry P i
TTU GPIO 簡
介
語法
函式
def function_name():
process
語法
def function_name(parameter_name):
process
語法
def function_name(par1=2,par2=10):
process
範例
def my_function(inPut= 5):
outPut=inPut+10
print(outPut)
20
R aspberry P i
22
R aspberry P i
V F: 順向電壓
IF: 在順向電壓下的最大電
流 23
R aspberry P i
0.22103 K
25
R aspberry P i
中間:垂直相連 上下:水平相連
5V
GND
26
R aspberry P i
接地:
GND: #9, #14, . . .
給電:
固定電壓
5V: #2. #4
3.3V: #1, #17
可變電壓
可程式控制 pin 腳:綠色部
分
27
R aspberry P i
28
R aspberry P i
樹莓派通電後,會不會亮 ? ⾧腳 Pin12
(RED) (GPIO18)
短腳 (BLACK) Pin6 (GND)
29
R aspberry P i
30
R aspberry P i
import time
LED_PIN = 12
GPIO.setup(LED_PIN, GPIO.OUT) # 定義腳位 ( 方向 )
print("LED is on")
GPIO.output(LED_PIN, GPIO.HIGH) # 設定腳位狀態
time.sleep(3)
GPIO.cleanup() # 清理 32
R aspberry P i
34
R aspberry P i
w h i l e Tr u e :
print("LED is on")
GPIO.output(LED_PIN, GPIO.HIGH) # 設 定 腳 位 狀 態
time.sleep(1)
p r i n t ( " L E D is off")
GPIO.output(LED_PIN, GPIO.LOW) t i m e . s l e e p ( 1 )
GPIO.cleanup() # 清理
35
R aspberry P i
TTU 課後學習單三
使用 A4 紙張,回答或完成下面問題。
1. 改寫 led_blink.py 讓 Led 交互閃爍 30 次後,
Led 熄
滅並停止閃爍,並在程式碼中加上完整的註解。
36