Skip to main content

获取树莓派的温度

· 2 min read

夏日炎炎,是不是该给树莓派降降温了?

关于降温,在温控开关的加持下,我有2套方案:

  • 1, 风扇降温:优点操作简单;缺点噪音大,运转占比时间长
  • 2, 水冷降温:优点能狠狠地把温度压到某个范围(我用的是这个);缺点:需要自己动手组装,要点成本
温馨提示

如果你想给树莓派组装一套水冷系统,可以点击页面最底部的email私密我。

如果你通过pin脚来控制风扇的话,那么获取树莓派温度是个绕不开的问题

原理很简单,CPU会时时把温度写入/sys/class/thermal/thermal_zone0/temp这个文件中,我们要做的就是读取并解析

$ cat /sys/class/thermal/thermal_zone0/temp                    
41868

下面就是示例:

package main

import (
"fmt"
"io/ioutil"
"os"
"strconv"
"strings"
"time"
)

func main() {
for {
time.Sleep(time.Second)
fmt.Printf("%s: CPU 温度 %.2f\n", time.Now().Format("2006-01-02 15:03:04"), GetTemperatureFromPi())
}
}

func isExist(file string) bool {
_, err := os.Stat(file)
if err != nil {
return false
}
return true
}

//get temperature of raspberry pi
func GetTemperatureFromPi() float64 {
var result float64
var file = "/sys/class/thermal/thermal_zone0/temp"
if isExist(file) {
bs, err := ioutil.ReadFile(file)
if err != nil {
return 0
}
data := strings.TrimSpace(string(bs))
result, _ = strconv.ParseFloat(data, 64)
result, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", result/1000), 64)
}
return result
}