Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Budowanie obwodu
- Krok 2: Rejestruj temperaturę procesora za pomocą ThingSpeak
- Krok 3: Pobieranie temperatury procesora z Raspberry Pi za pomocą Pythona
- Krok 4: Sterowanie wentylatorem na podstawie temperatury
- Krok 5: Ostateczny kod Pythona
- Krok 6: Monitorowanie danych za pośrednictwem chmury Thingspeak
- Krok 7: Uruchom skrypt Pythona podczas uruchamiania
Wideo: Inteligentne sterowanie wentylatorem Raspberry Pi za pomocą Pythona i Thingspeak: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
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
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
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.
- Przejdź do poniższego linku i zarejestruj się w ThingSpeak.
- Po aktywacji konta zaloguj się.
- Przejdź do Kanały -> Moje kanały
- Kliknij przycisk Nowy kanał.
- Wpisz nazwę, opis i pola danych, które chcesz przesłać
- 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.
- Zaloguj się do swojej płyty Raspberry PI
- Uruchom następujące polecenie na terminalu
python3 cpu.py
Krok 6: Monitorowanie danych za pośrednictwem chmury Thingspeak
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:
Sterowanie ruchem za pomocą Raspberry Pi i LIS3DHTR, 3-osiowy akcelerometr, przy użyciu Pythona: 6 kroków
Sterowanie ruchem z Raspberry Pi i LIS3DHTR, 3-osiowym akcelerometrem, przy użyciu Pythona: Piękno nas otacza, ale zwykle musimy spacerować po ogrodzie, aby je poznać. - RumiJako wykształcona grupa, którą wydajemy się być, większość naszej energii inwestujemy w pracę przed komputerami i telefonami komórkowymi. Dlatego często pozwalamy naszemu dobremu
Sterowanie wieloma diodami LED za pomocą Pythona i pinów GPIO Raspberry Pi: 4 kroki (ze zdjęciami)
Kontrolowanie wielu diod LED za pomocą Pythona i pinów GPIO Raspberry Pi: Ta instrukcja pokazuje, jak kontrolować wiele pinów GPIO na RaspberryPi, aby zasilać 4 diody LED. Wprowadzi Cię również do parametrów i instrukcji warunkowych w Pythonie. Nasze poprzednie instrukcje używania pinów GPIO Twojego Raspberry Pi do Con
Sterowanie jasnością Sterowanie diodami LED w oparciu o PWM za pomocą przycisków, Raspberry Pi i Scratch: 8 kroków (ze zdjęciami)
Kontrola jasności Sterowanie diodami LED w oparciu o PWM za pomocą przycisków, Raspberry Pi i Scratch: Próbowałem znaleźć sposób, aby wyjaśnić moim uczniom, jak działa PWM, więc wyznaczyłem sobie zadanie kontrolowania jasności diody LED za pomocą 2 przycisków - jeden przycisk zwiększający jasność diody LED a drugi ją przyciemniający. Aby zaprogramować
Sterowanie wentylatorem chłodzącym na Raspberry Pi 3: 9 kroków
Kontroluj wentylator chłodzący na Raspberry Pi 3: Dodaj wentylator do Raspberry Pi 3, z kontrolą, aby go włączać i wyłączać zgodnie z wymaganiami. Łatwym sposobem dodania wentylatora jest po prostu podłączenie przewodów wentylatora do 3,3 V lub 5 V pin i do masy. Stosując takie podejście, wentylator będzie działał cały czas.Myślę, że to znacznie więcej
Czujnik temperatury (LM35) Interfejs z ATmega32 i wyświetlaczem LCD- Automatyka Sterowanie wentylatorem: 6 kroków
Czujnik temperatury (LM35) Interfejs z ATmega32 i wyświetlaczem LCD| Automatyczne sterowanie wentylatorem: czujnik temperatury (LM35) współpracuje z ATmega32 i wyświetlaczem LCD