Sommario:

Controllo intelligente della ventola Raspberry Pi utilizzando Python e Thingspeak: 7 passaggi
Controllo intelligente della ventola Raspberry Pi utilizzando Python e Thingspeak: 7 passaggi

Video: Controllo intelligente della ventola Raspberry Pi utilizzando Python e Thingspeak: 7 passaggi

Video: Controllo intelligente della ventola Raspberry Pi utilizzando Python e Thingspeak: 7 passaggi
Video: Скорость вращения вентилятора Raspberry Pi Pico с контролем температуры | ШИМ 2024, Dicembre
Anonim
Controllo intelligente della ventola Raspberry Pi utilizzando Python e Thingspeak
Controllo intelligente della ventola Raspberry Pi utilizzando Python e Thingspeak

Breve panoramica

Per impostazione predefinita, la ventola è collegata direttamente al GPIO - questo implica il suo funzionamento costante. Nonostante il funzionamento relativamente silenzioso della ventola, il suo funzionamento continuo non è un uso efficace di un sistema di raffreddamento attivo. Allo stesso tempo, il funzionamento costante di una ventola può essere semplicemente fastidioso. Inoltre, se Raspberry Pi è spento, la ventola continuerà a funzionare se l'alimentazione è collegata.

Questo articolo mostrerà come, utilizzando manipolazioni semplici e non complicate, trasformare un sistema di raffreddamento esistente in uno intelligente, che verrà attivato solo quando il processore ne avrà davvero bisogno. La ventola si accende solo in caso di utilizzo intenso, riducendo così il consumo energetico e il rumore della ventola. Inoltre, prolunga la durata della ventola tenendola spenta quando non è necessaria.

Cosa imparerai

Come implementare uno script Python per controllare una ventola in base alla temperatura attuale della CPU Raspberry utilizzando il controllo On-Off con isteresi della temperatura. Come trasportare i dati dal tuo RaspberryPi a Things Speak Cloud.

Forniture

I componenti che ti verranno richiesti per questo progetto sono i seguenti

  • Computer Raspberry Pi 4 Modello B 4GB
  • Resistore a transistor NPN S8050330ohm
  • Custodia metallica in alluminio Armor con doppia ventola per Raspberry Pi
  • Cavi jumper
  • tagliere

Passaggio 1: costruire il circuito

Costruire il circuito
Costruire il circuito
Costruire il circuito
Costruire il circuito

Il circuito è piuttosto semplice. L'alimentazione alla ventola viene interrotta utilizzando il transistor NPN. In questa configurazione, il transistor agisce come un interruttore low-side. Il resistore è richiesto solo per limitare la corrente tramite GPIO. Il GPIO del Raspberry Pi ha un'uscita di corrente massima di 16 mA. Ho usato 330 ohm che ci danno una corrente di base di circa (5-0,7)/330 = 13 mA. Ho selezionato un transistor NPN S8050, quindi la commutazione di un carico di 400 mA da entrambe le ventole non è un problema.

Passaggio 2: registra la temperatura della CPU con ThingSpeak

Registra la temperatura della CPU con ThingSpeak
Registra la temperatura della CPU con ThingSpeak

ThingSpeak è una piattaforma per progetti basati sul concetto di Internet of Things. Questa piattaforma consente di creare applicazioni basate sui dati raccolti dai sensori. Le caratteristiche principali di ThingSpeak includono: raccolta dati in tempo reale, elaborazione e visualizzazione dei dati. ThingSpeak API non solo consente di inviare, archiviare e accedere ai dati, ma fornisce anche vari metodi statistici per elaborarli.

ThingSpeak può integrare dispositivi e servizi popolari come:

  • Arduino
  • Pii al lampone
  • oBridge / RealTime.io
  • Imp elettrico
  • Applicazioni mobili e Web
  • Social networks
  • Analisi dei dati in MATLAB

Prima di iniziare, hai bisogno di un account su ThingSpeak.

  1. Vai al seguente link e iscriviti a ThingSpeak.
  2. Dopo l'attivazione dell'account, accedi.
  3. Vai su Canali -> I miei canali
  4. Fare clic sul pulsante Nuovo canale.
  5. Inserisci il nome, la descrizione e i campi dei dati che vuoi caricare
  6. Fare clic sul pulsante Salva canale per salvare tutte le impostazioni.

