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 »
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 :
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 :
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
/*
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…