Communication entre le PC et une carte ARDUINO

L'Arduino communique avec le PC à l’aide de ce que l’on appelle une liaison Série.
La liaison Série est un protocole de communication entre le PC et la carte Arduino via le câble USB permettant un échange d’informations entre vous et votre carte Arduino.

Le plus simple pour piloter un ARDUINO avec un PC est d'utiliser le moniteur série fourni avec l'IDE ARDUINO mais on est très vite limité.

Il est possible de piloter un ARDUINO depuis un PC avec n'importe quel logiciel qui peut émuler le bus série sur un port USB (par exemple Visual Basic, Python, Delphi, C, C++, Processing, Unity, etc...).

1. Utilisation du moniteur série du logiciel Arduino

Vous trouverez un mode d'emploi complet du moniteur série sur le site https://www.robot-maker.com/ouvrages/tuto-arduino/liaison-serie-com-pc-arduino/

2. Visual Basic

2.1 Présentation de Visual Basic

C'est le logiciel que j'utilise pour communiquer avec un Arduino. Il existe plusieurs versions de Visual Basic.
J'utilise la vieille version VB6 qui est compatible avec toutes les versions de Windows, simple à utiliser, et qui suffit largement à nos applications ferroviaires.
VB6 était payant à l'époque et n'est plus commercialisé. Mais on peut encore le télécharger en cliquant sur le lien ci-dessous:
https://vb.developpez.com/msdnvb6/

Maintenant, la firme de Redmond propose la version 2017 de Visual Studio que vous pouvez télécharger en cliquant ici.

2.2 Transmission d'un octet à l'Arduino avec VB6

Un octet est un entier compris entre 0 et 255.
Pour gérer le port série, la meilleure façon est d’utiliser le Microsoft Comm Control distribué avec n’importe quelle édition de Visual Basic. Il suffit simplement de le rajouter dans la liste des contrôles de la barre d’outils comme le montre la photo ci-dessous.



Une fois le contrôle rajouté, son icône apparaît dans la barre des contrôles. Il suffit d’en placer une instance sur la feuille pour pouvoir l’utiliser. Par défaut, ce contrôle s’appellera MSComm1, et on retiendra ce nom pour la suite de l’application :



Voici les commandes Visual Basic qui permettent d'envoyer un octet à l'Arduino

Ouverture du port COM
MSComm1.CommPort = N (N étant le numéro du port)
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True

Fermeture du port COM
MSComm1.PortOpen = False

Envoi d'un octet
Dim octet As Integer
MSComm1.Output = Chr(octet)

Côté Arduino, voici les instructions à insérer dans le programme après void loop() :
{
// reception d'un octet envoyé par le PC
if (Serial.available() > 0)
{
octet = Serial.read();
}

3. PROCESSING

3.1 Présentation du logiciel

Le logiciel PROCESSING est particulèrement bien adapté à l'ARDUINO.
L'interface graphique programmable Processing, véritable "couteau suisse logiciel", écrite en Java (multiplateforme donc...) par le MIT, libre et opensource, donne la possibilité de créer des interfaces graphiques côté PC pour communiquer avec le système Arduino. On peut ainsi commander à la souris ou au clavier la carte Arduino ou bien afficher sur le PC des graphiques à partir des données reçues depuis la carte Arduino. Processing permet également de réaliser de la capture vidéo, du traitement d'image, des applications réseau serveur ou client, de la lecture de son, de la reconnaissance vocale... !! Cette interface utilise un langage dédié facile à prendre en main, très semblable à celui de l'ARDUINO.

Tout d’abord Processing est téléchargeable ici.

On trouve sur le web de nombreux tutoriels pour apprendre à utiliser PROCESSING, par exemple celui de mon-club-elec.fr

Autres tutoriels:

Récupérer une valeur analogique Arduino avec Processing

Une vidéo Youtube en Français.

Pour avoir une interface graphique en 2D, il est conseillé d'utiliser la bibliothèque G4P.
Cette bibliothèque fournit une riche collection de contrôles graphiques 2D. Elle prend également en charge plusieurs fenêtres et un système de gestion des événements simple mais personnalisable.
Pour télécharger G4P, cliquer ici.

On peut trouver un mode d'emploi de G4P en français sur le site de mon-club-elec.

3.2 Transmission d'un octet à l'Arduino avec PROCESSING

Voici un exemple de code permannt de transmettre un octet à l'Arduino.



Retour page ARDUINO

Retour page d'accueil