Abbiamo bisogno di una chiave API, che aggiungeremo in seguito al codice Python per caricare la nostra temperatura della CPU sul cloud di Thingspeak.

Fare clic sulla scheda Chiavi API per ottenere la chiave API di scrittura

Una volta che hai la chiave API di scrittura, siamo quasi pronti per caricare i nostri dati.

Passaggio 3: ottenere la temperatura della CPU da un Raspberry Pi utilizzando Python

Lo script si basa sul recupero della temperatura del processore, che avviene ogni secondo. Può essere ottenuto dal terminale eseguendo il comando vcgencmd con il parametro measure_temp.

vcgencmd measure_temp

La libreria Subprocess.check_output() è stata utilizzata per eseguire il comando e quindi utilizzando l'espressione regolare per estrarre il valore effettivo dalla stringa restituita.

dal sottoprocesso import check_output

from re import findalldef get_temp(): temp = check_output(["vcgencmd", "measure_temp"]).decode() temp = float(findall('\d+\.\d+', temp)[0]) return(temp) print(get_temp())

Dopo che il valore della temperatura è stato recuperato, i dati devono essere inviati a ThingSpeak cloud. Usa la tua chiave API di scrittura per modificare la variabile myApi nel codice Python sottostante.

dalla richiesta di importazione urllib

from re import findall from time import sleep from subprocess import check_output myAPI = '################' baseURL = 'https://api.thingspeak.com/update?api_key=% s' % myAPIdef get_temp(): temp = check_output(["vcgencmd", "measure_temp"]).decode() temp = float(findall('\d+\.\d+', temp)[0]) return(temp) try: while True: temp = get_temp() conn = request.urlopen(baseURL + '&field1=%s' % (temp)) print(str(temp)) conn.close() sleep(1) tranne KeyboardInterrupt: print ("Esci premuto Ctrl+C")

Passaggio 4: controllo della ventola in base alla temperatura

Lo script Python mostrato di seguito implementa la logica che accende la ventola quando la temperatura sale sopra il tempOn e si spegne solo quando la temperatura scende sotto la soglia. In questo modo, la ventola non si accenderà e si spegnerà rapidamente.

importa RPi. GPIO come GPIO

import sys from re import findall from time import sleep from subprocess import check_output def get_temp(): temp = check_output(["vcgencmd", "measure_temp"]).decode() temp = float(findall('\d+\.\d+ ', temp)[0]) return(temp) try: GPIO.setwarnings(False) tempOn = 50 soglia = 10 controlPin = 14 pinState = False GPIO.setmode(GPIO. BCM) GPIO.setup(controlPin, GPIO. OUT, initial=0) while True: temp = get_temp() if temp > tempOn and not pinState o temp < tempOn - threshold e pinState: pinState = not pinState GPIO.output(controlPin, pinState) print(str(temp) + " " + str(pinState)) sleep(1) tranne KeyboardInterrupt: print("Esci premuto Ctrl+C") tranne: print("Other Exception") print("--- Start Exception Data:") traceback.print_exc(limit=2, file=sys.stdout) print("--- End Exception Data:") infine: print("CleanUp") GPIO.cleanup() print("End of program")

Passaggio 5: codice Python finale

Il codice Python principale può essere trovato sul mio account GitHub nel seguente link. Ricorda di inserire la tua chiave API di scrittura.

  1. Accedi alla tua scheda Raspberry PI
  2. Esegui il seguente comando sul terminale

python3 cpu.py

Passaggio 6: monitoraggio dei dati tramite Thingspeak Cloud

Monitoraggio dei dati tramite Thingspeak Cloud
Monitoraggio dei dati tramite Thingspeak Cloud

Dopo un po', apri il tuo canale su ThingSpeak e dovresti vedere la temperatura che si carica nel cloud di Thingspeak in tempo reale.

Passaggio 7: eseguire lo script Python all'avvio

Per fare ciò, alla fine del file /etc/rc.local:

sudo nano /etc/rc.local

Devi inserire il comando di avvio dello script davanti alla riga exit 0:

sudo python /home/pi/cpu.py &

La presenza del simbolo & alla fine del comando è obbligatoria, poiché è un flag per avviare il processo in background. Dopo il riavvio, lo script verrà eseguito automaticamente e la ventola si accenderà quando le condizioni specificate saranno soddisfatte.

Consigliato: