Raspberry Pi 樹莓派 GPIO
即便你 樹莓派 的用途,是拿來作為超迷你 PC 使用,而不是用來作為連接各種傳感器的物聯網控制版,你還是有可能會需要認識樹莓派的 GPIO。
外接風扇
最簡單的 GPIO 應用莫過於外接散熱風扇了,通常只需要用到兩根接腳提供風扇電源,因此多半選擇 Pin# 04
與 06
。如果覺得風扇噪音太大、太吵,則可以改接 3.3V
如 Pin# 01
或是 17
可調速度風扇
如果採用的是可調速風扇模組,應該是安裝在 Pin# 03
、04
、05
及 06
等四根 GPIO 接腳上,透過 Pin# 03
即 GPIP02
進行 PWM 運作模式以便控制風扇速度。
附上兩個程式控制範例
隨溫度上昇加快轉速
1#!/usr/bin/env python
2# encoding: utf-8
3# From: shumeipai.net
4
5import RPi.GPIO
6import time
7
8RPi.GPIO.setwarnings(False)
9RPi.GPIO.setmode(RPi.GPIO.BCM)
10RPi.GPIO.setup(2, RPi.GPIO.OUT)
11pwm = RPi.GPIO.PWM(2, 100)
12
13fan = False
14start = 40
15stop = 27
16
17try:
18 with open('/sys/class/thermal/thermal_zone0/temp') as f:
19 while True:
20 cur = int(f.read()) / 1000
21 now = time.strftime("%H:%M:%S",time.localtime(time.time()))
22
23 if not fan and cur >= start:
24 pwm.start(100)
25 fan = True
26 print("[%s] Fan on @ %s" % (now, cur))
27
28 if fan and cur <= stop:
29 pwm.stop()
30 fan = Fale
31 print("[%s] Fan off @ %s" % (now, cur))
32
33 time.sleep(1)
34
35except KeyboardInterrupt:
36 pwm.stop()
超過 Threshold 值後開啟風扇
1#!/usr/bin/env python
2# encoding: utf-8
3
4import RPi.GPIO
5import time
6
7RPi.GPIO.setwarnings(False)
8RPi.GPIO.setmode(RPi.GPIO.BCM)
9RPi.GPIO.setup(2, RPi.GPIO.OUT)
10pwm = RPi.GPIO.PWM(2, 100)
11
12speed = 0
13prv_temp = 0
14
15try:
16 tmpFile = open('/sys/class/thermal/thermal_zone0/temp')
17 while True:
18 cpu_temp = int(tmpFile.read())
19 tmpFile.close()
20
21 if cpu_temp >= 34500 :
22 if prv_temp < 34500 :
23 #啟動時防止風扇卡死先全功率轉 0.1 秒
24 pwm.start(0)
25 pwm.ChangeDutyCycle(100)
26 time.sleep(.1)
27
28 speed = min( cpu_temp/125-257 , 100 )
29 pwm.ChangeDutyCycle(speed)
30 else :
31 pwm.stop()
32
33 prv_temp = cpu_temp
34 time.sleep(5)
35
36except KeyboardInterrupt:
37 pass
38
39pwm.stop()