Laboratoire numérique - communiquer avec un smartphone via Bluetooth

Dans les deux premières critiques ( 1 , 2 ), nous vous avons présenté la composition et les principales caractéristiques du kit de laboratoire numérique NR05 de l'alphabet de la série Electronics Worker .



Nous avons répété à plusieurs reprises que les possibilités de recrutement ne se limitent pas aux expériences et projets qui incluent le manuel de formation. Les options de numérotation sont beaucoup plus larges!

Voyons comment vous pouvez implémenter le contrôle des appareils exécutifs à partir de votre smartphone ou tablette à l'aide du laboratoire numérique.

La communication entre le smartphone et le module Arduino installé sur la carte d'extension sera implémentée à l'aide de la technologie Bluetooth. Bien sûr, cela limitera la possibilité de contrôler sans fil la distance d'environ 10 mètres, mais à la maison, souvent plus n'est pas nécessaire. Grâce à cette technologie, vous pouvez contrôler avec succès de simples robots ou appareils domotiques, et votre téléphone ou smartphone servira de panneau de commande universel gratuit qui peut facilement être reprogrammé pour résoudre au mieux la tâche.

Sur Internet, vous pouvez trouver plusieurs projets qui vous permettent de connecter Arduino à un téléphone via Bluetooth, et de tels projets aideront certainement à maîtriser le principe d'une telle communication, mais leur principal inconvénient est l'incapacité d'adapter la fonctionnalité du programme de contrôle et son apparence aux besoins spécifiques de l'utilisateur.

Nous suivrons le chemin d'un peu plus compliqué, mais plus universel - nous écrirons nous-mêmes des programmes pour le téléphone et pour Arduino. Cela vous aidera à comprendre le principe de l'écriture de telles applications et à l'utiliser dans votre développement.
Tout d'abord, expliquons sur quel principe se base la connexion que nous allons utiliser. Comme vous le savez, lorsque le module Arduino est connecté à un ordinateur, un port série virtuel - un port COM - est configuré sur l'ordinateur. Il est utilisé pour télécharger des croquis sur Arduino, ainsi que pour échanger des informations entre un ordinateur et le microcontrôleur Arduino. Également sur la carte Arduino, il y a deux contacts combinés avec les broches D1 et D0 et désignés RX et TX - respectivement, la transmission (réception) et la réception (transmission) de l'interface UART standard.

Après avoir connecté l'adaptateur Bluetooth-UART à ces contacts (le module HC-05 s'est avéré être à notre disposition, il n'est pas inclus dans le kit), nous obtenons un canal de communication matériel entre l'appareil connecté via Bluetooth à l'adaptateur et Arduino.
Ainsi, en écrivant des informations d'un appareil sur le port série et en les lisant d'un autre (cela peut se faire dans deux directions), nous pouvons organiser l'échange d'informations entre les appareils. La vitesse d'un tel échange entre Arduino et un smartphone dans le cas de l'utilisation du module HC-05 sera de 57600 bauds.

Pour plus de clarté, nous utilisons une LED RGB et un servo variateur, tous deux contrôlés par des signaux PWM.

Voici le schéma de connexion des composants du projet:



Pour contrôler les éléments exécutifs, nous allons transférer du smartphone une certaine lettre qui détermine à quel élément la commande est destinée, et un nombre qui correspond au paramètre de commande. Le paramètre peut être un chiffre qui détermine si un actionneur doit être allumé ou éteint, ou un chiffre qui définit le paramètre PWM.

Nous donnons le texte du programme pour Arduino. Le programme reçoit les données de l'adaptateur Bluetooth, les déchiffre et effectue les actions nécessaires: allume ou éteint la LED, ajuste sa luminosité ou l'angle de rotation de l'arbre du servo.

Le texte est équipé d'un nombre suffisant de commentaires pour comprendre la logique du programme:

Spoiler
// LCD-
#include <Servo.h>
#include <LiquidCrystal.h>
// 5
// get_key
#define NUM_KEYS 5
int adcKeyVal[NUM_KEYS] = {30, 150, 360, 535, 760};
// LCD-
LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);
//
Servo servo;

int btValue; // BT-
char command; // , COM-

void setup() {

// COM- bluetooth, , -
Serial.begin(57600);
Serial.flush();
Serial.setTimeout(4);
// LCD (16 , 2 )
lcd.begin(16, 2);
lcd.clear();
lcd.print(«Master Kit-READY»);
delay(2000);
lcd.clear();
// 3-
servo.attach(3);

pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(9, LOW);

}

void loop() {

int key = get_key(); // ,
// , COM-
//
if (key > 0){
Serial.print(key);
delay(500);
}

// , bluetooth,
if (Serial.available() > 0) {
// ()
command = Serial.read();
// ( )
btValue = Serial.parseInt();

// LCD , bluetooth
lcd.setCursor(0,0);
lcd.print(command);
lcd.print(' ');
lcd.print(btValue);
lcd.print(" ");

delay(10);

switch (command) {
case 'P': // P,
pinSwitch(btValue);
break;
case 'S': // S — c 1 ( )
pwm5(btValue);
break;
case 'M': // — 2 ( )
servo3(btValue);
break;


}
}
}
//
void pinSwitch(int Pin){
digitalWrite(Pin, !digitalRead(Pin));
}
// 5 ( )
void pwm5(int pwmValue){
analogWrite(5, pwmValue);
}
// 3
void servo3(int angleValue){
int angle = map(angleValue, 0, 180, 5, 180);
servo.write(angle);
}
//
int get_key()
{
int input = analogRead(A6);
int k;
for(k = 0; k < NUM_KEYS; k++)
if(input < adcKeyVal[k])
return k + 1;
return 0;
}



Prenons maintenant un programme pour smartphone, qui devrait transmettre une commande avec un paramètre. Pour cela, nous utiliserons les capacités du projet MIT App Inventor.

Le MIT App Inventor est un environnement de programmation développé au Massachusetts Institute of Technology (MIT). Il est utilisé pour développer des applications pour les appareils mobiles (smartphones et tablettes) fonctionnant sur le système d'exploitation Android.

Ce n'est pas un langage de programmation au sens généralement admis; lorsque vous l'utilisez, vous n'avez pas besoin d'écrire du code texte sous forme de lignes. Le programme est formé sous la forme de blocs affichés à l'écran, qui sont simplement glissés et empilés comme des puzzles. Si les blocs s'emboîtent selon la logique du programme, ils «collent», s'ils ne s'emboîtent pas, alors ils ne peuvent pas être connectés. Initialement, cette méthode de programmation a été développée pour éduquer les étudiants, elle est donc assez simple à apprendre. Bien sûr, comme dans toutes les langues, il a ses propres subtilités et astuces, mais le site contient suffisamment d'informations et d'exemples pour maîtriser la langue. De nombreux programmes sont disponibles sur le site dans le domaine public.

Pour utiliser l'environnement de programmation App Inventor, disponible sur ai2.appinventor.mit.edu, vous devez disposer d'un compte Google via lequel l'autorisation sur le site Web du projet est effectuée. Le programme est créé dans n'importe quel navigateur. L'ordinateur exécutant ce navigateur doit être constamment connecté à Internet. Le smartphone ou la tablette sur lequel le programme créé à l'aide d'App Inventor sera installé doit avoir une version Android OS d'au moins 4.0.

Dans le navigateur, vous créez le design (apparence) et la logique du programme sous forme de blocs, au même endroit le projet fini est compilé dans un fichier exécutable avec l'extension apk. Ce fichier peut être téléchargé et exécuté sur un appareil mobile de plusieurs manières. La méthode la plus pratique est peut-être d'installer l'application MIT AI2 Companion sur l'appareil mobile (elle se trouve sur le Play Market). App Inventor génère un code QR contenant un lien vers l'application que vous avez créée, et AI2 Companion le lit et l'installe (ou le met à jour). Vous pouvez même dessiner et télécharger votre propre icône pour lancer votre application. Ainsi, App Inventor vous permet de créer des applications entièrement fonctionnelles et intuitives pour Android. Bien que leur code ne soit pas optimal, mais pratique,la simplicité et la rapidité de création de telles applications dans de nombreux cas compensent parfaitement cet inconvénient.

L'application qui fonctionne dans notre projet est téléchargée dans la galerie MIT AI2 Appiventor sous le nom BToothHC05.
L'application vous permet de trouver un appareil Bluetooth, de vous y connecter, elle génère des commandes avec des paramètres et les envoie à l'appareil connecté, lit les données de l'appareil et affiche le numéro du bouton enfoncé sur la carte d'extension.

La conception de l'écran est conforme à l'image suivante:



Il existe des éléments (carrés verts qui symbolisent les images insérées) qui ne comportent pas de fonctionnalité, mais servent de séparateurs pour améliorer l'apparence.

Si vous êtes allé sur le site Web AppInventor et que vous êtes dans l'environnement de programmation en mode Designer, alors lorsque vous cliquez avec le bouton droit sur l'élément de conception correspondant, vous verrez ses propriétés sur la droite. Après être passé en mode Blocs, vous pouvez voir tous les blocs de l'application en cours de développement.

En fait, presque tous les blocs sont des gestionnaires d'événements: appuyer sur un bouton de l'écran tactile, déplacer le curseur du curseur, déclencher une minuterie, changer l'inclinaison du téléphone (oui, presque tous les capteurs d'un appareil mobile peuvent être utilisés dans App Inventor!).

Considérez le but fonctionnel de chaque bloc.



Dans ce bloc, lorsque vous cliquez sur le bouton d'écran Connecter / Déconnecter (événement Button4Connect.Click), le périphérique Bluetooth est déconnecté (appelez BluetoothClient1.Disconnect) s'il est déjà connecté (BluetoothClient1.IsConnected), le texte du bouton devient «Déconnecté» et sa couleur change en grisé ou en appelant la liste des périphériques possibles à connecter (ListPicker1.Open) s'il n'y a pas de connexion. Comme vous pouvez le voir, le bloc est assez lisible du point de vue d'un programmeur même novice!



Dans ces trois blocs (de haut en bas):

- affectez une variable globale (tous les blocs la "verront") switch1 pour changer de mode de fonctionnement: slider ou tilt;
- lors de l'appel de la liste des appareils ListPicker1 pour la connexion, nous voulons afficher leurs adresses et leurs noms;
- lorsque vous choisissez un appareil dans la liste ListPicker1, connectez-vous à celui-ci, changez la couleur du bouton et affichez le texte Connecté au nom de l'appareil. Le nom du périphérique est formé d'une longue séquence de caractères; 8 caractères sont pris à partir du 18.



Les trois blocs illustrés ci-dessus envoient via la connexion établie les caractères «P5», «P9» et «P6», qui doivent allumer ou éteindre respectivement la couleur rouge, verte ou bleue de la LED.



Lorsque le curseur Slider1, qui contrôle la luminosité de la couleur rouge de la LED, est décalé, ce bloc envoie le symbole "S" et les chiffres correspondant à la position du curseur.



Lorsque Slider2, qui contrôle le servo, est décalé, si le mode correspondant est activé (switch1 = 0), nous envoyons le caractère M et la position du curseur.



Si le mode de fonctionnement du capteur d'inclinaison est activé, l'unité envoie M et un angle d'inclinaison de + 90 degrés pour contrôler le servo variateur.



Cet appareil bascule les modes de fonctionnement du servo à partir du curseur ou du capteur d'inclinaison et modifie en conséquence le texte du bouton (Texte) et sa couleur (BackgroundColor).



Ces deux blocs sont déclenchés par un événement de temporisation. Le premier bloc (Clock1) toutes les 0,1 secondes (cet intervalle est défini dans les propriétés de la minuterie Clock1) vérifie si les données du bouton de la carte d'extension ont été enfoncées. Si le bouton a été enfoncé, des informations sur le numéro du bouton enfoncé s'affichent sur l'écran du smartphone en 1 seconde (deuxième bloc - Horloge2).
Nous allons maintenant regarder la vidéo comment la LED et le servocommande du smartphone conformément à nos programmes se produisent réellement.



De la même manière, un nombre suffisamment important d'actionneurs connectés à l'Arduino peut être contrôlé. Cela ne nécessite aucun travail énorme du programmeur lors de l'utilisation d'AppInventor, et la programmation Arduino est assez simple et claire. Vous pouvez facilement ajouter ou supprimer des blocs de programme inutiles et obtenir les fonctionnalités dont vous avez besoin.
Comme vous pouvez le voir sur ce matériel, la carte d'extension du kit Digital Laboratory vous permet d'utiliser les modules complémentaires Arduino de manière très pratique et visuelle.

Application.

Mise en route dans l'environnement de programmation MIT AppInventor.

Comme nous l'avons déjà écrit, pour travailler dans le projet AppInventor, vous avez besoin d'un compte Google. Si vous avez un smartphone sur Android, vous avez probablement déjà un tel compte. Sinon, vous pouvez l'obtenir en allant sur Google via le lien suivant .

Ensuite, accédez au site Web AppInventor et cliquez sur le lien Créer des applications!, Situé dans le coin supérieur droit de la page principale du site Web, accédez au site Web de l'environnement de programmation.

À titre d'illustration, vous trouverez ci-dessous un lien vers une courte vidéo montrant la création d'un programme simple qui affiche du texte lorsque vous cliquez sur un bouton formé sur l'écran tactile d'un smartphone.

Source: https://habr.com/ru/post/fr391383/


All Articles