Andruino Bluetooth

Salut à tous,

Je vous fais partager ma dernière réalisation: un Andruino Bluetooth.

A quoi ça sert?

Contrôler à partir d'une application Android, les sorties TOR et PWM mais également lire en temps réel les entrées ANALOG.

Matériel nécessaire:

  • Un Arduino
  • Un HC06 ou équivalent
  • Un téléphone ou une tablette Android

Comment l'installer?

1 - Câbler le HC06
2 - Téléverser le programme
3 - Installer l'Application Android avec le fichier apk

Détails:

Voici le lien avec la vidéo correspondante qui contient le schéma, le code et l'Application: Andruino

Merci d'avance à ceux qui me feront part des anomalies rencontrées afin de l'améliorer. :wink:

Pour info, je bosse actuellement sur la version Wifi avec l'ESP8266...

Emmessi:
Salut à tous,

Je vous fais partager ma dernière réalisation: un Andruino Bluetooth.
1 - Câbler le HC06
2 - Téléverser le programme
3 - Installer l'Application Android avec le fichier apk

Détails:

Voici le lien avec la vidéo correspondante qui contient le schéma, le code et l'Application: Andruino

Merci d'avance à ceux qui me feront part des anomalies rencontrées afin de l'améliorer. :wink:

Pour info, je bosse actuellement sur la version Wifi avec l'ESP8266...

Bonjour
Interessant, comme je dois avoir tout sous la main , je vais regarder ça plus precisemment .
Il y a une version mini concernant Androïd ?

Bonjour,
Je ne comprends pas ce que vous voulez dire par "version mini" concernant Android?

Emmessi:
Bonjour,
Je ne comprends pas ce que vous voulez dire par "version mini" concernant Android?

bonjour
la version de l'android embarqué :grin:
certains "apk" necessite une version "mini" d'android
mais j'ai testé avec 2 "vieux" samsung , un en 2.2.1 et un en 4.1.2 :grin:
ça fonctionne bien (pas testé le PWM)

une petite remarque, le delai apres avoir lancé l'appli pour selectionner le BT distant est tres(trop) court , l'appli se ferme trop rapidement si pas d'action (sur mes 2 smartphones de test)

autre remarque (meme si je comprend bien le pourquoi du choix :grin: )
l'utilisation du pin 13 pour le software serial, c'est dommage de ne pas l'avoir laissé comme sortie , comme le pin13 sur les boards arduino est souvent associé à une led inboard , ça permettrais rapidement de verifier "que tout est bien tombé en marche" :sunglasses:
mias c'est un detail

Bonjour,
Merci pour ces remarques qui sont très intéressantes!
Je vais étudier la question du délai après avoir sélectionner l'Appli parce que sur mon LG3 ça ne se produit pas du tout.
Merci encoure pour le retour! :wink:

Emmessi:
Je vais étudier la question du délai après avoir sélectionner l'Appli parce que sur mon LG3 ça ne se produit pas du tout.
Merci encoure pour le retour! :wink:

Bonsoir
Je viens de reverifier (okazoo :grin: )
J'ai a peine 3 secondes pour appuyer sur select bluetooth device et ensuite idem pour selectionner le BT , apres l'appli se ferme .

Bonjour,

J'ai des soucis pour la partie programmation avec app inventor (normal, je débute avec Ap Inventor, mais pas en programmation) de l'épisode 17 des vidéos (Arduino Ep.17 | Application Android avec le module Bluetooth HC-06 | Les Électroniciens.com), prérequis pour la réussite du projet andruino si j'ai tout suivi :
Lorsque je crée les blocs, il n'existe pas de bloc "when ListPickerBT.BeforePicking", ni de sous bloc d'action "set ListPickerBT.Elements to" (ou alors je ne les ai pas trouvés).

Du coup je ne vois pas comment programmer l'appli sur android.

Quelqu'un a-t-il une solution à mon problème, ou y a-t-il des personnes qui ont déjà été confrontées à ce souci?

Merci en tout cas pour la contribution, ça semble ouvrir plein de possibilités.

Dernière question-remarque :
La patte 13 ne semble pas utilisée par le programme proposé en dessous de la vidéo, alors que le message d'Artouste y fait clairement allusion. Le programme a-t-il évolué suite à cette remarque, ou bien je n'ai rien compris et la patte 13 est utilisée?

Cordialement,

Je me réponds:

Je ne sais toujours pas comment créer moi-même ces blocs "set ListPickerBT.Elements to" mais en récupérant directement le fichier .aia fourni dans l'archive rar de la vidéo andruino, ils y sont donc on peut modifier.

Par contre j'ai un souci avec le code andruino.ino, la conversion du nombre décimal valeurAnalog en chaîne de caractère n'est pas comprise (instruction "HC06.print(String(valeurAnalog))" que j'ai transformée en "HC06.print(valeurAnalog)") et ça marche, je peux lire les entrées.
Je suis le seul à avoir eu ce souci?

Pourtant je n'utilise pas un module HC 06 mais un dfbluetoothv3, parce que je l'ai déjà. Je n'ai strictement rien changé au code, j'ai juste désactivé le mode AT du dfbluetooth, et je l'ai alimenté en 5 V plutôt qu'en 3,3V pour le HC 06, même si le dfbluetooth semble pouvoir fonctionner en 3,3V

Bref c'est génial, je suis sur le point de pouvoir utiliser mon téléphone pour ouvrir ou fermer mon portail, du bonheur (parce que le racket des télécommandes des fabricants pour chaque automatisme, c'est vraiment pénible).

Bravo encore pour la contribution, :slight_smile:

Salut,

Pour les portails y'a beaucoup de télécommande universelle :wink: après tout dépend l'âge de ton système, j'ai justement un collègue qui m'a demandé de l'aide ce week end pour essayer de bricoler ou trouver un truc pour faire une autre télécommande de sa copropriété : je sais pas de quand ça date mais j'ai jamais vu ça et rien de chez rien sur le net, c'est du 3khz ...

Après pour ton portail ne néglige pas un point embêtant : il va falloir apparier à chaque ouverture/fermeture ... Problème du profil SPP en BT ...

Pour tes blocks il s'agit juste d'un renommage d'un listpicker.

Pour ton souci de code : oublie les String déjà. Enfin c'est pas forcément de la que vient le problème mais les String d'une part c'est foireux, d'autre part on s'en passe très très bien.

J'ai repris ton code :

/***********************************************************************/
/*                           ANDRUINO V1.0                             */
/*                                                                     */
/* Programme nécessaire au fonction de l'Application Android Andruino  */
/*                                                                     */
/*                 le 27/02/2015 par Alexandre Pailhoux                */
/*                                                                     */
/*           Schéma et App sur:  http://les-electroniciens.com         */
/***********************************************************************/
#include <SoftwareSerial.h>

SoftwareSerial HC06(13,12);

char messageRecu[100];

/***********************************************************************/
/*                              INIT                                   */
/***********************************************************************/
void setup() 
{
  HC06.begin(9600);  
  for(int i=0;i<=11;i++)
  {
    pinMode(i, OUTPUT); 
    digitalWrite(i, LOW);
  }
  
}
/***********************************************************************/
/*                         BOUCLE INFINIE                              */
/***********************************************************************/ 
void loop() 
{

if(HC06.available() {

delay(20);
memset(messageRecu,NULL,sizeof(messageRecu));

int i=0;

 while(HC06.available())  messageRecu[i++] = HC06.read();

 if (strstr(messageRecu,"D02") != NULL) digitalPin(2);
 if (strstr(messageRecu,"D03") != NULL) digitalPin(3);
 if (strstr(messageRecu,"D04") != NULL) digitalPin(4);
 if (strstr(messageRecu,"D05") != NULL) digitalPin(5);
 if (strstr(messageRecu,"D06") != NULL) digitalPin(6);

 if (strstr(messageRecu,"A0") != NULL)) analogPin(0);
 if (strstr(messageRecu,"A1") != NULL)) analogPin(1);


	}
 }
 
void digitalPin(int pin) {

   if (strstr(messageRecu,"ON") != NULL)) digitalWrite(pin,HIGH);
   else if(strstr(messageRecu,"OFF") != NULL)) digitalWrite(pin,LOW);   
   else  analogWrite(pin,getPWMValue(messageRecu));
   
} 
   
void analogPin(int pin) {

float valeurAnalog = 0;

   valeurAnalog = analogRead(pin);   
   valeurAnalog = valeurAnalog*4.8/100;
   
   char buffer[10];
   memset(buffer,NULL,sizeof(buffer));
   
   itoa(valeurAnalog,buffer,10); // a diviser par 10 sur appli
   HC06.print(buffer);
  }

byte getPWMValue(char* toParse){

    char buffer[5];

	 memset(buffer,NULL,sizeof(buffer));
	 
	 buffer[0]=toParse[3];
	 buffer[1]=toParse[4];
	 buffer[2]=toParse[5];
	 
	 return byte(atoi(buffer));
	 
}

Pas testé. Plus de String, j'ai revu la partie réception série, utilisation de fonctions pour alléger le tout, j'ai pas gérer toutes les combinaisons.

Bonjour
j'ai rencontré un problème lors du téléversement du programme dans la carte arduino :s
j'essaie d’établir une connexion via bluetooth entre l'arduino et le HC-06 pour commander mon robot mais en vain
lorsque la carte est reliée seule au pc le téléversement s'effectue sans aucun problème mais une fois je branche le HC-06 plus rien ne se passe
j'ai vérifié les ports et les bauds rate , tout est nickel
je ne sais pas ou réside exactement le problème
pourriez-vous m'aider a le résoudre ?