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.