Spisu treści:

Inteligentne sterowanie wentylatorem Raspberry Pi za pomocą Pythona i Thingspeak: 7 kroków
Inteligentne sterowanie wentylatorem Raspberry Pi za pomocą Pythona i Thingspeak: 7 kroków

Wideo: Inteligentne sterowanie wentylatorem Raspberry Pi za pomocą Pythona i Thingspeak: 7 kroków

Wideo: Inteligentne sterowanie wentylatorem Raspberry Pi za pomocą Pythona i Thingspeak: 7 kroków
Wideo: Co potrafi KOMPUTER ZA 200 PLN? | Raspberry PI 4B 2024, Listopad
Anonim
Inteligentne sterowanie wentylatorem Raspberry Pi za pomocą Pythona i Thingspeak
Inteligentne sterowanie wentylatorem Raspberry Pi za pomocą Pythona i Thingspeak

Krótki przegląd

Domyślnie wentylator jest podłączony bezpośrednio do GPIO - oznacza to jego stałą pracę. Pomimo stosunkowo cichej pracy wentylatora, jego ciągła praca nie jest efektywnym wykorzystaniem aktywnego systemu chłodzenia. Jednocześnie ciągła praca wentylatora może być po prostu denerwująca. Ponadto, jeśli Raspberry Pi jest wyłączone, wentylator będzie nadal działał, jeśli zasilanie jest podłączone.

Ten artykuł pokaże, jak za pomocą prostych i nieskomplikowanych manipulacji zmienić istniejący system chłodzenia w inteligentny, który zostanie włączony tylko wtedy, gdy procesor naprawdę tego potrzebuje. Wentylator będzie włączany tylko wtedy, gdy jest intensywnie użytkowany, zmniejszając w ten sposób zużycie energii i hałas. Wydłuża również żywotność wentylatora, wyłączając go, gdy nie jest potrzebny.

Czego się nauczysz

Jak zaimplementować skrypt Pythona do sterowania wentylatorem w oparciu o aktualną temperaturę procesora Raspberry za pomocą sterowania On-Off z histerezą temperatury. Jak przesyłać dane z RaspberryPi do Things Speak Cloud.

Kieszonkowe dzieci

Komponenty, które będą wymagane do tego projektu, są następujące

  • Komputer Raspberry Pi 4 Model B 4 GB
  • Tranzystor NPN S8050330 omów rezystor
  • Zbroja aluminiowa metalowa obudowa z podwójnymi wentylatorami dla Raspberry Pi
  • Kable rozruchowe
  • Deska do krojenia chleba

Krok 1: Budowanie obwodu

Budowanie obwodu
Budowanie obwodu
Budowanie obwodu
Budowanie obwodu

Obwód jest dość prosty. Zasilanie wentylatora odcięte jest za pomocą tranzystora NPN. W tej konfiguracji tranzystor działa jako przełącznik strony niskiego napięcia. Rezystor jest wymagany tylko do ograniczenia prądu przez GPIO. GPIO Raspberry Pi ma maksymalny prąd wyjściowy 16mA. Użyłem 330 omów, co daje nam prąd bazowy około (5-0,7)/330 = 13mA. Wybrałem tranzystor NPN S8050, więc przełączenie obciążenia 400mA z obu wentylatorów nie stanowi problemu.

Krok 2: Rejestruj temperaturę procesora za pomocą ThingSpeak

Rejestruj temperaturę procesora za pomocą ThingSpeak
Rejestruj temperaturę procesora za pomocą ThingSpeak

ThingSpeak to platforma dla projektów opartych na koncepcji Internetu Rzeczy. Platforma ta pozwala na budowanie aplikacji w oparciu o dane zebrane z sensorów. Główne cechy ThingSpeak to: zbieranie danych w czasie rzeczywistym, przetwarzanie danych i wizualizacja. ThingSpeak API nie tylko umożliwia wysyłanie, przechowywanie i dostęp do danych, ale także udostępnia różne statystyczne metody ich przetwarzania.

ThingSpeak może integrować popularne urządzenia i usługi, takie jak:

  • Arduino
  • malinowy pii
  • oBridge / RealTime.io
  • Elektryczny chochlik
  • Aplikacje mobilne i webowe
  • Portale społecznościowe
  • Analiza danych w MATLAB

Zanim zaczniemy, potrzebujesz konta w ThingSpeak.

  1. Przejdź do poniższego linku i zarejestruj się w ThingSpeak.
  2. Po aktywacji konta zaloguj się.
  3. Przejdź do Kanały -> Moje kanały
  4. Kliknij przycisk Nowy kanał.
  5. Wpisz nazwę, opis i pola danych, które chcesz przesłać
  6. Kliknij przycisk Zapisz kanał, aby zapisać wszystkie ustawienia.

Potrzebujemy klucza API, który później dodamy do kodu Pythona, aby przesłać temperaturę naszego procesora do chmury Thingspeak.

Kliknij kartę API Keys, aby uzyskać klucz API do zapisu

Po uzyskaniu klucza API Write jesteśmy prawie gotowi do przesłania naszych danych.

Krok 3: Pobieranie temperatury procesora z Raspberry Pi za pomocą Pythona

Skrypt opiera się na pobieraniu temperatury procesora, która występuje co sekundę. Można go uzyskać z terminala, uruchamiając polecenie vcgencmd z parametrem Measure_temp.

vcgencmd miara_temp

Do wykonania polecenia użyto biblioteki Subprocess.check_output(), a następnie za pomocą wyrażenia regularnego wyodrębniono rzeczywistą wartość ze zwróconego ciągu.

z importu podprocesu 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())

Po pobraniu wartości temperatury dane należy przesłać do chmury ThingSpeak. Użyj swojego klucza API Write, aby zmienić zmienną myApi w poniższym kodzie Pythona.

z żądania importu urllib

z ponownego importu findall od czasu import uśpienia z podprocesu 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) z wyjątkiem KeyboardInterrupt: print („Wyjdź wciśnięty Ctrl+C”)

Krok 4: Sterowanie wentylatorem na podstawie temperatury

Skrypt Pythona przedstawiony poniżej implementuje logikę, która włącza wentylator, gdy temperatura wzrasta powyżej tempOn i wyłącza dopiero, gdy temperatura spadnie poniżej progu. W ten sposób wentylator nie będzie się szybko włączał i wyłączał.

importuj RPi. GPIO jako GPIO

import sys from re import findall od czasu import sleep z podprocesu import check_output def get_temp(): temp = check_output(["vcgencmd", "measure_temp"]).decode() temp = float(findall('\d+\.\d+ ', temp)[0]) return(temp) spróbuj: GPIO.setwarnings(False) tempOn = 50 próg = 10 controlPin = 14 pinState = False GPIO.setmode(GPIO. BCM) GPIO.setup(controlPin, GPIO. OUT, Initial=0) while True: temp = get_temp() if temp > tempOn i not pinState lub temp < tempOn - próg i pinState: pinState = not pinState GPIO.output(controlPin, pinState) print(str(temp) + " " + str(pinState)) sleep(1)except KeyboardInterrupt: print("Wyjdź naciśnięto Ctrl+C")except: print("Inny wyjątek") print("--- Start Exception Data:") traceback.print_exc(limit=2, file=sys.stdout) print("--- End Exception Data:") finally: print("CleanUp") GPIO.cleanup() print("Koniec programu")

Krok 5: Ostateczny kod Pythona

Główny kod Pythona można znaleźć na moim koncie GitHub w poniższym linku. Pamiętaj, aby umieścić własny klucz API do zapisu.

  1. Zaloguj się do swojej płyty Raspberry PI
  2. Uruchom następujące polecenie na terminalu

python3 cpu.py

Krok 6: Monitorowanie danych za pośrednictwem chmury Thingspeak

Monitorowanie danych przez Thingspeak Cloud
Monitorowanie danych przez Thingspeak Cloud

Po chwili otwórz swój kanał na ThingSpeak i powinieneś zobaczyć przesyłanie temperatury do chmury Thingspeak w czasie rzeczywistym.

Krok 7: Uruchom skrypt Pythona podczas uruchamiania

Aby to zrobić, na końcu pliku /etc/rc.local:

sudo nano /etc/rc.local

Musisz umieścić polecenie startu skryptu przed wyjściem linii 0:

sudo python /home/pi/cpu.py &

Obecność symbolu & na końcu polecenia jest obowiązkowa, ponieważ jest to flaga uruchamiająca proces w tle. Po ponownym uruchomieniu skrypt zostanie automatycznie uruchomiony, a wentylator włączy się po spełnieniu określonych warunków.

Zalecana: