commande un arduino depuis le pc en bluethooth

Bonjour,
j'ai vu comment commander un arduino depuis un android via une commande bluethoot via un hc 06 mais peut on faire la même chose depuis un pc (windows )?
exemple
je clic sur mon pc et j'allume un LED (communication par bluthooth via lhc 06)
cordialement
Alain

C'est faisable sans pb il vous faut bien sûr Bluetooth sur votre pc Visible en mode port série, une application sur le PC (ou juste un terminal ouvert sur le port série BT) et vous échangez des données comme cela

merci pour cette reponse rapide
je debute dans le domaine , connaissez vous des tuto des liens des exemples) qui m'aiderai à avoir un peu plus de precision .
(le bluethooth integre au pc permet il de faire ça ? (comment le verifier ) , faut il une clé bluethooth ?
pour vous donner une idée de mon niveau
pour l'instant j'apprends a utiliser un hc 06 avec mon android pour allumer une led .
cordialement
Alain

Pas de soucis - on a tous démarré un jour!

Commencez jeter un œil par ici

En pratique si votre pc a déjà le BT il faut effectuer l'appairage avec votre composant connecté à l'Arduino, puis ouvrir un émulateur de terminal, sélectionner le driver port série BT (sur PC le COM port en émission) et puis voilà, ce que vous tapez dans le terminal part vers votre récepteur BT et est présenté sur le port série (souvent Software Serial) de votre arduino (sur PC la réponse de l'Arduino arrive sur un autre COM port)

Bonjour,

J'ai fait l'éssais avec un bluetooth intégré su un PC et ça fonctionne.

En fait pour un l'ARDUINO le bluetooth est transparent. Si tu regarde sur le tuto :
ici
de l'hc 06, toute la configuration se fait par commandes AT. Elle servent à configurer le module. L'apérarage du module se fera côté PC. Ensuite il se comportera comme une comunication série traditionnel.

Par contre sur mon PC, il crée deux ports COM virtuels, un pour l'émission et un pour la réception.

J'utilise PROCESSING pour créer des interfaces graphiques sur le PC et il détecte la communication comme une liaison série.

merci pour ces info ,
je vais regarder tout ça .
j'ai déjà utilisé processing pour commander un train miniature en infrarouge

cordialement
Alain

Re bonjour,

Sur le robot mBot, sur lequel je travailles pour des élèves, le module bluetooth est le même (hc06).
Je pilote ce robot avec mon ordinateur, via processing. Je donnes le code, ça peut, peut être t'aider pour faire une interface.
Je ne suis pas informaticien d'origine, alors les commentaires sont parfois un peu simpliste.

Je n'ai pas encore regardé la réception, mais j'y travailles pour la réception du capteur à ultra-son, qui s'affichera sur l'ordinateur.

Code ARDUINO :

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
//Bibliothèque du robot mBot
#include <MeMCore.h>
//Variables du mBot en rapport avec la bibliothèque
MeRGBLed led(PORT_7);
MeDCMotor motorG(M1);
MeDCMotor motorD(M2);

//Variables de réception de la liaison série/Bluetooth
String inputString = "";         // une chaine de caractère pour sauvegarder les données entrante
boolean stringComplete = false;  // Signale la fin de trame (chaine de caractère) envoyée

void setup()
{
  //Configuration de la liaison série
  //Par défaut la vitesse de transmission du port série pour le Bluetooth est de 115200 Bauds
    Serial.begin(115200);
  //Envoie d'un message
    Serial.println("arret");
}

void loop(){
    
if (stringComplete) //Si la trame recue est complère
 {
     
  if(inputString=="A") // Si le message recu est "A", alors le robot avance
  {
     motorD.run(200);//moteur droit
     motorG.run(-200);//moteur gauche
     led.setColorAt(1, 255, 0, 0); //Préparer la LED RGB en Rouge
     led.show();  //Allumer la LED RGB en Rouge
     Serial.println("avance");
  }
  if(inputString=="R") // Si le message recu est "R", alors le robot Recule
  {
      motorD.run(-200);//moteur droit
      motorG.run(200);//moteur gauche
      led.setColorAt(1, 0, 255, 0); //Préparer la LED RGB en Vert
      led.show(); //Allumer la LED RGB en Vert
  }
   if(inputString=="D") // Si le message recu est "D", alors le robot tourne à droite
  {
      motorD.run(-200);//moteur droit
      motorG.run(-200);//moteur gauche
      led.setColorAt(1, 0, 0, 255); //Préparer la LED RGB en Bleu
      led.show(); //Allumer la LED RGB en Bleu
  }
   if(inputString=="G") // Si le message recu est "G", alors le robot tourne à gauche
  {
      motorD.run(200);//moteur droit
      motorG.run(200);//moteur gauche
      led.setColorAt(1, 255, 255, 255); //Préparer la LED RGB en Blanc
      led.show();  //Allumer la LED RGB en Blanc
  }
  if(inputString=="S") // Si le message recu est "S", alors le robot se stoppe
  {
      motorD.stop();//moteur droit
      motorG.stop();//moteur gauche
      led.setColorAt(1, 0, 0, 0);//Préparer la LED RGB pour l'éteindre
      led.show(); //Eteindre la LED RGB
  }
    // clear the string:
    inputString = ""; //Initialiser la variable d'enregistrement de la trame
    stringComplete = false; //Initialiser la variable de détection de réception d'une trame complète
    }
  }
void serialEvent()
{
  
    // Réception d'un caractère sur le port série
    char inChar = (char)Serial.read(); //Sauvegarde du caractère recu
    // Détection si le caractère recu est le caractère de fin de trame ('\n' --> saut de ligne)
    if (inChar == '\n') 
    {
      stringComplete = true;  //Si fin de trame, on informe que la trame est complète
    }
    else
    {
      inputString += inChar; //Sinon on ajoute le caractère recu à la trame déjà enregistrée
    }
}

Code Processing

//Partie importation de librairie (si besoin)
import processing.serial.*;
import controlP5.*;


ControlP5 cp5;
//Partie déclaration de variables(si besoin)
Serial ARDUINO;    // Le port serie s appelera ARDUINO
String ChaineRecue=""; //Variable de sauvegarde des données recues

void settings()
{
  size(800,400);
}

void setup() 
{
 printArray(Serial.list()); //Affichage dans la console des port COM disponible
  ARDUINO = new Serial(this, Serial.list()[0], 115200); //Choix du premier port COM (0) à la vitesse 115200 Bauds
  ARDUINO.bufferUntil('\n') ; //Configuration du Buffer du port série (COM) qui enregistre une trame jusqu'au caractère de saut de ligne ('\n')

cp5 = new ControlP5(this); //Création d'un nouvelle objet lié à la bibliothèque ControlP5

cp5.setBroadcast(false) ; // désactive temporairement les événements
//Bouton gauche
PImage[] imgG = {loadImage("gaucheB.png"),loadImage("gaucheV.png"),loadImage("gaucheR.png")};
  cp5.addButton("Gauche")
     .setValue(0)
     .setPosition(250,150)
     .setImages(imgG)
     .updateSize()
     ;
//Bouton droite
PImage[] imgD = {loadImage("droiteB.png"),loadImage("droiteV.png"),loadImage("droiteR.png")};
  cp5.addButton("Droite")
     .setValue(0)
     .setPosition(450,150)
     .setImages(imgD)
     .updateSize()
     ;
     
//Bouton avance
PImage[] imgA = {loadImage("avanceB.png"),loadImage("avanceV.png"),loadImage("avanceR.png")};
  cp5.addButton("Avance")
     .setValue(0)
     .setPosition(350,50)
     .setImages(imgA)
     .updateSize()
     ;
     
//Bouton recul
PImage[] imgR = {loadImage("reculB.png"),loadImage("reculV.png"),loadImage("reculR.png")};
  cp5.addButton("Recul")
     .setValue(0)
     .setPosition(350,250)
     .setImages(imgR)
     .updateSize()
     ;

 //Bouton Stop
PImage[] imgS = {loadImage("stopB.png"),loadImage("stopV.png"),loadImage("stopR.png")};
  cp5.addButton("Stop")
     .setValue(0)
     .setPosition(350,150)
     .setImages(imgS)
     .updateSize()
     ;
     
cp5.setBroadcast(true) ; // active les événements
}

void draw()
{
  background(#B7A6A6);   
}


public void Gauche(int theValue) 
{
  println("Gauche");
  //Ecriture sur sur le port série de la lettre "G" et du saut de ligne ('\n') 
  ARDUINO.write("G");
  ARDUINO.write('\n');
  
}
public void Droite(int theValue) 
{
  println("Droite");
  //Ecriture sur sur le port série de la lettre "D" et du saut de ligne ('\n') 
  ARDUINO.write("D");
  ARDUINO.write('\n');
 
}
public void Avance(int theValue) 
{
  println("Avance");
  //Ecriture sur sur le port série de la lettre "A" et du saut de ligne ('\n') 
  ARDUINO.write("A");
  ARDUINO.write('\n');
 
}
public void Recul(int theValue) 
{
  println("Recul");
  //Ecriture sur sur le port série de la lettre "R" et du saut de ligne ('\n') 
  ARDUINO.write("R");
  ARDUINO.write('\n');
 
}
public void Stop(int theValue) 
{
  println("Stop");
  //Ecriture sur sur le port série de la lettre "S" et du saut de ligne ('\n') 
  ARDUINO.write("S");
  ARDUINO.write('\n');
 
}

J'ai ajouté dans processing une fonction pour un pilotage du Robot par clavier :

void keyPressed()
{
  if (keyCode==UP)
  {
    ARDUINO.write("A");
    ARDUINO.write('\n');
  }
  if (keyCode==DOWN)
  {
    ARDUINO.write("R");
    ARDUINO.write('\n');
  }
  if (keyCode==LEFT)
  {
    ARDUINO.write("G");
    ARDUINO.write('\n');
  }
  if (keyCode==RIGHT)
  {
    ARDUINO.write("D");
    ARDUINO.write('\n');
  }
  if (key=='s')
  {
    ARDUINO.write("S");
    ARDUINO.write('\n');
  }
}

Voilà, le code vaut ce qu'il vaut, mais ça marche. Je penses qu'il est a mélioré.

Bonne journée et bonne fête de fin d'année.