Sie sind auf Seite 1von 6

ControlandoArduinoconAndroid|TutorialesArduino

Objetivos

.
ConectarlosmdulosBluetoothaArduino.
PresentarunaaplicacinAndroidllamadaArduDroid.
VercomopodemosusarArduDroidparacontrolarArduinodesdeelmovil.
Montaruncircuitodeejemplo.

Materialrequerido.

ArduinoUNOoequivalente.

UnmduloBlueToothHC05oHC06,

Algunoscablesdeprotoboard,preferiblemente
Dupontmacho/hembramasunaprotoboard

Unaresistenciade330

4LEDs

UnmvilAndroid
TrabajandoconHC05yAndroid

UnavezquehemosvistocmousarloscomandosATparaprogramarlosmdulosBluetooth,enlassesiones
anteriores,podemospasaralapartefcilqueesusarnuestrosmvilesAndroidparacontrolarcualquierproyectocon
BlueTooth.Estansencillocomoconectarnosalmduloyescribirunpequeoprogramaquegobierneelflujodecontrol.

Podramoshacerloconcomandosdetextodirectos,peroesdemasiadopocoeleganteyaqunosgustanlascosas
presentables,porloquevamosausarunprogramadelomssimptico,disponibleparaAndroidquesellama
ArduDroid.

EstescritoporTechBitar,ypodisencontraraqusupginaArdudroid.

BsicamenteesunprogramaAndroidconbotonesydeslizadores,msunesquemadeprogramaArduinoque
podemosusarparaenviaryrecibircomandosdeunaformapresentable,yqueademsfuncionamuybien.

ParaellonecesitaremosquedescarguisArduDroiddelaGooglePlayparaAndroidyloinstalisenvuestrotelfono.

Sientotenerquedecir,denuevo,quelosmdulosHC05yHC06nosoncapacesdeconectarconlosmvilesde
Appleoalmenosyonoloheconseguido

DespusbastaconconectarcualquieradelosdosmdulosanuestrosDuinosconunpardecablesparaGNDyVcc
msRxdyTxd.

Vamosadedicarestasesinavercomoconectamosunodelosmdulosparalaconexinnormaldetrabajoycmo
usarelArdudroidparagobernarmensajesdetexto,pinesdigitalesyyapuestosalgnpinPWM.

Diagramadeconexin

VamosamontarinicialmenteunpequeocircuitocontresdiodosLEDparaqueveamoscmocontrolarlosdesdeel
mvil,yluegoiremoscomplicandounpocomselmontaje(No,noesunaamenaza).

Elmontajedelaprotoboardestrivialparagentetanexperimentada:
ElprogramadecontrolArduDroid

ArdudroidincluyeunprogramaArduino,quepodemosutilizarcomoesqueletoparanuestrospropiosproyectos.Pero
nosotrosvamosahaceralgunoscambiosenlaconexinquelhace,porquenomegustanadaqueusemoslospines
0y1paracomunicarnosconArduino,asquenosotrosusaremoslospines2y3paralaconexinconelmdulo
BlueTooth.

Creoqueyacomentamosquesiusamoslospines0y1nuestrocdigofuncionara,peroanularemoslaconexin
conelPCvaUSB,queusalospines01y1.
Elautor,queesunhombredemundo,notieneproblemas,porquepruebalosprogramasconunsegundomdulo
BT,ycuandotieneelprogramapulido,nonecesitavolverareprogramar,peroyosoyunpocomstorpeyprefiero
nocerraresapuertamantenerabiertoelUSBparamensajesporejemplo.

VamosairpresentandoelprogramadecontroldeArduinoenpequeasdosisparaevitarasustaranadie,yquelos
sufridoslectoreshuyandespavoridos,ydeesemodo,adems,podremosirviendopocoapocolasdiferentes
seccionesdelprograma,queestoyseguroayudaraasumejorcomprensin.

Enprimerlugar,necesitamossaber,queelprogramaArdudroidenvatodosloscomandosconunasintaxissencilla.
Todaslasordenesempiezanpor*yterminanen#,ysilaordenincluyemltiplesdatos,estovienenseparadosporel
smbolo|

CuandoArduDroidenvaunaordentpica,esalgoas:*10|3|2#

Poreso,porquelasrdenesseenvancodificadas,vamosaempezarconalgunasdefinicionesprevias:

#defineSTART_CMD_CHAR'*'
#defineEND_CMD_CHAR'#'
#defineDIV_CMD_CHAR'|'
#defineCMD_DIGITALWRITE10
#defineCMD_ANALOGWRITE11
#defineCMD_TEXT12
#defineCMD_READ_ARDUDROID13
#defineMAX_COMMAND20//maxcommandnumbercode.usedforerrorchecking.
#defineMIN_COMMAND10//minimumcommandnumbercode.usedforerrorchecking.
#defineIN_STRING_LENGHT40
#defineMAX_ANALOGWRITE255
#definePIN_HIGH3
#definePIN_LOW2

AdemsusaremoslalibreraSoftwareSerial,parahablarconelmoduloBlueTooth,mediantelospinesdigitales2y3:

#include<SoftwareSerial.h>
SoftwareSerialBT1(3,2);//RX|TX

Definiremosunasvariablesparacontenerlosvaloresqueleeremosdelcomando:

intard_command=0;
intpin_num=0;
intpin_value=0;

Elcuerpoprincipaldelloopesmuysencillo,Vamosaempezarrecibiendomensajesdetexto:

charget_char='';//ParaleerBT1
if(BT1.available())
{get_char=BT1.read();
delay(25);

if(get_char!=START_CMD_CHAR)
return;//Sinohay*,vueltaaempezar

ard_command=BT1.parseInt();//Leemoslaorden
pin_num=BT1.parseInt();//Leemoselpin
pin_value=BT1.parseInt();//Leemosvalor

RecuerdaqueparseInt(),valeyendocaractereshastallegaraunoquenoesunnumerovalidoyentoncesdevuelveen
unenterolascifrasquehaledo.

Unavezqueleemosard_command,evaluamosquetipodecomandoes,ysilaordenesdetipotexto,llamamosaun
viejoconocidoGetLine()paraconseguirelString:

if(ard_command==CMD_TEXT)//Sielcomandoesdetexto:
{
Strings=GetLine();
Serial.println(s);
}
SiloquerecibimosesunaordenquecorrespondealbotonGetData,enviamosalgo,previamentepactado,porejemplo
lalecturadeA0(Aunquenotenemosnadaconectadoenestemomento:

if(ard_command==CMD_READ_ARDUDROID)
{BT1.print("Analog0=");
BT1.println(analogRead(A0));//LeemosA0
return;//Done.returntoloop();
YsilaordenesundigitalWritedealgnpin:
if(ard_command==CMD_DIGITALWRITE)
processDW(pin_num,pin_value);
}

Hepreferidoprocesarlasrdenesconfunciones,fueradelcuerpoprincipalparaqueseaunpocomslimpioel
programa.

LafuncinGetLineeslahabitual,simplementemodificadaparaleerdeBT1enlugardeSerial:

StringGetLine()
{StringS="";
if(BT1.available())
{charc=BT1.read();;
while(c!=END_CMD_CHAR)//HastaqueelcaracterseaEND_CMD_CHAR
{S=S+c;
delay(25);
c=BT1.read();
}
return(S);
}
}

YencuantoalafuncinprocessDW,quemanejalasrdenesdigitales:

voidprocessDW(intpin_num,intpin_value)
{if(pin_value==PIN_LOW)
pin_value=LOW;
elseif(pin_value==PIN_HIGH)
pin_value=HIGH;
else
return;//Error

digitalWrite(pin_num,pin_value);
return;
}

Paramanejarloscomandosdeescrituraanalogica,mediantePWM,tenemos,otroapartadodelomassencillo:

if(ard_command==CMD_ANALOGWRITE)
{analogWrite(pin_num,pin_value);
//addyourcodehere
return;//Devueltaalloop();
}

AquospongounacopiacompletadelprogramaProg_72_1

Yaqutenesunminivdeoconelresultadodelprograma

Resumendelasesin

HemospresentadoelprogramaArduDroid.Unaaplicacindelomssimpticaparamanejarvuestrosproyectos
atravsdelmvil.
Hemosincluidounejemplodecircuitoparamanejardesdeelmvil.
HemospresentadocomocomplementarlaaplicacinAndroidconunprogramabasequenosproporciona
Ardudroid,paramanejarnuestrosdispositivos.

Das könnte Ihnen auch gefallen