Daftar Isi:

Indikator Beban CPU Raspberry Pi: 13 Langkah
Indikator Beban CPU Raspberry Pi: 13 Langkah

Video: Indikator Beban CPU Raspberry Pi: 13 Langkah

Video: Indikator Beban CPU Raspberry Pi: 13 Langkah
Video: чехол для мини-ПК Raspberry Pi 4 2024, November
Anonim
Indikator Beban CPU Raspberry Pi
Indikator Beban CPU Raspberry Pi

Saat menjalankan Raspberry Pi (RPI) sebagai headless tanpa monitor konsol, tidak ada indikasi visual khusus yang tersedia untuk mengenali RPI benar-benar melakukan sesuatu.

Meskipun terminal jarak jauh digunakan dengan SSH, eksekusi perintah Linux dari waktu ke waktu diperlukan untuk memeriksa berapa banyak beban sistem yang membebani CPU sekarang

Jadi sirkuit ini dibuat untuk membantu segera mengenali aktivitas nyata CPU (mungkin semi-nyata atau mendekati nyata) untuk menjalankan beban sistem yang diterapkan saat ini.

Meskipun hanya pemrograman python dan rangkaian yang lebih sederhana yang dapat mendukung fungsi yang sama, kode python yang sedikit rumit akan diperlukan untuk mensimulasikan logika kontrol LED canggih yang diperlukan oleh rangkaian ini.

Juga secara paradoks peningkatan kompleksitas kode python akan membebani CPU lebih banyak dengan peningkatan beban sistem.

Oleh karena itu, membongkar fungsionalitas indikasi apa pun sebanyak mungkin ke sirkuit perangkat keras eksternal akan masuk akal karena layanan ini harus berjalan sepanjang waktu dan sering seperti per setiap 5 detik.

Dan sirkuit ini akan menambahkan sedikit fitur lucu pada RPI yang berjalan tanpa kepala.

Langkah 1: Beban CPU Memeriksa Perintah Linux

CPU Load Memeriksa Perintah Linux
CPU Load Memeriksa Perintah Linux

Ada beragam perintah pemeriksaan beban CPU Linux yang tersedia seperti top, iostat, sysstat, dan uptime.

Setiap perintah memiliki fitur menguntungkan khusus dalam hal keragaman informasi dan menampilkan kesederhanaan data.

Perintah teratas adalah yang paling kaya informasi dan data yang sangat detail tersedia untuk segera mengenali beban sistem.

Tapi itu beroperasi sebagai mode iterasi (menampilkan data terus menerus di layar) dan format informasinya cukup rumit untuk mengekstrak hanya data beban CPU yang diperlukan saja.

Perintah iostat memberikan informasi beban sistem yang mendalam dengan memisahkan pengguna dan sistem yang menjalankan pekerjaan antrian yang membebani CPU saat ini.

Tetapi juga tidak perlu rumit untuk mendapatkan beban CPU saat ini sebagai cara yang cepat dan intuitif.

Dalam hal waktu aktif, data beban sistem yang sangat sederhana tersedia dalam rata-rata 1 menit, rata-rata 5 menit, dan rata-rata ringkasan 15 menit.

Seperti disebutkan di atas, penyederhanaan kode python diperlukan karena harus dijalankan cukup sering seperti setiap 5 detik atau 10 detik.

Ketika kode python menjadi kompleks, itu akan sangat membebani CPU.

Ini semacam paradoks bahwa Anda membebani RPI untuk memantau beban sistemnya.

Oleh karena itu, saya memilih perintah uptime untuk mengumpulkan beban CPU dan beroperasi dengan rangkaian indikator karena ini adalah yang paling sederhana.

Tetapi karena waktu aktif menunjukkan rata-rata 1 menit dari beban sistem, rangkaian indikator harus dioperasikan tidak seketat mode waktu nyata.

Tetap saja sirkuit ini dapat memberikan petunjuk visual yang membantu yang menunjukkan bagaimana kinerja RPI sekarang.

Langkah 2: Skema

skema
skema

Sirkuit ini akan menerima 4 level berbeda (misalnya 00->LOW, 01->LIGHT, 10->MEDIUM, 11->HIGH) beban CPU saat ini dari RPI melalui dua input opto-coupler.

