Mục lục:

Chỉ báo tải CPU Raspberry Pi: 13 bước
Chỉ báo tải CPU Raspberry Pi: 13 bước

Video: Chỉ báo tải CPU Raspberry Pi: 13 bước

Video: Chỉ báo tải CPU Raspberry Pi: 13 bước
Video: Cách cài hệ điều hành cho Raspberry Pi vô cùng dễ! 2024, Tháng bảy
Anonim
Chỉ báo tải CPU Raspberry Pi
Chỉ báo tải CPU Raspberry Pi

Khi chạy Raspberry Pi (RPI) không có đầu mà không có màn hình điều khiển, không có chỉ dẫn trực quan cụ thể nào để nhận ra RPI đang thực sự làm điều gì đó.

Mặc dù thiết bị đầu cuối từ xa được sử dụng với SSH, nhưng cần phải có thời gian thực thi lệnh Linux để kiểm tra xem hiện tại CPU đang gánh nặng bao nhiêu tải hệ thống

Vì vậy, mạch này được tạo ra để giúp ngay lập tức nhận ra hoạt động thực của CPU (có thể là bán thực hoặc gần thực) để thực thi các tải hệ thống đang áp dụng.

Mặc dù chỉ lập trình python và mạch đơn giản hơn nhiều mới có thể hỗ trợ cùng một chức năng, nhưng các mã python phức tạp một chút sẽ được yêu cầu để mô phỏng logic điều khiển LED tinh vi theo yêu cầu của mạch này.

Cũng nghịch lý là độ phức tạp tăng lên của mã python sẽ gây gánh nặng cho CPU nhiều hơn khi tải hệ thống tăng lên.

Do đó, tắt tải bất kỳ chức năng chỉ báo nào càng nhiều càng tốt đối với mạch phần cứng bên ngoài sẽ là hợp lý vì dịch vụ này phải chạy mọi lúc và thường xuyên, chẳng hạn như mỗi 5 giây.

Và mạch này sẽ thêm một chút tính năng vui nhộn cho RPI chạy không đầu.

Bước 1: Kiểm tra tải CPU Lệnh Linux

Kiểm tra tải CPU Lệnh Linux
Kiểm tra tải CPU Lệnh Linux

Có rất nhiều lệnh kiểm tra tải CPU của Linux có sẵn như top, iostat, sysstat và uptime.

Mỗi lệnh có các tính năng thuận lợi cụ thể về đa dạng thông tin và hiển thị dữ liệu đơn giản.

Lệnh hàng đầu là dữ liệu giàu thông tin nhất và rất chi tiết có sẵn để nhận biết tải hệ thống ngay lập tức.

Nhưng nó hoạt động như chế độ lặp (hiển thị dữ liệu liên tục trên màn hình) và định dạng thông tin khá phức tạp để chỉ trích xuất dữ liệu tải CPU cần thiết một cách đơn giản.

Lệnh iostat cung cấp thông tin chuyên sâu về tải hệ thống bằng cách tách các công việc hàng đợi của người dùng và hệ thống đang chạy hiện đang gây gánh nặng cho CPU.

Nhưng nó cũng phức tạp không cần thiết để tải CPU hiện tại như một cách nhanh chóng và trực quan.

Trong trường hợp thời gian hoạt động, dữ liệu tải hệ thống rất đơn giản có sẵn dưới dạng trung bình 1 phút, trung bình 5 phút và trung bình tổng kết 15 phút.

Như đã đề cập ở trên, việc đơn giản hóa mã python là cần thiết vì nó phải được thực thi khá thường xuyên, chẳng hạn như mỗi 5 giây hoặc 10 giây.

Khi mã python trở nên phức tạp, nó sẽ gây gánh nặng cho CPU.

Có một điều nghịch lý là bạn đặt RPI để theo dõi tải hệ thống của nó.

Do đó, tôi đang chọn lệnh thời gian hoạt động để thu thập tải CPU và tương tác với mạch chỉ báo vì nó là lệnh đơn giản nhất.

Nhưng khi thời gian hoạt động hiển thị mức trung bình 1 phút của tải hệ thống, mạch chỉ báo sẽ được vận hành không đúng như chế độ thời gian thực.

Tuy nhiên, mạch này có thể cung cấp gợi ý trực quan hữu ích cho thấy RPI hiện đang hoạt động như thế nào.

Bước 2: Sơ đồ

Sơ đồ
Sơ đồ

Mạch này sẽ nhận 4 mức khác nhau (ví dụ: 00-> LOW, 01-> LIGHT, 10-> MEDIUM, 11-> HIGH) của tải CPU hiện tại từ RPI thông qua hai đầu vào opto-coupler.

74LS139 (2 đến 4 bộ giải mã và bộ khử ghép kênh) đang giải mã hai đầu vào bit thành một đầu ra duy nhất trong số 4 cách có thể có, chẳng hạn như 00 (THẤP) -> B0, 01 (ÁNH SÁNG) -> B1, 10 (TRUNG BÌNH) -> B2, 11 (CAO) -> B3.

Vì đầu ra 74LS139 là mức đảo ngược (đầu vào 00 -> B0 trở thành THẤP và 3 đầu ra khác CAO), biến tần 74HC04 được sử dụng để làm cho đầu ra đảo ngược một lần nữa.

Khi đầu ra của 74LS139 là CAO bình thường, 74HC04 sẽ không cần thiết.

Nhưng không hiểu sao 74LS139 lại được làm như vậy. (Vui lòng kiểm tra bảng sự thật của 74LS139)

Khi bất kỳ đầu ra 74LS139 nào được chọn, nó sẽ kích hoạt một công tắc tương tự nhất định trong số 4 công tắc có trong IC CD4066.

CD4066 có thể hỗ trợ 4 công tắc tương tự và mỗi công tắc bao gồm 1 đầu vào điều khiển và 2 đầu ra tương tự.

Khi đầu vào điều khiển trở nên CAO, kết nối hai đầu ra trở thành trở kháng thấp (Điện trở trở thành 0) và những đầu khác trở thành trở kháng CAO (Điện trở giữa hai đường ra trở thành mức vài trăm mega ohm).

Đơn giản chỉ cần điều khiển 1 (chân 13) của CD4066 trở nên CAO, đường dẫn giữa đầu ra 1 (chân 1) và đầu ra 2 (chân 2) được kết nối trong khi các đầu ra khác không được kết nối (ở trạng thái trở kháng cao).

Tương tự, đầu vào CAO của điều khiển 2 (chân 5) làm cho đầu ra 1 (chân 4) và đầu ra 2 (chân 3) được kết nối trong khi các đầu ra khác bị ngắt kết nối.

Sau đó, LM555 đang nhấp nháy hai đèn LED với tốc độ nhấp nháy khác nhau.

Như bạn có thể thấy trong sơ đồ trên, NE555 sẽ hoạt động với một giá trị điện trở trong số 4 mức kháng cự có thể có (12k, 24k, 51k, 100k).

Bước 3: NE555 thế hệ đồng hồ khác nhau

NE555 Thế hệ đồng hồ khác nhau
NE555 Thế hệ đồng hồ khác nhau

Như được hiển thị trong sơ đồ, NE555 sẽ hoạt động một trong các giá trị điện trở có thể có như 12k, 24l, 51k và 100k.

Trên thực tế phần mạch định thời NE555 là chỉ thị trực quan chính hỗ trợ một phần của mạch.

Sơ đồ hoạt động của mạch như sau.

- Khi không có tải CPU đáng kể, chương trình python được cài đặt trong RPI sẽ gửi 00 đầu ra đến mạch chỉ báo. Sau đó, hai đường dẫn đầu ra của CD4066 đang kích hoạt và NE555 đang hoạt động với giá trị điện trở 12k. Do đó, đèn LED nhấp nháy 1,5 lần mỗi giây (nhấp nháy khá nhanh)

- CPU được tải nhẹ (Khi đó độ dài hàng đợi uptime trở thành mức 0,1 ~ 0,9), python sẽ gửi 01 đến mạch. Sau đó, CD4066 được kích hoạt với các đầu ra được kết nối với điện trở 24k. Kết quả là, độ nhấp nháy của đèn LED giảm 1,2 lần mỗi giây (đèn LED nhấp nháy giảm một chút nhưng vẫn nhanh một chút)

- Khi tải CPU tăng lên đáng kể (Khi đó độ dài hàng đợi thời gian hoạt động trở thành mức 1,0 ~ 1,9), python sẽ xuất 10 ra mạch. Sau đó, đường dẫn kết nối điện trở 51k được mở và NE555 đang hoạt động 0,8 lần mỗi giây. Bây giờ tỷ lệ nhấp nháy trở nên giảm đáng kể.

- Tải nặng tạo gánh nặng cho CPU và độ dài hàng đợi thời gian hoạt động trở nên dài hơn (nhiều hơn 2 công việc sẽ chờ được thực thi bởi CPU và thời gian hoạt động sẽ báo cáo nhiều hơn 2.0). Khi kết nối điện trở 100k được chọn, NE555 sẽ nhấp nháy đèn LED 0,5 lần mỗi giây (Tốc độ nhấp nháy trở nên rất chậm)

***

Cùng với việc tăng tải hệ thống, tốc độ nhấp nháy của đèn LED sẽ giảm tương ứng.

Khi đèn LED nhấp nháy khá chậm, thì RPI chắc chắn đã quá tải đáng kể.

Cách này là mạch chỉ thị tải báo cho bạn mức tải hiện tại của RPI.

Bước 4: Các bộ phận

Để tạo ra mạch này, các chip IC khác nhau được sử dụng.

Mặc dù tôi đang đề cập đến loại chip IC cũ 74LSxx, CD40xx, nhưng bạn có thể sử dụng các loại chip TTL và CMOS gần đây như 74HC4066 và 74ASxx khi chip IC được chọn là loại DIP.

Loại giá đỡ bề mặt của gói IC nhỏ cũng có thể được sử dụng khi bạn có thể hàn những cái nhỏ đúng cách trên PCB phổ thông.

Những bộ phận khác là những bộ phận phổ biến mà bạn có thể dễ dàng mua từ các cửa hàng điện tử trên internet.

- 74LS139 (2 đến 4 bộ giải mã, bộ khử ghép kênh) x 1

- 74HC04 (6 biến tần) x 1

- CD4066 (4 IC chuyển mạch tương tự) x 1

- IC hẹn giờ NE555 x 1

- Tụ điện: 10uF x 1, 0,1uF x 1

- Bộ ghép quang PC817 x 2 (Có thể sử dụng bất kỳ bộ ghép nối quang 4 chân thông thường nào)

- Điện trở: 220ohm x 4 (LED giới hạn dòng điện), 4,7K (giao diện Opto-coupler) x 2, 12K, / 24K / 51K / 100K (Điều khiển thời gian đồng hồ) x 1

- LED x 2 (Bất kỳ màu nào khác nhau như Vàng, Xanh lá cây hoặc Đỏ, Xanh lục)

- Bo mạch đa năng có kích thước lỗ 30 (W) x 20 (H) (Bạn có thể cắt bất kỳ kích thước nào của bo mạch đa năng để vừa với mạch này)

- Dây thiếc (Để tạo các mẫu dây trên PCB phổ thông)

- đầu ghim (3 chân) x 3

- Đầu chân IC (4 chân) x 4

- cáp dây màu đỏ / xanh lam

***

Bước 5: Vẽ PCB

Tạo bản vẽ PCB
Tạo bản vẽ PCB

Mặc dù tôi đang hiển thị bản vẽ PCB trong mỗi dự án, nhưng thiết kế hệ thống dây điện chỉ là tài liệu tham khảo sẽ hướng dẫn bạn hàn chính xác từng bộ phận trên PCB phổ thông.

Nhưng bạn không nhất thiết phải dính vào sơ đồ đi dây này.

Như bạn có thể thấy sơ đồ nối dây ở trên, nó khá phức tạp và yêu cầu PCB lớn đáng kể.

Bạn có thể sử dụng cáp thông thường để kết nối các bộ phận thay vì dây thiếc để giảm kích thước của PCB đã hoàn thành hàn.

Chỉ sử dụng bản vẽ PCB để kiểm tra và xác nhận mối hàn chính xác giữa các bộ phận.

Khi số lượng IC TTL hoặc CMOS tăng lên, việc vẽ PCB thường trở nên khá phức tạp ngoài khả năng tích hợp thích hợp trên một mặt của PCB.

Do đó, PCB nhiều lớp thường được sử dụng cho cấp công nghiệp của các mạch kỹ thuật số bao gồm nhiều TTL, CMOS và vi xử lý.

Bước 6: Hàn

Hàn
Hàn

Tôi đang sử dụng dây thiếc và cáp dây thông thường cùng nhau để giảm thiểu kích thước PCB nhiều nhất có thể.

Khi so sánh với bản vẽ PCB, vị trí của từng bộ phận được thay đổi hoàn toàn.

Nhưng bản vẽ PCB vẫn được sử dụng để xác minh kết nối chính xác giữa các bộ phận trong khi hàn.

Bạn có thể thấy các điện trở 12k / 24k / 51k / 100k được đưa vào đầu chân IC mà không cần hàn.

Do đó, bạn có thể thay thế điện trở thành các giá trị khác để thuận tiện cho việc thay đổi sơ đồ hoạt động của mạch sau này.

Bước 7: Lắp ráp

Lắp ráp
Lắp ráp

Mạch chỉ báo tải hoàn thành (Sau đây gọi là INDICATOR) được lắp vào hộp RPI của máy nghe nhạc như trong hình trên.

Máy nghe nhạc này được cài đặt với DAC và gần đây tôi đang sử dụng cái này để phát video nhạc.

Về hộp RPI này, tôi sẽ giải thích sau và bây giờ chúng ta hãy tập trung vào INDICATOR vì mạch là chủ đề chính của dự án này.

Tôi đã mua Raspberry Pi 4 Model B 2GB (Sau đây gọi là RPI 4B) gần đây để hỗ trợ ứng dụng chơi video.

Vì RPI 4B đã tăng hiệu suất của CPU 4 lõi, việc xử lý tải hệ thống được tăng cường khá đáng kể từ RPI 3B +.

Do đó, đầu ra độ dài hàng đợi chạy thời gian hoạt động nên được xử lý khác với RPI 3B +.

- Đối với tải hệ thống rất thông thường như phát video, độ dài hàng đợi chạy thường nhỏ hơn 0,5 (Vì vậy tải hệ thống THẤP sẽ là mức 0,0 ~ 0,5)

- Khi tải hệ thống bổ sung nhẹ được thêm vào chẳng hạn như phát video và sao chép tệp từ và vào thư mục cục bộ loại công việc dẫn đến gánh nặng nhẹ cho CPU. (Vì vậy, mức tải LIGHT sẽ là 0,5 ~ 1,0)

- Khi áp dụng các tải trọng đáng kể như phát video trên trình duyệt tại trang Youtube và lướt web trên trình duyệt khác, tốc độ chạy của RPI 4 trở nên hơi chậm chạp (Vì vậy, mức tải TRUNG BÌNH sẽ là 1.0 ~ 2.0)

- Cuối cùng tải hệ thống RPI 4 trở nên CAO khi chạy nhiều trình duyệt web và sao chép khối lượng lớn tệp sang máy chủ RPI khác thông qua mạng (Khi đó độ dài hàng đợi chạy trở nên lớn hơn 2.0)

***

Dữ liệu mức tải này sẽ được sử dụng bởi sẽ được phát triển mã python trong bước tiếp theo.

Bước 8: Sửa lại mạch gốc

Sửa đổi mạch gốc
Sửa đổi mạch gốc

Do một số khiếm khuyết của thiết kế mạch gốc, tôi đang sửa đổi mạch như thể hiện trong hình trên.

Lý do thay đổi như sau.

- Xung đồng hồ NE555 bao gồm dạng sóng CAO và THẤP. Nhưng thường thời lượng tín hiệu CAO và THẤP (t = 1 / f) không giống nhau (ví dụ CAO là 70% và THẤP là 30% trong mạch gốc). Do đó, tỷ lệ nhấp nháy của hai đèn LED (Đèn LED xanh / vàng trong thiết kế ban đầu) không giống nhau (Một đèn LED bật lâu hơn đèn LED khác). Vì lý do này, chỉ báo trực quan bằng đèn LED nhấp nháy không dễ nhận ra. ''

- Do đó, tôi đang thêm nhiều đèn LED hơn và tạo mô hình lặp lại vòng tròn với CD4017 để đảm bảo dễ dàng nhận dạng trạng thái hoạt động

- Cũng thay đổi sơ đồ nhấp nháy của đèn LED ngược lại chẳng hạn như nhấp nháy chậm ở mức tải THẤP và nhấp nháy nhanh hơn với mức tải CAO. (Mạch gốc được làm để nhấp nháy nhanh hơn ở mức tải THẤP và nhấp nháy chậm ở mức tải CAO). Trong tình huống tải CAO, mọi hành động RPI đều trở nên chậm chạp. Và hiển thị đèn LED nhấp nháy chậm sẽ không làm bạn hài lòng. (Về khía cạnh tâm lý, tôi đang chọn lược đồ hiển thị tích cực hơn)

***

Mặc dù phần hiển thị LED được sửa đổi đáng kể, nhưng mức độ thay đổi tổng thể so với mạch gốc là không nhiều như bạn có thể thấy trong bước tiếp theo.

Bước 9: Thay đổi sơ đồ ban đầu

Thay đổi sơ đồ ban đầu
Thay đổi sơ đồ ban đầu

Việc bổ sung CD4017 và 8 đèn LED là sửa đổi lớn.

Ngoài ra, để thay đổi tần số xung nhịp NE555 và sơ đồ nhấp nháy đèn LED đảo ngược, các giá trị điện trở được thay đổi như trong sơ đồ trên.

Vì phần mạch được bổ sung là mạch mã đơn giản dựa trên CD4017, tôi sẽ bỏ qua các giải thích chi tiết khác về mạch đã sửa đổi.

Tất cả phần mạch đã thay đổi có thể được tạo thành bảng mạch PCB con mà CD4017 và 8 đèn LED được hàn vào.

Bảng con có thể được gắn vào bảng chính (bảng mẹ) như hình minh họa ở bước 8.

Bước 10: Kiểm tra

Video kiểm tra tất cả các giai đoạn hoạt động (trạng thái tải THẤP, NHẸ, TRUNG BÌNH và CAO) được hiển thị bằng tệp được lưu trữ trong google drive bên dưới.

***

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

***

Theo tải hệ thống hiện tại, tốc độ nhấp nháy sẽ được thay đổi giữa một trong 4 trạng thái hiển thị trong video.

Bước 11: Mã Python

Mã Python
Mã Python

Vì hầu hết các lôgic điều khiển được đưa vào mạch phần cứng bên ngoài, lôgic hoạt động của mã python tương đối đơn giản bao gồm các bước sau.

- Nhận dữ liệu nhiệt độ CPU để so sánh tính tương đối giữa tải hệ thống và tăng nhiệt độ

- Thu thập tải trọng hệ thống trung bình 1 phút từ đầu ra thời gian hoạt động

- Tạo tem thời gian như định dạng yy-mm-dd hh: mm: ss

- Ghi nhiệt độ, tải hệ thống cùng với dấu thời gian

- Theo dữ liệu đầu ra tải của hệ thống hiện tại (00, 01, 10, 11) đến mạch INDICATOR

- Ngủ 5 giây trước khi bắt đầu các bước nêu trên

Vì chương trình python cần thụt lề nghiêm ngặt trong mã nguồn, vui lòng tải xuống tệp nguồn từ google drive theo liên kết bên dưới.

***

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

***

Vì tôi không sử dụng RPI làm máy tính để bàn nên rất hiếm khi chạy các ứng dụng văn phòng Libre hoặc trình duyệt web.

Thông thường, tôi đang phát video nhạc, sao chép / di chuyển tệp hoặc lập trình python với RPI 4B 2GB mới mua.

Do đó, tải trung bình thường nhỏ hơn 1,0 trong trường hợp của tôi và do đó, tôi đang thay đổi các mức LOW / LIGHT / MEDIUM / HIGH trong mã của mình. (Bạn có thể thay đổi các điều kiện thử nghiệm nếu không)

Nhưng khi bạn thường xem video Youtube bằng RPI, thì việc tải hệ thống nhiều hơn 2,0 sẽ thường xảy ra.

Bước 12: Tương đối giữa tải hệ thống và nhiệt độ CPU

Tương đối giữa tải hệ thống và nhiệt độ CPU
Tương đối giữa tải hệ thống và nhiệt độ CPU

Thông thường, tôi đoán và chắc chắn rằng việc tăng tải hệ thống sẽ làm tăng nhiệt độ CPU.

Nhưng cho đến nay tôi vẫn chưa có hình ảnh rõ ràng về hoạt động lẫn nhau giữa chúng.

Như bạn có thể thấy trong biểu đồ trên, chúng có mối quan hệ đồng độ rất mạnh như sau.

- Để dễ so sánh, tôi nhân 10 với tải trung bình của hệ thống. Nếu không, quy mô tải hệ thống rất nhỏ (0,0 ~ 2,0), việc so sánh trực tiếp trở nên khó khăn.

- Khi lắp mạch FAN làm mát vào hộp Pi chơi nhạc, nhiệt độ CPU không bao giờ quá 50C

- Khi tải hệ thống trong phạm vi 0,0 ~ 1,0, nhiệt độ trong phạm vi 45 ~ 48C (Vỏ kim loại CPU hơi nóng lên)

- Nhưng áp dụng tải nặng (Thường là trình duyệt web và phát video Youtube), tải tăng vọt và do đó nhiệt độ

***

Vì RPI 4B được cài đặt với CPU 4 nhân, về mặt lý thuyết, hiệu suất sẽ không bị suy giảm nhiều ở mức tải (hàng đợi thời gian hoạt động) 4.

Nhưng vẫn thấp hơn mức tải trung bình 4, điều khiển nhiệt độ thích hợp sẽ là cần thiết.

Bước 13: Hoàn thiện

Quyết toán
Quyết toán

Tôi đang hoàn thành dự án này bằng cách cài đặt INDICATOR cho hộp Pi như hình trên.

Trong quá trình sử dụng bình thường hộp Pi này, INDICATOR hiếm khi hiển thị mức CAO và đèn LED động nhấp nháy.

Thông thường, nó vẫn ở trạng thái đèn LED nhấp nháy chậm (vì vậy mức THẤP hoặc LIGHT).

Dù sao chỉ báo trực quan được thêm vào cũng tạo ra một chút buồn cười ít nhất nó cho thấy RPI đang làm gì đó ngay bây giờ.

Cảm ơn bạn đã đọc truyện này…..

Đề xuất: