Arduino – Contrôlez 2 moteurs CC via Bluetooth

Arduino - Contrôlez 2 moteurs CC via Bluetooth

Dans ce tutoriel, je vais vous montrer comment contrôler 2 moteurs à courant continu via Bluetooth avec une application Android créée avec MIT App Inventor 2. MIT App Inventor est une excellente plateforme pour vous lancer dans le développement Android.

Arduino Controlez 2 moteurs CC via Bluetooth

Dans un tutoriel précédent (cliquez ici pour voir ce projet), je contrôlais 1 moteur à courant continu à l’aide d’une application appelée « BlueTerm ». Cette application a fait le travail, mais ce n’est pas idéal pour envoyer facilement des commandes constamment différentes.

L’application que vous allez construire est parfaite pour contrôler n’importe quelle broche Arduino ou pour s’intégrer à votre propre voiture robot. Vous pouvez modifier cette application pour vos besoins spécifiques.

Module Bluetooth HC-05

Pour établir la communication bluetooth entre votre smartphone et votre Arduino, il vous faut un module bluetooth. Ce projet utilise le module Bluetooth HC-05 (comme illustré dans la figure ci-dessous).

1642719607 546 Arduino Controlez 2 moteurs CC via Bluetooth

Ce module Bluetooth fonctionne avec des données série. Cela signifie que l’Arduino envoie des informations et que le module Bluetooth les reçoit via série (et vice-versa).

Par défaut, le module Bluetooth HC-05 fonctionne à un débit en bauds de 9600.

Création de votre application Android

L’application Android sera créée à l’aide d’une application Web gratuite appelée Inventeur d’applications MIT. MIT App Inventor est un excellent endroit pour démarrer avec le développement Android, car il vous permet de créer des applications simples par glisser-déposer.

Vous avez besoin d’un compte Google pour vous inscrire à MIT App Inventor et voici la page de connexion : http://ai2.appinventor.mit.edu.

Cliquez ici pour télécharger le fichier .aia, puis regardez la vidéo ci-dessous :

YouTube video

Si vous allez dans l’onglet Projets, vous pouvez télécharger le Fichier .aia pour ce projet

Arduino Controlez 2 moteurs CC via Bluetooth

Avec MIT App Inventor, vous avez 2 sections principales : concepteur et blocs. Le concepteur est ce qui vous donne la possibilité d’ajouter des boutons, d’ajouter du texte, d’ajouter des écrans et de modifier l’apparence générale de l’application.

1642719607 250 Arduino Controlez 2 moteurs CC via Bluetooth

Les sections de blocs permettent de créer des fonctionnalités personnalisées pour votre application. Ainsi, lorsque vous appuyez sur les boutons, cela fait quelque chose avec ces informations.

1642719607 514 Arduino Controlez 2 moteurs CC via Bluetooth

Je vous recommande de commencer par suivre ce projet et d’utiliser l’application sans la modifier.

Si vous souhaitez apporter des modifications à l’application, lorsque vous avez terminé et que vous souhaitez installer l’application sur votre smartphone, accédez à l’onglet Construire.

  • Vous pouvez soit générer un code QR que vous pouvez scanner avec votre smartphone et installer automatiquement l’application sur votre smartphone.
  • Ou vous pouvez télécharger le fichier .apk, connecter votre smartphone à votre ordinateur et déplacer le fichier .apk sur le téléphone.

1642719607 61 Arduino Controlez 2 moteurs CC via Bluetooth

Suivez simplement l’assistant d’installation pour installer l’application et c’est fait !

Code

Pour ce projet, vous n’avez pas besoin d’installer de bibliothèques Arduino. Il vous suffit donc de télécharger ou de copier le code suivant sur votre IDE Arduino et de le télécharger sur votre carte Arduino. Assurez-vous que vous avez sélectionné la bonne carte et le bon port COM.

/*
 * created by Rui Santos, https://www.raspberryme.com
 * Control 2 DC motors with Smartphone via bluetooth
 */
 
int motor1Pin1 = 3; // pin 2 on L293D IC
int motor1Pin2 = 4; // pin 7 on L293D IC
int enable1Pin = 6; // pin 1 on L293D IC
int motor2Pin1 = 8; // pin 10 on L293D IC
int motor2Pin2 = 9; // pin 15 on L293D IC
int enable2Pin = 11; // pin 9 on L293D IC
int state;
int flag=0;        //makes sure that the serial only prints once the state
int stateStop=0;
void setup() {
    // sets the pins as outputs:
    pinMode(motor1Pin1, OUTPUT);
    pinMode(motor1Pin2, OUTPUT);
    pinMode(enable1Pin, OUTPUT);
    pinMode(motor2Pin1, OUTPUT);
    pinMode(motor2Pin2, OUTPUT);
    pinMode(enable2Pin, OUTPUT);
    // sets enable1Pin and enable2Pin high so that motor can turn on:
    digitalWrite(enable1Pin, HIGH);
    digitalWrite(enable2Pin, HIGH);
    // initialize serial communication at 9600 bits per second:
    Serial.begin(9600);
}

