Applications dans les Transports

Découvrez comment l'informatique embarquée révolutionne les transports : voitures connectées, trains automatiques, avions et systèmes de navigation GPS

Intermédiaire45 min200 XP

Une voiture moderne contient plus de 100 microcontrôleurs ! Du système de freinage ABS à l'écran tactile, en passant par l'airbag et le GPS, l'informatique embarquée est omniprésente dans nos moyens de transport.

Objectifs d'apprentissage

  • Comprendre le rôle des systèmes embarqués dans les véhicules modernes
  • Identifier les capteurs et actuateurs utilisés dans les transports
  • Analyser les systèmes d'aide à la conduite (ADAS)
  • Découvrir les principes du GPS et de la géolocalisation
  • Programmer un système de télémétrie basique

Erreurs courantes à éviter

  • Penser que le GPS calcule la position seul (il reçoit des signaux satellites)
  • Confondre radar de recul (ultrason) et radar de vitesse (ondes électromagnétiques)
  • Ignorer la latence critique dans les systèmes de freinage d'urgence
  • Sous-estimer la redondance nécessaire dans les systèmes critiques

Contenu du cours

Les voitures modernes sont de véritables ordinateurs sur roues. Elles intègrent de nombreux systèmes embarqués interconnectés. **Architecture électronique automobile :** | Système | Fonction | Capteurs utilisés | |---------|----------|-------------------| | **ECU Moteur** | Gestion injection, allumage | Sonde lambda, débitmètre | | **ABS/ESP** | Antiblocage, stabilité | Capteurs de vitesse roue | | **Airbag** | Protection collision | Accéléromètres | | **Climatisation** | Confort thermique | Sondes température | | **Navigation** | GPS, itinéraire | Module GNSS | **Le réseau CAN Bus :** Le CAN (Controller Area Network) est le "système nerveux" du véhicule. Tous les calculateurs communiquent entre eux via ce bus à haute vitesse (500 kbit/s à 1 Mbit/s). **Principe :** Chaque message a un identifiant unique et tous les calculateurs "écoutent" le bus en permanence.
Code Python - Simulation
# Simulation d'un réseau CAN simplifié
# Lecture de capteurs automobile

import time
import random

class CapteurVehicule:
    """Simule les capteurs d'un véhicule connecté"""

    def __init__(self):
        self.vitesse = 0  # km/h
        self.regime_moteur = 800  # tr/min (ralenti)
        self.temperature_moteur = 20  # °C
        self.niveau_carburant = 100  # %
        self.distance_obstacle = 999  # cm

    def simuler_conduite(self, acceleration):
        """Simule une accélération/décélération"""
        self.vitesse += acceleration
        self.vitesse = max(0, min(130, self.vitesse))

        # Le régime moteur suit la vitesse
        self.regime_moteur = 800 + (self.vitesse * 50)

        # La température augmente avec le régime
        if self.regime_moteur > 3000:
            self.temperature_moteur = min(95, self.temperature_moteur + 0.5)
        else:
            self.temperature_moteur = max(80, self.temperature_moteur - 0.1)

        # Consommation de carburant
        consommation = 0.001 * self.vitesse
        self.niveau_carburant = max(0, self.niveau_carburant - consommation)

    def lire_radar_recul(self):
        """Simule un capteur ultrason de recul"""
        # Obstacle aléatoire entre 20cm et 200cm
        self.distance_obstacle = random.randint(20, 200)
        return self.distance_obstacle

    def generer_trame_can(self, id_capteur):
        """Génère une trame CAN simplifiée"""
        trames = {
            0x100: f"VITESSE:{self.vitesse}km/h",
            0x101: f"REGIME:{self.regime_moteur}tr/min",
            0x102: f"TEMP:{self.temperature_moteur}°C",
            0x103: f"CARBURANT:{self.niveau_carburant:.1f}%",
            0x200: f"OBSTACLE:{self.distance_obstacle}cm"
        }
        return trames.get(id_capteur, "INCONNU")

    def afficher_tableau_bord(self):
        """Affiche un tableau de bord textuel"""
        print("╔════════════════════════════════════╗")
        print("║      TABLEAU DE BORD VÉHICULE      ║")
        print("╠════════════════════════════════════╣")
        print(f"║  Vitesse:      {self.vitesse:>6} km/h        ║")
        print(f"║  Régime:       {self.regime_moteur:>6} tr/min     ║")
        print(f"║  Température:  {self.temperature_moteur:>6.1f} °C         ║")
        print(f"║  Carburant:    {self.niveau_carburant:>6.1f} %          ║")
        print("╚════════════════════════════════════╝")

# Simulation
vehicule = CapteurVehicule()

print("=== DÉMARRAGE DU VÉHICULE ===\n")
vehicule.afficher_tableau_bord()

print("\n--- Accélération progressive ---")
for i in range(5):
    vehicule.simuler_conduite(acceleration=20)
    print(f"Trame CAN 0x100: {vehicule.generer_trame_can(0x100)}")

print("\n--- Après accélération ---")
vehicule.afficher_tableau_bord()

print("\n--- Radar de recul activé ---")
for i in range(3):
    distance = vehicule.lire_radar_recul()
    alerte = "⚠️ ATTENTION!" if distance < 50 else "✓ OK"
    print(f"Distance obstacle: {distance} cm - {alerte}")

Quiz de validation

1. Quel bus de communication est le "système nerveux" des véhicules modernes ?

2. Quelle est la fonction du système AEB dans une voiture ?

3. Combien de satellites GPS sont nécessaires au minimum pour calculer une position ?

4. Que signifie GoA4 pour un métro automatique ?

5. Pourquoi les systèmes critiques des avions sont-ils triplés ou quadruplés ?

Pixel