İçindekiler:
- Adım 1: Linux Komutunu Kontrol Eden CPU Yükü
- 2. Adım: Şemalar
- Adım 3: NE555 Farklı Saat Üretimi
- Adım 4: Parçalar
- Adım 5: PCB Çizimi Yapma
- Adım 6: Lehimleme
- Adım 7: Montaj
- Adım 8: Orijinal Devrenin Gözden Geçirilmesi
- 9. Adım: Orijinal Şematik Değişiklik
- Adım 10: Test Etme
- Adım 11: Python Kodu
- Adım 12: Sistem Yükü ve CPU Sıcaklığı Arasındaki Görelilik
- Adım 13: Sonlandırma
Video: Raspberry Pi CPU Yük Göstergesi: 13 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
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ü
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
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
Ş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
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
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
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 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
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
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
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
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:
BigBit İkili Saat Göstergesi: 9 Adım (Resimlerle)
BigBit İkili Saat Ekranı: Bir önceki Instructable'da (Microbit Binary Clock), ekran oldukça küçük olduğu için proje taşınabilir bir masaüstü cihazı olarak idealdi. Bu nedenle, bir sonraki versiyonun bir şömine veya duvara monte versiyon olması, ancak çok daha büyük olması uygun görünüyordu.
Raspberry Pi CPU Sıcaklık Göstergesi: 11 Adım (Resimli)
Raspberry Pi CPU Sıcaklık Göstergesi: Daha önce basit ahududu pi (Bundan sonra RPI olarak anılacaktır) çalışma durum göstergesi devresini tanıtmıştım. CPU sıcaklığı
Raspberry Pi Kapatma Göstergesi: 6 Adım
Raspberry Pi Kapatma Göstergesi: Raspberry pi'nin (Bundan sonra RPI olarak anılacaktır) çalışma durumunu gösteren çok basit bir devredir. RPI'yi başsız (monitörsüz) çalıştırdığınızda belki işe yarar. kapatıldıktan sonra RPI.
Raspberry PI ve Cyntech WeatherHAT Kullanan Basit Hava Durumu Göstergesi: 4 Adım
Raspberry PI ve Cyntech WeatherHAT Kullanan Basit Hava Durumu Görüntüsü: * 2019'da Yahoo API'sini değiştirdi ve bu çalışma durdu. Değişiklikten habersizdim. Eylül 2020'de bu proje OPENWEATHERMAP API'sini kullanacak şekilde güncellendi Aşağıdaki güncellenmiş bölüme bakın, bu bilgilerin geri kalanı hala iyi ancak
Daha Küçük Adım Boyutuna Sahip Anahtarlamalı Yük Direnç Bankası: 5 Adım
Daha Küçük Adım Boyutuna Sahip Anahtarlamalı Yük Direnç Bankası: Güç ürünlerinin test edilmesi, güneş panellerinin karakterizasyonu için, test laboratuvarlarında ve endüstrilerde Yük Direnç Bankaları gereklidir. Reostatlar, yük direncinde sürekli değişiklik sağlar. Ancak direncin değeri azaldıkça güç