Projet permettant de lire le signal PWM du ventilateur d'une PS5 avec un ESP32-C3 équipé d'un écran OLED I2C 72×40 (ESP32-EGG). Il suffit d'alimenter le boîtier en USB, puis de relier l'entrée PWM (GPIO2) au connecteur PWM du ventilateur de la PS5 (fil gris sur ventilateur 3 broches).
Testé uniquement sur un ventilateur PS5 à 3 broches.
Après plusieurs relevés, j'ai constaté que la PS5 fonctionne avec une ventilation d'environ 10 % dans les menus et 19 % en jeu (PS4 ou PS5).
On peut donc en déduire que :
- entre 10 % et 19 %, la console ventile davantage que la normale dans les menus ;
- au-delà de 19 %, elle ventile davantage que la normale en jeu.
Cette observation m'a permis de concevoir un affichage basé sur des smileys afin de visualiser rapidement l'état de la ventilation. La LED intégrée de l'ESP clignote également de plus en plus rapidement à mesure que la vitesse du ventilateur dépasse les valeurs normalement observées.
La ventilation de la PS5 étant particulièrement silencieuse, ce retour visuel permet de détecter immédiatement un fonctionnement anormal.
Un grand merci à Mémoire Morte pour son aide.
- Mesurer le duty cycle PWM sur une entree GPIO.
- Calculer la frequence du signal.
- Filtrer les mesures pour garder un affichage stable.
- Afficher la valeur actuelle, le maximum observe et un historique sur OLED.
- Changer de vue avec le bouton de la carte.
- Retenir la derniere vue affichee apres extinction.
- Afficher un message si le PWM n'est pas detecte.
- Eviter les ralentissements hors PC en desactivant le debug serie par defaut.
| Fonction | GPIO |
|---|---|
| Entree PWM | GPIO 2 |
| OLED SDA | GPIO 5 |
| OLED SCL | GPIO 6 |
| Bouton | GPIO 9 |
Ces valeurs sont dans src/config.h.
Le bouton est configure en INPUT_PULLUP, donc il doit relier GPIO 9 a GND quand il est appuye. Sur beaucoup d'ESP32-C3, cela correspond au bouton BOOT.
- Installer le support de carte
esp32par Espressif. - Installer les bibliotheques:
U8g2
- Ouvrir
firmware/ps5_fan_pwm_reader/ps5_fan_pwm_reader.ino. - Selectionner une carte ESP32-C3 compatible.
- Compiler et televerser.
Le projet est volontairement prevu pour Arduino IDE, sans PlatformIO:
firmware/
ps5_fan_pwm_reader/
ps5_fan_pwm_reader.ino
src/
config.h
pwm_sampler.h
pwm_sampler.cpp
- Ne connecte jamais un signal 5 V directement sur une entree ESP32-C3.
- Les seuils
11,17et19sont appliques a la valeur PWM filtree. Ils sont modifiables danssrc/config.h. - La derniere page est sauvegardee dans la memoire NVS de l'ESP32 au moment de l'appui bouton. Elle est restauree au redemarrage.
- Si aucun signal PWM valide n'est vu pendant
SIGNAL_LOST_MS, l'ecran affichePWM ABSENT. - Un appui sur le bouton pendant l'ecran de demarrage passe directement a l'affichage principal.
SERIAL_DEBUG_ENABLEDest afalsepar defaut pour eviter que l'ecriture serie ralentisse l'ESP32 quand il est alimente par la console sans moniteur serie.
Chaque appui sur le bouton passe a la vue suivante:
- PWM actuel en grand.
- Etat
IDLE/GAMEavec smiley selon la vitesse du venntilateur. - Vue historique avec PWM actuel, max et courbe zoomee.
- PWM actuel, PWM max et frequence.
Boitier imprimé en 3D : https://makerworld.com/fr/models/2264801-esp32-c3-0-42-oled-case
ESP32 C3 OLED : Amazon / AliExpress
Service d'impression 3D : JLC3DP
🎮 Console Repair • 🛠️ Hardware Modding • 💻 Electronics • 📺 Live Streams
⭐ If you like this project, don't forget to leave a star!






