Projet voiture RC

Bonjour à tous.

J'ai vue de nombreux sujet qui parle de ces type de projet. mais ne trouve pas de réponse a mon problème.

Je suis père e famille de deux petits garçons. Il y a quelque temps, j’ai trouvé une voiture radio commandé électrique sans commande. J’avais dans un carton une carte similaire a une arduino uno r3 marque chinoise. Après avoir vue plusieurs tutos j’avais acheté quelque élément électronique tel un ESC, un servo SG90 et une hc05. Car je voulais le piloter via un vieux smartphone androïde compatible BTH

Je me suis remis sur le petit projet, il y a quelques jours et je block. Je ne comprends pas mon problème.

Si je tourne, pas de problème à première vue. Je tourne à droite et à gauche. Dans l’application que j’ai trouvée, Arduino Bth contoler. Si je n’appuie pas sur droite ou gauche, je demande à centrer mon servo.
Puis perte de connexion Bth après un certain temps.

Si j’accélère ou recule, là aussi pas l’impression d’avoir de problème. Ici aussi si je n’appuie pas sur avancer ou reculer, je demande l’arrêt. Mais là encore perte de connexion après un certain temps

Si je viens à tourner et accéléré je perds direct (1min maxi) la connexion Bth.
J’ai hier mis des résistances comme sur les exemples avec la hc05. pensans que cela alait resoure le problème. Même problème, je ne comprends pas.

j'ai fais plusieurs essais, visible dans le programme si dessous. tous le même problème.

#include <Servo.h>
#include <SoftwareSerial.h>

SoftwareSerial HC05(2, 3);     // (TXD, RXD) du HC-05

Servo myServo;                       // déclaration servo direction
Servo ESC;                               // déclaration servo moteur 

int val = 0;

void setup()
{

Serial.begin(9600);                           //  liaison série avec pc
HC05.begin(9600);                           // liaison série avec module hc05

myServo.attach(9);                         // broche de raccordement servo
myServo.write(90);                        // demande de ce mettre au centre

ESC.attach(7, 1000, 2000);          
}

void loop()
{

// code test 1 case (test beuthoo remplacer Serial par HC05)
if (HC05.available()) {
int BT_input = HC05.read();
  HC05.write((char) BT_input);
    switch (BT_input) {
      case 'L':                        // tourner a gauche
        myServo.write(150);   // position angle servo
        break;
      case 'C':                          //centré servo
        myServo.write(90);     // position angle servo
        break;
      case 'R':                           // tourner a droite
        myServo.write(30);     // position angle servo
        break;
     val= map(val, 0, 510, -90, 90);
      case 'F':
       ESC.write(20); //carret = av
        break;
      case 'S': //croix = stop
       ESC.write(90);
        break;
      case 'B': //cercle = ar
       ESC.write(110);
        break;

      }  
      /*
// code test 2 if (test beuthoo remplacer Serial par HC05)
if (Serial.available()) 
{
char commande = Serial.read(); // on lit

      if(commande == 'L'){
        myServo.write(0);
      }
       else if(commande == 'C'){
        myServo.write(90);
       }
        
       if(commande == 'R')
          {
            myServo.write(180);
            }
       else if(commande == 'C')
        {
          myServo.write(90);
          }
        
      
      if(commande == 'F')
      {
          ESC.write(00); //carret = av
          }
      else if(commande == 'S') //croix = stop
      {
        ESC.write(90);
        }
      if(commande == 'B') //cercle = ar
      {
        ESC.write(180);
        }
      else if(commande == 'S') //croix = stop
      {
        ESC.write(90);
       
         
// code test 2 if (test beuthoo remplacer Serial par HC05)
if (HC05.available()) 
{
char commande = HC05.read(); // on lit

      if(commande == 'L'){
        myServo.write(10);
      }
       else if(commande == 'C'){
        myServo.write(90);
       }
        
       if(commande == 'R')
          {
            myServo.write(180);
            }
       else if(commande == 'C')
        {
          myServo.write(90);
          }
        
      
      if(commande == 'F')
      {
          ESC.write(00); //carret = av
          }
      else if(commande == 'S') //croix = stop
      {
        ESC.write(90);
        }
      if(commande == 'B') //cercle = ar
      {
        ESC.write(180);
        }
      else if(commande == 'S') //croix = stop
      {
        ESC.write(90);
        }
        */
      
    }
}
        

voici la photo de mon montage

Merci par avance pour vos réponses.

Fixez le HC-12 à un connecteur fixe.

Bonjour à toi et bienvenue sur le Forum.

Un forum sert aussi je pense à permettre à tous d'acquérir de nouvelles connaissances.

Toi de ton côté, pour essayer de résoudre ton probléme, tu a fais de recherches, trouvé de matériel, connecté ce matériel ensemble et obtenu certains résultats.

Et j'espére que tout cela n'est pas le fruit du hasard.

Mais comme cela ne marche pas comme tu le souhaite, tu viens nous exposer ton probléme pour que l'on t'aide.
Pas de probléme à ce sujet.

Et moi par exemple, par curiosité personnelle, pour apprendre des trucs nouveaux pour moi, et apporter mon aide si je peux, j'essaye de lire (décoder) ton projet.

Mais desolé, ta photo de l'interconnexions des composants est illisible pour moi.

Elle est un peu comme un message SOS posé dans l'urgence avec les moyens du bord.

On n'est pas dans l'urgence d'un SOS, J'aurais préféré STP un schéma, même à main levée, précis des interconnexions entre HC05 et Arduino, Arduino ESC, ESC moteurs, distribution des alims.

Un schémas que tout le monde pourrait comprendre et réutiliser.

Les signaux RX, TX du HC05 sont en 3.3V
Les Entrées/Sorties de l'Arduino en 5V
Ceux d E/S de ESC sont en ...?

Comment as tu adapté ces signaux entre eux?

Ça ne se voit pas sur la photo!

Tu nous fais un schéma STP?

Bonjour juanjx

Est tu sûre que ce n'est pas du au redémarrage de ton Arduino, du fait d'une alimentation inadaptée ou instable?

Est-ce-que la LED du HC-05, se remet à clignoter ?

Comment est alimenté ton montage?

As tu un moyen de "voir" quand l'Arduino démarre ou redémarre, comme une LED qui s'allume 1 seconde?

Ajoutes ce bout de programme dans Setup():

pinMode(13, OUTPUT);
for (int i = 0; i < 3; i ++)
{
		digitalWrite(13, HIGH);
		delay(500);
		digitalWrite(13, LOW);
		delay(500);
}

La LED L du UNO
image
clignote 3 fois au démarrage du UNO. Tu pourra, ainsi, visualiser les démarrages et redémarrages.

Si tu as des condensateurs de quelques dizaines de uF, mets en un entre le +5V et le GND de l'Arduino et de même sur la plaque du HC-05.

A+
Cordialement
jpbbricole

pour ce type de projet vous pourriez envisager aussi une télécommande PS2. La partie radio, émission des commandes, réceptions des commandes tout cela est géré pour vous et vos enfants ont un truc "érgonomique" à tenir dans les mains pour piloter la voiture. On en trouve pour pas cher sur Ali Express par exemple.

j'avais posté un tuto sur ce thème:

1.manette.png

Bonjour

Merci pour vos réponses.

voici le schema

Pour le code, je le test ce week end et modifierai ce commentaire.

Pour la manette je n'y avais pas pansé merci.

Hello,

Pour le module HC05, je lis

Alimente le avec le 5V et non le 3.3V de ton Arduino, il fonctionnera mieux.

Je ne suis pas certain que tous les modules HC05 soient équipés d'un régulateur de tension, donc prudence.


Le pont diviseur est "à l'envers". La résistance de 1kΩ devrait être coté UNO et non coté HC05

Pas faux, celui que j'utilise ressemble à celui que @juanjx a mis en photo, et fonctionne en 5V mais pas en 3.3V.

Maintenant, avec les clônes et versions multiples de HC05, qui est qui?

Bonjour

Le pont diviseur est "à l'envers". La résistance de 1kΩ devrait être coté UNO et non coté HC05

je ne suis pas sur de comprendre. Ou dois je mettre ma résistance. j'ai refais ce câblage.

je me suis mis sur le 5 v, derrière le module il y a bien marqué 3.6--6V .
Je peux allé a droite ou a gauche plusieurs fois, ras.
Mais quand je veux avancer ou reculer, la commande passe bien mai apres cela je ne peux plus rien faire et la connexion ce coupe. Le hc05 se remet a clignoté,
Sur la carte chinoise uno, j'ai bien une led. elle clignote bien au démarrage. Quand mon problème arrive elle est toujours allumé.

j'ai mis le code, je ne vois pas de différence j'ai branché l'esc sur la pin 13 apres avoir brancher le servo jai bien es roue qui on a droite a gauche.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.