Programmer en Python pour la carte Arduino

Remarque : Pour les différentes installations, vous aurez besoin d’une connexion internet et des fichiers zip Nanpy_Arduino.zip et Nanpy_Python.zip

Installation d’ARDUINO

Installer Arduino (Windows)

Installer Arduino en téléchargeant la version adaptée (Windows, Mac, Linux,..) sur ce lien :

https://www.arduino.cc/en/Main/Software

Cliquer sur « I Agree » Cliquer sur « Next » Cliquer sur « Install »

Installer la librairie d’exemple Nanpy pour permettre d’utiliser la carte Arduino avec le langage Python

Ouvrir le logiciel Arduino

Dans l’application Arduino, à partir du menu [Croquis][Inclure une librairie][Ajouter la librairie .ZIP], installer la librairie « Nanpy_Arduino.zip »

Nanpy_Arduino.zip

Pour utiliser Nanpy :

Depuis le menu [Fichier][Exemples], ouvrir l’exemple  » Nanpy »

Vérifier que le type de carte choisi est bien « Arduino/Genuino Uno » depuis le menu [Outils][Type de carte]

Sélectionner le port de communication de la carte Arduino, depuis le menu [Outils][Port] (La carte doit être connectée). Bien noter ce numéro de port qui sera utile pour programmer en Python

Téléverser la librairie  » Nanpy » dans la carte Arduino, depuis le menu [Croquis][Téléverser]

Installation de Python et Pyzo


L’installation de Python se fait en plusieurs étapes :

  • Installation de l’environnement Python
  • Installation du logiciel Pyzo (adapté à la programmation scientifique) et configuration du shell (interpréteur)
  • Installation des bibliothèques dans Pyzo (pour calculs, tracés de courbes, communication avec la carte Arduino,…)

Installer l’environnement Python

Installer Python en téléchargeant la bonne version (Windows 32 bits, Windows 64 bits, Mac, Linux,..) sur ce lien : 

https://www.python.org/downloads/


Choisir « Customize installation  » puis cocher la case « All Users » dans « Advanced Options ».

Installer Pyzo

Installer Pyzo en téléchargeant la bonne version (Windows 32 bits, Windows 64 bits, Mac, Linux,..) sur ce lien : 

https://pyzo.org/start.html

Configuration du shell (ou interpréteur)

Ouvrir Pyzo
Dans la partie droite, l’éditeur signale si un environnement python a été détecté (dans ce cas cliquer sur « detect » pour valider le choix).


Sinon il faut aller dans le menu Shell > Edit shell configurations, une fenêtre s’ouvre et il faut renseigner la ligne exe avec le bon chemin parmi les choix proposés (Python 3.7).

Pour choisir la langue française : menu Settings > Select language Redémarrer Pyzo pour que les changements prennent effet.d. Installation des bibliothèques

Ouvrir Pyzo
Dans le shell (qu’on peut faire glisser en haut par commodité), écrire une à une les commandes suivantes et valider à chaque fois (Attention : il faut être connecté à Internet)

  • pip install numpy
  • pip install matplotlib
  • pip install scipy

!!! Pour nanpy !!! : pip install D:\Nanpy_Python.zip

Indiquer chemin du fichier, ici sur la racine d’une clé USB sur le D :

Ce fichier zip est disponible ci dessous :

Nanpy_Python.zip

numpy et scipy sont des bibliothèques pour des calculs scientifiques
matplotlib contient les fonctions pour tracer des graphiques (avec le module pyplot) 

nanpy permet la communication avec la carte Arduino

Comment programmer en Python avec la carte Arduino

Rappel : La librairie Nanpy.zip doit être téléversée au préalable dans Arduino (voir ci- dessus)

Ouvrir Pyzo
Dans l’éditeur de script pour l’écriture du code, il faudra d’abord entrer les lignes suivantes pour que les applications utilisant Python communiquent avec la carte Arduino:

from Nanpy import ArduinoApi

from Nanpy import SerialManager

connection = SerialManager(device=‘com3 ‘) 

a= ArduinoApi(connection=connection)

Remarque : le numéro de port, indiqué en rouge sur la 3ème ligne ci-dessus, est celui utilisé par la carte. Il est identifiable rapidement avec l’application « Arduino » par le menu [Outils][Port]

Il est alors possible d’utiliser toutes les commandes usuelles d’Arduino : il faut pour cela écrire a. devant ces instructions.

Il peut aussi être utile d’importer la fonction sleep du module time pour faire des « pauses » (en secondes) dans l’exécution du programme.

Ci dessous un exemple simple de code qui permet de programmer un dispositif d’allumeur de réverbère en langage Arduino puis en langage Python.

IMPORTANT : Il peut être parfois nécessaire de redémarrer le shell (CTRL+K ) pour exécuter à nouveau un programme

Montage allumeur de réverbère
/*
Allumage d'une LED pour un faible éclairement d'une photorésistance (LDR)
*/


int Valeur_A0; 
float Tension_A0;  // Déclaration des variables : Valeur mesurée en AO (montage avec LDR), et la tension qui sera calculée à partir de cette valeur


void setup(){

pinMode(2,OUTPUT);
Serial.begin(9600);  // Moniteur série
}

void loop(){
Valeur_A0=analogRead(A0); 
// lecture de la tension aux bornes de la LDR


Tension_A0=(float)Valeur_A0*5/1023; 

// Si la luminosité est suffisante, la LED reste éteinte. En dessous d'un certain seuil, elle s'allume

if (Tension_A0<4.0){
 digitalWrite(2,HIGH); 
}

else{
 digitalWrite(2,LOW) ; }

// Affichage sur Moniteur Série
Serial.print( « Tension LDR :  ");
Serial.println(Tension_A0);

// on attend 250 ms avant la prochaine boucle
delay(250); 
}

Code Python équivalent

"""
Programme Python pour montage Arduino allumeur de réverbère
Partie capteur :
la photorésistance est privée de lumière (quand la nuit tombe) ou est éclairée.

Partie actionneur  :
Selon l’éclairement reçu par la photorésistance, la LED s'allume ou s'éteint.
LED allumée pour faible eclairement
LED éteinte pour au dela d'un certain eclairement
"""
#########################################  IMPORTATION DES BIBLIOTHEQUES ET MODULES  #############################################################################

from nanpy import ArduinoApi    # importation des bibliothèques pour communication avec Arduino
from nanpy import SerialManager
from time import sleep   # pour faire des "pauses" dans l'exécution du programme

#########################################  COMMUNICATION AVEC CARTE ARDUINO ET DEFINITION DES BROCHES ET VARIABLES  #######################################################

connection = SerialManager(device='COM7') #indiquer le bon port de la carte Arduino

a = ArduinoApi(connection=connection) #connection à la carte Arduino, on précédera chaque instruction Arduino par a. (exemple a.pinMode(2,a.OUTPUT)

a.pinMode(2,a.OUTPUT) # Broche 2 déclarée comme sortie (pour allumer ou éteindre une LED associée en série avec une résistance de protection)

#########################################   CODE ARDUINO  EN LANGAGE PYTHON    #################################################################################


while True:
    Valeur_A0=a.analogRead(0) # lecture de la tension sur l'entrée analogique A0 (valeur comprise entre 0 et 1023 qui correspond à une tension entre 0 et 5V)
    Tension_A0=Valeur_A0*5.0/1023 # conversion de la valeur en V
    if (Tension_A0<4.0):             # Selon la tension lue, le LED s'allume ou s'éteint (ici on a choisi comme valeur de référence : 4V)
        a.digitalWrite(2,a.HIGH)


    else:
        a.digitalWrite(2,a.LOW)
    print (Tension_A0)
    sleep(0.25)

Il est aussi possible d’utiliser le langage Python pour aller plus loin : mettre les valeurs mesurées dans des listes, tracer des graphiques et exploiter des données…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *