樹莓派 CPU溫度控制風扇(C語言)

2021-10-07 04:42:13 字數 2395 閱讀 8170

先放一張引腳對照表。

我直接把風扇接在了board編碼的39號引腳和40號引腳上。通過40號引腳的高低電平控制風扇的轉動與停止。

ps:這裡有點問題,我最開始用的是乙個小風扇,用40號引腳上的電壓可以帶動風扇,後面我換了乙個風扇就不行了,通過程式控制風扇開和關時能通過萬用表看到引腳上電壓的變化,但風扇就是不動,接到2號或者4號引腳又可以了,但是2號和4號引腳又不能通過程式設計控制電壓,所以有點難搞。這裡應該可以接乙個繼電器,通過29號引腳控制繼電器的通斷進而控制風扇,我不懂硬體,就不搞了這個了。

#include

//這個庫的詳細介紹 在文中末尾

#include

#include

#include

#include

#include

#define fanio 29

//風扇接線 這裡的29是wiringpi編碼,就是上面說的40號引腳

#define dmt 45

//設定預設上限溫度

//風扇控制

//引數:

// 0 :關閉風扇

// 1 :開啟風扇

void

fanctrl

(int stat)

else

}//獲取cpu溫度 返回為 cpu溫度×1000

intgettemp()

//啟動風扇自動控制

//引數為cpu溫度上限 x 1000

void

fanauto

(int maxt)

else

delay(5

*1000);

//延時5*1000 ms}}

intmain

(int argc,

char

*ar**)

strcpy

(cmmd,ar**[1]

);if(

strcmp

(cmmd,

"-open")==

0)//開啟風扇if(

strcmp

(cmmd,

"-close")==

0)//關閉風扇if(

strcmp

(cmmd,

"-auto")==

0)//自動模式

else

pid_t pid=

fork()

;//建立程序執行溫度檢測

if(pid==0)

//if

(pid==-1

)printf

("開啟成功!上限為:%d\n"

,tempmax)

;exit(0

);}if

(strcmp

(cmmd,

"-v")==

0)//實時監視

else

while(1

)else

delay

(1500);

}}printf

("引數:\n\

-open: 開啟風扇\n\

-close: 關閉風扇\n\

-auto [temp=%d] :設定溫度上限,觸發上限時自動開啟風扇\n\

-v [temp=%d]:實時監視\n"

每開一次自動模式就會在後台建立乙個程序,要手動關閉

如圖:

這個我目前沒辦法解決,先手動關閉吧,也不是很麻煩。

關閉自動模式留下的程序:

pkill fanctrl
每次都要cd到這個目錄 或者 輸入全路徑 才可以執行這個程式,很麻煩,

我們可以將生成的可執行檔案放到bin目錄下,這樣就可以在任何目錄控制風扇了,

比如放到「/usr/local/bin」下

sudo

mv fanctrl /usr/local/bin/

sudo

ln -s /home/pi/code/c/fanctrl/fanctrl /usr/local/bin/fanctrl

參考:【樹莓派wiringpi庫詳解】(引腳圖也是這裡扒來的)

樹莓派 溫度控制散熱風扇

樹莓派9層外殼自帶乙個散熱風扇,風扇是2針的,不能控制,插上電源後就一直全速運轉,晚上噪音很大。而且,一直執行,風扇壽命也會降低。考慮加乙個電機驅動模組,使用pwm控制風扇電壓。cpu溫度如果低於一定程度,風扇可以直接停轉。自帶風扇標記說明5v電壓下只有0.16a電流,在 找到乙個體積小,低的驅動模...

樹莓派 c獲取樹莓派CPU溫度

c語言檔案io操作 新建乙個名為cpu temp.c檔案,檔案的具體內容如下 include include include include include define temp path sys class thermal thermal zone0 temp define max size 3...

樹莓派 c獲取樹莓派CPU溫度

c語言檔案io操作 新建乙個名為cpu temp.c檔案,檔案的具體內容如下 include include include include include define temp path sys class thermal thermal zone0 temp define max size 3...