İçindekiler:

Raspberry Pi CPU Yük Göstergesi: 13 Adım
Raspberry Pi CPU Yük Göstergesi: 13 Adım

Video: Raspberry Pi CPU Yük Göstergesi: 13 Adım

Video: Raspberry Pi CPU Yük Göstergesi: 13 Adım
Video: Kendi Sıcaklık Göstergemizi Yaptık! Kendin Yap #5 2024, Temmuz
Anonim
Raspberry Pi CPU Yük Göstergesi
Raspberry Pi CPU Yük Göstergesi

Raspberry Pi'yi (RPI) konsol monitörü olmadan başsız olarak çalıştırırken, RPI'nin gerçekten bir şey yaptığını anlamak için belirli bir görsel gösterge mevcut değildir.

Uzak terminal SSH ile kullanılsa da, şimdi CPU'ya ne kadar sistem yükünün yüklendiğini kontrol etmek için zaman zaman Linux komutunun yürütülmesi gerekir.

Dolayısıyla bu devre, halihazırda uygulanan sistem yüklerini yürütmek için CPU'nun gerçek etkinliğini (belki yarı gerçek veya gerçeğe yakın bir şekilde) hemen tanımaya yardımcı olmak için yapılmıştır.

Sadece python programlama ve çok daha basit devre aynı işlevselliği destekleyebilse de, bu devrenin gerektirdiği gelişmiş LED kontrol mantığını simüle etmek için biraz karmaşık python kodları gerekecektir.

Ayrıca paradoksal olarak artan python kodunun karmaşıklığı, artan sistem yükü ile CPU'ya daha fazla yük olacaktır.

Bu nedenle, herhangi bir gösterge işlevselliğini mümkün olduğunca harici donanım devresine boşaltmak, bu hizmetin her zaman ve her 5 saniyede bir sıklıkta çalışması gerektiğinden makul olacaktır.

Ve bu devre, başsız çalışan RPI'ye biraz komik özellik katacak.

Adım 1: Linux Komutunu Kontrol Eden CPU Yükü

CPU Yükü Kontrol Linux Komutu
CPU Yükü Kontrol Linux Komutu

Top, iostat, sysstat ve uptime gibi çeşitli CPU yükü kontrol Linux komutları mevcuttur.

Her komut, bilgi çeşitliliği ve veri görüntüleme kolaylığı açısından belirli avantajlı özelliklere sahiptir.

Top komutu, sistem yükünün hemen tanınması için en zengin bilgi ve çok ayrıntılı verilerdir.

Ancak yineleme modu (verileri ekranda sürekli olarak görüntüleme) olarak çalışır ve bilgi formatı, yalnızca gerekli CPU yük verilerini basitçe çıkarmak için oldukça karmaşıktır.

iostat komutu, şu anda CPU'ya yük olan kullanıcı ve sistem çalışan kuyruk işlerini ayırarak derinlemesine sistem yükü bilgisi sağlar.

Ancak aynı zamanda mevcut CPU yükünü hızlı ve sezgisel bir şekilde almak gereksiz yere karmaşıktır.

Çalışma süresi durumunda, 1 dakikalık ortalama, 5 dakikalık ortalama ve 15 dakikalık özet ortalama olarak çok basit sistem yük verileri mevcuttur.

Yukarıda bahsedildiği gibi, python kodunun basitleştirilmesi gereklidir, çünkü her 5 saniyede veya 10 saniyede bir gibi oldukça sık çalıştırılması gerekir.

Python kodu karmaşık hale geldiğinde, CPU'ya çok yük olacaktır.

Sistem yükünü izlemek için RPI'ye yük olmanız bir tür paradokstur.

Bu nedenle, CPU yükünü toplamak ve gösterge devresi ile birlikte çalışmak için uptime komutunu seçiyorum çünkü bu en basiti.

Ancak çalışma süresi sistem yükünün 1 dakikalık ortalamasını gösterdiğinden, gösterge devresi kesinlikle gerçek zamanlı modda çalıştırılmamalıdır.

Yine de bu devre, RPI'nin şu anda nasıl olduğunu gösteren yardımcı görsel ipucu sağlayabilir.

2. Adım: Şemalar

şemalar
şemalar

Bu devre, iki opto-kuplör girişi aracılığıyla RPI'dan 4 farklı seviye (ör. 00->DÜŞÜK, 01->IŞIK, 10->ORTA, 11->YÜKSEK) mevcut CPU yükünü alacaktır.

74LS139 (2 ila 4 kod çözücü ve çoğullayıcı), 00(LOW)->B0, 01(LIGHT)->B1, 10(MEDIUM)->B2 gibi 4 olası yoldan tek bir çıkıştan birine iki bitlik girişi çözüyor, 11(YÜKSEK)->B3.

74LS139 çıkışı ters seviye olduğundan (00 giriş -> B0 DÜŞÜK ve diğer 3 çıkış YÜKSEK olur), çıkışı bir kez daha ters yapmak için 74HC04 invertör kullanılır.

74LS139'un çıkışı normal YÜKSEK olduğunda, 74HC04 gerekli olmayacaktır.

Ama bir şekilde 74LS139 bu şekilde yapılmış. (Lütfen 74LS139 doğruluk tablosunu kontrol edin)

74LS139 çıkışından herhangi biri seçildiğinde, CD4066 IC'de bulunan 4 anahtar arasından belirli bir analog anahtarı etkinleştirecektir.

CD4066 4 analog anahtarı destekleyebilir ve her bir anahtar 1 kontrol girişi ve 2 analog çıkıştan oluşur.

Kontrol girişi YÜKSEK olduğunda, iki çıkış bağlantısı düşük empedans olur (Direnç 0 olur ve diğerleri YÜKSEK empedans olur (İki çıkış yolu arasındaki direnç birkaç yüz mega ohm olur) olur.

CD4066'nın 1 (pim 13) kontrolü YÜKSEK hale gelir, çıkış 1 (pim 1) ve çıkış 2 (pim 2) arasındaki yol bağlanırken diğer çıkışlar bağlı değildir (yüksek empedans durumunda).

Aynı şekilde, kontrol 2'nin (pin 5) HIGH girişi, diğer çıkışların bağlantısı kesilirken çıkış 1'i (pin 4) ve çıkış 2'yi (pin 3) bağlı hale getirir.

Ardından LM555, iki LED'i farklı yanıp sönme hızında yanıp sönüyor.

Yukarıdaki şemada da görebileceğiniz gibi NE555, olası 4 (12k, 24k, 51k, 100k) direnç değerinden biriyle çalışacaktır.

Adım 3: NE555 Farklı Saat Üretimi

NE555 Farklı Saat Üretimi
NE555 Farklı Saat Üretimi

Şematikte gösterildiği gibi NE555, 12k, 24l, 51k ve 100k gibi olası direnç değerlerinden birini çalıştıracaktır.

Aslında NE555 zamanlama devresi kısmı, devrenin bir kısmını destekleyen ana görsel göstergedir.

Devre çalışma şeması aşağıdaki gibidir.

- Önemli bir CPU yükü olmadığında, RPI'da kurulu python programı gösterge devresine 00 çıkış gönderecektir. Daha sonra CD4066'nın iki çıkış yolu aktif oluyor ve NE555 12k direnç değeri ile çalışıyor. Bu nedenle, saniyede 1,5 kez yanıp sönen LED'ler (oldukça hızlı yanıp sönüyor)

- CPU hafifçe yüklenir (Ardından uptime kuyruk uzunluğu 0.1 ~ 0.9 seviyesine gelir), python devreye 01 gönderir. Daha sonra CD4066, 24k direnç ile bağlı çıkışlar ile etkinleştirilir. Sonuç olarak, LED yanıp sönmesi saniyede 1,2 kez azaldı (LED yanıp sönmesi biraz azaldı ama yine de biraz hızlı)

- CPU yükü önemli ölçüde arttığında (Ardından çalışma süresi çalışma kuyruğu uzunluğu 1.0 ~ 1.9 seviyesi olur), python devreye 10 çıkışı verecektir. Daha sonra 51k direnç bağlantı yolu açılır ve NE555 saniyede 0,8 kez çalışır. Şimdi yanıp sönme oranı önemli ölçüde azalır.

- CPU'ya yük olan ağır yükler ve çalışma süresi çalışma kuyruğu uzunluğu uzar (2'den fazla iş CPU tarafından yürütülmeyi bekleyecek ve çalışma süresi 2.0'dan fazlasını bildirecektir). 100k direnç bağlantısı seçildiğinde, NE555 LED'i saniyede 0,5 kez yanıp söner (Yanıp sönme hızı çok yavaşlar)

***

Artan sistem yükleri ile birlikte LED yanıp sönme hızı da buna bağlı olarak azalacaktır.

LED oldukça yavaş yanıp söndüğünde, RPI kesinlikle önemli ölçüde aşırı yüklenmiştir.

Bu şekilde yük gösterge devresi size RPI'nin mevcut yük seviyesini bildirir.

Adım 4: Parçalar

Bu devreyi yapmak için çeşitli IC yongaları kullanılır.

74LSxx, CD40xx tipi eski IC yongalarından bahsetmiş olmama rağmen, seçilen IC chip DIP tipi olduğunda 74HC4066 ve 74ASxx gibi yeni TTL ve CMOS yongalarını kullanabilirsiniz.

Küçük IC paketinin yüzeye montaj tipi, küçük olanları evrensel PCB üzerinde düzgün bir şekilde lehimleyebildiğiniz zaman da kullanılabilir.

Diğerleri, internet e-mağazalarından kolayca satın alabileceğiniz ortak parçalardır.

- 74LS139 (2 ila 4 kod çözücü, çoğullayıcı) x 1

- 74HC04 (6 invertör) x 1

- CD4066 (4 analog anahtar IC) x 1

- NE555 Zamanlayıcı IC x 1

- Kapasitörler: 10uF x 1, 0.1uF x 1

- PC817 opto kuplör x 2 (Herhangi bir ortak 4 pinli opto kuplör kullanılabilir)

- Dirençler: 220ohm x 4 (LED akım sınırlama), 4,7K (Opto-kuplör arabirimi) x 2, 12K, /24K/51K/100K (Saat zamanlama kontrolü) x 1

- LED x 2 (Sarı, Yeşil veya Kırmızı, Yeşil gibi farklı renkler)

- Üniversal kart 30(W) ile 20(H) delik boyutunda (Bu devreye uyacak şekilde herhangi bir boyuttaki evrensel kartı kesebilirsiniz)

- Kalay tel (Evrensel PCB üzerinde kablolama desenleri yapmak için)

- pim kafası (3 pim) x 3

- IC pin başı (4 pin) x 4

- kırmızı/mavi renkli kablo kabloları

***

Adım 5: PCB Çizimi Yapma

PCB Çizimi Yapmak
PCB Çizimi Yapmak

Her projede PCB çizimini göstermeme rağmen, kablolama tasarımı, her parçayı evrensel PCB üzerinde doğru lehimlemenize rehberlik edecek sadece bir referanstır.

Ancak mutlaka bu kablolama şemasına bağlı değilsiniz.

Yukarıdaki bağlantı şemasını görebileceğiniz gibi, oldukça karmaşıktır ve önemli ölçüde büyük PCB gerektirir.

Parçaları bağlamak için, lehimleme tamamlanmış PCB boyutunu azaltmak için kalay tel yerine ortak kablo kullanabilirsiniz.

Parçalar arasında doğru lehimlemeyi kontrol etmek ve onaylamak için sadece PCB çizimini kullanın.

TTL veya CMOS IC'lerin sayısı arttığında, genellikle PCB çizimi, PCB'nin tek tarafında uygun entegrasyonun ötesinde oldukça karmaşık hale gelir.

Bu nedenle, çok katmanlı PCB, çok sayıda TTL, CMOS ve mikro işlemci içeren endüstriyel sınıf dijital devreler için yaygın olarak kullanılır.

Adım 6: Lehimleme

Lehimleme
Lehimleme

PCB boyutunu mümkün olduğunca en aza indirmek için kalay tel ve ortak kablo kablosunu birlikte kullanıyorum.

PCB çizimi ile karşılaştırıldığında, her parçanın yeri tamamen değiştirilir.

Ancak yine de lehimleme sırasında parçalar arasındaki doğru bağlantıyı doğrulamak için PCB çizimi kullanılır.

12k/24k/51k/100k dirençlerin IC pin kafasına lehimlenmeden takıldığını görebilirsiniz.

Bu nedenle, devre çalışma şemasını daha sonra uygun şekilde değiştirmek için dirençleri başka değerlerle değiştirebilirsiniz.

Adım 7: Montaj

birleştirme
birleştirme

Tamamlanan yük gösterge devresi (Bundan sonra GÖSTERGE olarak anılacaktır) müzik çaların RPI kutusuna yukarıdaki resimde görüldüğü gibi kurulur.

Bu müzik çalar DAC yüklü ve bunu son zamanlarda müzik videosu oynatmak için kullanıyorum.

Bu RPI kutusu hakkında daha sonra açıklayacağım ve şimdi bu projenin ana konusu devre olduğu için GÖSTERGE'ye odaklanalım.

Video oynatma uygulamasını desteklemek için yakın zamanda Raspberry Pi 4 Model B 2GB (Bundan sonra RPI 4B olarak anılacaktır) satın aldım.

RPI 4B, 4 çekirdekli CPU performansını artırdığından, sistem yükleri işleme, RPI 3B+'dan oldukça önemli ölçüde geliştirilmiştir.

Bu nedenle, çalışma süresi çalışma kuyruğu uzunluğu çıktısı, RPI 3B+'dan farklı şekilde ele alınmalıdır.

- Video oynatma gibi çok geleneksel sistem yükü için, çalıştırma kuyruğu uzunluğu genellikle 0,5'ten azdır (Yani DÜŞÜK sistem yükü 0,0 ~ 0,5 düzeyinde olacaktır)

- Video oynatma ve yerel dizinden dosya kopyalama gibi hafif ek sistem yükü eklendiğinde, CPU üzerinde hafif bir yük oluşur. (Yani HAFİF yük seviyesi 0,5 ~ 1,0 olacaktır)

- Youtube sitesinde tarayıcıdan video oynatma ve başka bir tarayıcıda internette gezinme gibi önemli yükler uygulandığında, RPI 4'ün çalışma hızı biraz yavaşlıyor (Yani ORTA yük seviyesi 1.0 ~ 2.0 olacaktır)

- Son olarak, birden fazla web tarayıcısı çalıştırırken ve büyük hacimli dosyaları ağ üzerinden başka bir RPI sunucusuna kopyalarken RPI 4 sistem yükü YÜKSEK olur (Ardından çalışma kuyruğu uzunluğu 2.0'dan fazla olur)

***

Bu yük seviyesi verileri, bir sonraki adımda geliştirilecek olan python kodu tarafından kullanılacaktır.

Adım 8: Orijinal Devrenin Gözden Geçirilmesi

Orijinal Devrenin Revize Edilmesi
Orijinal Devrenin Revize Edilmesi

Orijinal devre tasarımının çeşitli kusurları nedeniyle, devreyi yukarıdaki resimde gösterildiği gibi değiştiriyorum.

Değiştirme nedenleri aşağıdaki gibidir.

- NE555 saat darbesi YÜKSEK ve DÜŞÜK dalga biçiminden oluşur. Ancak genellikle YÜKSEK ve DÜŞÜK sinyal süresi (t=1/f) aynı değildir (örneğin orijinal devrede YÜKSEK %70 ve DÜŞÜK %30'dur). Bu nedenle, iki LED'in (orijinal tasarımda Yeşil/Sarı LED) yanıp sönme hızı aynı değildir (Bir LED diğerinden daha uzun yanar). Bu nedenle, LED'in yanıp sönmesiyle oluşan görsel gösterge çok kolay fark edilemez.`

- Bu nedenle, çalışma durumunun kolay tanınmasını sağlamak için daha fazla LED ekliyorum ve CD4017 ile dairesel yineleme modeli yapıyorum

- Ayrıca DÜŞÜK yükte yavaş yanıp sönme ve YÜKSEK yükte daha hızlı yanıp sönme gibi LED yanıp sönme düzenini tersine değiştirme. (Orijinal devre DÜŞÜK yükte daha hızlı, YÜKSEK yükte yavaş yanıp sönecek şekilde yapılmıştır). YÜKSEK yük durumunda, herhangi bir RPI eylemi yavaşlar. Ve LED'in yavaş yanıp sönmesi sizi mutlu etmeyecektir. (Psikolojik açıdan daha olumlu bir görüntü şeması seçiyorum)

***

LED ekran kısmı önemli ölçüde değiştirilmiş olsa da, orijinal devre ile genel değişim seviyesi bir sonraki adımda görebileceğiniz gibi çok fazla değil.

9. Adım: Orijinal Şematik Değişiklik

Orijinal Şematik Değişiklik
Orijinal Şematik Değişiklik

CD4017 ve 8 LED'lerin eklenmesi büyük değişikliktir.

Ayrıca NE555 saat frekansı ve ters LED yanıp sönme şemasını değiştirmek için direnç değerleri yukarıdaki şemada gösterildiği gibi değiştirilir.

Eklenen devre kısmı basit CD4017 tabanlı takip devresi olduğu için, değiştirilmiş devrenin diğer ayrıntılı açıklamalarını atlayacağım.

Değiştirilen tüm devre parçaları, CD4017 ve 8 LED'lerin lehimlendiği yardımcı PCB kartı olarak yapılabilir.

Ek kart, 8. adımda gösterildiği gibi ana karta (ana kart) takılabilir.

Adım 10: Test Etme

Tüm çalışma aşamalarının (DÜŞÜK, HAFİF, ORTA ve YÜKSEK yük durumu) test videosu, aşağıdaki google sürücüsünde saklanan dosya tarafından gösterilmektedir.

***

drive.google.com/file/d/1CNScV2nlqtuH_CYSW…

***

Mevcut sistem yüküne göre yanıp sönme hızı videoda gösterilen 4 durumdan biri arasında değişecektir.

Adım 11: Python Kodu

Python Kodu
Python Kodu

Kontrol mantıklarının çoğu harici donanım devresine dahil edildiğinden, aşağıdaki adımları içeren python kodunun işlem mantığı nispeten basittir.

- Sistem yükü ve sıcaklık artışı arasındaki göreliliği karşılaştırmak için CPU sıcaklık verilerini alma

- Çalışma süresi çıkışından 1 dakikalık ortalama sistem yükünü toplama

- yy-aa-gg ss:dd:ss formatında zaman damgası yapma

- Yazma sıcaklığı, zaman damgası ile birlikte sistem yükü

- Mevcut sistem yük çıkış verilerine göre (00, 01, 10, 11) GÖSTERGE devresine

- Yukarıda belirtilen adımlara başlamadan önce 5 saniye uyuyun

Python programı kaynak kodunda kesin girintiye ihtiyaç duyduğundan, lütfen aşağıdaki bağlantıyı izleyerek kaynak dosyayı google drive'dan indirin.

***

drive.google.com/file/d/1BdaRVXyFmQrRHkxY8…

***

Masaüstü bilgisayar olarak RPI kullanmadığım için Libre ofis uygulamalarını veya web tarayıcısını çalıştırmak çok nadirdir.

Genellikle yeni satın alınan RPI 4B 2GB ile müzik videosu, dosya kopyalama/taşıma veya python programlama oynuyorum.

Bu nedenle, benim durumumda ortalama yük genellikle 1.0'dan azdır ve buna göre kodumda DÜŞÜK/HAFİF/ORTA/YÜKSEK seviyeleri değiştiriyorum. (Test koşullarını başka türlü değiştirebilirsiniz)

Ancak, RPI ile Youtube videolarını yaygın olarak görüntülediğinizde, 2.0'dan fazla sistem yüklemesi yaygın olarak gerçekleşir.

Adım 12: Sistem Yükü ve CPU Sıcaklığı Arasındaki Görelilik

Sistem Yükü ve CPU Sıcaklığı Arasındaki Görelilik
Sistem Yükü ve CPU Sıcaklığı Arasındaki Görelilik

Genellikle, artan sistem yükünün CPU sıcaklığını artıracağını tahmin ediyorum ve eminim.

Ancak şu ana kadar aralarındaki karşılıklı etkileşimin net bir görüntüsüne sahip değilim.

Yukarıdaki grafikte görebileceğiniz gibi, aşağıdaki gibi çok güçlü bir ilişki vardır.

- Kolay karşılaştırma için, ortalama sistem yükünü 10 ile çarpıyorum. Aksi takdirde sistem yükünün ölçeği çok küçüktür (0.0 ~ 2.0), doğrudan karşılaştırma zorlaşır.

- Müzik çalan Pi kutusuna soğutma FAN devresi takıldığından, CPU sıcaklığı asla 50C'yi geçmez

- Sistem yükü 0.0 ~ 1.0 aralığında olduğunda, sıcaklık 45 ~ 48C aralığında (CPU metal kapağı biraz ısınıyor)

- Ancak ağır yük uygulanır (Genellikle web tarayıcısı ve Youtube videoları oynatılır), yük yükselir ve böylece sıcaklık

***

RPI 4B, 4 çekirdekli CPU ile kurulduğundan, teorik olarak performans yük seviyesine kadar çok fazla düşmeyecektir (uptime çalışan kuyruk) 4.

Ancak yine de ortalama yük seviyesi 4'ün altında, uygun sıcaklık kontrolü gerekli olacaktır.

Adım 13: Sonlandırma

Sonlandırma
Sonlandırma

Yukarıdaki resimdeki gibi INDICATOR'u Pi kutusuna yükleyerek bu projeyi bitiriyorum.

Bu Pi kutusunun gündelik kullanımı sırasında, GÖSTERGE nadiren YÜKSEK seviye gösterir ve dinamik LED yanıp söner.

Genellikle yavaş yanıp sönen LED durumlarında kaldı (yani DÜŞÜK veya IŞIK seviyesi).

Her neyse, eklenen görsel gösterge biraz komik hale getiriyor en azından RPI'nin şu anda bir şeyler yaptığını gösteriyor.

Bu hikayeyi okuduğunuz için teşekkürler…..

Önerilen: