Contrôler le Convoyeur avec une carte Arduino

Contrôler le Convoyeur avec une carte Arduino

Note

Ce tutoriel est fonctionnel à partir de :
La version v3.0.0 de la ned_ros_stack
La version v3.0.0 de Niryo Studio

Ce tutoriel est conçu pour Ned. Si vous utilisez un Niryo One, cliquez-ici.

Objectifs

Le Convoyeur est conçu avec un moteur pas-a-pas contrôlé par la carte custom Niryo compatible Arduino. Dans ce tutoriel, vous apprendrez à contrôler le Convoyeur avec une carte Arduino.

Cette carte a :

  • Une interface de communication : bus CAN (utilisant MCP2515 pour créer une interface SPI-CAN). Cette interface est utilisée pour contrôler le Convoyeur avec Ned.

  • Une interface d’entrée numérique : celle-ci est située dans le module de contrôle.

  • Une entrée analogique.

Dans ce tutoriel, nous allons :

  • Mettre le code Arduino du NiryoStepper à jour.

  • Utiliser le module de contrôle du Convoyeur et le connecter à une carte Arduino connectée à votre ordinateur (nous utiliserons une Arduino MEGA 2560).

  • Lancer un programme sur la carte Arduino qui va gérer la valeur d’une broche de sortie pour démarrer le Convoyeur.

Vous serez ainsi capable de démarrer et arrêter le Convoyeur en utilisant votre carte Arduino.

Ce dont nous aurons besoin

  • Une carte Arduino (nous utilisons une Arduino MEGA 2560, mais vous pouvez par exemple utiliser une carte Arduino Uno).

  • Un Convoyeur Niryo.

  • Le module de contrôle du Convoyeur ainsi que l’alimentation.

Mettre à jour le firmware du Convoyeur.

Note

Si vous souhaitez contrôler le Convoyeur avec une carte Arduino, il est nécessaire de modifier le firmware actuel.

Pour commencer, il est nécessaire de modifier le firmware du NiryoStepper (le moteur du Convoyeur). Dans ce but :

Etape 1 : préparer l’IDE Arduino

Le micro-contrôleur (type SAMD) utilisé dans le NiryoStepper n’est pas encore inclus dans les cartes supportées, il est donc nécessaire d’ajouter l’extension.

  • Si vous n’avez pas installé l’IDE Arduino, téléchargez la depuis le site officiel puis installez la.

  • Ouvrez le gestionnaire de cartes (boards manager) :

Connecter et gérer la carte Arduino
  • Maintenant, cherchez “zero” :

Package Arduino 'zero'
  • Cliquez sur le paquet et installez le. Cela peut prendre quelques minutes.

  • Une fois l’installation terminée, redémarrez votre IDE Arduino.

Etape 2 : récupérer et modifier le firmware du Convoyeur

  • Téléchargez le firmware depuis notre GitHub.

  • Récupérez les fichiers contenus dans l’archive. Si le nom du dossier n’est pas « NiryoConveyor », renommez-le ainsi.

  • Ouvrez le dossier et double-cliquez sur NiryoConveyor.ino. Le programme s’ouvrira dans l’IDE Arduino.

  • Ajoutez cette fonction à la fin du fichier NiryoConveyor.ino :

    void control_conveyor_arduino(int conveyor_speed , int conveyor_direction)
    {
        if ((conveyor_speed ==0) or (digitalRead(digital_input_pin) == LOW)){
            relaxed_mode_with_resistance();
            fan_LOW();
        }
        else if (digitalRead(digital_input_pin) == HIGH){
            fan_HIGH();
            delay_steps = 10 * (100 - conveyor_speed ) + 200 ;
            output(-1800 * conveyor_direction * steps_position / 3, uMAX);
            steps_position = steps_position + 1;
            delayMicroseconds(delay_steps);
        }
    }
    
  • Dans la fonction Loop, remplacez :

    void loop() {
    
        /*
            if the Conveyor Belt is not activated on the side of Ned --> drive it with the control box
        */
        if (!canBus.getConveyorStatus()) {
            autonomeConveyorControl();
        }
    
        // [...]
    

    par :

    void loop() {
    
        /*
            if the Conveyor Belt is not activated on the side of Ned --> drive it with the control box
        */
        if (!canBus.getConveyorStatus()) {
            //autonomeConveyorControl();
            control_conveyor_arduino(50 , 1);
    
        }
    
        // [...]
    

Note

La vitesse du Convoyeur va de 0 à 100 et sa direction peut être 1 (avancer) ou 0 (reculer).

Quand digital_input_pin (qui est notamment utilisée pour le capteur infrarouge) est LOW, le Convoyeur s’arrête. Quand elle est HIGH, le Convoyeur s’active en prenant en compte conveyor_speed et conveyor_direction.

Etape 3 : uploader les modifications sur le moteur

Nous allons maintenant modifier le code du Convoyeur. Pour ce faire, connectez le moteur à votre ordinateur avec un cable micro-USB.

Assurez-vous d’avoir sélectionné la bonne carte Arduino Zero (Native USB Port) et le bon port dans votre IDE Arduino.

A présent, cliquez sur le bouton d’upload (le bouton du haut avec une flèche) et patientez quelques secondes. Vous devriez voir un message comme celui-ci en bas de l’IDE :

Télécharger le code sur le moteur

Note

Si l’IDE Arduino ne parvient pas à uploader le programme et que vous utilisez un port USB 3.0, réessayez avec un port USB 2.0.

Connecter et gérer la carte Arduino

Maintenant, connectez votre ordinateur à une carte Arduino.

Etape 4 : connecter la carte Arduino au module de contrôle du Convoyeur

Connectez votre carte Arduino à l’interface digitale du module de contrôle du Convoyeur.

Se connecter au convoyeur

Comme vous pouvez le constater, la broche 2 de la carte Arduino est connectée à la broche d’entrée (INPUT) de l’interface numérique du module de contrôle, qui est elle-même utilisée par le moteur NiryoStepper en tant qu’entrée digitale 0.

Avertissement

Attention à ne pas brancher l’alimentation maintenant. L’alimentation doit toujours être branchée après avoir effectué les câblages.

Etape 5 : créer et uploader du code sur la carte Arduino

Uploadez ce code sur votre carte Arduino :

const int conveyorPin = 2;

String incomingByte;
int conveyorState;

void setup() {

    // set the digital pin as output:
    pinMode(conveyorPin, OUTPUT);
    Serial.begin(9600);
}

void loop() {
    Serial.flush();
    incomingByte = Serial.readString();
    Serial.println(incomingByte);
    if (incomingByte.length() != 0){
        if (incomingByte == "go") {
            conveyorState = HIGH;
        }
        else if (incomingByte == "stop"){
            conveyorState = LOW;
        }
    }
    // send the state
    digitalWrite(conveyorPin, conveyorState);
}

Note

Assurez-vous que la carte et le port sont correctement paramétrés dans l’IDE Arduino quand vous uploadez votre code.

Ce code va changer l’état de la broche 2 de HIGH à LOW conformément à la chaîne de caractères passée à travers le port série (c’est à dire celle que vous taperez sur votre clavier).

Afin d’écrire sur le port série, ouvrez l’IDE Moniteur série dans le menu Outils :

Serial Monitor

Assurez-vous que la vitesse de communication est définie à 9600 bauds. Vous serez capable de voir le résultat de la fonction Serial.println(). Vous pourrez également envoyer des chaînes de caractères vers la carte, ces derniers étant traités par la fonction Serial.readString() »

Si vous envoyez go, la broche 2 passera sur HIGH, ce qui activera le Convoyeur.

Si vous envoyez stop, la broche 2 passera sur LOW, ce qui arrêtera le Convoyeur.

Contrôler le Convoyeur avec la carte Arduino

Maintenant que vous avez mis les codes du NiryoStepper et de la carte Arduino à jour, vous pouvez brancher l’alimentation du Convoyeur sur le module de contrôle du Convoyeur, ouvrir l’IDE Moniteur série de la carte Arduino depuis votre ordinateur, et envoyer les commandes « go » ou « stop » pour contrôler le Convoyeur.