Introducció a la robòtica en trenta-una classes/Quinzè dia: bluetooth

Salta a la navegació Salta a la cerca
imatge mòdul bluetooth HC-06

Avui hem après com connectar el mòdul bluetooth més estès per a arduino. És el model HC-06. Hem agafat un model que ja duu soldats quatre pins, i que per tant, podrem començar a fer servir sense soldar res. Podem fer servir qualsevol de les plaques arduino.

Només té quatre connexions: VCC el connectem a 5V, GND a GND, TXD al 10 de l’arduino, i RXD al 11 de l’arduino. En la placa arduino, veiem que té uns pins RX i TX, que no fem servir. Això és perquè aquests pins ja els fem servir per a passar-li programes a través de USB. Si posem el bluetooth a aquests pins haurem de desconnectar-lo cada vegada que el connectem al USB per a actualitzar programes. En altres exercicis ja hem fet servir Serial per a parlar entre arduino i ordinador. Per a poder fer servir els pins 1o i 11, ens cal una biblioteca que es diu SoftwareSerial, i que permet comunicar arduino per pins diferents dels RX TX.

Primer de tot, l’hem connectat i hem vist que amb un mòbil el detectem. Veiem un dispositiu de nom linvor, HC-06, o el que hagi decidit cadascun dels fabricants que en fan versions. Per tant, hem començat fent un programa per a canviar-li el nom i posar-n’hi un que distingeixi el nostre de tots els altres. Veient les dades d’aquest mòdul, veiem que per a canviar-li el nom, primer cal enviar “AT”, esperar menys de un segon, i després “AT+NAMEelNostreNom”. El nostre programa espera mig segon i ho torna a repetir. El mòdul bluetooth té un led vermell que fa pampallugues. Tan punt accepta el nou nom, aquest led queda apagat un segon. Una vegada ha acceptat el nou nom, el cerquem amb el bluetooth del mòbil, tauleta o ordinador, i ja veurem que s’identifica amb aquest nom.

El codi, si no li canviem, és 1234.

El programa:

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
void setup()
{
    BTSerial.begin(9600);
}

void loop()
{
    BTSerial.println("AT");
    delay(500);
    BTSerial.println("AT+NAMERoboTerManlleu");
    delay(500);
}

Una vegada veiem que podem trobar-lo, voldrem poder-li fer fer coses amb mòbil o tauleta. Per això ens cal fer una aplicació en el dispositiu. Nosaltres, hem començat per android. Hem fet un petit programa de prova, primer per a fer que ens llisti les adreces dels dispositius bluetooth que tenim aparellats amb el mòbi o tauleta, i després un botó que provarà de connectar amb el mòdul bluetooth i canviarà a verd o vermell segons si

aconsegueix connectar o no.

Una de les maneres de fer una aplicació per a android, és mitjançant la web del MIT, on hi podem fer l’aplicació des del navegador sense instal.lar res. Ens cal un compte de google, i així tindrem els nostres programes a l’abast des de qualsevol ordinador. L’enllaç:

http://ai2.appinventor.mit.edu

Una vegada donem les dades, entrem en l’editor. Si és la primera vegada, no hi tindrem cap projecte. Anem a projects, start new project, i donem un nom per al nostre primer projecte.

Ara tenim una pantalla de mòbil, en blanc. De la caixa d’eines de l’esquerra, arrosseguem un botó, i després a la dreta en veiem les seves propietats. A Text hi posem llistar. Posem un segon botó, i a Text hi posem connectar. També arrosseguem un TextBox, i a les propietats Height i Width hi posem Fill parent. Com que també voldrem bluetooth, per a dir-li, anem a la caixa d’eines, despleguem Connectivity, i arrosseguem BluetoothClient cap a la imatge de la pantalla. Tot plegat es veu com la imatge que vé a continuació.

Crear una app primera part

Una vegada hem fet el disseny de la App, ens cal fer el programa per tal que reaccioni com volem. Per a això, cliquem a Blocks, i ens apareix un editor tipus scratch on programarem el comportament de cada tecla.

Cliquem a Button1 i apareixen les accions que podem escollir per a aquest botó. Agafem la primera, When Button1.click, i l’arrosseguem a la pàgina. Cliquem a TextBox1, i arrosseguem SetTextBox1.Text, fins a encaixar a dins de l’eina When Button1.click. Cliquem a BluetoothClient1 i arrosseguem BluetoothClient1.AdressesAndNames fins a encaixar al costat de l’eina SetTextBox1. Tot plegat queda:

Crear una app segona part

Ara, provarem si funciona el que hem fet: anem a Build, i cliquem App(provide QR code for .apk); estarà una estona pensant, i ens apareixerà a la pantalla de l’ordinador un codi QR que haurem d’escanejar amb el dispositiu on volem instal.lar el programa. Si no tenim cap app instal.lada per a llegir QRs, n’haurem d’instal.lar una. Si ens demana què fer amb l’enllaç, li diem que l’obri, i si demana per baixar la app, li diem que si. Potser adverteix que el programa no és de confiança, i hem de confirmar que sí que el volem instal.lar. També demanarà accés al bluetooth. Obrim la nostra app, cliquem el botó de llistar, i ens sortirà una tirallonga d’adreces i noms de dispositius. Quan trobem el nom del nostre, hem de veure a la seva esquerra, quina adreça té. Son sis parelles de dígits separats per dos punts. Per exemple, 98:D3:33:83:86:2B. Ens ho apuntem i tornem a editar blocks.

Ara cliquem a Button2, arrosseguem When Button2.click; cliquem a control, i arrosseguem la primera eina, if then, cap a dins del Button2.click. Cliquem a la rodeta blava, i ens surt un mini menú amb l’eina else: la posem a dins de l’if, i tanquem clicant de nou la rodeta blava.

Cliquem a BluetoothClient1, i arrosseguem callBluetoothClient1.connect cap al costat de l’if. Cliquem a text, i arrosseguem la primera eina, “” cap al costat de address. A dins de les cometes, hi posem l’adreça del nostre dispositiu.

Cliquem a Button2 i arrosseguem setButton2.BackgroundColor to al costat del then, i un altre d’igual al costat del else. Cliquem a colors i arrosseguem el verd al costat del setButton2.backgroundcolor del costat del then, i vermell al costat del else. Queda:

Crear una app tercera part

Tornem a fer Build, codi QR, escanegem de nou, actualitzem la app, i ara, a part de llistar els dispositius si cliquem Llistar, hem de veure que si cliquem connectar i esperem uns segons es posa verd si troba el nostre bluetooth i vermell si no el troba.