• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
via ventola software

Ventola via software
#1
Salve a tutti, non so se la sezione sia esatta, e cercando un pò in giro nel forum non ho trovato granché, la mia domanda è: posso gestire quindi accendere e spegnere la ventolina del mio raspberry via ssh, o comunque via software? Magari anche dicendole a che temperatura attivarsi e quando spegnersi, sarebbe il massimo. Purtroppo in giro per il web ho trovato solo modi aggiungendo hardware come transistor e relè!
Via software nn c'è nulla? Grazie mille a chi vorrà aiutarmi.
Risposta
#2
Il RaspberryPi ha la porta gpio pwm che dovrebbe fare al caso tuo.
Per la temperatura i comandi da cercare sono gli stessi di Debian
Non sono a casa, ma dovrebbe

cat /sys/class/thermal/thermal_zone*/temp
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#3
Certamente la tua domanda ha risposta affermativa (altrimenti a che servirebbe un Raspberry?) Puoi accenderla o spegnerla in remoto (è come accendere o spegnere un LED) o variarne la velocità di continuo sfruttando il PWM (però se hai una ventola che a 3,3V esprime il suo massimo). E puoi fare in modo che lo faccia in base alla temperatura.
Ma non puoi collegarla direttamente a un pin del GPIO, perchè questi emettono una corrente massima di circa 16mA, e una ventola, solitamente, assorbe ben di più (vedi cosa c'è scritto sulla tua).
Per questo si interpone almeno un transistor, che fa da "pilota" della ventola, amplificando la corrente che viene emessa verso di essa.
Sempre sottolineando che una ventola su Raspberry a mio modestissimo parere è una delle cose più inutili del mondo, a meno che questo non sia appiccicato a un forno, o chiuso in un case blindato a lavorare h24 al 100%, puoi comandarla con uno script Python veramente basico.

Codice:
#!/usr/bin/python
#ventola controllata da temperatura CPU

#importo le librerie
from gpiozero import PWMLED
import time
import os

# Funzione per prendere la temperatura
def getCPUtemp():
   cTemp = os.popen('vcgencmd measure_temp').readline()
   return float(cTemp.replace("temp=","").replace("'C\n",""))

#impostazioni
ventola = [PWMLED(15)] # pin in uso
# la ventola si accende oltre i 50 gradi, per step, dal 50% a 50 gradi
# fino al 100% a 70 gradi e oltre

#ciclo
while True:
   CPU_temp = getCPUtemp()
   if CPU_temp > 50.0:
     if CPU_temp < 55.0:
        ventola.value = 0,5
     elif CPU_temp >= 55 and < 60:
        ventola.value = 0,625
     elif CPU_temp >= 60 and < 65:
        ventola.value = 0,75
     elif CPU_temp >= 65 and < 70:
        ventola.value = 0,875
     elif CPU_temp >= 70:
        ventola.value = 1
  elif ventola.value = 0
  time.sleep(60)

lo ho scritto al volo, non provato (non ho una ventola...) ma dovrebbe funzionare
Risposta
#4
grazie mille per la risposta, ti volevo chiedere copio e incollo questo che hai scritto nel terminale? Nel caso dovessi cambiare qualcosa come faccio? (intendo le temperature)
Risposta
#5
Lo copi in un file di testo (nel caso, lo puoi creare da terminale con un editor di testo, come Nano, con
Codice:
sudo nano ventola.py
Poi lo lanci con
Codice:
python ventola.py
(poi se vuoi vediamo come lanciarlo automaticamente all'avvio)
Nel listato puoi cambiare il pin che comanda la ventola o le temperature e la percentuale di rotazione nella parte bassa (0 = ventola spenta, 0,5 = ventola al 50%, 1 = ventola al massimo)
Risposta
#6
(17/06/2018, 12:41)Zzed Ha scritto: Lo copi in un file di testo (nel caso, lo puoi creare da terminale con un editor di testo, come Nano, con
Codice:
sudo nano ventola.py
Poi lo lanci con
Codice:
python ventola.py
(poi se vuoi vediamo come lanciarlo automaticamente all'avvio)
Nel listato puoi cambiare il pin che comanda la ventola o le temperature e la percentuale di rotazione nella parte bassa (0 = ventola spenta, 0,5 = ventola al 50%, 1 = ventola al massimo)

Scusami ancora ma mi devi seguire passo passo Ahahahahah :
Allora faccio il comando sudo nano ventola.py e poi copio e incollo quello che hai scritto giusto?
E poi lo lancio con il comando che mi hai dato giusto?
Grazie mille ancora
Risposta
#7
Si, occhio di mantenere gli spazi iniziali delle righe (indentazione) obbligatori in Python
Risposta
#8
(17/06/2018, 19:38)Zzed Ha scritto: Si, occhio di mantenere gli spazi iniziali delle righe (indentazione) obbligatori in Python

Ok grazie mille domani provo, a quale spazi ti riferisci? Se copio pari pari quello che c’è scritto mi dovrei trovare giusto?
Risposta
#9
(17/06/2018, 19:38)Zzed Ha scritto: Si, occhio di mantenere gli spazi iniziali delle righe (indentazione) obbligatori in Python

Ciao scusami ho fatto tutto però quando lo lancio mi dà questo errore, perchè? Dov'è che sta sbagliato?
grazie ancora

File "ventola.py", line 25
    elif CPU_temp >= 55 and < 60:
                            ^
SyntaxError: invalid syntax

(17/06/2018, 19:38)Zzed Ha scritto: Si, occhio di mantenere gli spazi iniziali delle righe (indentazione) obbligatori in Python


Allora ho fatto queste modifiche perchè mi dava alcuni errori
Codice:
while True:
  CPU_temp = getCPUtemp()
  if CPU_temp > 50.0:
    if CPU_temp < 55.0:
       ventola.value = 0,5
    elif 55 >= CPU_temp  < 60:
       ventola.value = 0,625
    elif 60 >= CPU_temp  < 65:
       ventola.value = 0,75
    elif 65 >= CPU_temp  < 70:
       ventola.value = 0,875
    elif CPU_temp >= 70:
       ventola.value = 1
       ventola.value = 0
       time.sleep(60)


pero quando lo lancio non succede niente e il cursore va a capo senza home ( pi@easpberry: ecc ecc)
Risposta
#10
No, le ultime 2 righe vanno allineate al primo if in alto. Al limite usa else invece di elif, ma se lo elimini è basta, non può funzionare alla stessa maniera.
Codice:
else ventola.value = 0
Non vedi più il prompt, perché sta girando Python (CTRL+C per uscire)
Ed è normale che tu non veda nulla a schermo, il programma non ha output a schermo (lo possiamo aggiungere, per debug).
Ma hai copiato anche la prima parte del listato? E soprattutto.. Hai collegato qualcosa al pin che stai comandando? Un LED o una ventola tramite almeno un transistor? Il solo codice non può ovviare al fatto che i pin del GPIO emettono una corrente limitatissima.
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect