Les cookies assurent le bon fonctionnement de nos services. En utilisant ces derniers, vous acceptez l'utilisation des cookies. En savoir plus

Nouveau

Les cours créatifs en ligne!

Découvrir

Atelier promotion 1

Nouveau

Les cours créatifs en ligne!

Découvrir

Atelier promotion 1

Gestion thermique automatique de PC

Partager:

Difficulté:

Gérer automatiquement la température de son ordinateur avec affichage des paramètres du système sur un écran TFT 800×480 couleur

 


 


Bienvenue à tous !
Dans ce tutoriel, vous allez, je l’espère, apprendre beaucoup de choses et notamment comprendre comment réaliser un affichage graphique design des informations de votre PC. Mais ce n’est pas tout, ce dispositif communément appelé rhéobus, permettra également de contrôler de manière automatique la vitesse des ventilateurs de votre machine afin de soulager vos oreilles (oui sur certains ordinateurs, les ventilateurs font du bruit, beaucoup de bruit). Enfin, ce dispositif vous permettra de contrôler minutieusement sa température de manière optimale.
Vous êtes prêts? Alors c’est parti! Armez-vous simplement de patience, et du matériel indiqué ci-dessous


 

Matériel :

Budget : Non défini

  • – Des mains et un cerveau (normalement vous en êtes tous équipés)</p><p><strong> </strong></p>
  • – un lot de câbles pour platines d’essais (environ 5€)<br>
  • – Un controleur pour votre écran RA8875 (environ 30€)<br>
  • – Un ecran TFT 5 pouces (tactile ou non) avec une interface 40 pins (boutique Adafruit ou Digi-key) (environ 50€)<br>
  • – Une carte Arduino MEGA 2560 (REV3) (environ 50€)<br>
  • </p><p>Il vous faudra principalement pour réaliser ce projet:<br>
  • <p> <br>
  • – Des mains et un cerveau (normalement vous en êtes tous équipés) 
  • – un lot de câbles pour platines d’essais (environ 5€)
  • – Un controleur pour votre écran RA8875 (environ 30€)
  • – Un ecran TFT 5 pouces (tactile ou non) avec une interface 40 pins (boutique Adafruit ou Digi-key) (environ 50€)
  • – Une carte Arduino MEGA 2560 (REV3) (environ 50€)
  • Il vous faudra principalement pour réaliser ce projet:
  • – Des mains et un cerveau (normalement vous en êtes tous équipés)</p><p><strong> </strong></p>
  • – un lot de câbles pour platines d’essais (environ 5€)<br>
  • – Un controleur pour votre écran RA8875 (environ 30€)<br>
  • – Un ecran TFT 5 pouces (tactile ou non) avec une interface 40 pins (boutique Adafruit ou Digi-key) (environ 50€)<br>
  • – Une carte Arduino MEGA 2560 (REV3) (environ 50€)<br>
  • </p><p>Il vous faudra principalement pour réaliser ce projet:<br>
  • <p> <br>

Etape 1 : Budget: 140€

 

Etape 2 : Un peu de théorie

 

Avant de vous lancer dans ce projet, il faut déjà prendre connaissance du principe de fonctionnement qui repose derrière. Veillez à lire attentivement cette étape!
Nous souhaitons réaliser un affichage qui transmet à l’utilisateur les informations importantes de son système dans une interface claire. Il faut d’ores et déjà séparer la partie graphique, qui réalise l’interface entre l’ordinateur et l’humain, de la partie traitement qui se charge de récupérer les informations utiles, de les analyser et d’agir en conséquence. Notre partie graphique ici, ce sera simplement l’affichage des informations système tel que vous pouvez le voir sur l’image de présentation. Vous comprendrez rapidement que cette partie ne constitue pas en soi un challenge important : il s’agit simplement d’une exploitation cohérente du driver RA8875. Parlons-en d’ailleurs de ce composant que peu de personnes doivent connaître mais qui est pourtant indispensable lorsque l’on souhaite piloter un écran de 800×480 avec une carte Arduino. Il permet simplement de rendre rapide l’affichage de formes simples pour soulager l’arduino qui elle se charge simplement de lui transmettre des instructions du type “dessine un rectangle bleu”,… Cette communication entre l’Arduino et le RA8875 s’effectue par une liaison SPI qui sera détaillée plus loin dans la réalisation de ce projet.

Comment récupérer les informations du système sur la carte Arduino?
Pour cela on va utiliser une passerelle qui prendra la forme d’un programme en python qui s’exécutera en arrière plan et qui permettra de réaliser la liaison entre, d’une part, le logiciel CoreTemp (téléchargeable à l’adresse suivante: http://www.alcpu.com/CoreTemp/) qui permet de récupérer les données de votre système, et d’autre part, la carte Arduino avec laquelle on communiquera via le port série. L’intervalle de rafraîchissement maximum de CoreTemp est de 1 seconde ce qui permet d’acutaliser fréquemment les données de votre ordinateur.

Comment contrôler la vitesse des ventilateurs?
Pour cela, rien de plus simple, on utilise simplement les ports PWM de notre carte Arduino. Il faudra au préalable s’assurer que vos ventilateurs sont PWM, c’est-à-dire que leur vitesse de rotation peut-être contrôlée via des impulsions électriques. Pour cela, rien de plus simple, il vous suffit d’ouvrir votre boitier et de repérer la fiche de chaque ventilateur connecté sur votre carte mère. Si elle dispose de 4 pins, c’est bon ! Sinon, si ce sont des ventilateurs à 3 ou 2 pins, je suis désolé mais ils ne pourront pas être contrôlés. Mais cela n’empêchera pas d’avoir simplement un affichage des infos de votre ordinateur !! La commande des ventilateurs est optionnelle.

Bon je pense avoir éclairci pas mal de points maintenant passons à la réalisation !

 

Etape 3 : Configuration du PC

Commencez par télécharger et installer CoreTemp. Ouvrez le logiciel, dans le menu “Tools”, cochez “Loggin On” puis dans le menu “Options”, ouvrez la fenêtre “Settings” et dans l’onglet “General” cochez “enable logging on startup” et “Start Core Temp with Windows” de manière à ce qu’il se lance automatiquement au démarrage de votre OS. Dans l’onglet “Display”, cochez “Start Core Temp minimized”. Fermez en enregistrant les modifications. Maintenant, rendez-vous à l’emplacement où a été installé CoreTemp et cherchez le fichier “CoreTemp.ini”. Ouvrez le et à la ligne “LogInt=” indiquez un “1” à la place du chiffre déjà présent de manière à forcer la fréquence d’actualisation à 1 seconde. Enregistrez les modifications et redémarrez votre ordinateur. Rendez vous de nouveau dans le dossier d’installation. Vous devriez voir un fichier en .csv qui contient, lorsque vous l’ouvrez, pleins de chiffres semblable à celui présenté dans l’image ci-dessus.
Maintenant, il faut préparer l’environnement Python: téléchargez et installez Python 2.7.x si vous ne l’avez pas encore à l’adresse suivante : https://www.python.org/
Il nous faut également une librairie permettant la communication serial. Il s’agit de PySerial téléchargeable à l’adresse suivante : https://pypi.python.org/pypi/pyserial
Telechargez à présent le fichier “Rheobus.py” joint dans cette étape et ouvrez le pour le modifier. Vous avez deux choses à modifier, ne touchez pas au reste du script : Modifiez la variable “SERIAL_PORT” de manière à renseigner le port sur lequel est connecté votre carte Arduino au PC (visible depuis l’IDE Arduino) et la ligne listFile = glob.glob(“x”) en remplacant le x par le chemin d’accès absolu du répertoire dans lequel est installé CoreTemp. Enregistrez et fermez le fichier.
Pour vérifier que tout fonctionne bien, exécutez le programme python: vous devriez obtenir quelque chose qui ressemble à l’image 2 ci-dessus. Si vous rencontrez un problème, n’hésitez pas à le signaler dans les commentaires de manière à trouver une solution (notez que pour que le script fonctionne, votre carte Arduino doit être connecté au PC au port spécifié dans le script).

Etape 4 : Préparation de la carte Arduino

Pour cette étape, nous avons besoin des principaux éléments requis !
Commencez tout d’abord à relier votre afficheur graphique 40-pin au port 40-pin présent sur le RA8875. Pour cela, allez-y avec précaution car la nappe 40pin est assez fragile et difficile à faire rentrer. Pour ma part, je me suis aidé d’une pince de manière à attraper fermement la nappe et ainsi forcer légèrement sans pour autant la déformer. Veillez à ce qu’elle soit parfaitement reliée. En théorie, les deux éléments sont maintenant solidaires et il est déconseillé de les séparer.
Intéressons-nous maintenant aux branchements à réaliser entre la carte Arduino et le RA8875. Ils sont illustrés sur le schéma ci-dessus. Veillez simplement à relier le +5Vin du RA8875 non pas la borne +5V de l’Arduino mais directement à une prise interne de l’alimentation du PC telle qu’une prise pour périphériques internes 4-pin. ATTENTION !! Reliez le fil à un fil rouge de la prise et pas aux jaunes ! En effet, ces derniers débitent non pas du 5V mais du 12V autant dire que vous risquez de griller votre RA8875 instantanément ! Pour être sûr de vous, vérifiez avec un voltmètre en série qu’il s’agit bel et bien de 5V. Vous trouverez une illustration sur la photo 2.

OPTIONNEL:
Enfin, pour relier les ventilateurs, identifiez quel type de connecteur vous avez (en fonction des couleurs), repérables sur la photo 2 et reliez la sortie +12V et GND respectivement au fil jaune de la prise d’alimentation du PC et au fil noir. Enfin, reliez le dernier pin indiqué “PWM” a une des bornes libres PWM de votre carte Arduino. Le PIN Tach permet éventuellement de récupérer la vitesse de rotation du ventilateur. Il s’agit d’ailleurs d’un futur projet qui vous sera présenté lorsqu’il sera finalisé.

 

Etape 5 : Harmonisation de l’ensemble

Voici enfin la dernière étape ! Vous êtes prêt? Alors c’est parti!
Voici avant tout un petit check-up pour être sûr que tout est bien réalisé:
– Vous avez installé, configuré et lancé CoreTemp
– Vous avez préparé le script Python et modifié les 2 paramètres propres à votre système
– Vous avez relié la carte Arduino à votre PC via le port USB
– Vous avez correctement réalisé les branchements entre la carte Arduino et le RA8875
– Vous avez relié le RA8875 à votre écran TFT via le port 40pin
– Vous avez alimenté la carte Arduino et le RA8875 via les connexions de votre alimentation de PC
– Votre carte Arduino est reconnue dans l’IDE d’Arduino

Tout est validé? Eh bien il est temps de passer à l’Etape finale ! Pour que le script Arduino joint ci-dessous fonctionne, il faut au préalable installer la librairie suivante dans l’IDE d’Arduino: https://github.com/sumotoy/RA8875. Procédez à son installation de manière traditionnelle puis redémarrez l’IDE. Là, ouvrez le fichier joint “LCD_Rheobus_RA8875.ino” et téléversez-le directement dans votre carte Arduino. Vous pouvez par ailleurs, si vous vous en sentez capable, le modifier pour l’adapter à votre guise. Une fois le fichier téléversé, votre Arduino va redémarrer et devrait afficher l’écran que vous observez en image 1. Il ne vous reste plus qu’à lancer le script python et observer le résultat: Les informations de votre PC sont affichés en temps réel !! Il ne vous reste plus qu’à intégrer ce dispositif de manière élégante dans votre ordinateur. Pour ma part, j’ai intégré la carte Arduino dans une baie de disques durs comme vous pouvez l’observer sur la photo 3 😉

OPTIONNEL:
Notez que vous pouvez modifier les bornes de contrôle de ventilateurs dans le script tout en haut par rapport au nombre et aux branchements que vous avez réalisés. Le comportement de ces derniers en fonction de la température relevée peut être également modifié dans la fonction “updateVentilo()”.

UN PEU DE THÉORIE:
Comment s’effectue la récupération des données envoyés par le script python?
La carte Arduino lis en permanence le buffer du port serial. Dès qu’un message a été transmis elle décode caractère par caractère et les met bouts à bouts pour former le nombre. Un caractère autre qu’un chiffre est lu comme une commande (par exemple, le “a” signifie fin de la lecture du nombre correspondant à la puissance du CPU). Elle sait alors qu’elle doit le stocker dans la variable adéquate et recommence pour les autres chiffres. Le caractère “&” indique que c’est la fin du message et que l’arduino peut sortir de la boucle. Un petit exemple vaut milles paroles:
“20a4139b5c25&” indique:
– Puissance (W) = 20
– Vitesse (Mhz) = 4139
– Charge (%) = 5
– Température (°C) = 25
Vous constatez donc que la fréquence de rafraîchissement de l’écran est commandée indirectement par le script python qui envoie ses informations toutes les 1 secondes.

Comment est généré le graphique avec le dégradé?
La librairie RA8875 ne disposant pas de fonctions de dessin avancées, il faut réfléchir à l’envers et se demander comment on peut faire pour afficher un tel graphique. La réponse est simple: on trace d’abord la bande de dégradé intégralement puis on coupe avec un rectangle et un triangle noir (dont la pente de l’arrête correspond à la pente de la courbe) cette bande de façon à masquer la partie indésirable. Il suffit après d’y ajouter une ligne blanche correspond aux deux extrémités pour parfaire l’affichage. (vous pouvez voir ce processus dans la photo 4).

REMARQUE:
Vous pouvez sans doute remarquer que la police d’écriture utilisé pour le titre de l’écran et les informations affichés n’est pas la même et c’est tout à fait normal: celle du titre est statique et plus belle mais est, par conséquent, lente à afficher car de bien meilleure résolution. La police utilisé pour afficher les informations, amenés à changer toutes les 1 secondes, est la police par défaut accéléré graphiquement pour un affichage instantané : il n’y a donc pas apparition de phénomène de coupure lors du passage entre deux valeurs qui est, pour avoir testé, assez dérangeant visuellement. Nous observons ici une limite de la carte Arduino relativement lente à envoyer ses instructions via la liaison SPI au driver RA8875.

Etape 6 : FAQ

– Mon écran affiche des choses étranges ou/et est décalé:
Pas de panique ! Il s’agit simplement d’un problème de timing propre à chaque écran TFT. Pour le résoudre, munissez-vous de la référence de votre écran et cherchez son datasheet sur google. Une fois ouvert, identifiez les tableaux correspondants aux timings de votre écran, et relevez les valeurs. Rendez-vous ensuite dans le répertoire dans lequel a été installé la librairie RA8875 pour l’IDE Arduino et allez dans le dossier _settings. Là, ouvrez avec un éditeur RA8875Registers.h et repérez la ligne correspondant à votre écran de la variable initStrings (tout au début normalement). Là, convertissez les valeurs requises en hexadécimal et inscrivez les à la place de celles présentes par défaut. Par exemple, pour mon écran 800×480, j’ai du remplacer la ligne existante par la ligne de données suivante: {0x07,0x03,0x81,0x63,0x00,0x03,0x03,0x06,0xDF,0x01,0x22,0x00,0x08,0x00,0x03}

– Le programme python ne fonctionne pas:
Vérifiez que vous avez installé correctement la libraire PySerial, que le port série spécifié est le bon et que le répertoire où sont stockés les log de CoreTemp est bien renseigné

– Le taux de rafraîchissement est de 10 secondes:
Recommencez l’étape de la partie 2 de modification du fichier .ini et redémarrez votre ordinateur. Pensez à ne pas ré-ouvrir la fenêtre “Settings” du logiciel CoreTemp pour ne pas remettre à 10 cette valeur.

 

Etape 7 : Possibilitées

Votre dispositif fonctionne parfaitement? Ne vous réjouissez pas trop vite ! Il reste encore de nombreuses choses à réaliser ! Voici une liste non exhaustive :
– Intégrer l’affichage dans votre boitier de PC
– Fluidifier les mises a jour de l’écran (évolution linéaire pendant 1 seconde et non pas affichage brutal de la nouvelle valeur)
– Amélioration de l’affichage avec récupération de la vitesse de rotation des ventilateurs via le pin TACH
– Gestion d’un watercooling avec vitesse de la pompe (un de mes futurs projets d’ailleurs)
– Intégration d’une interface tactile (oui, cet écran a la possibilité d’être tactile) afin de modifier en temps réel certains réglages
– Gérer un éclairage dynamique de votre PC : par exemple quand la température devient élevé, allumer des LED rouges disposées préalablement dans votre boitier et/ou en façade

Comme vous le voyez, ce dispositif ne manque pas d’applications si vous avez un peu d’imagination !

Merci beaucoup d’avoir lu ce tutoriel en espérant vous avoir donné envie de réaliser votre propre rhéobus !

 

Sources :

https://www.adafruit.com/, https://github.com/sumotoy/RA8875, http://www.newhavendisplay.com/specs/NHD-5.0-800480TF-ATXL-T.pdf


Partager:

Recevez une fois par mois les meilleurs tutoriels Déco dans votre boîte mail


Ces tutoriels devraient vous plaire

Connecter un écran LCD en I2C
Redonnez vie à vos anciens ordinateurs avec Chrome OS
Un capteur de température/humidité en WIFI avec une page Web

Corentin Potron

Suivre


J'aime: 6

Découvrez d'autres tutoriels de

Corentin Potron

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers