Mini-PC : Pyduino : UART, IDE Arduino and co sur le pcduino Ce qu

Mini-PC : Pyduino : UART, IDE Arduino and co sur le pcduino
Par X. HINAULT – Novembre 2014 – www.mon-club-elec.fr
Ce qu'on va faire ici...
Je fais ici une petite mise au point en ce qui concerne l'usage de l'IDE Arduino et du port série (UART) sur pcduino...
Pour comprendre
Pour avoir les idées claires, il faut comprendre les points suivants :
le pcduino natif est livré avec un IDE Arduino « modifié » (à ne pas confondre avec l'IDE Arduino « classique ») qui permet l'accès directement aux
broches E/S etc... et ne communique pas par le port série pour contrôler le mini-PC. Je considère cet IDE Arduino modifié comme à peu près inutile, dans
la mesure où la librairie fait le même job tout en offrant la possibilité d'inclure dans le même code les fichiers, etc... Je conseille de désinstaller cet IDE.
il est tout à fait possible d'utiliser l'IDE Arduino « classique » sur le mini-PC pour programmer une carte Arduino à distance: cette solution est
intéressante dès lors que l'on voudra reprogrammer à distance par accès VNC une carte Arduino connectée avec le mini-PC. Cet IDE sera à installer.
enfin, il est tout à fait possible d'utiliser le port série au sein d'un programme Pyduino pour communiquer avec une carte Arduino (ou tout autre
dispositif UART), soit par USB, soit directement hardware (broche à broche entre mini-pc et arduino)
L'utilisation d'une carte Arduino avec un mini-pc pourra sembler étonnante, mais en fait, elle permet de couvrir les 20 % de situations où le mini-pc ne fera pas
bien, voire ne fera pas, des choses faciles à faire avec Arduino (servomoteurs, capteurs spécifiques, etc...). Cette technique permet aussi d'ajouter facilement des
broches analogiques et E/S au mini-PC. Il suffit alors d'utiliser Arduino pour faire ces tâches et d'utiliser la communication série au sein d'un code Pyduino pour
récupérer les informations utiles pour le mini-pc. Un autre intérêt de cette façon de procéder est de dissocier le code Arduino de bas niveau, robuste, autonome du
code de « haut » niveau exécuté côté mini-pc.
Mini-PC : Pyduino : UART, IDE Arduino and co sur le pcduino - Par X. HINAULT – Novembre 2014 – www.mon-club-elec.fr – p. 1 / 11
L'IDE Arduino « modifié » livré avec le pcduino
C'est la version installée par défaut sur le pcduino lorsqu'on le reçoit. Cette version permet d'utiliser l'IDE Arduino et du code Arduino pour contrôler les ports
E/S de la carte mini-pc, comme on le ferait pour une carte Arduino.
Limites
Par contre, ceci se limite aux GPIO et ne concerne pas les autres fonctionnalités du système notamment multimédia.
D'autre part, l'environnement Java est assez lourd et l'IDE Arduino n'est pas très fluide sur le mini-PC...
C'est à cause notamment de ces limites que j'ai créé Pyduino qui permet dans un même code de gérer aussi bien GPIO que multimédia, tout en ajoutant les
possibilités du langage Python (souplesse de codage, nombreuses librairies, utilisable en mode interpréteur, ...) . De plus l'IDE Pyduino écrit en PyQt est très léger,
donnant une bonne fluidité d'usage sur le mini-PC.
En pratique
En clair, avec Pyduino, vous n'avez pas besoin de cet IDE que vous allez pouvoir enlever, ce qui se fait simplement en ligne de commande :
$ sudo apt-get remove pcduino-arduino-ide
$ sudo apt-get autoremove
A titre indicatif, l'IDE Arduino modifié + Java occupent ~200Mo de NAND là où l'ensemble de la chaîne Python (y compris graphique) atteint à peine 100Mo...
Pour plus de détails, voir la procédure « Alléger la mémoire NAND »
Note
Le seul intérêt potentiel de l'IDE Arduino modifié est de s'inspirer du code C utilisé pour accéder aux fonctionnalités GPIO du mini-pc.
Mini-PC : Pyduino : UART, IDE Arduino and co sur le pcduino - Par X. HINAULT – Novembre 2014 – www.mon-club-elec.fr – p. 2 / 11
Installer IDE Arduino « classique »
Le scénario
Ici, on souhaite pouvoir programmer une carte Arduino connectée au mini-pc : pour cela on va installer l'IDE Arduino « classique » non modifié, qui va permettre
de programmer Arduino comme on le ferait sur n'importe quel autre poste.
L'intérêt d'utiliser l'IDE Arduino « classique » sur le mini-PC est de pouvoir programmer une carte Arduino à distance : cette solution est intéressante dès lors
que l'on voudra reprogrammer à distance par accès VNC une carte Arduino connectée avec le mini-PC.
Encore une fois, L'utilisation d'une carte Arduino avec un mini-pc pourra sembler étonnante, mais en fait, elle permet de couvrir les 20 % de situations où le mini-
pc ne fera pas bien, voire ne fera pas, des choses faciles à faire avec Arduino (servomoteurs, capteurs spécifiques, etc...). Cette technique permet aussi d'ajouter
facilement des broches analogiques et E/S au mini-PC. Il suffit alors d'utiliser Arduino pour faire ces tâches et d'utiliser la communication série au sein d'un code
Pyduino pour récupérer les informations utiles pour le mini-pc. Un autre intérêt de cette façon de procéder est de dissocier le code Arduino de bas niveau, robuste,
autonome du code de « haut » niveau exécuté côté mini-pc.
Installation
La procédure est classique à tout système Ubuntu / Debian :
sudo apt-get install arduino
Soyez patient, çà peut prendre un petit moment... 120 Mo d'un coup à installer...
Ensuite, il faut faire en sorte que le port série Arduino soit bien détecté ce qui se fait de la façon suivante sous Ubuntu 12.04 LTS (connecter la carte Arduino
avant) :
sudo usermod -a -G dialout $USER
sudo chmod a+rw /dev/ttyACM0
Voilà, cette procédure a installé l'IDE Arduino et toutes ses dépendances en zone « système »... noté que le logiciel Arduino se trouve en /usr/share/arduino et qu'il
faudra être sudo pour installer des librairies complémentaires.
Fignolages
Dernière chose : si l'IDE Arduino est trop grand au lancement, il est possible de le réduire en éditant le fichier caché suivant :
geany /home/ubuntu/.arduino/preferences.txt
Modifier les lignes :
editor.window.height.default=500
editor.window.height.min=500
Mini-PC : Pyduino : UART, IDE Arduino and co sur le pcduino - Par X. HINAULT – Novembre 2014 – www.mon-club-elec.fr – p. 3 / 11
Résultat
En lançant l'IDE on obtient :
Voilà, vous êtes parés pour programmer la carte Arduino de façon distante : c'est suffisamment fluide sur le pcduino v3 pour faire du co-développement Arduino /
Pyduino sur le mini-pc par accès VNC.
Mini-PC : Pyduino : UART, IDE Arduino and co sur le pcduino - Par X. HINAULT – Novembre 2014 – www.mon-club-elec.fr – p. 4 / 11
Communiquer avec Arduino sur le port série depuis un code Pyduino
Ce que l'on va faire ici
A présent nous sommes en mesure de faire communiquer Pyduino et Arduino ensemble via le port série, ce qui ouvre la possibilité d'utiliser le meilleur des 2
mondes ensemble... Et c'est aussi la certitude de ne JAMAIS ETRE BLOQUE sur un projet : ce que le mini-PC ne saura pas faire, Arduino le fera et inversement !!
En un mot, vous obtenez ici en quelque sorte le « système embarqué universel »... sans vous ruiner en plus ! C'est bien mieux que les cartes Galileo et compagnie
par exemple...
Code côté Arduino (sur le mini-PC)
On va commencer par faire un code Arduino très simple qui va être un « miroir série » :
// --- Déclaration des variables globales ---
int octetReception=0; // variable de stockage des valeurs reçues sur le port Série
long nombreReception=0; // variable de stockage du nombre reçu sur le port Série
long nombreReception0=0; // variable de stockage du dernier nombre reçu sur le port Série
String chaineReception=""; // déclare un objet String vide pour reception chaine
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
void setup() { // debut de la fonction setup()
Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission
} // fin de la fonction setup()
// ********************************************************************************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension
void loop(){ // debut de la fonction loop()
//---- code type réception chaine sur le port série ---
while (Serial.available()>0) { // tant qu'un octet en réception
octetReception=Serial.read(); // Lit le 1er octet reçu et le met dans la variable
if (octetReception==10) { // si Octet reçu est le saut de ligne
Serial.println (chaineReception); // affiche la chaine recue
chaineReception=""; //RAZ le String de réception
break; // sort de la boucle while
}
else { // si le caractère reçu n'est pas un saut de ligne
chaineReception=chaineReception+char(octetReception); // ajoute le caratère au String
//Serial.print(char(octetReception)); // affiche la chaine recue
}
} // fin tant que octet réception
//----- une fois que le saut de ligne est reçu, on sort du While et on se positionne ici
} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
Mini-PC : Pyduino : UART, IDE Arduino and co sur le pcduino - Par X. HINAULT – Novembre 2014 – www.mon-club-elec.fr – p. 5 / 11
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !