Artigos

Como Ler temperaturas do CPU e GPU

Neste tutorial vamos aprender a ler as temperaturas do CPU e GPU do nosso Raspberry Pi com um pequeno script em Python.

Tal como um computador, o Raspberry Pi começa a aquecer quando o ligamos e aquece muito mais se o usarmos para tarefas que solicitem uma grande quantidade de operações do processador ou se fizermos um overclock ao processador. Para estes casos, é quase obrigatório o uso de dissipadores de cobre ou alumínio montados sobre o chip e também montar um ou mais ventiladores que criam uma corrente contínua de ar.

O Raspberry Pi tem incorporados diversos sensores que se podemos utilizar para obter a temperatura do CPU e do GPU (Graphics Processing Unit). Com estes dados poderíamos criar um pequeno ‘daemon’ (programa que corre em segundo plano) que ative ou desative os ventiladores dependendo da temperatura para economizar energia ou que nos avise por email se o Raspberry Pi está a aquecer.

No seguinte código há 2 funções, get_cpu_temp e get_gpu_temp. Os 2 devolvem uma variável float com a temperatura em graus Celsius.

 

Código fonte do script:

import commands
 
def get_cpu_temp():
    tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
    cpu_temp = tempFile.read()
    tempFile.close()
    return float(cpu_temp)/1000
    #Mostrar temperatura en grados Fahrenheit
    #return float(1.8*cpu_temp)+32
 
def get_gpu_temp():
    gpu_temp = commands.getoutput( '/opt/vc/bin/vcgencmd measure_temp' ).replace( 'temp=', '' ).replace( ''C', '' )
    return  float(gpu_temp)
    #Mostrar temperatura em graus Fahrenheit
    # return float(1.8* gpu_temp)+32
 
def main():
    print "Temperatura CPU: ", round(get_cpu_temp())
    print "Temperatura GPU: ", round(get_gpu_temp())
 
if __name__ == '__main__':
    main()

 

O código original usava ‘str’ para passar a variável ‘float’ a ‘string’ mas devolvia valores como 43.076:

 

print "Temperatura CPU: ", str(get_cpu_temp())
print "Temperatura GPU: ", str(get_gpu_temp())

 

Para mostrar números arredondados usei a função ‘round’:

 

print "Temperatura CPU: ", round(get_cpu_temp())
print "Temperatura GPU: ", round(get_gpu_temp())

 

O resultado será este:

 

 

Gostaram deste artigo ? Deixem o vosso comentário no formulário a baixo.

Não se esqueçam de fazer like na nossa página no facebook.

Todos os produtos utilizados neste artigo podem ser encontrados na loja de componentes eletrónicos ElectroFun.

Comments

comments

Deixar uma resposta