Table des matières:

Indicateur de charge CPU Raspberry Pi : 13 étapes
Indicateur de charge CPU Raspberry Pi : 13 étapes

Vidéo: Indicateur de charge CPU Raspberry Pi : 13 étapes

Vidéo: Indicateur de charge CPU Raspberry Pi : 13 étapes
Vidéo: Используйте Etcher чтобы установить операционную систему на SD карту 2024, Juillet
Anonim
Indicateur de charge CPU Raspberry Pi
Indicateur de charge CPU Raspberry Pi

Lors de l'exécution de Raspberry Pi (RPI) sans tête sans moniteur de console, aucune indication visuelle spécifique n'est disponible pour reconnaître que le RPI fait réellement quelque chose.

Même si le terminal distant est utilisé avec SSH, l'exécution de temps en temps de la commande Linux est nécessaire pour vérifier la charge système qui pèse maintenant sur le processeur

Ce circuit est donc conçu pour aider à reconnaître immédiatement l'activité réelle du processeur (peut-être de manière semi-réelle ou quasi réelle) pour exécuter les charges système actuellement appliquées.

Bien que seule la programmation python et un circuit beaucoup plus simple puissent prendre en charge la même fonctionnalité, des codes python un peu complexes seront nécessaires pour simuler la logique de contrôle sophistiquée des LED requise par ce circuit.

De plus, paradoxalement, la complexité accrue du code python surchargera davantage le processeur avec une charge système accrue.

Par conséquent, il sera raisonnable de décharger autant que possible toute fonctionnalité d'indication sur un circuit matériel externe, car ce service doit être exécuté en permanence et fréquemment, par exemple toutes les 5 secondes.

Et ce circuit ajoutera une fonctionnalité un peu amusante au RPI sans tête.

Étape 1: Commande Linux de vérification de la charge du processeur

Commande Linux de vérification de la charge du processeur
Commande Linux de vérification de la charge du processeur

Diverses commandes Linux de vérification de la charge du processeur sont disponibles, telles que top, iostat, sysstat et uptime.

Chaque commande présente des spécificités avantageuses en termes de diversité des informations et de simplicité d'affichage des données.

La commande supérieure est la plus riche en informations et des données très détaillées sont disponibles pour reconnaître immédiatement la charge du système.

Mais il fonctionne en mode itération (affichage des données en continu à l'écran) et le format des informations est assez complexe pour extraire simplement les données de charge CPU nécessaires.

La commande iostat fournit des informations détaillées sur la charge du système en séparant les tâches de file d'attente en cours d'exécution de l'utilisateur et du système qui surchargent actuellement le processeur.

Mais il est également inutilement complexe d'obtenir la charge CPU actuelle de manière rapide et intuitive.

En cas de disponibilité, des données de charge système très simples sont disponibles en termes de moyenne de 1 minute, de moyenne de 5 minutes et de moyenne résumée de 15 minutes.

Comme mentionné ci-dessus, la simplification du code python est nécessaire car il doit être exécuté assez souvent, par exemple toutes les 5 ou 10 secondes.

Lorsque le code python devient complexe, il sollicitera beaucoup le processeur.

C'est un peu paradoxal que vous chargez RPI de surveiller la charge de son système.

Par conséquent, je choisis la commande uptime pour collecter la charge du processeur et interagir avec le circuit indicateur, car c'est la plus simple.

Mais comme le temps de fonctionnement indique une moyenne de 1 minute de charge du système, le circuit indicateur ne doit pas fonctionner en mode strictement temps réel.

Pourtant, ce circuit peut fournir un indice visuel utile qui montre comment se porte RPI maintenant.

Étape 2: Schémas

Schémas
Schémas

Ce circuit recevra 4 niveaux différents (par exemple 00->LOW, 01->LIGHT, 10->MEDIUM, 11->HIGH) de charge CPU actuelle de RPI via deux entrées opto-coupleur.

74LS139 (décodeur et démultiplexeur 2 à 4) décode deux entrées bits en une seule sortie parmi 4 manières possibles telles que 00(LOW)->B0, 01(LIGHT)->B1, 10(MEDIUM)->B2, 11(ÉLEVÉ)->B3.

Comme la sortie 74LS139 est de niveau inversé (l'entrée 00 -> B0 devient LOW et les 3 autres sorties HIGH), l'onduleur 74HC04 est utilisé pour inverser la sortie une fois de plus.

Lorsque la sortie de 74LS139 est normale à HAUT, 74HC04 ne sera pas nécessaire.

Mais d'une manière ou d'une autre, le 74LS139 est fait de cette façon. (Veuillez vérifier la table de vérité de 74LS139)

Lorsque l'une des sorties 74LS139 est sélectionnée, elle active un certain commutateur analogique parmi les 4 commutateurs inclus dans le CD4066 IC.

Le CD4066 peut prendre en charge 4 commutateurs analogiques et chaque commutateur comprend 1 entrée de commande et 2 sorties analogiques.

Lorsque l'entrée de commande devient HAUTE, la connexion de deux sorties devient à faible impédance (la résistance devient 0) et d'autres deviennent à haute impédance (la résistance entre deux chemins de sortie devient plusieurs centaines de méga ohms).

Contrôlez simplement 1 (broche 13) du CD4066 devient HAUT, le chemin entre la sortie 1 (broche 1) et la sortie 2 (broche 2) est connecté tandis que les autres sorties ne sont pas connectées (en état de haute impédance).

De même, l'entrée HIGH de la commande 2 (broche 5) rend la sortie 1 (broche 4) et la sortie 2 (broche 3) connectées tandis que les autres sorties sont déconnectées.

Ensuite, le LM555 fait clignoter deux LED à un taux de clignotement différent.

Comme vous pouvez le voir dans le schéma ci-dessus, le NE555 fonctionnera avec l'une des valeurs de résistance parmi 4 niveaux de résistance possibles (12k, 24k, 51k, 100k).

Étape 3: génération d'horloge différente NE555

NE555 Génération d'horloge différente
NE555 Génération d'horloge différente

Comme le montre le schéma, NE555 exploitera l'une des valeurs de résistance possibles telles que 12k, 24l, 51k et 100k.

En fait, la partie du circuit de synchronisation NE555 est une indication visuelle majeure prenant en charge une partie du circuit.

Le schéma de fonctionnement du circuit est le suivant.

- Lorsqu'il n'y a pas de charge CPU significative, le programme python installé dans RPI enverra 00 sorties au circuit indicateur. Ensuite, le chemin de deux sorties du CD4066 s'active et le NE555 fonctionne avec une valeur de résistance de 12k. Par conséquent, les LED clignotent 1,5 fois par seconde (clignotent assez rapidement)

- Le processeur est légèrement chargé (la longueur de la file d'attente de disponibilité devient alors de 0,1 à 0,9), python enverra 01 au circuit. Puis CD4066 activé avec des sorties connectées avec une résistance de 24k. En conséquence, le clignotement de la LED a diminué 1,2 fois par seconde (le clignotement de la LED a légèrement diminué mais reste un peu rapide)

- Lorsque la charge du processeur a augmenté de manière significative (puis la longueur de la file d'attente d'exécution devient de 1,0 à 1,9), python en affichera 10 sur le circuit. Ensuite, le chemin de connexion de la résistance 51k est ouvert et le NE555 fonctionne 0,8 fois par seconde. Maintenant, le taux de clignotement est considérablement réduit.

- Les charges lourdes pesant sur le processeur et la longueur de la file d'attente d'exécution deviennent plus longues (plus de 2 tâches attendront d'être exécutées par le processeur et le temps de fonctionnement rapportera plus de 2.0). Lorsque la connexion de la résistance 100k est sélectionnée, le NE555 fera clignoter la LED 0,5 fois par seconde (la vitesse de clignotement devient très lente)

***

Parallèlement à l'augmentation des charges du système, la vitesse de clignotement des LED sera réduite en conséquence.

Lorsque la LED clignote assez lentement, le RPI est sûrement surchargé de manière significative.

De cette façon, le circuit d'indication de charge vous indique le niveau de charge actuel du RPI.

Étape 4: Pièces

Pour réaliser ce circuit, diverses puces IC sont utilisées.

Bien que je mentionne 74LSxx, type CD40xx d'anciennes puces IC, vous pouvez utiliser des types récents de puces TTL et CMOS telles que 74HC4066 et 74ASxx lorsque la puce IC sélectionnée est de type DIP.

Le type de montage en surface d'un petit boîtier IC peut également être utilisé lorsque vous pouvez souder correctement les petits sur le PCB universel.

D'autres sont des pièces courantes que vous pouvez facilement acheter dans les magasins en ligne sur Internet.

- 74LS139 (décodeur 2 à 4, démultiplexeur) x 1

- 74HC04 (6 onduleurs) x 1

- CD4066 (4 commutateurs analogiques IC) x 1

- NE555 Minuterie IC x 1

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

- Opto-coupleur PC817 x 2 (N'importe quel opto-coupleur commun à 4 broches peut être utilisé)

- Résistances: 220ohm x 4 (limitation de courant LED), 4.7K (interface opto-coupleur) x 2, 12K, /24K/51K/100K (contrôle de synchronisation d'horloge) x 1

- LED x 2 (toutes les couleurs différentes telles que jaune, vert ou rouge, vert)

- Carte universelle 30 (W) par 20 (H) taille de trous (vous pouvez couper n'importe quelle taille de carte universelle pour s'adapter à ce circuit)

- Fil d'étain (Pour réaliser des schémas de câblage sur le PCB universel)

- tête de broche (3 broches) x 3

- Tête de broche IC (4 broches) x 4

- câbles de câblage de couleur rouge/bleu

***

Étape 5: Faire un dessin de PCB

Faire un dessin de PCB
Faire un dessin de PCB

Bien que je montre le dessin du PCB dans chaque projet, la conception du câblage n'est qu'une référence qui vous guidera pour la soudure correcte de chaque pièce sur le PCB universel.

Mais vous n'êtes pas forcément collé à ce schéma de câblage.

Comme vous pouvez le voir sur le schéma de câblage ci-dessus, il est assez complexe et nécessite un PCB considérablement volumineux.

Vous pouvez utiliser un câble commun pour connecter des pièces au lieu d'un fil d'étain afin de réduire la taille du PCB terminé à souder.

Utilisez uniquement le schéma du circuit imprimé pour vérifier et confirmer la soudure correcte entre les pièces.

Lorsque le nombre de circuits intégrés TTL ou CMOS augmente, le dessin de PCB devient généralement assez complexe au-delà d'une intégration correcte sur un seul côté du PCB.

Par conséquent, les circuits imprimés multicouches sont couramment utilisés pour les circuits numériques de qualité industrielle comprenant de nombreux TTL, CMOS et microprocesseurs.

Étape 6: Souder

Soudure
Soudure

J'utilise du fil d'étain et un câble de câblage commun ensemble pour minimiser autant que possible la taille du PCB.

Lors de la comparaison avec le dessin de PCB, l'emplacement de chaque pièce est complètement modifié.

Mais le dessin du PCB est toujours utilisé pour vérifier la connexion correcte entre les pièces pendant le soudage.

Vous pouvez voir que des résistances 12k/24k/51k/100k sont insérées sur la tête de broche IC sans soudure.

Par conséquent, vous pouvez remplacer les résistances par d'autres valeurs pour modifier facilement le schéma de fonctionnement du circuit ultérieurement.

Étape 7: Assemblage

Assemblage
Assemblage

Le circuit indicateur de charge terminé (ci-après INDICATEUR) est installé sur le boîtier RPI du lecteur de musique, comme indiqué dans l'image ci-dessus.

Ce lecteur de musique est installé avec le DAC et j'utilise celui-ci récemment pour lire des clips vidéo.

A propos de cette box RPI, je vous expliquerai plus tard et concentrons-nous maintenant sur INDICATOR car le circuit est le sujet principal de ce projet.

J'ai récemment acheté Raspberry Pi 4 modèle B 2 Go (ci-après RPI 4B) pour prendre en charge l'application de lecture vidéo.

Comme RPI 4B a augmenté les performances du processeur 4 cœurs, la gestion des charges système est considérablement améliorée par rapport à RPI 3B+.

Par conséquent, la sortie de la longueur de la file d'attente d'exécution doit être traitée différemment du RPI 3B+.

- Pour la charge système très conventionnelle telle que la lecture de vidéos, la longueur de la file d'attente est généralement inférieure à 0,5 (la FAIBLE charge système sera donc de 0,0 à 0,5 niveau)

- Lorsqu'une légère charge système supplémentaire est ajoutée, telle que la lecture de vidéos et la copie de fichiers depuis et vers un répertoire local, les travaux entraînent une légère charge sur le processeur. (Donc, le niveau de charge LIGHT sera de 0,5 ~ 1,0)

- Lorsque des charges importantes sont appliquées, telles que la lecture de vidéos sur un navigateur sur le site Youtube et la navigation sur un autre navigateur, la vitesse de fonctionnement du RPI 4 devient légèrement lente (le niveau de charge MOYEN doit donc être de 1,0 à 2,0)

- Enfin, la charge du système RPI 4 devient ÉLEVÉE lors de l'exécution de plusieurs navigateurs Web et de la copie d'un grand volume de fichiers sur un autre serveur RPI via le réseau (la longueur de la file d'attente devient alors supérieure à 2.0)

***

Ces données de niveau de charge seront utilisées par le code Python développé à l'étape suivante.

Étape 8: Réviser le circuit d'origine

Révision du circuit d'origine
Révision du circuit d'origine

En raison de plusieurs défauts de conception du circuit d'origine, je modifie le circuit comme indiqué dans l'image ci-dessus.

Les raisons du changement sont les suivantes.

- L'impulsion d'horloge NE555 est composée de formes d'onde HAUT et BAS. Mais généralement, la durée des signaux HIGH et LOW (t=1/f) n'est pas la même (par exemple, HIGH est de 70% et LOW est de 30% dans le circuit d'origine). Par conséquent, le taux de clignotement de deux LED (LED verte/jaune dans la conception d'origine) n'est pas le même (une LED s'allume plus longtemps que l'autre). Pour cette raison, l'indication visuelle par le clignotement de la LED n'est pas très facilement reconnaissable.`

- Par conséquent, j'ajoute plus de LED et crée un modèle d'itération circulaire avec CD4017 pour assurer une reconnaissance facile de l'état de fonctionnement

- Changer également le schéma de clignotement des LED dans le sens inverse, comme un clignotement lent à FAIBLE charge et un clignotement plus rapide avec une charge ÉLEVÉE. (Le circuit d'origine est conçu pour clignoter plus rapidement à faible charge et clignoter lentement à haute charge). Dans la situation de charge ÉLEVÉE, toutes les actions RPI deviennent lentes. Et montrer un clignotement lent de la LED ne vous rendra pas heureux. (Dans l'aspect psychologique, je choisis un schéma d'affichage plus positif)

***

Bien que la partie de l'affichage LED soit considérablement modifiée, le niveau de changement global avec le circuit d'origine n'est pas très important, comme vous pouvez le voir à l'étape suivante.

Étape 9: Modification du schéma d'origine

Modification du schéma d'origine
Modification du schéma d'origine

L'ajout du CD4017 et de 8 LED est une modification majeure.

Également pour modifier la fréquence d'horloge du NE555 et le schéma de clignotement inversé des LED, les valeurs des résistances sont modifiées comme indiqué dans les schémas ci-dessus.

Comme la partie de circuit ajoutée est un simple circuit de poursuite basé sur CD4017, je vais sauter d'autres explications détaillées du circuit modifié.

Toute partie de circuit modifiée peut être réalisée en tant que carte PCB fille sur laquelle CD4017 et 8 LED sont soudées.

La carte fille peut être attachée à la carte principale (carte mère) comme illustré à l'étape 8.

Étape 10: Tester

La vidéo de test de toutes les étapes opérationnelles (état de charge FAIBLE, LÉGER, MOYEN et ÉLEVÉ) est illustrée par le fichier stocké dans le lecteur google ci-dessous.

***

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

***

Selon la charge actuelle du système, le taux de clignotement sera modifié parmi l'un des 4 états affichés dans la vidéo.

Étape 11: Code Python

Code Python
Code Python

Comme la plupart des logiques de contrôle sont incluses dans un circuit matériel externe, la logique opérationnelle du code python est relativement simple, y compris les étapes suivantes.

- Obtenir des données de température du processeur pour comparer la relativité entre la charge du système et l'augmentation de la température

- Collecte de la charge système moyenne d'une minute à partir de la sortie de disponibilité

- Création d'un horodatage au format aa-mm-jj hh:mm:ss

- Écriture de la température, de la charge du système et de l'horodatage

- Selon les données de sortie de charge du système actuel (00, 01, 10, 11) vers le circuit INDICATEUR

- Dormez 5 secondes avant de commencer les étapes mentionnées ci-dessus

Comme le programme python nécessite une indentation stricte dans le code source, veuillez télécharger le fichier source à partir de Google Drive en suivant le lien ci-dessous.

***

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

***

Comme je n'utilise pas RPI comme ordinateur de bureau, il est très rare d'exécuter des applications de bureau libre ou un navigateur Web.

Habituellement, je joue un clip vidéo, une copie/déplacement de fichiers ou une programmation python avec le RPI 4B 2 Go nouvellement acheté.

Par conséquent, la charge moyenne est généralement inférieure à 1,0 dans mon cas et, par conséquent, je modifie les niveaux LOW/LIGHT/MEDIUM/HIGH dans mon code. (Vous pouvez modifier les conditions de test autrement)

Mais lorsque vous regardez couramment des vidéos Youtube avec RPI, plus de 2,0 charges du système se produisent généralement.

Étape 12: Relativité entre la charge système et la température du processeur

Relativité entre la charge système et la température du processeur
Relativité entre la charge système et la température du processeur

Habituellement, je suppose et je suis certain que l'augmentation de la charge du système augmentera la température du processeur.

Mais jusqu'à présent, je n'ai pas d'image claire de l'inter-opération mutuelle entre eux.

Comme vous pouvez le voir dans le graphique ci-dessus, ils sont très fortement corrélés comme suit.

- Pour une comparaison facile, je multiplie par 10 la charge moyenne du système. Sinon, l'échelle de charge du système est très petite (0,0 ~ 2,0), la comparaison directe devient difficile.

- Comme le circuit du ventilateur de refroidissement est installé sur la boîte Pi de lecture de musique, la température du processeur ne dépasse jamais 50C

- Lorsque la charge du système se situe dans la plage de 0,0 à 1,0, la température dans la plage de 45 à 48 °C (le couvercle métallique du processeur se réchauffe légèrement)

- Mais une forte charge est appliquée (généralement navigateur Web et lecture de vidéos Youtube), charge montante et donc la température

***

Comme RPI 4B est installé avec un processeur à 4 cœurs, les performances ne seront théoriquement pas beaucoup dégradées jusqu'au niveau de charge (file d'attente d'exécution) 4.

Mais toujours inférieur au niveau de charge moyen 4, un contrôle de température approprié sera nécessaire.

Étape 13: Finalisation

Finalisation
Finalisation

Je termine ce projet en installant INDICATOR sur la boîte Pi comme l'image ci-dessus.

Lors de l'utilisation occasionnelle de cette boîte Pi, INDICATOR affiche rarement un niveau élevé et un clignotement dynamique de la LED.

Habituellement, il restait dans des états de LED clignotant lentement (donc niveau LOW ou LIGHT).

Quoi qu'il en soit, l'indicateur visuel ajouté rend un peu drôle, au moins cela montre que RPI fait quelque chose en ce moment.

Merci d'avoir lu cette histoire…..

Conseillé: