İçindekiler:

Python ve Thingspeak Kullanarak Raspberry Pi Fanının Akıllı Kontrolü: 7 Adım
Python ve Thingspeak Kullanarak Raspberry Pi Fanının Akıllı Kontrolü: 7 Adım

Video: Python ve Thingspeak Kullanarak Raspberry Pi Fanının Akıllı Kontrolü: 7 Adım

Video: Python ve Thingspeak Kullanarak Raspberry Pi Fanının Akıllı Kontrolü: 7 Adım
Video: Başımız Sağ Olsun Türkiye. ❤️‍🩹 2024, Temmuz
Anonim
Raspberry Pi Fanının Python ve Thingspeak Kullanarak Akıllı Kontrolü
Raspberry Pi Fanının Python ve Thingspeak Kullanarak Akıllı Kontrolü

Kısa bir bakış

Varsayılan olarak, fan doğrudan GPIO'ya bağlıdır - bu, sürekli çalışması anlamına gelir. Fanın nispeten sessiz çalışmasına rağmen, sürekli çalışması aktif bir soğutma sisteminin etkili bir kullanımı değildir. Aynı zamanda, bir fanın sürekli çalışması sadece can sıkıcı olabilir. Ayrıca Raspberry Pi kapatılırsa, güç bağlıysa fan çalışmaya devam eder.

Bu makale, basit ve karmaşık olmayan manipülasyonları kullanarak, mevcut bir soğutma sistemini yalnızca işlemci gerçekten ihtiyaç duyduğunda açılacak olan akıllı bir sisteme nasıl dönüştürdüğünü gösterecektir. Fan, yalnızca yoğun kullanım olduğunda açılır, böylece fan güç tüketimini ve gürültüsünü azaltır. Ayrıca ihtiyaç olmadığında kapatarak fan ömrünü uzatır.

Ne öğreneceksin

Sıcaklık histerezisi ile On-Off kontrolünü kullanarak Raspberry CPU'nun mevcut sıcaklığına dayalı olarak bir fanı kontrol etmek için bir Python betiği nasıl uygulanır. RaspberryPi'nizden Things Speak Cloud'a veri nasıl aktarılır.

Gereçler

Bu proje için gerekli olacak bileşenler aşağıdaki gibidir

  • Raspberry Pi 4 Bilgisayar Modeli B 4GB
  • NPN transistör S8050330ohms direnç
  • Ahududu Pi için Çift Fanlı Zırhlı Alüminyum Metal Kasa
  • Atlama kabloları
  • ekmek tahtası

Adım 1: Devreyi Kurmak

Devreyi Kurmak
Devreyi Kurmak
Devreyi Kurmak
Devreyi Kurmak

Devre oldukça basit. Fanın gücü NPN transistörü kullanılarak kesilir. Bu konfigürasyonda, transistör düşük taraf anahtarı görevi görür. Direnç yalnızca akımı GPIO üzerinden sınırlamak için gereklidir. Raspberry Pi'nin GPIO'su maksimum 16mA akım çıkışına sahiptir. Bize yaklaşık (5-0.7)/330 = 13mA temel akım veren 330 ohm kullandım. Bir NPN transistör S8050 seçtim, bu nedenle her iki fandan da 400mA'lık bir yükü değiştirmek sorun değil.

Adım 2: ThingSpeak ile CPU Sıcaklığını Günlüğe Kaydedin

ThingSpeak ile CPU Sıcaklığını Günlüğe Kaydet
ThingSpeak ile CPU Sıcaklığını Günlüğe Kaydet

ThingSpeak, Nesnelerin İnterneti konseptine dayalı projeler için bir platformdur. Bu platform, sensörlerden toplanan verilere dayalı uygulamalar oluşturmanıza olanak tanır. ThingSpeak'in ana özellikleri şunları içerir: gerçek zamanlı veri toplama, veri işleme ve görselleştirme. ThingSpeak API, yalnızca veri göndermenize, depolamanıza ve erişmenize izin vermekle kalmaz, aynı zamanda bunları işlemek için çeşitli istatistiksel yöntemler sağlar.

ThingSpeak, aşağıdakiler gibi popüler cihazları ve hizmetleri entegre edebilir:

  • Arduino
  • ahududu pii
  • oBridge / RealTime.io
  • Elektrik imp
  • Mobil ve Web uygulamaları
  • Sosyal ağlar
  • MATLAB'de Veri Analizi

Başlamadan önce, ThingSpeak'te bir hesaba ihtiyacınız var.

  1. Aşağıdaki bağlantıya gidin ve ThingSpeak'e kaydolun.
  2. Hesabınızı etkinleştirdikten sonra oturum açın.
  3. Kanallar -> Kanallarım'a gidin
  4. Yeni Kanal düğmesine tıklayın.
  5. Yüklemek istediğiniz verilerin adını, açıklamasını ve alanlarını girin
  6. Tüm ayarlarınızı kaydetmek için Kanalı Kaydet düğmesine tıklayın.

CPU sıcaklığımızı Thingspeak bulutuna yüklemek için daha sonra python koduna ekleyeceğimiz bir API anahtarına ihtiyacımız var.

API Anahtarını Yazmak için API Anahtarları sekmesine tıklayın

API Anahtarını Yazdıktan sonra, verilerimizi yüklemeye neredeyse hazırız.

Adım 3: Python Kullanarak Ahududu Pi'den CPU Sıcaklığını Alma

Komut dosyası, her saniye gerçekleşen işlemci sıcaklığının alınmasına dayanır. Measure_temp parametresi ile vcgencmd komutu çalıştırılarak terminalden alınabilir.

vcgencmd ölçü_temp

Komutu yürütmek için Subprocess.check_output() kitaplığı kullanıldı ve ardından döndürülen dizeden gerçek değeri çıkarmak için normal ifade kullanıldı.

alt süreçten import check_output

yeniden içe aktar findalldef get_temp(): temp = check_output(["vcgencmd", "measure_temp"]).decode() temp = float(findall('\d+\.\d+', temp)[0]) return(temp) yazdır(get_temp())

Sıcaklık değeri alındıktan sonra verilerin ThingSpeak bulutuna gönderilmesi gerekir. Aşağıdaki Python kodunda myApi değişkenini değiştirmek için Write API Key'inizi kullanın.

urllib içe aktarma isteğinden

yeniden içe aktar findall from zamandan içe aktar alt süreçten uyku içe aktar 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) deneyin: while True: temp = get_temp() conn = request.urlopen(baseURL + '&field1=%s' % (temp)) print(str(temp)) conn.close() sleep(1) KeyboardInterrupt hariç: print ("Ctrl+C'ye basıldığında çıkış")

Adım 4: Fanın Sıcaklığa Göre Kontrol Edilmesi

Aşağıda gösterilen Python betiği, sıcaklık tempOn'un üzerine çıktığında fanı açan ve yalnızca sıcaklık eşiğin altına düştüğünde kapanan mantığı uygular. Bu şekilde fan hızlı bir şekilde açılıp kapanmaz.

RPi. GPIO'yu GPIO olarak içe aktar

sys'i yeniden içe aktar findall'ı zamandan içe aktar alt süreçten uykuyu içe aktar check_output def get_temp(): temp = check_output(["vcgencmd", "measure_temp"]).decode() temp = float(findall('\d+\.\d+) ', temp)[0]) return(temp) deneyin: GPIO.setwarnings(False) tempOn = 50 eşik = 10 controlPin = 14 pinState = False GPIO.setmode(GPIO. BCM) GPIO.setup(controlPin, GPIO. OUT, initial=0) while True: temp > tempOn ve pinState veya temp < tempOn - eşik ve pinState değilse temp = get_temp(): pinState = pinState değil GPIO.output(controlPin, pinState) print(str(temp) + " " + str(pinState)) uyku(1) KeyboardInterrupt hariç: print("Çıkış Ctrl+C'ye basıldı") hariç: print("Diğer İstisna") print("--- İstisna Verilerini Başlat:") traceback.print_exc(limit=2, file=sys.stdout) print("--- İstisna Verilerini Sonlandır:") nihayet: print("CleanUp") GPIO.cleanup() print("Programın sonu")

Adım 5: Son Python Kodu

Ana python kodu GitHub hesabımda aşağıdaki bağlantıda bulunabilir. Kendi Yazma API Anahtarınızı koymayı unutmayın.

  1. Raspberry PI panonuza giriş yapın
  2. Terminalde aşağıdaki komutu çalıştırın

python3 işlemci.py

6. Adım: Verileri Thingspeak Bulut Üzerinden İzleme

Thingspeak Bulut Üzerinden Verileri İzleme
Thingspeak Bulut Üzerinden Verileri İzleme

Bir süre sonra ThingSpeak'te kanalınızı açın ve gerçek zamanlı olarak Thingspeak bulutuna yüklenen sıcaklığı görmelisiniz.

7. Adım: Başlangıçta Python Komut Dosyasını Çalıştırın

Bunu yapmak için /etc/rc.local dosyasının sonunda:

sudo nano /etc/rc.local

Komut dosyası başlatma komutunu, çıkış 0 satırının önüne yerleştirmeniz gerekir:

sudo python /home/pi/cpu.py &

Arka planda işlemi başlatmak için bir bayrak olduğundan komutun sonunda & sembolünün bulunması zorunludur. Yeniden başlatmanın ardından script otomatik olarak çalışacak ve belirtilen koşullar sağlandığında fan açılacaktır.

Önerilen: