Raspberry Pi Smart Fan Control
controllare la velocità di una ventola per raffreddare il nostro Raspberry.
Creiamo uno file Phython dove preferiamo, ad esempio /home/pi/SFC.py
per cui apriamo una finestra del terminale e digitiamo:
sudo nano /home/pi/SFC.py
Ora riportiamo quanto segue all’interno dell’editor:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import os
# Return CPU temperature as float
def getCPUtemp():
cTemp = os.popen('vcgencmd measure_temp').readline()
return float(cTemp.replace("temp=","").replace("'C\n",""))
GPIO.setmode(GPIO.BCM)
GPIO.setup(25,GPIO.OUT)
GPIO.setwarnings(False)
p=GPIO.PWM(25,100)
p.start(100)
time.sleep(1)
while True:
CPU_temp = getCPUtemp()
if CPU_temp > 70.0:
p.ChangeDutyCycle(100)
elif CPU_temp > 60.0:
p.ChangeDutyCycle(50)
elif CPU_temp > 50.0:
p.ChangeDutyCycle(30)
elif CPU_temp > 45.0:
p.ChangeDutyCycle(25)
elif CPU_temp > 40.0:
p.ChangeDutyCycle(20)
elif CPU_temp > 35.0:
p.ChangeDutyCycle(15)
elif CPU_temp > 30.0:
p.ChangeDutyCycle(10)
else:
p.ChangeDutyCycle(0)
time.sleep(60)
p.stop()
GPIO.cleanup()
Per salvare il file premiamo la combinazione di tasti CTRL+O
e per uscire dall’editor CTRL+X
Arrivati a questo punto dobbiamo rendere avviabile questo script all’avvio del nostro Raspberry Pi per cui digitiamo:
sudo nano /etc/rc.local
e aggiungiamo la seguente linea prima della scritta “exit 0”
su - pi -c "sudo python /home/pi/SFC.py &" &
Collegamenti
Componenti necessari:
- Un transistor NPN 2N2222A;
- Una resistenza da 110 Ohm;
- Una piccola Ventolina a 5v;
- una breadboard;
- qualche jumper cable;