Bonjour,
Afin de mettre tout le monde d’accord sur le fonctionnement d’activator, je vais vous donner quelques explications.
Tout d’abord, voici une comparaison du soft MrlComm et Activator qui sont fort différents:
Le soft MrlComm qui se trouve dans les arduino mega gauche et droite a pour vocation d’être universelle. C’est à dire que chaque pins de l’arduino peuvent être définis pour une fonction. La plupart du temps on utilise la fonction “servo” mais beaucoup de services peuvent être utilisés comme I2C, entrées et sorties logiques, entrées analogiques, etc…
Le soft Activator n’ai pas développé dans ce sens. Toutes les entrées et sorties du nano ont leurs fonctions parfaitement définis et figés. Evidemment je n’ai pas choisi les pins aux hasards. Les pins analogiques sont utilisées pour capturer l’audio, le réglage du seuil audio et la lecture des batteries, les pins d’interruption pour réveiller le système et le reste des IO pour divers commandes notamment les relais de mise en route.
A la mise sous tension, Activator se met en veille afin de consommer le moins possible de courant (autour de 15mA). Toutes les 8s, il se réveille, allume le ring de la couleur de son choix, l’éteins et se remet en veille.
Lorsqu’un pulse à la masse arrive sur la pin D2 (soit par un bouton poussoir, soit par le détecteur de présence), activator se réveille et lance la procédure de démarrage. Il active l’électronique générale, lance le PC Windows et lance une animation du ring. Puis il attend un ordre venant du python de myrobotlab pour lui signaler que le PC est prêt.
A partir de ce moment, Activator lance les services aux choix demandés par myrobotlab comme une animation ou une couleur du ring, activation du relais de puissance pour les moteurs, etc.
Le servo de la bouche est immédiatement opérationnelle et réagit avec le niveau audio du PC qui est fixe à 92% (attention, surtout pas celui de l’ampli audio sinon ça ne fonctionnerait plus avec la diminution du volume). Le ring réagit aussi avec le niveau audio.
Un timer myrobotlab permet le rafraichissement d’un watchdog de supervision permettant a activator de savoir que tout va bien, sinon il effectue un redémarrage du système. Un second timer effectue la lecture des tensions batteries.
Lorsque l’on souhaite éteindre le robot, myrobotlab envoie une commande à activator pour lui demander un shutdown. 30s après réception de cette commande, activator coupe toutes les alimentations et se mets en veille.
Afin d’intégrer au maximum Activator à myrobotlab, j’ai utilisé la même façon de communiquer que MrlComm. J’ai donc pour cela modifié MrlComm.cpp et .h afin de l’adapter aux services que proposent Activator (les autres fichiers sont restés inchangés).
Alors, apparemment les personnes en chargent de MrlComm ne sont pas favorable aux modifications que j’effectue. J’ai donc renommé MrlComm.cpp en ActMrlComm.cpp pour qu’il n’y ai plus de confusion.
@Christian et Anthony: Il est possible de modifier le soft Activator pour que le seul changement soit Activator.ino MAIS dans ce cas, il sera possible de perturber le fonctionnement des pins attribuées aux fonctions d’Activator et peut même être dangereux. Le protcole d’Activator ne se résume pas au sendCustomMessage et publishCustomMessage. Donc, ce n’est franchement pas la bonne solution.
Activator doit donc être un soft a part entière ET totalement indépendant de MrlComm.
Il serait possible d’avoir un service Activator au même titre que le service Arduino dans MyRobotLab. Pour cela il suffirait de définir quelques commandes “send-received” qui n’ont rien à voir avec ceux de MrlComm.
J’espère que toute ces explications vous aideront à comprendre le fonctionnement d’Activator et pouvoir définir les évolutions au seins de MyRobotLab.
A+
Dom.
-
This topic was modified 7 years, 12 months ago by Dominique.