Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Connecter des trucs via Bluetooth / Android / Arduino

Composants et fournitures

Arduino UNO
× 1
LED (générique)
× 1

Applications et services en ligne

Arduino IDE
MIT App Inventor 2

À propos de ce projet

Un très bon réseau local (et personnel) sans fil est sans aucun doute le Bluetooth (BT). Aujourd'hui, dans notre quotidien, il est courant de nous trouver en train d'utiliser des téléphones portables, des chaînes stéréo, des appareils photo, etc., interconnectés à l'aide de la célèbre "petite lumière bleue".

Dans le monde de l'IoT et de l'automatisation en général, il est très courant de trouver des télécommandes via des téléphones portables utilisant la technologie BT. Cela est dû à deux éléments de base, mais très importants :

  • Plateformes de développement simples pour les applications ANDROID (comme MIT AppInventor2) et
  • Modules BT abordables (comme HC-06)

Dans ce tutoriel, je développerai quelques idées sur le contrôle des sorties d'Arduino via un appareil mobile afin de déplacer un robot, d'allumer des lampes sur une maison, etc.

Étape 1 :Le module Bluetooth et l'Arduino

Sur le marché, il est très courant de trouver des modules "Maître-Esclave" BT 3.0 comme le HC-05 et des "esclaves" comme le HC-06. Plus récemment, sont apparus les HC-08 et HC-10 fonctionnant avec la technologie BT 4.0 ou BLE ("Bluetooth Low Energy"). Les modules BLE sont les seuls qui peuvent être connectés à un iPhone, car malheureusement Apple ne prend pas en charge le BT 3.0.

Pour les projets discutés ici, j'utiliserai un HC-06 très populaire et bon marché (Bye, bye, iPhone ! Les androïdes sont rois ici !). Le module BT est alimenté en 5V ce qui permet de le connecter facilement à un Arduino UNO par exemple. Ses broches d'émission (Tx) et de réception (Rx) peuvent être connectées directement à l'UNO, sans avoir besoin de diviseurs de tension comme on le voit dans le cas de l'ESP8266. Habituellement, le HC-06 doit être connecté directement aux broches 0 et 1 de l'Arduino ("Série 0") :

  • HC06-Tx vers Arduino broche 0 (Rx)
  • HC06-Rx vers Arduino broche 1 (Tx)

Lors de l'utilisation des entrées "Série 0" (le seul port série HW à UNO), il est très important de se rappeler que le HC-06 peut ne pas être physiquement connecté aux broches 0 et 1 pendant le chargement du programme, car le port USB utilise également le même série. Un moyen simple de contourner ce petit problème (si votre projet n'utilise pas beaucoup de GPIO UNO) est d'utiliser un « port série SW » via la librairie SoftwareSerial. Dans notre cas ici, nous utiliserons les broches 10 et 11 de UNO (respectivement Tx, Rx).

Étape 2 :Tester et configurer le HC-06

La prochaine étape sera d'écrire un code simple afin de tester, programmer et initialiser le HC-O6 :Pour commencer, incluez le Library Software Serial, en définissant la variable "BT" sur le nouveau port série.

#include SoftwareSerial BT (10, 11) ; // RX, TXString commande =""; // Stocke la réponse de Bluetooth devicevoid setup (){ Serial.begin (9600); Serial.println ("Type de commandes AT"); BT.begin (9600); // HC-06 Habituellement débit en bauds par défaut} 

Vient ensuite le corps principal du code qui attend simplement les données provenant du BT. À leur arrivée, les données sont écrites dans le moniteur série. De même, les commandes AT peuvent être envoyées du moniteur série au module HC-06.

void loop (){ if (BT.available ()) // recevoir les données si disponibles. { while (BT.available ()) // "continuer à recevoir". { retard (10); // Délai ajouté pour rendre les choses stables char c =BT.read (); // Exécuter la commande de lecture en série + =c; // Construire la chaîne. } Serial.println (commande); commande =""; // Aucune répétition } if (Serial.available ()) { delay (10); BT.write (Serial.read ()); }} 

Une fois le programme chargé, faites quelques tests de base à l'aide du moniteur série, par exemple :

  • Envoyez "AT", le module devrait répondre "OK".
  • Demander la version du firmware :" T + VERSION ", le module doit répondre, par exemple :" linvorV1.8 ".
  • Avec HC-06 vous pouvez définir un nom pour le module par exemple :"Le T + NAMEMJRoBot_BT_HC06". Mais contrairement à d'autres modules, vous ne pouvez pas savoir quel est le nom qui est défini pour le module. Lors de l'envoi de la commande précédente, le HC-06 répond simplement :"OKsetname" .

En général, le HC-O6 est livré en standard avec le mot de passe (ou PIN) :1234. Vous pouvez en définir un nouveau avec la commande AT :

  • AT + PIN xxxx où « xxxx » sera composé de 4 chiffres.

Ci-dessous le code Arduino pour le test HC-06 :

F08H931IL8LGG7U.ino

Étape 3 : l'appareil Android

D'ACCORD! Module connecté à UNO et en marche. Il est temps de présenter l'appareil Android.

Il existe de nombreuses applications sur la boutique Google qui peuvent être utilisées. J'utiliserai une application que j'ai développée à l'aide de l'outil MIT Application2 et disponible gratuitement sur la boutique Google :MJRoBot BT Digital Analog Voice Control

L'application envoie des commandes numériques (à travers des boutons ou vocales) et des commandes analogiques pour contrôler les appareils PWM comme les servos (envoyer des données comprises entre 0 et 255).

  • Télécharger l'application
  • Accédez à la configuration de l'appareil Android et recherchez le module BT et établissez la connexion (entrez le code PIN 1234 ou tout autre défini par vous). Cela doit être fait une fois, car l'appareil conservera les données de connexion.
  • Une fois que l'appareil et le HC-06 parlent, lancez l'application. Dans un deuxième temps, lors du lancement de l'application, le module BT devrait être connecté automatiquement.
  • Sélectionnez le nom du module (dans mon cas, c'est celui avec le HC-06 à la fin).

L'application affichera alors "CONNECTED", informant qu'elle est "parée" avec le HC-06. À ce stade, testez les boutons de l'application et regardez sur votre moniteur série PC les données que l'application envoie. Par exemple, en appuyant séquentiellement sur les boutons "ON" et "OFF" pour les 4 Appareils, le résultat serait :

dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off 

Maintenant que nous avons une application pour Android qui parle avec le module BT, créons quelque chose d'utile !

Étape 4 :Contrôler les sorties Arduino.

Construisons le circuit comme indiqué ci-dessus. L'idée est d'utiliser l'application pour allumer et éteindre les LED et également contrôler leur intensité.

Connexions :

  • Périphérique 1 :"dev1on / dev1off" ==> LED Rouge ==> Broche 3 UNO
  • Périphérique 2 :"dev2on / dev2off" ==> LED Jaune ==> Broche 5 UNO
  • Périphérique 3 :"dev3on / dev3off" ==> LED Verte ==> Broche 6 UNO
  • Périphérique 4 :"dev4on / dev4off" ==> LED Bleu ==> Broche 9 UNO

C'est-à-dire que pour déclencher le bouton "ON" lié au bouton "Device 1", le message texte "dev1on" sera envoyé à l'Arduino. A la réception de ce message, la LED rouge doit s'allumer et ainsi de suite.

Notez que les 4 broches sont les broches capables de générer du PWM (toutes les broches numériques UNO ne peuvent pas le faire. Recherchez celles du marché avec « ~ ”. Ceci est important pour l'utilisation de "curseurs" sur l'application, pour envoyer des données numériques pour contrôler l'intensité des LED via PWM :

  • Dev A0 :"r/0-255" ==> LED Rouge ==> Broche 3 UNO
  • Dev A1 :"y/0-255" ==> LED Jaune ==> Broche 5 UNO
  • Dev A2 :"g/0-255" ==> LED Verte ==> Broche 6 UNO
  • Dev A3 :"b/0-255" ==> LED Bleu ==> Broche 9 UNO

Dans le cas des curseurs, avant la valeur des données PWM (0 à 255), un caractère est envoyé à l'Arduino pour l'informer qu'une commande "slider" arrive.

Dans la vidéo ci-dessous, une démonstration de la partie du programme ci-dessus (Boutons &Curseur) :

Ci-dessous le code Arduino complet :

FA44NBUIL8LGGAY.ino

Étape 5 : contrôler les appareils IoT par commandes vocales

Pour le contrôle des appareils IoT, la voix est une tendance de nos jours. Obtenir ce type de contrôle en utilisant Arduino / HC-06 / Android est extrêmement simple. Les appareils Android ont déjà cette fonctionnalité par "usine". Dans l'application que j'ai développée, un bouton a été ajouté qui permet à Android "d'écouter" une commande et de l'envoyer au format texte à l'Arduino. Le code est chargé de « lire » la chaîne qui vient.

J'ai ajouté quelques exemples dans mon code. Lorsque l'Arduino reçoit une commande "Connect TV", par exemple, la LED verte (correspondant à l'appareil 3) s'allume (au lieu de la LED, vous pourriez avoir un relais qui connecterait le téléviseur).

Vous devez modifier les chaînes qui se trouvent dans la partie Boucle du code, avec des commandes dans votre langue. J'ai utilisé le portugais qui est ma langue maternelle et c'était plus facile à gérer chez Google en raison de l'accent différent avec mon anglais. Vous devez utiliser des phrases courtes ou uniquement des mots. L'important est une correspondance parfaite entre ce que vous avez écrit et ce que renvoie l'application de reconnaissance vocale Google.

Ici vous pouvez trouver un lien vers le fichier .aia qui peut être exécuté directement sur MIT AppInventor2. Dans la vidéo ci-dessous, une petite démonstration de la commande vocale :

Étape 6 :Conclusion

Eh bien, je crois qu'avec ce didacticiel, il vous est possible de réaliser l'énorme potentiel de contrôle des "choses" à l'aide de BT / Android / Arduino. Comme toujours, j'espère que ce projet pourra aider d'autres à trouver leur chemin dans le monde passionnant de l'électronique , robotique et IoT ! Pour plus de projets, veuillez visiter mon blog :MJRoBot.org

Salutations du sud du monde !

Rendez-vous à mon prochain tutoriel !

Merci

Marcelo

Code

  • Extrait de code n° 1
  • Extrait de code 2
  • Extrait de code 3
Extrait de code n°1Texte brut
#include SoftwareSerial BT (10, 11) ; // RX, TXString commande =""; // Stocke la réponse de Bluetooth devicevoid setup (){ Serial.begin (9600); Serial.println ("Type de commandes AT"); BT.begin (9600); // HC-06 Habituellement débit en bauds par défaut}
Extrait de code #2Texte brut
void loop (){ if (BT.available ()) // recevoir les données si disponibles. { while (BT.available ()) // "continuer à recevoir". { retard (10); // Délai ajouté pour rendre les choses stables char c =BT.read (); // Exécuter la commande de lecture en série + =c; // Construire la chaîne. } Serial.println (commande); commande =""; // Aucune répétition } if (Serial.available ()) { delay (10); BT.write (Serial.read ()); }}
Extrait de code n°3Texte brut
dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off

Processus de fabrication

  1. Robot Raspberry Pi contrôlé par Bluetooth
  2. Programmation de la série Atmel AT89 via Arduino
  3. Télécommande universelle utilisant Arduino, 1Sheeld et Android
  4. Jouet contrôlé par Android utilisant un bouclier de moteur Raspberry
  5. Arduino avec Bluetooth pour contrôler une LED !
  6. Appareils Bluetooth à commande vocale avec OK Google
  7. Arduino - Envoyer la température au Web via série
  8. Contrôle de circuit sensible aux mouvements via Intel Curie
  9. Voyants clignotants sur Arduino depuis iOS et Android