0Home Page test forums Le forum Francophone Infos generales Servos et shield Arduino

This topic contains 11 replies, has 3 voices, and was last updated by Profile photo of Xavier MAQUET Xavier MAQUET 5 months, 3 weeks ago.

  • Author
    Posts
  • #10212
    Profile photo of Xavier MAQUET
    Xavier MAQUET
    Participant

    Bonjour,
    J’ai trouvé dans les posts une allusion à un shield Arduino Mega ; quelqu’un a-t-il déjà étudier l’opportunité d’utiliser un shield pour l’UNO comme la “carte PCA9685, 16 servos + 2 moteurs DC Doit (Geekcreit)” ?
    Les avantages sont attrayants :
    – alimentation séparée pour les servos (input de 6 à 18V)
    – connectique servos en place
    – encombrement réduit (taille Arduino UNO)

    j’y vois un bon moyen d’intégrer l’électronique des bras, ou au moins des mains+poignet.
    La question qui se pose est celle de l’interfaçage avec MRL. Comment passer d’un pilotage direct à un dialogue via I2C ?…

    https://www.banggood.com/2-Channel-Motor-16-Channel-Servo-Expansion-Board-For-Arduino-UNO-Smart-Car-Chassis-Robot-Arm-p-1051594.html?p=RA18043558422201601Y

    @+
    Xavier

  • #10216
    Profile photo of BIGIARINI Vincent
    BIGIARINI Vincent
    Participant

    C’est tout à fait possible mais il faut recoder les services Inmoov en conséquence, hein anthony ? :D

    il y a un service tout fait pour utiliser cette carte en I2C. c’est le service Adafruit16CServoDriver.
    Ce n’est pas très compliqué tu peux trouver des exemples ici :

    http://myrobotlab.org/service/Adafruit16CServoDriver

    Je viens de regarder ce fameux shield, je ne le connaissais pas, il y a en plus deux drivers pour moteur DC. mais la partie servo est identique à la carte Adafruit et copies (contrôleur PCA9685) :

    https://www.banggood.com/PCA9685-16-Channel-12-bit-PWM-Servo-Motor-Driver-I2C-Module-For-Arduino-Robot-p-1170343.html?rmmds=detail-top-buytogether-auto__1&cur_warehouse=CN

  • #10240
    Profile photo of Xavier MAQUET
    Xavier MAQUET
    Participant

    Actuellement, pour être bien sûr : InMoov s’appuie sur le service Arduino.py pour le pilotage des bras avec un Arduino ? s’agit-il d’une version très adaptée pour InMoov ou proche de l’originale ?
    Quel service plus haut invoque Arduino.py ?
    j’essaye de trouver un point de départ pour le recodage.
    X.

  • #10244
    Profile photo of Xavier MAQUET
    Xavier MAQUET
    Participant

    ce que j’ai cru comprendre : c’est 7_Inmoov.py qui crée le service Arduino pour chaque coté du robot.
    C’est donc lui qui pourrait lancer en lieu et place d’Arduino.py le service Adafruit :
    # Start the Adafruit16CServodriver that can be used for all PCA9685 devices
    adaFruit16c = Runtime.start("AdaFruit16C","Adafruit16CServoDriver")

    et c’est ce service Adafruit qui devrait être écrit pour InMoov ?…
    ensuite le shield est attaché à l’arduino :
    adaFruit16c.attach("arduino","0","0x40")

    c’est un peu simplifié bien sûr ; j’ai bon ?

    • This reply was modified 6 months, 1 week ago by Profile photo of Xavier MAQUET Xavier MAQUET.
    • This reply was modified 6 months, 1 week ago by Profile photo of Xavier MAQUET Xavier MAQUET.
    • This reply was modified 6 months, 1 week ago by Profile photo of Xavier MAQUET Xavier MAQUET.
  • #10248
    Profile photo of BIGIARINI Vincent
    BIGIARINI Vincent
    Participant
  • #10249
    Profile photo of BIGIARINI Vincent
    BIGIARINI Vincent
    Participant

    `
    thumb.attach(arduino, 2, thumb.getRest(), thumb.getVelocity());

    index.attach(arduino, 3, index.getRest(), index.getVelocity());

    majeure.attach(arduino, 4, majeure.getRest(), majeure.getVelocity());

    ringFinger.attach(arduino, 5, ringFinger.getRest(), ringFinger.getVelocity());

    pinky.attach(arduino, 6, pinky.getRest(), pinky.getVelocity());

    wrist.attach(arduino, 7, wrist.getRest(), wrist.getVelocity());

  • #10251
    Profile photo of Xavier MAQUET
    Xavier MAQUET
    Participant

    ok, vu
    ça veut dire qu’aujourd’hui InMoov ne peut fonctionner que avec un Arduino en contrôleur, via les pin du circuit ?
    si on attache logiquement un shield à notre arduino, est-ce que çà change quelque-chose aux méthodes dans les services InMoov ? pas sûr…

  • #10252
    Profile photo of BIGIARINI Vincent
    BIGIARINI Vincent
    Participant

    Si tu mets un shield avec PCA9685, le service inmoov va chercher à utiliser les pins pwm de l’arduino et pas celles du shield. il faut réecrire les services pour integrer les PCA9685. sinon se passer des services inmoov et tout coder en python. mais la ç’est une autre paire de manche et il y aura bcp de pertes de fonctionnalité.

    une âme plus éclairée que moi sur le sujet ? je ne dis pas de bêtises ?

  • #10253
    Profile photo of anthony
    anthony
    Moderator

    Coucou ! Yes la config matérielle est standardisée afin de fournir quelque chose de fonctionnel au plus grand nombre, et surtout faciliter les explications aux débutants.
    L’ajout de microcontrôleurs supplémentaires dans le service Inmoov est un des chantiers de Nixie : https://github.com/MyRobotLab/myrobotlab/issues/101
    L’idée étant de fournir plus de modularité. A terme on pourra utiliser si on le souhaite le service inmoov sans arduino juste avec un petit raspi et des contrôleurs exotiques
    ( on peut déjà le faire mais faut bricoler un peu ).

  • #10256
    Profile photo of Xavier MAQUET
    Xavier MAQUET
    Participant

    Merci messieurs pour ces éclairages très intéressants.
    Dans un 1er temps je vais donc essayer ce shield sur un autre projet (simple bras robot avec 4 servos) en-dehors de MRL & avec MRL+service/adafruit.
    Et pour mon InMoov, et bien on sort les cartes et le fer à souder :)

  • #10355
    Profile photo of anthony
    anthony
    Moderator

    Pour les aventuriers, en attendant plus propre, petite bidouille pour utiliser l’i2c dans le service inmoov : http://myrobotlab.org/content/i2c-inmoov-hand-wip#comment-9861

  • #10358
    Profile photo of Xavier MAQUET
    Xavier MAQUET
    Participant

    Hello, mais c’est du tout bon çà !! j’ai reçu mes shields hier, et je découvre aujourd’hui qu’on peut adresser des servos branchés dessus via le bus I2C…il n’y a plus qu’à tester.
    A priori il faut juste que la lib ‘wire’ soit installée.

You must be logged in to reply to this topic.