Bonjour à tous, je travaille actuellement sur un robot commandé à distance par une application mobile Android.
J'ai développé cette application avec Android Studio. Je peux envoyer des données que je récupère dans mon programme Arduino :
#include <SoftwareSerial.h> //Librairie pour communication série
#define RxD 7
#define TxD 6
#define DEBUG_ENABLED 1
SoftwareSerial blueToothSerial(RxD,TxD); //Définition des pins RxD et TxD de la liaison série voulu
void setup(){
Serial.begin(115200); //Initialisation de liaison série entre l'ordinateur et l'Arduino (moniteur) à 115200 bits/seconde
pinMode(RxD, INPUT); //RxD -> entrée (R = receive)
pinMode(TxD, OUTPUT); //TxD -> sortie (T = transmission)
setupBlueToothConnection(); //Configuration module Bluetooth
blueToothSerial.setTimeout(60);
}
void loop(){
String msg;
while(1){
if(blueToothSerial.available()) {
msg = blueToothSerial.readString();
Serial.println("Ordre: " + msg);
if(msg.length() >= 5 && msg.substring(0,1) == "1"){
if(msg.substring(1,3) == "m1"){
Serial.println("Avant");
digitalWrite(sens , HIGH);
digitalWrite(frein, LOW);
vit = msg.substring(3,6).toInt();
analogWrite(vitesse, vit);
}else if(msg.substring(1,3) == "m0"){
Serial.println("Arret");
digitalWrite(frein, HIGH);
analogWrite(vitesse, 0);
}else if(msg.substring(1,3) == "m2"){
Serial.println("derriere");
digitalWrite(sens , LOW);
digitalWrite(frein, LOW);
vit = msg.substring(3,6).toInt();
analogWrite(vitesse, vit);
}else if(msg.substring(1,3) == "d1"){
blueToothSerial.write(dist_cm);
}
}
}
}
void setupBlueToothConnection()
{
blueToothSerial.begin(57600);
blueToothSerial.print("AT");
delay(400);
blueToothSerial.print("AT+NAMERobotino");
delay(400);
blueToothSerial.print("AT+UART701");
delay(400);
blueToothSerial.print("AT+AUTH1");
delay(400);
blueToothSerial.flush();
}
Je peux donc grâce à ce programme piloter le robot... Mais mon problème et de recevoir des données. Mon robot est équipé d'un capteur de distance, une distance que je veux pouvoir afficher sur mon application. Mais je sais pas comment faire.. Pour envoyer les données via Arduino j'utilise ce code :
Malheureusement je n'ais aucune idée de comment faire pour pouvoir récupérer cette valeur dans le programme Java de l'application... Merci d'avance de vôtre aide.
- Edité par MaxSliw 16 mai 2016 à 16:59:42
Un robot Arduino ? Capteur infra-rouge, 4 moteurs et une caméra ?! piloter sur une application mobile ?!!!!
Je déterre également le topic, cette fois-ci plusieurs mois après, je cherche également à récupérer des valeurs mesurées par des capteurs depuis la plateforme Arduino vers Android Studio et peine à avancer, quelqu'un aurait-il une solution depuis ?
Pour recevoir des données par bluetooth avec android studio j'utilise un InputStream avec un BluetoothSocket voici un exemple:
//create new class for connect thread
private class ConnectedThread extends Thread {
private final InputStream mmInStream;
private final OutputStream mmOutStream;
// creation of the connect thread
ConnectedThread(BluetoothSocket socket) {
Log.i("TAG", "ConnectedThread");
InputStream tmpIn = null;
OutputStream tmpOut = null;
try {
//Create I/O streams for connection
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void run() {
byte[] buffer = new byte[5000];
int bytes;
// Keep looping to listen for received messages
while (true) {
try {
bytes = mmInStream.read(buffer);
String readMessage = new String(buffer);
Log.i("TAG", "Bytes: " + bytes);
// Log readMessage
Log.i("TAG", "run, readMessage => " + readMessage);
} catch (IOException e) {
isConnected = false;
showDefautNotif("Service non connecté...", false, false);
break;
}
}
}
//write method
public void write(String input) {
byte[] msgBuffer = input.getBytes(); //converts entered String into bytes
try {
mmOutStream.write(msgBuffer); //write bytes over BT connection via outstream
} catch (IOException e) {
}
}
}
les données sont recuperer dans la boucle "void run()" et afficher dans un Log.i mais pour recevoir plus de 15 charactere sa ne marche pas et je ne sais pas pourquoi.
- Edité par swiftapp 31 mai 2020 à 15:08:49
Android Studio Envoie/Réception par Bluetooth
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.