Gérer une vingtaine de contrôleurs via PC

Bonjour à tous,

dans le cadre d'un projet de création d'entreprise, j'ai quelques questions auxquelles il me faut trouver réponse !

Mon projet implique une assez importante quantité (10-20) de microcontrôleurs à devoir gérer, à certains moment clef.

Je dois pouvoir par exemple tous les rebootter en même temps à un certain moment, pouvoir les overrider individuellement à certains moment etc ...

J'ai peur de communiquer via le wifi avec eux, car si j'ai un problème de wifi, je suis littéralement, dans la mer... Je sais que via le port COM et avec un peut de VB, C+ ... on peut faire les choses assez facilement avec des Userform et cie. La question est, vu que je n'aurai pas 20 ports USB, est-ce que avec un hub multi USB, je peux faire la même chose ? Après, ils seront très loin de mon PC, mais ça doit bien exister un très câble USB =p

Et pour les rebooter en même temps, tout simplement, Est-ce que je peux tout foutre sur la même prise multi et tout couper/rallumer, où ça risque de les abîmer à long terme ? Je préfèrerai faire ça depuis le PC !

J'aimerai aussi pouvoir changer certaines variables de certains micro (pas tous !) avec le reboot !

Encore merci à tous !

Bonjour,
Certainement très intéressant ton projet, mais pas clair pour moi.
Sorry

La norme USB impose des câbles de 2m maximum. Au delà, elle n'est pas prévue pour assurer une fiabilité.
Il vaudrait peut-être mieux, si le wifi pose problème pour les raisons évoquées, utiliser une liaison Ethernet? Bien sûr il faudra une interface pour chaque carte, mais en revanche un hub et du câble Ethernet sont assez bon marché.
Je sais que le processeur de l'Arduino Due (Sam3X8) gère l'Ethernet en natif, bien qu'il ne soit pas implémenté ni sur la carte ni par le "langage" Arduino. Peut-être les broches sont-elles tout de même accessibles parmi les E/S? Je sais aussi qu'il existe certain dérivés de la Due qui implémentent ces broches...

Il y a aussi la solution de l'I2C / TWI: on peut attribuer à chaque carte une adresse et les connecter toutes sur le même bus. Par contre il faudra probablement implémenter un ou des circuits permettant de filtrer et amplifier le signal. Je ne suis pas sûr que le protocole soit prévu pour de longues distances...

je penses que l'ethernet est un bon compris, car on peut faire un reset par l'ethernet,
pour les rebooter, il faut simplement faire un reset, sans forcement couper les alimentations.
tu n'est pas limité par la distance ( 100m voir 200m avec un tres bon switch).

Pour l'achat d'un switch 24 port, c'est environ 100€.

overider, je ne sais pas ce que tu veux dire, je peux t'en dire plus...

L'interet de l'ethernet, c'est qu'avec une simple interface web, tu peux faire tout ce que tu veux dans une ergonomie simple, avec des case a cocher, et un bouton par exemple, et rebooter les cartes.

De plus, il y a possibilité de changer une valeur de variable le cas echeant.

Ton projet semble ambitieux, mais très peu clair .… pour que les uns et les autres puissent proposer des compromis techniques intéressants pour construire la "boite noire", idéalement il faut que l'on connaisse d'abord le cahier des charges fonctionnel du projet, c.a.d typiquement à minima ce qui entre dans la boite noire et à quelle fréquence, ce qui est attendu en sortie de la boite noire et à quelle fréquence, l'environnement, les éventuelles contraintes technologiques imposées à la boite noire.

Quelques questions en vrac :

_ Pourquoi devrait-il y avoir un souci avec le wifi ? (Il est possible aussi de charger un nouveau programme dans une carte ESP8266 via On The Air OTA, est-ce de cela dont il s'agit ?), mais pourquoi faudrait-il changer les programmes régulièrement ?

_ Pourquoi faudrait-il "rebooter" toutes les cartes ? (faire un Reset simultané ? et pourquoi ?) généralement un reset suit un fonctionnement dégradé….

_ Qu'est-ce que tu entends par "overrider" ? (déjà posé)

_ A quelle distance se trouvent toutes les cartes les unes des autres ? (voir RS485 si très longues liaisons)

Pour info, la carte Ethernet Arduino Due citée par Troisièmetype:

http://www.robotshop.com/eu/fr/microcontroleur-etherdue-compatible-arduino.html

ard_newbie:
Pour info, la carte Ethernet Arduino Due citée par Troisièmetype:

http://www.robotshop.com/eu/fr/microcontroleur-etherdue-compatible-arduino.html

Ce n'est pas à celle-ci que je pensais, mais à celle-là: http://www.elechouse.com/elechouse/index.php?main_page=product_info&products_id=2230. Mais bon, elle n'a pas de port ethernet directement accessible, seulement les broches.

Rebonjour tout le monde !

Effectivement, je n'ai pas été très généreux en infos ! En voilà un peu plus ^^

Je vais créer un Escape Game et donc utiliser pas mal d'électro et de microcontrôleur.

Notre room sera également une room évolutive, donc les joueurs pourront choisir la difficulté.

J'aurai une 20aine d'Arduino que le MJ devra pouvoir contrôler depuis sa room.

  • Entre chaque session je dois pouvoir reboot les contrôleur pour la session suivante.

Exemple bidon, les joueurs ont résolus une énigme qui consiste à appuyer sur des boutons pour allumer en même temps X LED. J'ai donc besoin de pouvoir rebooter tout ça depuis mon PC !

  • J'ai aussi besoin de pouvoir passer au delà du code si éventuellement, les joueurs, malgré les indices, n'arrivent vraiment pas à faire ce qu'il ont à faire.

Exemple bidon, les joueurs doivent placer 5 objets à 5 emplacements spécifiques pour ouvrir une porte. J'ai donc besoin de pouvoir ouvrir cette porte depuis mon PC si vraiment ils sont mauvais =p

  • Entre chaque session il se peut que je doive changer la difficulté de certaines énigme et modifiant une variable au niveau du setup.

Exemple bidon, ma salle est actuellement en facile, une de mes énigmes nécessite que les joueurs entrent un code à 4 chiffres. Ma session suivante est en mode difficile, j'ai donc besoin de pouvoir, au reboot, changer ma variable en difficile pour qu'à la session suivante les joueurs doivent trouver un code à 6 chiffres !

Pour l'éventualité du pb de wifi, je préfère ne pas être dépendant d'un outil peut-être moins stable que du filaire.
Mes cartes seront environ à 1, 2 ou 3 mètres les une des autres mais seront à une 20-30 de mètres de mon PC !

Je cherche donc la meilleure solution (facilité et coût) pour mes besoins.

Si je pars sur de l'éthernet ;

  • je dois ajouter un shield à mes carte n'est-ce pas ?
  • par quoi je passe depuis mon PC pour faire tout ce que j'ai cité un peu plus haut ?

Si je pars sur le l'USB ;

  • je dois ajouter des répéteurs pour augmenter ma longueur en USB n'est-ce pas ?
  • par quoi je passe depuis mon PC pour faire tout ce que j'ai cité un peu plus haut ?

Merci à tous pour votre aide dans la réalisation de mon projet !!!

je penses que tu devrais partir sur mon choix, ethernet,
sur ton pc, tu as un petit serveur, avec un petite application web, quelques bouton, pour activer/desactiver des chose, remise a zero à chaque session (*), possibilité le cas echeant, de mettre 2/4/6 ou autant code a trouver.

avec un switch, et l'adresse ip de chaque carte, tu as la possibilité d'acceder aux cartes voulut, et de faire ce que tu veux.

(*) Si le temps des sessions, sont les memes, il y a possibilité de ne pas agir, sur les cartes, mais par exemple si la sessions dure 1H... mettre un temps de 1H pour effectuer les taches définit, et au bout d'une heure, ca reboot automatiquement la carte.

par le web, il y a pas forcement besoin de jouer sur les variables. mais tu peux mettre les trois niveaux dans ta carte arduino...
avec un switch case

exemple bidon comme tu dis

switch ( var_niveau)
{
case "facile:
faire une tache precise;
code a 2 chiffre;

case "intermediaire":
faire une autre taches;
code a 4 chiffre;

case "difficile" :
faire encore une autre tache...
code a 6 chiffre
}
et ta variable var_niveau, elle viendra de ton site web, avec une liste deroulante, suivant les demandes des utilisateurs, l'operateur selectionne le niveau demandé, et puis transmet a l'arduino...

Merci pour votre aide !

Le pb, c'est que je ne sais pas faire d'appli web =p
Aussi simple soient-elles !

Si le système doit pouvoir changer tout le temps, pourquoi alors ne pas limiter la fonction des Arduino a un simple terminal de saisie et d'affichage et conserver "l'intelligence" sur le PC central?

Rebonjour,

en vous lisant et en me recreusant la tête, j'ai finalement trouvé comment faire.
Je peux tout simplement rebooter depuis la salle de jeu (je dois de toutes façons aller y remettre des objets à leur place) en paramétrant sur chaque carte une manip de reboot. Ou un tag NFC, RFID ...

Par exemple maintenir X boutons appuyés en même temps pendant 5 sec (trucs que les joueurs ne feront jamais =p) ! Idem pour le changement de difficulté !

Reste seulement le problème de débloquer quelques chose si les joueurs n'y arrive pas. Mais là aussi, je dois lister mes énigmes et voir lesquelles seront concernées. Si elles sont peu nombreuses, je trouverai aussi une solution beaucoup plus simple, du genre juste un bouton dans la salle MJ ^^

Merci à tous !