vendredi 18 octobre 2013

Toujours plus !

JAG1 devait se déplacer dans la maison en partant d'un point quelconque ! Je n'y suis pas encore arrivé...
Pour simplifier les opérations, au départ, je positionne toujours la bête au milieu de mon bureau, et vogue la galère... Non pas tout à fait, car j'ai adjoint un circuit electro-magnétique qui détecte le champ magnétique terrestre, et grâce à ce circuit qui renvoie les valeurs d'orientation, et avec quelques lignes de code, il est possible d'orienter le robot. Le circuit utilisé est un CMPS03.
 Voilà à quoi ressemble le compas : une carte électronique de 3 x 3 cm
Ca aide beaucoup pour obtenir une direction, mais la fiabilité à l'intérieur d'une maison n'est pas toujours au rendez-vous. A savoir que le champ magnétique est perturbé par tout ce qui est métal. Entre autre, les encadrements de mes portes étant métalliques, il n'y a aucune possibilité d'avoir un positionnement correct près de celles-ci. Il faut donc jongler entre détecteurs de distance, odométrie, et orientation. Chaque paramètre devant être réglé au plus juste pour obtenir un résultat quelquefois très aléatoire !
Entre autre, j'ai du recalibrer de nombreuses fois le compas pour obtenir des valeurs plausibles. Je vous montre ci-dessous la méthode de calibrage du compas.

Je dispose au sol une rose des vents orientée avec le champ magnétique terrestre. J'aligne le robot successivement sur les 4 points cardinaux, et j'envoie une pulse de calibrage à chaque quart de tour.
Ensuite, je crée un fichier du relevé des caps en faisant pivoter le robot de 10 degrés en 10 degrés.Un coup dans le sens horaire et ensuite dans le sens contraire...Jusqu'à ce que le résultat soit satisfaisant. Mais il reste toujours des orientations assez peu précises ! Avec l'expérience, j'arrive à orienter le robot dans les zones non perturbées à plus ou moins 5 degrés. Et ainsi, je peux diriger le robot perpendiculairement à un mur, et en déterminant la distance avec le détecteur infra-rouge, j'obtiens un repère de départ. 

Mais voilà : un problème succédant à un autre, je n'ai plus assez de connections disponibles sur le microcontrôleur. Au diable l'avarice, comme je commence à maîtriser l'Arduino UNO, j'en commande un second. Premier déboire, il est d'une nouvelle génération, et je ne comprends pas pourquoi il refuse de fonctionner. Après enquête, mon logiciel n'est pas à jour. On recommence, et là le problème est de faire dialoguer les 2 micros entre eux. Je m'essaye avec des commandes de niveau logique entre les 2, mais j'y perds vite mon latin (que je n'ai jamais pratiqué). 
Les microcontrôleurs ont été développés avec des entrées sorties logiques permettant de dialoguer avec de nombreux composants suivant différents protocoles : liaisons série, I2C, SPI, BUS "un fil". Après diverses réflexions, j'opte pour une liaison I2C qui se fait à l'aide de 2 lignes de signal (SDA et SCL), l'échange des informations s'effectuant en série avec un débit de 100 kilobits par seconde. Un microcontrôleur étant "maître" des opérations et pouvant gérer jusqu'à 128 périphériques dits "esclaves".
Le micro "maître" gérera le compas lui aussi en I2C , les interruptions des compteurs odomètriques et le dialogue avec le micro "esclave" qui lui relèvera les valeurs des IR,  des contacteurs, et commandera les servomoteurs des roues et de la caméra.
Avec tout ça en place...ça devait carburer !
A suivre...

Aucun commentaire:

Enregistrer un commentaire