Skip to content

Débloquer la créativité avec Python et Arduino : un guide complet

Updated on

Python et Arduino, lorsqu'ils sont réunis, créent une puissance pour concevoir et contrôler des projets électroniques. Que vous soyez un amateur, un bricoleur prometteur ou un développeur expérimenté, comprendre comment ces deux éléments se combinent peut ouvrir de nouvelles perspectives pour vos projets. Cet article est un guide complet qui vise à vous aider à exploiter votre créativité en utilisant Python et Arduino.

Vous souhaitez créer rapidement une visualisation des données à partir d'un dataframe Python Pandas sans écrire de code ?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire des données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux de travail d'analyse et de visualisation des données dans Jupyter Notebook en transformant vos dataframes pandas (et polars) en une interface utilisateur de type Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation des données (opens in a new tab)

La convergence d'Arduino et de Python

Arduino et Python sont comme les deux faces d'une même pièce de monnaie. Alors qu'Arduino excelle dans le domaine du matériel, Python s'est imposé comme un langage de programmation facile à apprendre et polyvalent.

Arduino, un acteur clé du mouvement des fabricants, permet la création de projets matériels interactifs. Son matériel contient des circuits de base, qui comprennent des entrées et sorties analogiques et numériques. Python, d'autre part, est un langage de programmation de haut niveau et polyvalent. Il est connu pour sa lisibilité et sa polyvalence. Cette combinaison apporte le meilleur des deux mondes à la table : le contrôle matériel d'Arduino et la facilité de Python.

Pour débloquer le véritable potentiel de Python et d'Arduino, nous devons comprendre le protocole Firmata. Firmata est un protocole permettant de communiquer avec des microcontrôleurs depuis un logiciel sur un ordinateur. Ce protocole joue un rôle crucial lorsqu'il s'agit de contrôler les capteurs et les interrupteurs d'Arduino via Python.

Le protocole Firmata : le pont entre Python et Arduino

Le protocole Firmata est le héros méconnu qui permet au matériel Arduino d'interagir de manière transparente avec Python. Ce protocole générique permet de communiquer avec des microcontrôleurs à partir de n'importe quel ordinateur sans avoir besoin de charger un code spécial sur l'Arduino.

Dans notre contexte, nous utilisons Firmata pour écrire des données dans les entrées et sorties analogiques et numériques de l'Arduino, et pour en lire les données. Ainsi, vous pouvez contrôler des capteurs, des interrupteurs et divers autres composants matériels avec Python. Regardons un exemple simple :

from pyfirmata import Arduino, util
 
board = Arduino('COM3')
 
it = util.Iterator(board)
it.start()
 
analog_0 = board.get_pin('a:0:i') # a = analogique, 0 = numéro de la broche, i = entrée
analog_0.enable_reporting()
 
while True:
    reading = analog_0.read()
    if reading is not None:
        print(reading)

Dans ce script, nous lisons à partir d'une broche analogique (a:0:i). Nous utilisons pyfirmata, une bibliothèque Python, pour communiquer avec Arduino. Vous aurez besoin de l'IDE Arduino installé et de votre carte connectée pour exécuter cela.

Comprendre les circuits de base dans Arduino

Une partie fondamentale de tout projet Arduino est de comprendre les circuits de base. Les circuits utilisent divers composants, dont des résistances, des condensateurs, des LED et des capteurs, pour effectuer des tâches. Les broches d'Arduino contrôlent ces composants.

Explorons un circuit simple qui utilise une LED et un bouton poussoir. Lorsque le bouton poussoir est enfoncé, la LED s'allume. Voici le code Arduino correspondant :

const int buttonPin = 2;
const int ledPin = 13;

int buttonState = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

Et voici le code Python équivalent :

from pyfirmata import Arduino, util
 
board = Arduino('COM3')
button_pin = board.get_pin('d:2:i')
led_pin = board.get_pin('d:13:o')
 
it = util.Iterator(board)
it.start()
button_pin.enable_reporting()
 
