🔬 DIY : Système de Projection Smartphone avec ESP32 - Optique et Électronique (Guide Complet)

⚠️ NOTE TECHNIQUE : Contrairement aux "amplificateurs d'écran" commerciaux (qui ne sont que des lentilles de Fresnel en plastique), ce guide vous apprend à construire un système de projection actif et intelligent basé sur un ESP32, combinant optique géométrique et contrôle électronique pour une expérience immersive.
Système DIY de projection smartphone avec ESP32, lentille de Fresnel et contrôle de luminosité automatique
Figure 1 : Concept d'un projecteur DIY avec lentille de Fresnel et ESP32 pour contrôle intelligent.

Les "amplificateurs d'écran" vendus dans le commerce ne sont en réalité que de simples lentilles de Fresnel qui agrandissent l'image de votre smartphone par réfraction. En tant que makers, nous pouvons faire bien mieux : créer un système de projection qui combine l'optique, l'électronique et la programmation pour transformer votre téléphone en véritable projecteur intelligent.

1. 🔍 La Science Derrière l'Agrandissement d'Écran

Principe Optique Fondamental :

Un amplificateur d'écran fonctionne sur le principe de la lentille convergente. La lentille de Fresnel (une lentille plate à gradins) capture la lumière émise par l'écran du smartphone et la projette sur un mur ou un écran.

Formule des lentilles minces :

1/f = 1/p + 1/p'

où :
- f = distance focale de la lentille
- p = distance objet-lentille (smartphone)
- p' = distance lentille-image (mur)
- Grandissement G = p'/p
        

2. 📦 Projet 1 : Amplificateur Passif (Lentille de Fresnel)

Liste des Composants :

  • Lentille de Fresnel : Format A4, distance focale ~200-300mm (~5-8€)
  • Boîtier en carton ou bois : Pour maintenir la lentille et le smartphone
  • Tissu noir : Pour éliminer les réflexions internes
  • Support smartphone : Pour positionner précisément le téléphone

🔧 Guide de Construction :

  1. Calculer la distance optimale : Placez la lentille à une distance égale à sa focale (f) de l'écran du smartphone.
  2. Inverser l'image : L'image projetée sera inversée (haut/bas et gauche/droite). Activez l'option "Rotation 180°" dans les paramètres d'accessibilité de votre smartphone.
  3. Obscurité requise : La lentille de Fresnel ne concentre pas beaucoup de lumière. Utilisez le projecteur dans une pièce sombre pour un résultat optimal.
  4. Luminosité maximale : Réglez la luminosité du smartphone à 100%.

3. 🚀 Projet 2 : Système de Projection Intelligent avec ESP32

Pour aller au-delà du simple agrandissement optique, construisons un système de projection actif qui contrôle automatiquement l'environnement et optimise l'expérience visuelle.

Matériel Requis :

  • ESP32 DevKit : Microcontrôleur WiFi/Bluetooth (~5€)
  • Capteur de luminosité : BH1750 (I2C) pour mesurer l'ambiance (~2€)
  • Capteur de distance : HC-SR04 (ultrason) pour ajuster la mise au point (~2€)
  • Servo-moteur SG90 : Pour ajuster automatiquement la position de la lentille (~3€)
  • LED RGB WS2812B : Pour l'éclairage d'ambiance ambilight (~4€)
  • Lentille de Fresnel : Montée sur bras mobile

Coût total : ~16-20€ (vs 50-100€ pour un projecteur commercial basique)

Schéma de câblage ESP32 avec capteur BH1750, servo-moteur et LED RGB pour projecteur intelligent
Figure 2 : Schéma de câblage du système de projection intelligent.

🔌 Schéma de Câblage :
Schéma de câblage ESP32 avec capteur BH1750, servo-moteur et LED RGB pour projecteur intelligent

ESP32                    Composants
──────                   ──────────
GPIO 21 (SDA)  ──────→  BH1750 (SDA)
GPIO 22 (SCL)  ──────→  BH1750 (SCL)
GPIO 5         ──────→  HC-SR04 (Trig)
GPIO 18        ──────→  HC-SR04 (Echo)
GPIO 13        ──────→  Servo SG90 (Signal)
GPIO 4         ──────→  WS2812B (Data)
3.3V           ──────→  BH1750 (VCC)
5V             ──────→  Servo, WS2812B (VCC)
GND            ──────→  Tous les GND
    

💻 Code Arduino pour ESP32 :

/* * Système de Projection Smartphone Intelligent * TechFix Hub - Optique + Électronique DIY * Contrôle automatique de la mise au point et de l'ambiance */ #include #include #include #include // Définition des broches #define TRIG_PIN 5 #define ECHO_PIN 18 #define SERVO_PIN 13 #define LED_PIN 4 #define NUM_LEDS 30 // Objets BH1750 lightMeter; Servo focusServo; CRGB leds[NUM_LEDS]; // Variables int currentFocus = 90; // Position servo (0-180) float targetDistance = 250.0; // Distance focale en mm void setup() { Serial.begin(115200); // Initialisation capteur de lumière Wire.begin(); lightMeter.begin(); // Initialisation capteur ultrason pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); // Initialisation servo focusServo.attach(SERVO_PIN); focusServo.write(90); // Position neutre // Initialisation LEDs FastLED.addLeds(leds, NUM_LEDS); Serial.println("Système de projection intelligent démarré"); delay(2000); } void loop() { // 1. Mesurer la luminosité ambiante float lux = lightMeter.readLightLevel(); Serial.print("Luminosité: "); Serial.print(lux); Serial.println(" lux"); // 2. Mesurer la distance au mur float distance = measureDistance(); Serial.print("Distance au mur: "); Serial.print(distance); Serial.println(" cm"); // 3. Ajuster automatiquement la mise au point adjustFocus(distance); // 4. Ajuster l'éclairage d'ambiance adjustAmbientLight(lux); delay(1000); // Mise à jour chaque seconde } float measureDistance() { // Envoyer une impulsion ultrasonique digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // Mesurer le temps de retour long duration = pulseIn(ECHO_PIN, HIGH); // Calculer la distance (cm) float distance = duration * 0.034 / 2; return distance; } void adjustFocus(float distance) { // Calculer la position optimale du servo pour la mise au point // Plus le mur est loin, plus la lentille doit être proche du smartphone int targetPosition = map((int)distance, 100, 500, 60, 120); targetPosition = constrain(targetPosition, 30, 150); if (abs(targetPosition - currentFocus) > 5) { focusServo.write(targetPosition); currentFocus = targetPosition; Serial.print("Mise au point ajustée: "); Serial.println(targetPosition); } } void adjustAmbientLight(float lux) { // Créer un effet ambilight basé sur la luminosité ambiante if (lux < 10) { // Pièce très sombre : LEDs bleues faibles fill_solid(leds, NUM_LEDS, CRGB(0, 0, 50)); } else if (lux < 50) { // Pénombre : LEDs violettes fill_solid(leds, NUM_LEDS, CRGB(30, 0, 50)); } else { // Lumière normale : LEDs éteintes fill_solid(leds, NUM_LEDS, CRGB(0, 0, 0)); } FastLED.show(); }

4. 🌐 Méthodes de Projection Numérique (Sans Lentille)

Pour une qualité d'image supérieure, utilisez les technologies de screen mirroring :

A. Projection Filaire (HDMI/USB-C)

  • Adaptateur USB-C vers HDMI : Pour les smartphones modernes (Samsung, Xiaomi)
  • Adaptateur Lightning vers HDMI : Pour iPhone
  • Avantage : Qualité Full HD, latence minimale

B. Projection Sans Fil (WiFi/Bluetooth)

  • Miracast : Standard Android natif
  • AirPlay : Pour appareils Apple
  • Chromecast : Solution Google universelle

C. Solution DIY avec ESP32-CAM

Pour les makers avancés, utilisez un ESP32-CAM comme récepteur vidéo et affichez le flux sur un petit écran LCD TFT :

  • Capturez l'écran du smartphone via une app de streaming
  • Transmettez via WiFi local
  • Affichez sur un écran ILI9341 connecté à l'ESP32

5. ⚠️ Santé et Utilisation Prolongée

Précautions à Prendre :

  • Fatigue oculaire : Limitez les sessions à 20-30 minutes. Suivez la règle 20-20-20 (toutes les 20 minutes, regardez à 20 pieds pendant 20 secondes).
  • Lumière bleue : Activez le mode "Filtre lumière bleue" ou "Night Shift" sur votre smartphone.
  • Distance de visionnage : Pour un écran de 6 pouces projeté à 2 mètres, asseyez-vous à au moins 1,5 mètre.
  • Éclairage ambiant : Ne regardez jamais un écran dans l'obscurité totale. Maintenez un éclairage d'ambiance faible.

6. 🛠️ Améliorations Possibles

  • Contrôle vocal : Ajoutez un microphone INMP441 pour commander le système par la voix
  • Intégration domotique : Connectez l'ESP32 à Home Assistant pour automatiser l'éclairage de la pièce
  • Mode cinéma : Programmez des scénarios (extinction des lumières, fermeture des volets) via MQTT
  • Suivi de mouvement : Utilisez un capteur PIR pour allumer/éteindre automatiquement le système

7. Conclusion

Construire un système de projection DIY est bien plus qu'un simple agrandissement d'écran : c'est une opportunité d'apprendre l'optique géométrique, la programmation embarquée et l'automatisation. Que vous choisissiez la lentille de Fresnel passive ou le système intelligent avec ESP32, vous maîtriserez des concepts fondamentaux de l'électronique et de la physique.

Prochaine étape : Explorez nos autres projets IoT pour intégrer votre projecteur dans un écosystème domotique complet !

Bottom Ad [Post Page]