Aujourd’hui on va apprendre à comment utiliser appinventor et créer une application android pour commander un module bluetooth HC-05 avec un arduino.
Créer son application android facilement pour commander son arduino en bluetooth c’est la classe, je te montre donc comment commencer avec appinventor.
// Made by https://retroetgeek.com String mode = ""; String color = ""; void setup() { Serial.begin (9600); } void loop() { RetroEtGeekSerial(); //&mode:auto&color:10 //exemple de condition if( mode == "auto"){ // mon action mode = ""; } if( color == "quelquechose"){ // mon action color = ""; } } void RetroEtGeekSerial(){ if (Serial.available()){ String inputString = ""; long temps = millis(); // boucle blocage temps bandeau led /* while(millis() < temps + 1000){ if (Serial.available()){ //Serial.println("OK"); inputString = Serial.readString(); } } */ // fin boucle blocage led inputString = Serial.readString();// sans boucle blocage temps bandeau led char inputChar[inputString.length()+1] ; inputString.toCharArray(inputChar,inputString.length()+1); // lit toute les commandes separes par des & // Read each command pair char* command = strtok(inputChar, "&"); // boucle sur toutes les commandes while (command != 0) { // decoupe command en deux valeurs , separateur : // Split the command in two values char* valueCommand = strchr(command, ':'); if (valueCommand != 0) { *valueCommand = 0; ++valueCommand; // aiguillage par rapport a la valeur de command if(String(command) == "mode"){ mode = String(valueCommand) ; }else if(String(command) == "color"){ color = String(valueCommand) ; //secondHand = atoi(valueCommand); } } // Recherche une nouvelle commande separes pas un & // Find the next command in input string command = strtok(0, "&"); } delay(500); } }
Matériel Nécessaire
- 1 arduino
- 1 module bluetooth HC05
- un bandeau led WS2811
- une alimentation bandeau led
Câblage
- Vcc sur le 3,3Volt ( Brancher sur le 5V si le module ne s’allume pas )
- Gnd sur le Gnd
- RXD sur le pin 1
- TXD sur le pin 0
Attention pour chaque Téléversement du programme sur l’arduino il faut déconnecter l’alimentation du module bluetooth car ici on est connecté sur le Serial de l’arduino.
Le but de ce tuto est de créer une application android pour communiquer avec notre arduino, nous allons passer au code arduino et créer une fonction pour recevoir plusieurs informations sous forme de “requête”.
Le format des informations est le suivant “&mode:auto&color:10” ce qui correspond à mettre un type d’information suivi de sa valeur.Ici j’envoie une information “mode” avec comme valeur “auto” et j’envoie aussi une autre information “color” avec comme information “10”.
A chaque nouvelle information que je souhaite ajouter je dois utiliser un “&”, le séparateur entre le type d’information et l’information est le “:”.Si je souhaite ajouter une information comme l’intensité avec pour valeur 255 ma “requête” ressemblera à “&mode:auto&color:10&intensite:255” .
Dans le programme je commence en créant 2 variable en String qui vont contenir mes informations mode et color ( voir requête ).
Dans le setup il ne faut pas oublier d’utiliser le Serial car on va utiliser le serial de l’arduino mais on va y connecter le bluetooth dessus.
Dans la boucle loop j’appelle ma fonction RetroEtGeekSerial, c’est dans cette fonction que je vais récupérer les données envoyées.
A toi de placer cette fonction ou tu en a besoin dans ton programme.
Comment la fonction se décompose , j’ai une première condition pour savoir si la connexion est disponible avec “Serial.available”.
Je récupère les données envoyées dans le serial avec “Serial.readString()” et j’enregistre l’information dans “inputString”.
Je vais avoir une séparation d’information avec les “&” avec “strtok(inputChar, “&”)” et je vais boucler pour récupérer les commandes et les valeurs.
J’ai un autre découpage pour les “:” avec “strchr(command, ‘:’)”.
Mais la partie la plus importante qui nous intéresse est la condition de triage des données reçues, j’ai des conditions de tri pour l’information mode et color.
Ma condition ici est “if(String(command) == “mode”)” donc si l’information est mode alors j’affecte la valeur reçue dans une variable ici “mode = String(valueCommand)”.
Et pour toutes nouvelles informations supplementaire je vais devoir rajouter des “else if” et affecter l’information reçue à sa variable.
Globalement c’est tout ce qu’il y a à savoir sur le code partie arduino, si je veux rajouter des données je crée une variable “String” et je crée une nouvelle condition “else if” sans oublier de modifier la valeur de condition et d’affecter la valeur reçue à la variable désirée.
Pour la création de l’application android pour commander un arduino, j’ai utilisé appinventor, cela permet de créer rapidement et sans connaissance une application.
Je ne vais pas décrire comment faire cette application sur le blog car tout est une question de bloc, je t’invite a visualiser la vidéo pour comprendre le système de code bloc.
Avec ce programme sous android je commande une girlande led rgb adressable, c’est une guirlande WS2811.
J’ai utilisé la librairie fastled sous arduino et j’ai modifié le programme pour commander en bluetooth la guirlande.
Je te donne tous les codes arduino, android et appinventor pour que tu puisse toi aussi créer ton application et commander ton arduino.
Pour installer l’apk android je t’invite à regarder la vidéo
Télécharger:
- Serial Complexe
- Guirlande led bluetooth ws2811
- Programme android et appinventor
(MD5 zip : c6a1a58a3b0f788634629b2ef164f050 )
N’hésitez pas à poser vos questions sur les réseaux sociaux de la chaîne instagram , twitter , facebook ,youtube ; si vous ne comprenez pas certaines parties du tutoriel n’hésitez pas , me dire ce que vous aimeriez que je crée pour en faire des vidéos tutoriel et à partager les projets que vous aimeriez créer etc…
Comme toujours allez sur la page de C’est quoi Retro et Geek pour connaître tout ce que je recherche à faire sur la chaîne.
Merci les RetroGeeker et RetroGeekeuse