while True:
    if button_pin.read() is True:
        led_pin.write(1)
    else:
        led_pin.write(0)

Comprendre le fonctionnement des circuits dans le matériel Arduino est essentiel pour concevoir des projets de manière efficace. Cela vous donne le pouvoir d'explorer de nouvelles idées et de les concrétiser. La prochaine section vous guidera dans le processus de configuration de votre environnement Arduino pour la programmation Python.

Configuration de l'IDE Arduino pour la programmation Python

Pour commencer avec Python et Arduino, nous devons d'abord installer l'IDE Arduino. L'IDE Arduino est la plateforme logicielle utilisée pour écrire et télécharger du code sur les cartes Arduino. Bien qu'il soit généralement utilisé avec C++, nous pouvons l'utiliser avec Python en utilisant le protocole Firmata.

Après avoir téléchargé et installé l'IDE Arduino depuis le site officiel Arduino, téléchargez le protocole Firmata sur votre carte Arduino. Pour cela, ouvrez l'IDE, allez dans Fichier > Exemples > Firmata > StandardFirmata, puis téléchargez le croquis sur votre carte Arduino.

Maintenant que notre Arduino est prêt à communiquer avec Python, nous devons configurer notre environnement Python. Pour l'interaction Python et Arduino, nous utiliserons la bibliothèque 'pyfirmata', qui peut être installée avec la commande suivante :

pip install pyfirmata

Félicitations, votre carte Arduino est maintenant prête à recevoir des commandes de Python !

Création de votre premier projet Python et Arduino

Vous avez appris les bases des circuits, compris le protocole Firmata, installé l'IDE Arduino et téléchargé le Firmata sur votre Arduino. Maintenant, il est temps de créer votre premier projet Arduino contrôlé par Python !

Les possibilités sont infinies avec Python et Arduino. Vous pouvez construire un ventilateur contrôlé par la température, un système d'arrosage automatique pour vos plantes, un robot, voire même un système de sécurité domestique.

Commençons par un projet simple - un script Python qui allume une LED lorsque certaines conditions sont remplies.

Imaginez que vous vouliez allumer une LED connectée chaque fois que la température dépasse un certain seuil. En utilisant Python, Arduino, un capteur de température et une LED, ce projet devient un jeu d'enfant. Voici le code Python pour y parvenir :

from pyfirmata import Arduino, util
import time
 
board = Arduino('COM3')
 
it = util.Iterator(board)
it.start()
 
temp_sensor = board.get_pin('a:0:i')
led_pin = board.get_pin('d:13:o')
 
temp_sensor.enable_reporting()
 
while True:
    temp = temp_sensor.read()
    if temp is not None and temp > 30:   # si la température dépasse 30
        led_pin.write(1)   # allumer la LED
    else:
        led_pin.write(0)   # éteindre la LED
    time.sleep(1)

Foire aux questions

Q1: Puis-je utiliser Python pour des projets Arduino ?

Oui, absolument ! Python, combiné à Arduino, peut être un outil puissant pour construire et contrôler des projets matériels. Il offre une alternative à la programmation Arduino traditionnelle en C++ et vous permet de profiter de la simplicité et de la polyvalence de Python.

Q2: Quel est le rôle du protocole Firmata dans les projets Python et Arduino ?

Le protocole Firmata est essentiellement un pont entre le matériel Arduino et Python. Il permet à la carte Arduino de communiquer avec Python, vous permettant de contrôler et de lire les entrées et sorties de la carte à l'aide de scripts Python.

Q3: Python peut-il remplacer l'IDE Arduino ?

Non, Python ne peut pas remplacer l'IDE Arduino. L'IDE Arduino est nécessaire pour télécharger le protocole Firmata sur la carte Arduino, ce qui permet à Python d'interagir avec Arduino. Cependant, une fois le protocole Firmata téléchargé, vous pouvez écrire des scripts Python pour contrôler le matériel Arduino.