Sei sulla pagina 1di 13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1
9

Ms Siguienteblog

Crearunblog Acceder

Cdigo,TipsyProgramasVarios
Pequeoblogaderezadocontrocitosdecdigo.

18AGOSTO2013

ControlandoArduinovaBluetoothdesdeAndroidPt.1
Hacecasidossemanas,lescompartamosunpequeotutorialdondelesexplicabarpidamenteel
funcionamientodeunpuenteHysuutilizacinenelcontroldeladireccindemotoresDC.
Sirecuerdanunpoco,lesmencionenesemomentoquelaideaeraarmaruncarroacontrolremoto
quepudiramoscontrolardesdebluetoothatravsdeunaaplicacinenAndroid.
Enestaentradarevisaremoslasencillaconstruccindelmdulocontroladordelcarritoylesmostrar
rpidamentecomoprobarlaconexinBluetoothdelArduinoenAndroidconunsoftwaregratuitoque
puedenencontrarenlaPlayStore.
EnlosprximosdaslesestamospreparandountutorialenconjuntoconlosamigosdeAndroiSensei
donde les mostraremos como programar la aplicacin que se encargar de controlar el carrito en
Android.

ENLACES

LaTiendadeTeUbi.co

PGINAS

Fuente
Abierta

DATOS
PERSONALE
S

Directoriode
Software
MiniSXF
DRGPIO

Mario
Gmez

InEnglish

Seguir

389

Vertodomi
perfil
ARCHIVODELBLOG

2016(3)

Comencemos!

2015(9)
2014(9)
2013(39)

Diseodelsistema

diciembre(2)
noviembre(1)

AlgoquenosayudarmuchoaconstruirnuestrocarritoBluetootheshacerunpequeodiagramade
los distintos bloques funcionales. La siguiente imagen muestra los componentes que utilizaremos y
nosindicardemaneragenerallasconexionesqueutilizaremosalmomentodeconstruirlo.

octubre(1)
septiembre(1)
agosto(2)
ControlandoArduinova
Bluetoothdesde
AndroidPt...
ControldemotoresDC
conArduinoNanov3
julio(4)
junio(2)
mayo(4)
abril(1)
marzo(3)

http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

1/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1
febrero(8)
enero(10)
2012(17)

Eldiseoessumamentesencillo:TendremoselArduinoNanojustoenmedioactuandocomosistema
decontroldelcarroconectadoaunmduloBluetoothquenosservirparaenviarenviarcomandosy
recibirinformacindelestado.
Ya que el carro hace uso de dos motores DC para controlar la direccin y el desplazamiento
necesitaremosdospuentesHconectadosalaslneasD3...D6yD9...D12.
Aunquenolorevisaremosenestaentrada,nosquedancuatrolneaslibresquepodemosutilizarpara
activar otros actuadores o conectar otros sensores y todas las lneas anlogas si por ejemplo
quisieramosleerelniveldelabatera.
Deboaceptarquenoeseldiseoms"compacto"yprometodisearunaversinmssencillapara
unafuturaversindelcarro.
Porqucuatrolneasenvezdesolodosyunacompuertalgicainversora?
Porunaraznmuysimple:Modulacindepulsos.
Sibienenestaentradasolovamosaexaminarelfuncionamientogeneralinvirtiendolapolaridadde
laalimentacindelosmotoresconlospuenteH.Paraelprximotutorialqueremosmodulartambin
la velocidad/fuerza de desplazamiento del motor DC y una forma fcil de hacerlo es por medio de
modulacindepulsos.
ElArduino Nano soporta modulacin de pulsos por medio de la funcin analogWrite en los pines
3,5,7,9y11.Paramodularlafuerzadelmotorpodemosactivarunodelostransistoresquequeden
enserieyalsegundoenviarleuntrendepulsosqueprovocaruncambioenlacargadelmotorDC.

Eldiagramaelctrico
Aldetallarnuestrodiagramadebloquestendremosalgocomolosiguiente:

http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

2/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

Sequeseveunpococomplicadoperorealmenteesmuysencillo.Revisemosloscomponentesde
izquierdaaderecha:
Fuentedepoder
El voltaje para operar el circuito lo obtendremos de un arreglo de 4 bateras Alcalinas AA que
proveen de 1.5V. Obtenemos de las bateras dos voltajes, sacando una lnea de las dos primeras
baterastenemos3VqueservirnparaalimentarlospuentesHyunasegundalneadelarreglode
lascuatrobaterasparaobtener6V.
Lalneade6VlaconectaremosalpinVINdenuestroNano.Estolohacemosdeestamanerapara
quepaseporelreguladordevoltajedelaplaca.MepreguntarnPorqunoheutilizadolasalida
reguladade3.3VdelaplacaNano.
Laraznesquequeratenerlasfuentesdealimentacin"separadas"soloencasodequehubiera
algn accidente, as si por ejemplo hubiera un cortocircuito en algn momento el puente H la
corriente circulara directamente de la batera y no pasara por el Arduino Nano reduciendo las
posibilidadesdequeesteresultedaado.
PuentesH
Noentrarenmuchosdetallessobreelpuenteyaquelohemosrevisadoenunaentradaanterior.
Pero seguramente han notado que la nica diferencia es que el puente que controla el motor de
traccinutilizaresistenciasde680Ohm.
Porqu?Unaconfusin.Cuandofuacomprarlasresistenciasnolasrevisenelmomentoyal
llegaramicasamepercatqueerande680Ohmenvezdelasde1KOhmquehabasolicitado.
As que decid recalcular la corriente mxima que podra circular por el puente H utilizando las
resistenciasde680Ohmylostransistores2N2222yesde633mA.Inferioral1Amximoquepuede
circularporeltransistorsegnlahojatcnicaasqueesbastanteseguro.Ademsestoessuficiente
paralospequeosmotoresDCquedeseocontrolarasquedecidutilizarlasenvezdereemplazarlas
porlasde1K.
Paraelcontroldedireccinmantuvelasresistenciade1KquelimitarnlacorrientedelpuenteHa
cercade460mAyadecirverdadfuncionaalaperfeccin.
ArduinoNanoyMdulobluetooth
Esta es la parte ms sencilla ya que nicamente debemos conectar las lneas de datos
correspondientes al Nano y el mdulo bluetooth al puerto UART. Solo hay que tener cuidado de
cruzarlaslneasTXyRXodelocontrarionopodremoscomunicarnosconelmdulo.
http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

3/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

Reemplazandolatabletacontroladoraoriginal
Paraestepasosolonecesitanunpocodecreatividad,novoyaentrarenmuchosdetalles,prefiero
mostrarlesunasfotosdelprocesodesdelatabletaperforadahastaelmdulofinalmontado.

MdulodeRCoriginal.

Tabletaperforadacortadaalamedidadelmdulooriginal.

Midiendolaubicacindeloscomponentes.

http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

4/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

ColocandolosconectoresparalosmotoresDC.

ReposicionandoelArduinoNanoparalacolocacindelmdulobluetooth.

ColocandolospuentesHconsusrespectivasresistencias.

http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

5/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

Unafotodelmdulocasiterminado,solohastaestepuntosolorestabaagregarlaslneasdecontrol
paralospuentesH.

AqupuedenverlaslneasquecontrolanlospuentesH,disculpeneldesordenyaeratardeytena
sueo.

ElcdigoenArduino
Vamos a reutilizar el cdigo de la entrada anterior y para simplificar la lectura del cdigo vamos a
escribirvariasfuncionesasociadasacadaunadelassiguientesacciones:
Adelante(FORWARD):ProvocarquepuenteHdecontroldetraccinseactivedetal
maneraqueelcarritosemuevahaciaadelante.
Reversa(REVERSE):ProvocarqueelpuenteHdecontroldetraccinseactivedetal
maneraqueelcarritosemuevaenreversa.
Alto(STOP):DesactivartodoslostransistoresenelpuenteHprovocandoqueelmotor
sedetenga.
Derecha (RIGHT): Provocar que el puente H del control de direccin se active de tal
maneraqueladireccinseorientealaderecha.
Izquierda (LEFT): Provocar que el puente H del control de direccin se active de tal
maneraqueladireccinseorientealaizquierda.
Centrar(CENTER):DesactivartodoslostransistoresenelpuenteHprovocandoquela
direccinregresealcentro.
CdigodecontroldelospuentesH:
//Definimosalaslneasalasqueseencuentran
//conectadoslospuentesH
#defineM1A9
#defineM1B10
http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

6/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

#defineM1C11
#defineM1D12
#defineM2A3
#defineM2B4
#defineM2C5
#defineM2D6
//Bufferparaalmacenarlostextosdecontrol
#defineBUFFSIZE255
voidsetup(){
//Configuramostodoslospinesdecontrolcomooutput
pinMode(M1A,OUTPUT);
pinMode(M1B,OUTPUT);
pinMode(M1C,OUTPUT);
pinMode(M1D,OUTPUT);
pinMode(M2A,OUTPUT);
pinMode(M2B,OUTPUT);
pinMode(M2C,OUTPUT);
pinMode(M2D,OUTPUT);

//Iniciamoselserialalqueestconectadoelmdulobluetooth
Serial.begin(9600);
}
//FORWARD
voidgo_forward(){
digitalWrite(M1A,LOW);
digitalWrite(M1B,HIGH);
digitalWrite(M1C,HIGH);
digitalWrite(M1D,LOW);
}
//REVERSE
voidgo_reverse(){
digitalWrite(M1A,HIGH);
digitalWrite(M1B,LOW);
digitalWrite(M1C,LOW);
digitalWrite(M1D,HIGH);
}
//STOP
voidstop_motor(){
digitalWrite(M1A,LOW);
digitalWrite(M1B,LOW);
digitalWrite(M1C,LOW);
digitalWrite(M1D,LOW);
}
//RIGHT
voidturn_right(){
digitalWrite(M2A,HIGH);
digitalWrite(M2B,LOW);
digitalWrite(M2C,LOW);
digitalWrite(M2D,HIGH);
}
//LEFT
voidturn_left(){
digitalWrite(M2A,LOW);
digitalWrite(M2B,HIGH);
digitalWrite(M2C,HIGH);
digitalWrite(M2D,LOW);
}
http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

7/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

//CENTER
voidcenter_wheels(){
digitalWrite(M2A,LOW);
digitalWrite(M2B,LOW);
digitalWrite(M2C,LOW);
digitalWrite(M2D,LOW);
}

PararecibirloscomandosreutilizaremoslasfuncionesquedefinimosenlaentradasobreUtilizando
elmdulodeserieBluetoothenArduino.Estasfuncionesnosayudaranarellenarunpequeobuffer
conloscomandosaleeryavaciarlo(flush)encasodequesellene.
Cdigoparamanejodelbuffer:
charbuffer[BUFFSIZE];
inti=0;
voidflush_buffer(){
Serial.write((constuint8_t*)buffer,i);
for(intj=0;j<=i;j++){
buffer[j]=0;
}
i=0;
}
voidappend_buffer(charc){
if(i<BUFFSIZE){
buffer[i++]=c;
}else{
flush_buffer();
}
}

Lalgicadelloopprincipalesbastantesimple:
Cadavezquerecibamosuncarctersealmacenaenelbufferyseimprimederegresoal
puertoserie(parapodervisualizarloscomandosenviados).
Siserecibeunfindelneasecomparaeltextoalmacenadoconlas"palabrasclave"con
lafuncinstrstr.
Silapalabraclaveestcontenidaenelbufferseejecutaelcomandocorrespondiente,si
no,secontinaconlaejecucin.
Cadavezqueserecibeunfindelnea,seimprimeunfindelneaderegreso.
Cdigofuentedelloopprincipal:
voidloop(){
while(Serial.available()>0){
charc=Serial.read();
append_buffer(c);
Serial.write(c);
if(c=='\r'||c=='\n'){
if(strstr(buffer,"FORWARD")!=0){
go_forward();
}
if(strstr(buffer,"REVERSE")!=0){
go_reverse();
}
if(strstr(buffer,"STOP")!=0){
stop_motor();
}
if(strstr(buffer,"LEFT")!=0){
turn_left();
http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

8/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

}
if(strstr(buffer,"RIGHT")!=0){
turn_right();
}
if(strstr(buffer,"CENTER")!=0){
center_wheels();
}
flush_buffer();
Serial.write("\r\n");
}
}
}

AntesdecontinuarrecuerdaquedebersprogramarelArduinoNanomientrasestdesconectadoal
mdulo. Si no lo haces as el mdulo bluetooth podra interferir con la programacin generando
erroresenelArduinoIDE.

Probandotodo
Hastaestepunto,sihemosarmadotodocorrectamenteyaestamoslistosparaconectaryprobrar.
Para hacer las pruebas desde Android utilizaremos la App BlueTerm, este es un emulador de
terminal que nos permite comprobar las conexiones serie va bluetooth como se muestra en los
siguientesscreenshots:
Seleccionadelmen"Conectarseaundispositivo":

Elijeelmdulo"BT_ARDUINO",esposiblequeentucasosemuestreconunnombrediferentecomo
porejemplo"LINVOR".

IngresaelPINdelmdulo.Sinolohasmodificadodeberadeser"1234".

http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

9/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

Esperaaqueaparescaelmensaje"Conectado<dispositivo>"paracomenzaraenviarloscomandos.

Luego puedes comenzar a ingresar los comandos, para que sean procesados por elArduino solo
tienesquepresionar[ENTER].

Siteequivocasalescribiruncomando,presiona[ENTER]eintentanuevamenteenlasiguientelnea.
Recuerdaqueloscaracteressevanleyendoalmomentoqueseingresanasquenohayformade
"borrar"sitehasequivocado.
Esmuchsimomsfcildeverificarsiestfuncionandobiensirevisaselsiguientevideo:

http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

10/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

Control remoto de motores DC con Ard...

Concluyendo
Esteesunproyectorpidoquesepuedearmaren3o4das.Loquemstomatiempoeselmontaje
delatabletacontroladoraporlacantidaddeconexionesylassoldadurasquehayquerealizar.
LapartebuenaesquelospuentesHquehemosutilizadoenestetutorialpuedesutilizarlosfcilmente
paracontrolarmotoresDCde3Vcuyoconsumonosuperelos600mA.
Porahoralosdejarhastaaquymantengansependientesyaquelasegundapartedeestetutorial
tratardecomohacerunaaplicacinparaAndroiddesdeceroparaquepodamoscontrolarnuestro
carro.Estetutorialnolopublicaremosenestapginasinoqueenelsitiowebdenuestrosamigosde
AndroidSensei.
Asquemuypendientesyporelmomentosinnadamsquedecir...

Hastalaprxima!
Materiales
1xArduinoNano
1xMduloBluetoothJYMCU
8xTransistores2N2222
4xResistencias680Ohm1/4W
4xResistencias1KOhm1/4W
1xTabletaperforada
CableUTPsuelto
4xBaterasalcalinasAA
1carrodejugueteacontrolremoto(VerificarqueusemotoresDCparadirecciny
traccin)

PublicadoporMarioGmezen10:36p.m.
+9 Recomendar esto en Google

Etiquetas:android,Arduino,ArduinoBoardNano,Bluetooth,ControlRemoto,HBridge,JYMCU,Motor
DC,PuertoSerie.,RCCar

9comentarios:
carlosjuliandijo...
excelenteyfuncionamuybien
4demarzode2014,8:28

walterrferronidijo...
queappmejoradapuedousarsinproblema?

http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

11/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1
24demarzode2014,18:00

walterrferronidijo...
esdecir,sinescribirloscomandos
24demarzode2014,18:04

Maxdijo...
Holaamigo,mepareceunproyectoexcelenteylaidealaqueremosutilizarparaun
proyectodelaescuela.Lacosaesquenossurgeladudadeladireccindelcarro,cmo
puedesercontroladaconunmotordeesetipo?Eslonicoquenosfaltaconocerpara
empezararealizarlo.Deantemano,gracias.
31demayode2014,16:54

rominadelgadodijo...
holaunapreguntaenvezdeutilizarelbluetoohtparamoverlo...quisierahacerloateravez
deundetectordeluztenesideadecomo?desdeyagracias
3deseptiembrede2014,7:40

carlosmontesdijo...
Buenda
Estedispositivosepodrutilizarenuncarritomontableparanios?losmotores,elde
avancecomoeldelvolante,sealimentandeunabateriadeacidoplomode6v4.5ah.
gracias
12deseptiembrede2014,13:43

eugeuriartedijo...
holaestamuybuenoesteproyecto....quiserealizarloperolaaplicacinnomeleelos
comandos,habraalgomalenelprograma?
19denoviembrede2014,9:12

VitoKadavardijo...
Hola!
Estoyintentandorealizaresteproyecto,hehechotodopasoapaso,peroalmomentode
conectarloconlaaplicacinBlueTerm,nomesincroniza.
Sinembargo,slograsincronizardesdeeltelfono.Nosqupodraestarsucediendo.
Sabesaqusedebe?
5demayode2015,23:00

yuricerezovillasantedijo...
puedohacerloconunarduinomega?
2deoctubrede2015,15:23
Publicaruncomentarioenlaentrada

Entradamsreciente

Pginaprincipal

Entradaantigua

Suscribirsea:Enviarcomentarios(Atom)

PlantillaPictureWindow.ConlatecnologadeBlogger.

http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

12/13

18/4/2016

Cdigo,TipsyProgramasVarios:ControlandoArduinovaBluetoothdesdeAndroidPt.1

http://fuenteabierta.teubi.co/2013/08/controlandoarduinoviabluetoothdesde.html

13/13

Potrebbero piacerti anche