void loop() {
    //if some date is sent, reads it and saves in state
    if(Serial.available() > 0){     
      state = Serial.read();   
      flag=0;
    }   
    // if the state is 'F' the DC motor will go forward
    if (state == 'F') {
        digitalWrite(motor1Pin1, HIGH);
        digitalWrite(motor1Pin2, LOW); 
        digitalWrite(motor2Pin1, LOW);
        digitalWrite(motor2Pin2, HIGH);
        if(flag == 0){
          Serial.println("Go Forward!");
          flag=1;
        }
    }
    
    // if the state is 'R' the motor will turn left
    else if (state == 'R') {
        digitalWrite(motor1Pin1, HIGH); 
        digitalWrite(motor1Pin2, LOW); 
        digitalWrite(motor2Pin1, LOW);
        digitalWrite(motor2Pin2, LOW);
        if(flag == 0){
          Serial.println("Turn LEFT");
          flag=1;
        }
        delay(1500);
        state=3;
        stateStop=1;
    }
    // if the state is 'S' the motor will Stop
    else if (state == 'S' || stateStop == 1) {
        digitalWrite(motor1Pin1, LOW); 
        digitalWrite(motor1Pin2, LOW); 
        digitalWrite(motor2Pin1, LOW);
        digitalWrite(motor2Pin2, LOW);
        if(flag == 0){
          Serial.println("STOP!");
          flag=1;
        }
        stateStop=0;
    }
    // if the state is 'L' the motor will turn right
    else if (state == 'L') {
        digitalWrite(motor1Pin1, LOW); 
        digitalWrite(motor1Pin2, LOW); 
        digitalWrite(motor2Pin1, LOW);
        digitalWrite(motor2Pin2, HIGH);
        if(flag == 0){
          Serial.println("Turn RIGHT");
          flag=1;
        }
        delay(1500);
        state=3;
        stateStop=1;
    }
    // if the state is 'B' the motor will Reverse
    else if (state == 'B') {
        digitalWrite(motor1Pin1, LOW); 
        digitalWrite(motor1Pin2, HIGH);
        digitalWrite(motor2Pin1, HIGH);
        digitalWrite(motor2Pin2, LOW);
        if(flag == 0){
          Serial.println("Reverse!");
          flag=1;
        }
    }
    //For debugging purpose
    //Serial.println(state);
}

Afficher le code brut

Noter: avant de télécharger le code, assurez-vous que les broches TX et RX sont déconnectées du module Bluetooth !

Pièces requises

les pièces

Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

1642719608 250 Arduino Controlez 2 moteurs CC via Bluetooth

Schémas

Suivez le schéma de principe de la figure suivante pour câbler votre circuit.

Schémas du moteur à courant continu

cc

Lancement de votre application

Si vous n’avez pas généré le fichier .apk lors d’une étape précédente, vous pouvez cliquez ici pour télécharger le fichier .apk (qui est le fichier d’installation de l’application Android). Déplacez ce fichier sur votre smartphone et ouvrez-le. Suivez l’assistant d’installation pour installer l’application.

Activez le Bluetooth de votre smartphone.

Appuyez sur l’application nouvellement installée. Appuyez sur le bouton « Connecter » pour connecter votre application à votre module Arduino Bluetooth.

Maintenant, vous pouvez facilement contrôler les 2 moteurs à courant continu avec votre application :

1642719609 942 Arduino Controlez 2 moteurs CC via Bluetooth

Regardez cette vidéo de démonstration

YouTube video

Dépannage:

  • Retirez les câbles RX et TX lorsque vous téléchargez un nouveau croquis sur votre carte Arduino
  • Les gens connectent souvent le TX du module Bluetooth au TX de l’Arduino, cela ne fonctionnera pas. Assurez-vous de vous connecter : TX va à RX et RX va à TX.
  • Si le module bluetooth HC-04/HC-06&HC-05 demande un mot de passe, c’est ‘1234’.

Conclusion

J’espère que vous avez trouvé cela utile.

Connaissez-vous un ami qui aimerait voir ce projet? Assurez-vous de partager ce projet avec votre ami!

Voulez-vous en savoir plus sur la création d’applications pour Arduino ? Accédez à notre cours : Applications Android pour Arduino avec MIT App Inventor 2.

Merci d’avoir lu,

Rui

PS Si vous n’avez pas de module Bluetooth, lisez mon avis sur le HC-05 ici.