LOCODUINO

Parlons Arduino => Modélisation, Architectures logicielles et matérielles => Discussion démarrée par: babskwal le janvier 01, 2017, 06:00:33 pm

Titre: Plusieurs Arduino commandés par Processing en USB
Posté par: babskwal le janvier 01, 2017, 06:00:33 pm
Bonjour,

Pour mon projet (http://forum.locoduino.org/index.php?topic=199.msg1911#msg1911 (http://forum.locoduino.org/index.php?topic=199.msg1911#msg1911)), je compte faire dialoguer mon réseau et donc plusieurs Arduino Mega avec mon TCO sous Processing. L'idée est de connecter les Arduino via USB (en fait un mini-hub USB) au PC. Ma question est : comment, sous Processing, communiquer avec plusieurs Arduino ? C'est vrai, c'est plus une question Processing qu'une question Arduino !...

Merci d'avance de votre aide et bonne année !

Vincent
Titre: Re : Plusieurs Arduino commandés par Processing en USB
Posté par: DDEFF le janvier 01, 2017, 07:00:05 pm
Bonjour Vincent,

Bonne année aussi !! ;D

Quand je vois un MEGA, je suis un peu inquiet. Alors, plusieurs...

Ce que je crains, c'est que ce choix ait été dicté par le nombre de sorties des MEGAs.
On a un signal, un détecteur canton, une LED, etc ... et hop ! une entrée du MEGA.
Et après, on tripatouille un programme pour gérer tout ça.

Et là, comme il y a plusieurs MEGAs, il "faut" les relier au PC avec un Hub.

Je pense que c'est carrément le principe de la gestion de ton système qui est à revoir : il faut plus de centralisation et un bus (CAN, c'est le mieux).

Admettons qu'on garde les MEGAs pour récupérer les infos du réseau. Après tout, pourquoi pas ?
On relie les MEGAs à un bus CAN, justement prévu pour que plein d'Arduinos puissent parler en même temps, dans les deux sens.
Les infos remontent (et descendent) vers un Arduino central qui gère le réseau.

Et ce SEUL Arduino cause à ton TCO en Processing via un bus série qui emprunte un canal USB.

Il est fort probable qu'un Hub USB, avec un protocole de gestion USB soit possible. Sauf que je ne sais pas gérer ce protocole (on ne peut pas être partout  :-[ ).
Mais je sens que ce n'est pas la bonne solution.
Titre: Re : Plusieurs Arduino commandés par Processing en USB
Posté par: Pierre59 le janvier 02, 2017, 08:49:12 am
Bonjour

Pour communiquer depuis Processing vers un Arduino on utilise la bibliothèque "Serial". Voici un exemple d'utilisation :

import processing.serial.*;

int NO_PORT=2; // n° du port USB/serie utilise pour communiquer
Serial port; // le port pour les lectures et écritures futures

void setup() {
  print("Les ports serie : ");
  println((Object[])Serial.list());
  println("Le port utilise : "+Serial.list()[NO_PORT]);
  port=new Serial(this,Serial.list()[NO_PORT],9600);
  ...
}


Ce programme liste tous les ports série, affiche le port utilisé (celui de numéro NO_PORT) et se connecte à l'Arduino par ce port.

Il doit être possible de se connecter à plusieurs Arduino en utilisant plusieurs variables "port", mais je n'ai pas essayé et il peut avoir des problèmes avec le Hub USB qui sera vraisemblablement nécessaire.

Pierre
Titre: Re : Plusieurs Arduino commandés par Processing en USB
Posté par: Dominique le janvier 03, 2017, 02:26:49 pm
Bonjour à tous,

Je pense que le plus simple est d'utiliser une seule liaison USB entre le PC+Processing et un Arduino qui servira de passerelle avec un bus CAN sur lequel seront distribués plusieurs Arduino (des Mega, ça simplifie comme je l'ai fait sur mon réseau)

Le bus CAN véhicule des messages avec un identifiant et sans hiérarchie et c'est très facile de les transformer en messages texte pour Processing. C'est ce que je ferai sur mon réseau, le jour ou je voudrais ajouter un TCO sur écran graphique tactile.

Chaque Arduino est indépendant ce qui facilite grandement le développement et la mise au point.

Un bon exemple de passerelle CAN est décrit dans l'article http://www.locoduino.org/spip.php?article180 (http://www.locoduino.org/spip.php?article180)
ll doit être assez facile de s'en inspirer pour faire une passerelle CAN/SerieUSB