Tutoriel Arduino Python avec exemples
Arduino est une plateforme de prototypage électronique open-source basée sur du matériel et des logiciels flexibles et faciles à utiliser. Il est largement utilisé par les amateurs, les étudiants et les professionnels pour créer des projets interactifs et des prototypes dans divers domaines tels que l’automatisation domestique, la robotique, l’IoT (Internet des objets), et bien d’autres.
Dans ce tutoriel, nous allons explorer comment utiliser Arduino avec Python, un langage de programmation populaire, pour créer des projets interactifs et contrôler des périphériques électroniques.
Prérequis
Avant de commencer, assurez-vous d’avoir les éléments suivants :
- Une carte Arduino (comme Arduino Uno, Arduino Nano, etc.).
- Le logiciel Arduino IDE installé sur votre ordinateur.
- Python installé sur votre ordinateur.
- Un câble USB pour connecter la carte Arduino à votre ordinateur.
Étapes du tutoriel
1. Installation de la bibliothèque pySerial
La bibliothèque pySerial permet à Python de communiquer avec des périphériques série comme l’Arduino. Vous pouvez l’installer en utilisant pip, le gestionnaire de paquets de Python, avec la commande suivante dans votre terminal ou votre invite de commande :
pip install pyserial
2. Téléversement du programme de communication sur l’Arduino
Pour permettre à l’Arduino de communiquer avec Python, vous devez téléverser un programme sur votre carte Arduino. Voici un exemple de programme simple :
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
char data = Serial.read();
Serial.println(data);
}
}
Ce programme lit les données envoyées par Python sur le port série et les renvoie.
3. Écriture du script Python
Maintenant, vous pouvez écrire un script Python pour envoyer des données à l’Arduino et lire les réponses. Voici un exemple de script Python :
import serial
import time
# Définir le port série (changez-le selon votre configuration)
port = '/dev/ttyUSB0'
# Initialiser la communication série avec Arduino
arduino = serial.Serial(port, 9600, timeout=1)
time.sleep(2) # Attendez que la connexion soit établie
# Envoyer des données à l'Arduino
arduino.write(b'Hello from Python!')
# Lire la réponse de l'Arduino
response = arduino.readline().decode('utf-8')
print("Réponse de l'Arduino :", response)
# Fermer la connexion
arduino.close()
Assurez-vous de modifier le port série en fonction de votre système d’exploitation (par exemple, /dev/ttyUSB0
sous Linux, COM3
sous Windows, etc.).
4. Exécuter le script Python
Enfin, exécutez le script Python. Assurez-vous que votre carte Arduino est connectée à votre ordinateur via le câble USB. Vous devriez voir la réponse de l’Arduino imprimée dans votre terminal ou votre invite de commande.
Exemples supplémentaires
Voici quelques exemples supplémentaires pour étendre vos projets Arduino Python :
- Contrôler un LED : Utilisez Python pour envoyer des commandes à l’Arduino pour allumer ou éteindre une LED.
- Capteurs et acquisition de données : Lisez les données des capteurs connectés à votre Arduino et utilisez Python pour les traiter ou les visualiser.
- Contrôle de moteurs : Utilisez Python pour contrôler la vitesse et la direction des moteurs connectés à votre Arduino.
Voici quelques exemples de manipulation et de prise en main de l’Arduino avec Python, accompagnés de leur code correspondant :
Exemple 1 : Contrôler une LED avec Python
Dans cet exemple, nous allons contrôler une LED connectée à un pin de l’Arduino en utilisant Python.
Schéma de câblage :
- Connectez une LED avec une résistance de 220 ohms en série au pin 13 de l’Arduino.
Code Arduino :
int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
char command = Serial.read();
if (command == '1') {
digitalWrite(ledPin, HIGH);
Serial.println("LED allumée");
} else if (command == '0') {
digitalWrite(ledPin, LOW);
Serial.println("LED éteinte");
}
}
}
Code Python :
import serial
import time
# Définir le port série
port = '/dev/ttyUSB0'
# Initialiser la communication série avec Arduino
arduino = serial.Serial(port, 9600, timeout=1)
time.sleep(2)
# Allumer la LED
arduino.write(b'1')
time.sleep(1)
# Éteindre la LED
arduino.write(b'0')
time.sleep(1)
# Fermer la connexion
arduino.close()
Exemple 2 : Lire les données d’un capteur avec Python
Dans cet exemple, nous allons lire les données d’un capteur analogique (par exemple, un potentiomètre) connecté à l’Arduino et les afficher en utilisant Python.
- Connectez un potentiomètre entre 5V et GND de l’Arduino, et connectez la patte du milieu à l’entrée analogique A0 de l’Arduino.
Schéma de câblage :
Code Arduino :
int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(1000);
}
Code Python :
import serial
import time
# Définir le port série
port = '/dev/ttyUSB0'
# Initialiser la communication série avec Arduino
arduino = serial.Serial(port, 9600, timeout=1)
time.sleep(2)
# Lire et afficher les données du capteur 5 fois
for _ in range(5):
data = arduino.readline().strip().decode('utf-8')
print("Valeur du capteur :", data)
time.sleep(1)
# Fermer la connexion
arduino.close()
Ces exemples devraient vous donner un bon point de départ pour manipuler Arduino avec Python.
Voici quelques cas particuliers d’utilisation d’Arduino avec Python :
Cas Particulier 1 : Contrôle de Servomoteurs
Les servomoteurs sont des actionneurs largement utilisés dans les projets d’automatisation, de robotique et de modélisme. Ils sont idéaux pour contrôler des mécanismes comme des bras robotiques, des portes automatiques, etc.
Schéma de câblage :
- Connectez le signal du servomoteur à un pin PWM de l’Arduino (par exemple, pin 9).
Code Arduino :
#include <Servo.h>
Servo myServo;
void setup() {
myServo.attach(9);
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
int angle = Serial.parseInt();
myServo.write(angle);
}
}
Code Python :
import serial
import time
# Définir le port série
port = '/dev/ttyUSB0'
# Initialiser la communication série avec Arduino
arduino = serial.Serial(port, 9600, timeout=1)
time.sleep(2)
# Contrôler le servomoteur
for angle in range(0, 180, 10):
arduino.write(str(angle).encode())
time.sleep(1)
# Fermer la connexion
arduino.close()
Cas Particulier 2 : Surveillance à Distance avec un Capteur de Mouvement
Dans ce cas particulier, nous allons utiliser un capteur de mouvement connecté à l’Arduino pour détecter les mouvements, puis envoyer une alerte à un ordinateur distant via Python.
Schéma de câblage :
- Connectez le capteur de mouvement au pin digital 2 de l’Arduino.
Code Arduino :
int motionSensorPin = 2;
void setup() {
pinMode(motionSensorPin, INPUT);
Serial.begin(9600);
}
void loop() {
int motionDetected = digitalRead(motionSensorPin);
if (motionDetected == HIGH) {
Serial.println("Mouvement détecté !");
delay(1000); // Délai pour éviter les alertes répétées
}
}
Code Python :
import serial
import time
# Définir le port série
port = '/dev/ttyUSB0'
# Initialiser la communication série avec Arduino
arduino = serial.Serial(port, 9600, timeout=1)
time.sleep(2)
# Surveillance de mouvement
while True:
data = arduino.readline().strip().decode('utf-8')
if data == "Mouvement détecté !":
print("Alerte: Mouvement détecté !")
time.sleep(1)
# Fermer la connexion
arduino.close()
Ces cas particuliers illustrent la flexibilité d’Arduino combinée avec la puissance de Python pour créer des applications variées et utiles. Vous pouvez les personnaliser davantage pour répondre à des besoins spécifiques dans vos projets.
Conclusion
Dans ce tutoriel, nous avons exploré comment utiliser Arduino avec Python pour créer des projets interactifs. En combinant la flexibilité d’Arduino pour contrôler des périphériques électroniques avec la puissance de Python pour le traitement des données, vous pouvez créer une grande variété de projets intéressants. Amusez-vous à explorer et à expérimenter avec cette combinaison puissante de technologies !