Comuniquem-nos amb Arduino


En aquest apartat desenvoluparem una app per comunicar-nos amb una placa Arduino Uno utilitzant la connexió bluetooth.


Respondrem a les següents preguntes:


  • Com puc connectar-me a una placa Arduino via Bluetooth?
  • Com puc rebre dades d’una placa Arduino?
  • Com puc enviar dades a una placa Arduino?

En aquest bloc comunicarem el nostre dispositiu mòbil amb la placa Arduino Uno. A la placa hi haurem carregat un programa que a més d’exercir les funcions de servidor de la connexió bluetooth permetrà encendre i apagar remotament un led i esbrinar-ne l’estat.

Muntatge de la placa i càrrega del programa

Per fer el muntatge ens caldran els següents elements:

  1. placa Arduino Uno
  2. mòdul Bluetooth HC-05 o similar
  3. cable USB placa Arduino-ordinador

L’esquema de muntatge és el següent:



Com veiem l’antena disposa de 4 ports de connexió que connectem tal com es veu a la imatge anterior i especifiquem en la següent taula:



Per simplificar al màxim el muntatge, utilitzarem el LED que la placa Arduino porta muntada en la pròpia placa i que està connectat al port 13.

El programa que carregarem a la placa i que haurem de pujar a través de l’IDE d’Arduino és el següent:



En la imatge anterior es determina que el programa utilitzarà la llibreria SoftwareSerial, i es defineixen algunes constants i variables. També hi ha codi de la funció setup que s'executarà tan sols un cop en inicialitzar-se la placa. Aquesta funció determina quins ports utilitzarà la placa Arduino per comunicar-se amb l'antena bluetooth i els configura, configura també el port on connectarem el Led i transmet informació a l'ordinador (en cas que tinguem connectada la placa a un ordinador mitjançant el cable USB).



La funció loop s’executarà constantment des de que arrenquem la placa fins que l’apaguem. Aquesta funció es quedarà esperant fins que rebi alguna informació pel canal de comunicació bluetooth. Quan rebi un valor en comprovarà el valor i encendrà o apagarà el led segons convingui.

L’arxiu amb el codi sencer està disponible en el següent enllaç .

Aquest programa el carreguem a la placa mitjançant l’IDE d’Arduino que podem descarregar des d'aquesta pàgina. Un cop instal·lat, hi accedim i obrim l’arxiu amb el codi del programa. Veurem el següent.



Si volem comprovar que el codi del programa és correcte, podem clicar l’opció Verificar el programa, i per pujar-lo a la placa ho podrem fer amb l’opció Pujar el programa. Un cop verificat el codi del programa, connectem la placa, amb totes les connexions fetes, a un port USB de l’ordinador. En cas que sigui el primer cop que la connectem, instal·larà els controladors adequats per poder-la utilitzar. Per comprovar que ho tenim tot en ordre, hauríem de veure que ha reconegut el dispositiu tal com segueix:



Tot seguit, ja podem descarregar el programa a la placa mitjançant el botó Pujar el programa, i si tot ha anat be, retornarà un missatge semblant al següent:



Ara que ja tenim el programa carregat a la placa, s'executarà sempre que s'alimenti la placa. Per tant, la podem deixar connectada al cable USB de l’ordinador o la podem connectar a una alimentació externa que subministri entre 7 i 12 Volts.

Si voleu ampliar informació sobre com configurar la connexió bluetooth en una placa Arduino, podeu consultar el següent enllaç.

Desenvolupem l’app

La interfície de l'app que ens permetrà controlar el led connectat a la placa Arduino tindrà el següent aspecte:



Per connectar-nos a la placa utilitzem un ListPicker on hi carregarem la llista de dispositius aparellats amb el nostre dispositiu mòbil entre els quals hi haurà la placa Arduino. Per establir la connexió amb la placa utilitzarem l'objecte BluetoothClient1 i per fer un seguiment del canal de comunicació utilitzarem un objecte de tipus rellotge. La resta d'objectes, botons, etiquetes i notificadors, ens permetran interactuar amb l'aplicació.

La primera tasca que s’haurà de dur a terme serà comprovar que el bluetooth del dispositiu mòbil estigui activat:



En cas que el tinguem activat clicarem sobre el listPicker per decidir amb quin dispositiu, dels que ja hem aparellat el dispositiu mòbil prèviament, ens connectem:



I un cop seleccionat el dispositiu per connectar-nos mirem d’establir la connexió:



Si ho aconseguim, activem el botó per poder desconnectar-nos i restem a l’espera que l’usuari decideixi si vol apagar o encendre el led.



Com veiem en el codi anterior, si volem encendre el led, enviarem un 1 pel canal de comunicació bluetooth, i si pel contrari volem apagar-lo, enviarem un 0. Per fer un seguiment de l’estat del led utilitzarem l’esdeveniment Timer de l'objecte Clock1, que cada segon comprovarà si hem rebut dades pel canal bluetooth.



En cas d’haver-ne rebut, les llegirà. Si rebem un 0 voldrà dir que el led està apagat i així ho indicarà per pantalla, si rebem un 1 indicarà el contrari, i si rebem un 2 voldrà dir que la placa no ha rebut correctament la informació que li hem enviat.

I per completar l’aplicació, en cas que vulguem desactivar la connexió bluetooth, disposarem del botó Desconnecta que executarà el següent codi quan el cliquem:



Amb aquest exemple controlem via Bluetooth una sortida digital d’una placa Arduino. La mateixa lògica ens ha de permetre controlar qualsevol dispositiu connectat a qualsevol dels seus ports.