<2018.2.3筆>18.10.26轉移自wordpress
樹莓派3b 發熱量很大,需要使用風扇散熱,為了使風扇既能散熱又不浪費電能,我使用一個三極管,一個樹莓派自帶的gpio接口,一段python腳本,實現了風扇啟停的自動控制。
另有我的另一篇記錄:樹莓派風扇散熱自動控制 記錄有完成這個工作所參考的資料
硬件部分
三極管使用的是 s8550
是pnp型三極管
發射級接風扇黑線 基級接 gpio 14 集電極接 GDN 風扇紅線接+5v
以下是最后的成品
驅動代碼部分
軟件部分借助了wiringpi 因此想要使gpio工作起來,需要安裝wiringpi。
<
以下是一個網友寫的方法,我只摘了方法一 原文地址http://blog.csdn.net/xukai871105/article/details/17737005
wiringPi安裝wiringPi的安裝存在方案A和方案B
。wiringPi使用GIT工具維護個更新代碼,但是如果處於一些其他原因不能使用GIT,那么也可以使用方案B下載和安裝wiringPi。
方案A——使用GIT工具如果在你的平台上還沒有安裝GIT工具,可以輸入以下命令:
sudo apt-get install git-core
如果在這個過程中出現錯誤,嘗試更新軟件,
例如輸入以下指令:
sudo apt-get update sudo apt-get upgrade
緊接着可以通過GIT獲得wiringPi的源代碼
git clone git://git.drogon.net/wiringPi
若需要更新wiringPi。
cd wiringPi git pull origin
進入wiringPi目錄並安裝wiringPi
cd wiringPi ./build
build腳本會幫助你編譯和安裝wiringPi
>
python代碼縮進要求很嚴格,在這里代碼縮進是錯誤的,所以附上正確代碼的截圖。
以下是驅動代碼 縮進有問題
注意: gpio 14所對應的wiringpi 編碼是15
1 #!/usr/bin/python2 2 #coding:utf8 3 #自動風扇控制程序,使用wiringPi的gpio命令來操作GPIO 4 import commands,time 5 #控制風扇的GPIO 6 FAN_GPIO = 15 7 commands.getoutput('sudo gpio mode '+str(FAN_GPIO)+' OUTPUT') 8 while True: 9 # 獲取CPU溫度 10 tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' ) 11 cpu_temp_raw = tmpFile.read() tmpFile.close() 12 cpu_temp = round(float(cpu_temp_raw)/1000, 1) 13 print (cpu_temp) 14 #如果溫度大於47`C,就啟動風扇 15 if cpu_temp >= 47 : 16 commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 0') 17 #如果溫度小於42`C,就關閉風扇 18 if cpu_temp <= 42 : 19 commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 1') 20 time.sleep(10)
配置部分
我把這個腳本命名為 fan-speed.py
把它存放在/root/x.py 目錄下
我希望它能夠開機就執行。而不需要人來控制它。
讓Python隨Linux開機自動運行
准備好要自啟的腳本fan-speed.py
用root權限編輯以下文件
sudo vim /ect/rc.local
在exit 0上面編輯啟動腳本的命令
/usr/bin/python /root/x.py/fan-speed.py > /root/x.py/fan-speed.log
最后重啟Linux,腳本就能自動運行並打印日志了。
風扇也就能夠自動控制了。
<對於腳本開機自啟動,貌似可以做成一個服務的樣子,便於管理。還沒試過>