74LS139 (dekoder 2 hingga 4 dan de-multiplekser) mendekode dua input bit menjadi salah satu output tunggal di antara 4 kemungkinan cara seperti 00(LOW)->B0, 01(LIGHT)->B1, 10(MEDIUM)->B2, 11(TINGGI)->B3.

Karena output 74LS139 adalah level terbalik (00 input -> B0 menjadi LOW dan 3 output lainnya HIGH), inverter 74HC04 digunakan untuk membuat output mundur sekali lagi.

Ketika output 74LS139 normal TINGGI, 74HC04 tidak diperlukan.

Tapi entah kenapa 74LS139 dibuat seperti itu. (Silakan periksa tabel kebenaran 74LS139)

Ketika salah satu output 74LS139 dipilih, itu akan mengaktifkan satu sakelar analog tertentu di antara 4 sakelar yang disertakan dalam IC CD4066.

CD4066 dapat mendukung 4 sakelar analog dan setiap sakelar terdiri dari 1 input kontrol dan 2 output analog.

Ketika input kontrol menjadi TINGGI, dua koneksi output menjadi impedansi rendah (Resistansi menjadi 0) dan yang lainnya menjadi impedansi TINGGI (Resistansi antara dua jalur output menjadi beberapa ratus mega ohm).

Cukup kontrol 1 (pin 13) dari CD4066 menjadi HIGH, jalur antara output 1 (pin 1) dan output 2 (pin 2) terhubung sedangkan output lainnya tidak terhubung (dalam keadaan impedansi tinggi).

Demikian juga input HIGH dari kontrol 2 (pin 5) membuat output 1 (pin 4) dan output 2 (pin 3) terhubung sementara output lainnya terputus.

Kemudian LM555 mengedipkan dua LED dengan kecepatan kedip yang berbeda.

Seperti yang Anda lihat dalam skema di atas, NE555 akan beroperasi dengan salah satu nilai resistansi di antara 4 level resistansi (12k, 24k, 51k, 100k) yang mungkin.

Langkah 3: NE555 Generasi Jam yang Berbeda

NE555 Generasi Jam Berbeda
NE555 Generasi Jam Berbeda

Seperti yang ditunjukkan pada skema, NE555 akan mengoperasikan salah satu nilai resistansi yang mungkin seperti 12k, 24l, 51k dan 100k.

Sebenarnya bagian rangkaian timing NE555 adalah indikasi visual utama yang mendukung bagian rangkaian.

Skema operasi sirkuit adalah seperti berikut.

- Ketika tidak ada beban CPU yang signifikan, program python yang diinstal di RPI akan mengirimkan 00 output ke rangkaian indikator. Kemudian dua jalur keluaran CD4066 diaktifkan dan NE555 beroperasi dengan nilai resistor 12k. Oleh karena itu, LED berkedip 1,5 kali per detik (berkedip cukup cepat)

- CPU dimuat dengan ringan (Kemudian panjang antrian uptime menjadi level 0,1 ~ 0,9), python akan mengirim 01 ke sirkuit. Kemudian CD4066 diaktifkan dengan output yang terhubung dengan resistor 24k. Akibatnya, kedipan LED berkurang 1,2 kali per detik (LED berkedip sedikit berkurang tetapi masih sedikit cepat)

- Ketika beban CPU meningkat secara signifikan (Maka panjang run-queue uptime menjadi level 1,0 ~ 1,9), python akan menampilkan 10 ke sirkuit. Kemudian jalur koneksi resistor 51k dibuka dan NE555 beroperasi 0,8 kali per detik. Sekarang tingkat kedipan menjadi berkurang secara signifikan.

- Beban berat membebani CPU dan uptime run-queue length menjadi lebih lama (lebih dari 2 job akan menunggu untuk dieksekusi oleh CPU dan uptime akan melaporkan lebih dari 2.0). Saat koneksi resistor 100k dipilih, NE555 akan berkedip LED 0,5 kali per detik (Kecepatan kedip menjadi sangat lambat)

***

Seiring dengan peningkatan beban sistem, kecepatan kedipan LED akan berkurang.

Saat LED berkedip cukup lambat, maka RPI pasti kelebihan beban secara signifikan.

Cara ini adalah rangkaian indikasi beban yang melaporkan tingkat beban RPI Anda saat ini.

Langkah 4: Bagian

Untuk membuat rangkaian ini, berbagai chip IC digunakan.

Meskipun saya menyebutkan 74LSxx, jenis chip IC lama CD40xx, Anda dapat menggunakan jenis chip TTL dan CMOS terbaru seperti 74HC4066, dan 74ASxx ketika chip IC yang dipilih adalah tipe DIP.

Paket IC kecil jenis pemasangan permukaan juga dapat digunakan ketika Anda dapat menyolder yang kecil dengan benar pada PCB universal.

Lainnya adalah bagian umum yang dapat Anda beli dengan mudah dari toko elektronik internet.

- 74LS139 (dekoder 2 hingga 4, de-multiplexer) x 1

- 74HC04 (6 inverter) x 1

- CD4066 (4 sakelar analog IC) x 1

- IC Timer NE555 x 1

- Kapasitor: 10uF x 1, 0,1uF x 1

- PC817 opto-coupler x 2 (Semua opto-coupler 4 pin umum dapat digunakan)

- Resistor: 220ohm x 4 (pembatas arus LED), 4.7K (antarmuka opto-coupler) x 2, 12K, /24K/51K/100K (Kontrol waktu jam) x 1

- LED x 2 (Setiap warna berbeda seperti Kuning, Hijau atau Merah, Hijau)

- Ukuran lubang papan universal 30 (W) kali 20 (H) (Anda dapat memotong berbagai ukuran papan universal agar sesuai dengan sirkuit ini)

- Kawat timah (Untuk membuat pola pengkabelan pada PCB universal)

- kepala pin (3 pin) x 3

- Kepala pin IC (4 pin) x 4

- kabel kabel warna merah/biru

***

Langkah 5: Membuat Gambar PCB

Membuat Gambar PCB
Membuat Gambar PCB

Meskipun saya menunjukkan gambar PCB di setiap proyek, desain kabel hanyalah referensi yang akan memandu Anda menyolder dengan benar setiap bagian pada PCB universal.

Tetapi Anda tidak harus tetap berpegang pada skema pengkabelan ini.

Seperti yang Anda lihat diagram pengkabelan di atas, ini cukup rumit dan membutuhkan PCB yang sangat besar.

Anda dapat menggunakan kabel umum untuk menghubungkan bagian-bagian daripada kawat timah untuk mengurangi ukuran PCB yang sudah selesai disolder.

Gunakan hanya gambar PCB untuk memeriksa dan memastikan penyolderan yang benar antar bagian.

Ketika jumlah IC TTL atau CMOS ditingkatkan, biasanya gambar PCB menjadi sangat kompleks di luar integrasi yang tepat pada satu sisi PCB.

Oleh karena itu, PCB multi-layer biasanya digunakan untuk sirkuit digital kelas industri yang mencakup banyak TTL, CMOS, dan mikroprosesor.

Langkah 6: Menyolder

Pematerian
Pematerian

Saya menggunakan kabel timah dan kabel kabel umum bersama-sama untuk meminimalkan ukuran PCB sebanyak mungkin.

Saat membandingkan dengan gambar PCB, lokasi setiap bagian benar-benar berubah.

Tetapi gambar PCB tetap digunakan untuk memverifikasi koneksi yang benar antara bagian-bagian saat menyolder.

Anda dapat melihat resistor 12k/24k/51k/100k dimasukkan pada kepala pin IC tanpa menyolder.

Oleh karena itu, Anda dapat mengganti resistor ke nilai lain untuk mengubah skema operasional rangkaian dengan mudah nanti.

Langkah 7: Perakitan

Perakitan
Perakitan

Selesai rangkaian indikator beban (Selanjutnya sebagai INDIKATOR) dipasang pada kotak RPI pemutar musik seperti terlihat pada gambar di atas.

Pemutar musik ini diinstal dengan DAC dan saya menggunakan yang ini baru-baru ini untuk memutar video musik.

Tentang kotak RPI ini, saya akan jelaskan nanti dan sekarang mari kita fokus pada INDIKATOR karena rangkaian adalah subjek utama dari proyek ini.

