Translate

samedi 13 juillet 2013

Commande Bluetooth et Android




Contrairement aux modules RF433Mhz évoqué dans un autre sujet, le module Bluetooth peut dialoguer dans les deux sens. Ici nous allons l'utiliser pour communiquer avec des appareils sous Android.
Les spécifications matérielles sont les suivantes

    Sensibilité typique-80dBm
    Jusqu'à +4 dBm puissance d'émission RF
    Portée environ 30m en champ libre et 10m dans une maison (pour ma part j'ai testé en intérieur
     et  n'ai a part un ralentissement pas eu de soucis dans ma maison de 3 étages)
    Antenne PCB intégrée.

Il s'agit d'un appareil à 3,3 volts  que je fais fonctionner en 5V!!!!!

Je vais tenter de vous proposer un code simple que vous pourrez aisément adapter a vos applications.

Ce montage vas vous permettre dans un premier temps  de contrôler des sortie d'une carte Arduino avec un téléphone mobile ou une tablette sous Android qui dispose d'une connectivité Bluetooth. Et de pouvoir lire l'état de ces sortie sur l'écran de l'appareil utilisé.
Pour cela j'utilise une application de terminal sur le périphérique Android, dans cet  exemple il s'agit de "BlueTerm" qui peut être téléchargé à partir de Google Play



1 Téléphone sous Android
1 Carte Arduino Unoa trouver ici  http://cgi.ebay.fr/Official-Arduino-UNO-Rev3
1 Carte Bluetooth a trouver ici  http://www.ebay.fr/itm/Arduino-Wireless-Bluetooth
 Les liens que je met ne sont que des exemples et font parti des sites que j'ai trouvé les moins chers


Le module Bluetooth






Câblage du module bluetooth






RX se câble sur TX (borne 0) de l'arduino et TX sur RX de l' arduino (borne 1)




Le câblage

Encore une fois, c'est très simple.





Lors de la programmation de l' Arduino, il faudra veiller a débrancher les connexions RX et TX sinon il y a conflit entre la communication USB et Bluetooth ce qui génère un plantage du logiciel Arduino.

Le Sketch:

ICI



Une petite vidéo de démonstration.






Si cela vous intéresse, je suis en mesure de vous faire un kit ou même vous réaliser ce montage !!!
N'hésitez pas a me contacter.

19 commentaires:

  1. bravo Jojo pour ce montage bluetooth efficace et qui fonctionne du premier coup. merci encore pour ton partage !
    marc de nice

    RépondreSupprimer
    Réponses
    1. Salut Marc,

      Merci!
      Apparemment tu test quelques montages!! C'est cool merci pour le retour que tu fais sur le blog
      A+
      Jojo

      Supprimer
  2. jojo je te remercie pour tout tes projet , je suis un fan de toi , j'ai que 16 et je veux voire mon avenir plus loin svp ne t'arrête jamais tes tuto , veux-tu m'aider ??

    ,merci

    RépondreSupprimer
    Réponses
    1. Salut,

      C'est gentil merci!!
      En quoi puis je t'aider?

      A++
      Jojo

      Supprimer
  3. re
    svp je veux te parler en priver !?
    si ta un facebook ajoute moi
    voici mon lien : https://www.facebook.com/achraf.el.pp
    merci jojo

    RépondreSupprimer
  4. Bonjour,
    Félicitations pour tout votre travail et de le partager.
    Concernant le montage, il fonctionne correctement en mode console série, en mode bluthooh il se connecte avec Bluetherm mais pas de fonctionnement, j'ai inversé Tx/Rx toujours rien, est ce que Bluetherm demande une configuration speciale.
    Le montage est installé sur une carte Arduino Due.
    D'avance merci de vôtre attention et aide.
    Cordialement

    RépondreSupprimer
    Réponses
    1. Bonjour,

      Merci pour le compliment.

      Non bluetherm n'a pas besoin de config particulière par contre il me semble que sur la carte due il faut utiliser le deuxième sérial car le premier est monopolisé par la connexion série via PC ou tablette.
      Les broches sont donc 16 et 17

      Les modifications de code sont

      Serial.begin(9600);
      Serial1.begin(9600);
      }

      void loop() {

      if(Serial1.available() > 0){
      state = Serial1.read();
      flag=0;

      tous les Serial doivent être remplacé par Serial1
      A++
      Jojo

      Supprimer
    2. Bonjour,
      Effectivement j'ai testé le montage avec un Arduino Nano et tout fonctionne parfaitement, je vais donc essayer de modifier le Due.
      Peut on envisager via ce montage, modifier la valeur d'une consigne de l'Arduino, date ou autre?
      D'avance merci.
      J.V

      Supprimer
    3. Sur la due je pense que changer le port série devrait suffire.

      Oui il est possible de changer une valeur dans arduino via le bluetooth mais a un moment donné, bluetherm ne conviendra peut être plus car envoyer un A pour faire un + par exemple c'est pas top. L'idéal serait de développer une petite appli pour Androïd.
      A++
      Jojo

      Supprimer
    4. Bonjour,
      J'ai modifié la Due suivant vos indications et ça fonctionne correctement, j'ai utilisé les broches 18 et 19 pour serial1.
      Dommage pour changer de valeur, l'idée était pour un projet chauffage
      avec fil pilote avec changement de consigne et date.
      Merci de votre attention.

      Supprimer
    5. Oupss autant pour moi, en effet serial1 c'est 18 et 19.
      Je suis content que cela fonctionne!

      Concernant votre appli,ce n'est pas très compliqué je pense même qu'il y a un produit fini sur google play. Il suffit d'adapter le code bluetooth émis. En fait le programme est dans arduino pas dans l'application, l'appli ne fait qu'envoyer une info sous forme de lettre ou chiffre.

      Supprimer
  5. Merci, je vais chercher et developper mon projet car je pense avoir besoin de vos services (si possible) pour réaliser une carte spécifique aux composants, ce sera après les fêtes.
    Pour l'instant je vais me diriger vers votre montage des Leds RGB.
    Salutations.

    RépondreSupprimer
  6. Merci, à vous également bonnes fêtes.

    RépondreSupprimer
  7. Bonjour Jojo,
    Je viens de regarder ton code et te propose (pour le réduire) la modification suivante :
    A la place de :

    if (state == 'a') { // a = commande de marche led 1
    digitalWrite(Pin1, HIGH);

    Tu mets :
    if (state == 'a') { // a = commande de marche led 1
    digitalWrite(Pin1, !digitalRead(Pin1)); // Inverse l'état de Pin1

    Si ta led est allumée, elle s'éteint
    Si ta led est éteinte, elle s'allume

    Et tu fais cette manip pour toutes les touches concernées.

    RépondreSupprimer
    Réponses
    1. De cette façon, tu n'as qu'une touche pour allumer et éteindre chaque led.

      A bientôt

      Supprimer
    2. Salut,

      Oui en effet on peut simplifier le code en vérifiant l'état de la sortie, mais dans l'appli Android que j'ai développé j'avais besoin d'un bouton marche et d'un bouton arrêt pour les sorties.

      Merci pour ce tuyau qui servira surement aux lecteurs du blog.

      Supprimer
  8. En tout cas, votre blog déborde d'idée.
    Merci pour ce travail.

    RépondreSupprimer