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 ?