Saya membeli Raspberry Pi 4 Model B 2GB (Selanjutnya RPI 4B) baru-baru ini untuk mendukung aplikasi pemutaran video.

Karena RPI 4B telah meningkatkan kinerja CPU 4 core, penanganan beban sistem ditingkatkan cukup signifikan dari RPI 3B+.

Oleh karena itu output panjang run-queue uptime harus diperlakukan berbeda dari RPI 3B+.

- Untuk beban sistem yang sangat konvensional seperti memutar video, panjang run-queue biasanya kurang dari 0,5 (Jadi beban sistem RENDAH akan menjadi level 0,0 ~ 0,5)

- Ketika sedikit beban sistem tambahan ditambahkan seperti memutar video dan menyalin file dari dan ke direktori lokal, jenis pekerjaan menghasilkan sedikit beban pada CPU. (Jadi tingkat beban LIGHT akan menjadi 0,5 ~ 1,0)

- Ketika beban yang signifikan diterapkan seperti memutar video di browser di situs Youtube dan menjelajahi web di browser lain, kecepatan berjalan RPI 4 menjadi sedikit lamban (Jadi tingkat beban MEDIUM harus 1.0 ~ 2.0)

- Akhirnya beban sistem RPI 4 menjadi TINGGI saat menjalankan beberapa browser web dan menyalin file dalam jumlah besar ke server RPI lain melalui jaringan (Kemudian panjang run-queue menjadi lebih dari 2.0)

***

Data tingkat beban ini akan digunakan oleh kode python yang akan dikembangkan pada langkah berikutnya.

Langkah 8: Merevisi Sirkuit Asli

Merevisi Sirkuit Asli
Merevisi Sirkuit Asli

Karena beberapa cacat desain sirkuit asli, saya memodifikasi sirkuit seperti yang ditunjukkan pada gambar di atas.

Alasan perubahan tersebut adalah sebagai berikut.

