Partage
  • Partager sur Facebook
  • Partager sur Twitter

Relier un module arduino et module bluetooth?

    4 avril 2013 à 15:22:54

    Bonjour le monde,

    Alors en fait je cherche à réaliser une liaison entre un arduido LilyPad 328 et mon smartphone via un Module hybride Bluetooth "F2M03GXA". Cependant malgré la possession de toutes les datasheets et des protocoles, je n'ai pas réussi à le faire. En fait je veux réaliser une liaison entre un plaque à 6 boutons et l'arduino puis le module bluetooth et enfin le téléphone afin de gérer la musique du téléphone.

    Merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      4 avril 2013 à 15:44:04

      J'ai rapidement regarder la datasheet, alors faut alimenter le module en 3.3V et le plus simple semble de communiquer via la liaison serie. Par contre au niveau de cette liaison serie il te faut des level shifters pour passer de 5V a 3.3V et inversement qui doivent en plus etre inverseurs (actif a l'etat bas cote module BT et a l'etat haut cote arduino).
      • Partager sur Facebook
      • Partager sur Twitter
        5 avril 2013 à 20:46:24

        Merci de ta réponse déjà =)

        Ok, je veux bien utiliser la liaison série mais comment me conseilleriez vous de faire pour différencier les différents boutons?

        Thx ;)

        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2013 à 14:30:35

          Chaque bouton envoie un caractère que ton téléphone reçoit. Selon le caractère tu as le bouton.

          Du coup tu bloques :

          . Au branchement du module ?

          . A la détection du module depuis ton tel ?

          . A la communication ?

          • Partager sur Facebook
          • Partager sur Twitter
            6 avril 2013 à 21:10:37

            En fait je bloque à la communication au niveau du code.

            Thx :p

            • Partager sur Facebook
            • Partager sur Twitter
              8 avril 2013 à 13:51:35

              Ok dans ce cas, tu bloques sur l'android, pas l'arduino. 

              package com.example.minihexacontroller;
              
              import java.io.IOException;
              import java.io.InputStream;
              import java.io.OutputStream;
              import java.util.Set;
              import java.util.UUID;
              
              import android.bluetooth.BluetoothAdapter;
              import android.bluetooth.BluetoothDevice;
              import android.bluetooth.BluetoothSocket;
              import android.os.Bundle;
              import android.os.Handler;
              import android.os.Message;
              import android.util.Log;
              
              public class BtInterface
              {
                private BluetoothDevice device        = null;
                private BluetoothSocket socket        = null;
                private InputStream     receiveStream = null;
                private OutputStream    sendStream    = null;
                private ReceiverThread  processusReception;
                Handler                 statutConnexion;
              
                public BtInterface(Handler connexion, Handler manageData)
                {
                  // On r�cup�re la liste des p�riph�riques associ�s � notre appareil Android
                  Set<BluetoothDevice> setpairedDevices = BluetoothAdapter
                      .getDefaultAdapter().getBondedDevices();
                  BluetoothDevice[] pairedDevices = (BluetoothDevice[]) setpairedDevices
                      .toArray(new BluetoothDevice[setpairedDevices.size()]);
                  for (int i = 0; i < pairedDevices.length; i++)
                  {
                    // Notre module bluetooth doit contenir le nom 'SPooky'
                    if (pairedDevices[i].getName().contains("Spooky"))
                    {
                      device = pairedDevices[i];
                      try
                      {
                        // On utilise cet UUID pour une connection s�rie
                        // On cr�� un socket bluetooth pour notre p�riph�rique
                        socket = device.createRfcommSocketToServiceRecord(UUID
                            .fromString("00001101-0000-1000-8000-00805F9B34FB"));
                        // flux de r�ception (fonctionnera d�s que la connection est �tablie)
                        receiveStream = socket.getInputStream();
                        // flux d'�mission (fonctionnera d�s que la connection est �tablie)
                        sendStream = socket.getOutputStream();
                      }
                      catch (IOException e)
                      {
                        e.printStackTrace();
                      }
                      break;
                    }
                  }
                  statutConnexion = connexion;
                  // on pr�pare le thread de r�ception des donn�es
                  processusReception = new ReceiverThread(manageData);
                }
              
                public void sendData(String data)
                {
              	sendData(data, false);
                }
              
                public void sendData(String data, boolean deleteScheduledData)
                {
                  try
                  {
                    // On �crit les donn�es dans le buffer d'envoi
                    sendStream.write(data.getBytes());
                    // On s'assure qu'elles soient bien envoy�s
                    sendStream.flush();
                  }
                  catch (IOException e)
                  {
                    e.printStackTrace();
                  }
                }
              
                public void connect()
                {
                  new Thread()
                  {
                    @Override
                    public void run()
                    {
                      try
                      {
                        // tentive de connection BUG
                        socket.connect();
                        Message msg = statutConnexion.obtainMessage();
                        msg.arg1 = 1;
                        // r�ussite de connection: envoie un msg pour afficher "Connected"
                        statutConnexion.sendMessage(msg);
                        // on d�marre le thread de r�ception des donn�es
                        processusReception.start();
                      }
                      catch (IOException e)
                      {
                        // �chec de la connection
                        Log.v("N", "Connection Failed : " + e.getMessage());
                        e.printStackTrace();
                      }
                    }
                  }.start();
                }
              
                public void close()
                {
                  new Thread()
                  {
                    @Override
                    public void run()
                    {
                      try
                      {
                        // tentive de connection
                        socket.close();
                        Message msg = statutConnexion.obtainMessage();
                        msg.arg1 = 2;
                        // r�ussite de connection: envoie un msg pour afficher "DisConnected"
                        statutConnexion.sendMessage(msg);
                      }
                      catch (IOException e)
                      {
                        // �chec de la connection
                        Log.v("N", "Connection Failed : " + e.getMessage());
                        e.printStackTrace();
                      }
                    }
                  }.start();
                }
              
                public BluetoothDevice getDevice()
                {
                  return device;
                }
              
                private class ReceiverThread extends Thread
                {
                  // Thread qui re�oit les donn�es re�ues par le module BT
                  Handler handler;
              
                  ReceiverThread(Handler h)
                  {
                    handler = h;
                  }
              
                  @Override
                  public void run()
                  {
                    while (true)
                    {
                      try
                      {
                        // si il y a des donnees sur le canal de reception	
                        if (receiveStream.available() > 0)
                        {
                      	// tableau d'octets de 100 cases  
                          byte buffer[] = new byte[100];
                          // on stocke les donnees dans le tableau, k prend la valeur du nb de cases remplies
                          int k = receiveStream.read(buffer, 0, 100);
                          // si il y a des donnes
                          if (k > 0)
                          {
                            // tableau d'octet qui a pour longueur le nombre de case de "buffer"
                            byte rawdata[] = new byte[k];
                            // chaque donnee de "buffer" est stockee dans "rawdata"
                            for (int i = 0; i < k; i++)
                              rawdata[i] = buffer[i];
                            // on convertit "rawdata" en chaine de caracteres
                            String data = new String(rawdata);
                            // on recupere le "Message" du handler
                            Message msg = handler.obtainMessage();
                            // creation d'une variable transmissible dans le "Message"
                            Bundle b = new Bundle();
                            // on stocke les donnees que l'on appelle "receivedData" qui remplace les anciennes
                            b.putString("receivedData", data);
                            // on edite le "Message" avec le bundle cree et complete
                            msg.setData(b);
                            // envoie du message au SerieBTActivity pour qu'il affiche les
                            // donn�es de r�ception � l'�cran ( gestionDonnees )
                            handler.sendMessage(msg);
                          }
                        }
                      }
                      catch (IOException e)
                      {
                        e.printStackTrace();
                      }
                    }
                  }
                }
              }

              Du coup pour l'utiliser, il suffit juste de déclarer un objet BtInterface, bt.connect(); pour ce connecter, bt.sendData("aEnvoyer");

              • Partager sur Facebook
              • Partager sur Twitter
                13 avril 2013 à 19:41:10

                Waouh ok merci :p Je testerais quand j'aurais le composant ^^ Mais est ce que vous savez s'il existe un logiciel pour simuler (style isis ou schematics) mais avec des modules bleutooth ? :)
                • Partager sur Facebook
                • Partager sur Twitter

                Relier un module arduino et module 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.
                • Editeur
                • Markdown