- Pulsa clock NE555 terdiri dari bentuk gelombang TINGGI dan RENDAH. Tapi biasanya durasi sinyal TINGGI dan RENDAH (t=1/f) tidak sama (misalnya TINGGI 70% dan RENDAH 30% di sirkuit asli). Oleh karena itu, tingkat kedipan dua LED (LED Hijau/Kuning dalam desain aslinya) tidak sama (Satu LED menyala lebih lama dari yang lain). Oleh karena itu, indikasi visual dengan kedipan LED tidak mudah dikenali.`

- Oleh karena itu, saya menambahkan lebih banyak LED dan membuat pola iterasi melingkar dengan CD4017 untuk memastikan pengenalan status operasional dengan mudah

- Juga mengubah skema kedipan LED secara terbalik seperti kedipan lambat pada beban RENDAH dan kedipan lebih cepat dengan beban TINGGI. (Sirkuit asli dibuat untuk berkedip lebih cepat pada beban RENDAH dan berkedip lambat pada beban TINGGI). Dalam situasi beban TINGGI, setiap tindakan RPI menjadi lamban. Dan menunjukkan LED berkedip lambat tidak akan membuat Anda bahagia. (Dalam aspek psikologis, saya memilih skema tampilan yang lebih positif)

***

Meskipun bagian tampilan LED dimodifikasi secara signifikan, tingkat perubahan keseluruhan dengan sirkuit asli tidak sebanyak yang Anda lihat di langkah berikutnya.

Langkah 9: Perubahan Skema Asli

Perubahan Skema Asli
Perubahan Skema Asli

Penambahan CD4017 dan 8 LED merupakan modifikasi besar.

Juga untuk mengubah frekuensi clocking NE555 dan skema kedipan LED terbalik, nilai resistor diubah seperti yang ditunjukkan pada skema di atas.

Karena bagian rangkaian yang ditambahkan adalah rangkaian chaser berbasis CD4017 sederhana, saya akan melewatkan penjelasan detail lainnya dari rangkaian yang dimodifikasi.

Semua bagian sirkuit yang diubah dapat dibuat sebagai papan PCB anak tempat CD4017 dan 8 LED disolder.

Papan anak dapat dilampirkan ke papan utama (mother board) seperti yang ditunjukkan gambar pada langkah 8.

Langkah 10: Pengujian

Video pengujian semua tahapan operasional (LOW, LIGHT, MEDIUM dan HIGH load state) ditunjukkan oleh file yang tersimpan di google drive di bawah ini.

***

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

***

Menurut beban sistem saat ini, tingkat kedipan akan diubah di antara salah satu dari 4 status yang ditampilkan dalam video.

Langkah 11: Kode Python

Kode Python
Kode Python

Karena sebagian besar logika pengontrol disertakan ke rangkaian perangkat keras eksternal, logika operasional kode python relatif sederhana termasuk langkah-langkah berikut.

- Mendapatkan data suhu CPU untuk membandingkan relativitas antara beban sistem dan peningkatan suhu

- Mengumpulkan beban sistem rata-rata 1 menit dari output waktu aktif

- Membuat stempel waktu seperti format yy-mm-dd jj:mm:dd

- Suhu penulisan, beban sistem bersama dengan cap waktu

- Menurut data keluaran beban sistem saat ini (00, 01, 10, 11) ke sirkuit INDIKATOR

- Tidur 5 detik sebelum memulai langkah-langkah yang disebutkan di atas

Karena program python membutuhkan lekukan yang ketat dalam kode sumber, silakan unduh file sumber dari google drive dengan mengikuti tautan di bawah ini.

***

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

***

Karena saya tidak menggunakan RPI sebagai komputer desktop, menjalankan aplikasi kantor Libre atau browser web sangat jarang.

Biasanya saya memutar video musik, menyalin/memindahkan file atau pemrograman python dengan RPI 4B 2GB yang baru dibeli.

Oleh karena itu, beban rata-rata biasanya kurang dari 1,0 dalam kasus saya dan karenanya saya mengubah level LOW/LIGHT/MEDIUM/HIGH dalam kode saya. (Anda dapat mengubah kondisi pengujian sebaliknya)

Tetapi ketika Anda biasa melihat video Youtube dengan RPI, lebih dari 2.0 beban sistem akan sering terjadi.

Langkah 12: Relativitas Antara Beban Sistem dan Suhu CPU

Relativitas Antara Beban Sistem dan Suhu CPU
Relativitas Antara Beban Sistem dan Suhu CPU

Biasanya saya menebak dan yakin bahwa peningkatan beban sistem akan meningkatkan suhu CPU.

Tetapi sampai sekarang saya tidak memiliki gambaran yang jelas tentang hubungan timbal balik di antara mereka.

Seperti yang dapat Anda lihat pada grafik di atas, mereka adalah korelasi yang sangat kuat sebagai berikut.

- Untuk perbandingan mudah, saya mengalikan 10 dengan beban sistem rata-rata. Jika tidak, skala beban sistem sangat kecil (0,0 ~ 2.0), perbandingan langsung menjadi sulit.

- Saat sirkuit KIPAS pendingin dipasang ke kotak Pi yang memutar musik, suhu CPU tidak pernah melebihi lebih dari 50C

- Saat beban sistem berada dalam kisaran 0,0 ~ 1,0, suhu dalam kisaran 45 ~ 48C (penutup logam CPU sedikit memanas)

- Tapi beban berat diterapkan (Biasanya browser web dan memutar video Youtube), beban melonjak dan suhu

***

Karena RPI 4B diinstal dengan CPU 4 inti, secara teoritis kinerja tidak akan banyak terdegradasi hingga tingkat beban (antrian berjalan waktu aktif) 4.

Tetapi masih kurang dari tingkat beban rata-rata 4, kontrol suhu yang tepat akan diperlukan.

Langkah 13: Finalisasi

Finalisasi
Finalisasi

Saya menyelesaikan proyek ini dengan memasang INDIKATOR ke kotak Pi seperti gambar di atas.

Selama penggunaan biasa kotak Pi ini, INDIKATOR jarang menunjukkan tingkat TINGGI dan LED dinamis berkedip.

Biasanya tetap dalam status LED berkedip lambat (tingkat jadi LOW atau LIGHT).

Pokoknya menambahkan indikator visual membuat sedikit lucu setidaknya itu menunjukkan RPI melakukan sesuatu sekarang.

Terima kasih sudah membaca cerita ini…..

Direkomendasikan: