Tema: Arduino y Comunicacin Serial con Visual Basic
1. Utilizar el puerto USB como dispositivo de comunicacin externo. 2. Realizar programas de Visual Basic que se comuniquen con Arduino. 3. Realizar Setc!es de Arduino que reci"an rdenes # env$en datos a la %&. '. Realizar aplicaciones de mane(o de !ard)are externo com"inando las plata*ormas. +o &antidad ,escripcin 1 2 3 ' - . / 0 1 12 1 1 1 ' ' 1 1 1 1 varios Una computadora con sistema operativo 3indo)s # con el programa Arduino 4,5 instalados &a"le USB 6tipo A !acia tipo B7 8ar(eta Arduino U+9 R2 o R3 Resistencias de './: ;5,s %otencimetro de -<: Bread"oard %inza &ortadora &a"les U8% Visual Basic y Puerto Serie ;a inter*az serie as$ncrona es el principal dispositivo de comunicacin de sistema a sistema. As$ncrono signi*ica que no !a# presente una se=al de sincronizacin o de relo(. &ada car>cter est> enmarcado entre se=ales de inicio # parada. Un solo "it 2? denominado "it de inicio? precede a cada car>cter para indicar al sistema que los siguientes 0 "its constitu#en un "#te de datos. Uno o dos "its en alto siguen al car>cter para se=alar que dic!o car>cter !a sido enviado. 8rama en una transmisin as$ncrona@ Objetivos Especficos Material y Equipo Introduccin Terica Facultad: Ingeniera Escuela: Electrnica signatura: Interfaces y !erif"ricos Interfaces y Perifricos, Gua 3 2 Aigura 1. 8rama As$ncrona 5l puerto serie en una computadora est> compuesto por varias entradasBsalidas. ,ispuestas en un conector del tipo ,B1 o ,B2-? tal como se muestra en la siguiente *igura@ Aigura 2. a7 &onector ,B2-? "7 &onector ,B1 ;a distri"ucin de las se=ales en cada uno de sus pines es la siguiente@ Se=al ,escripcin C+, o SC 2 Voltios 8x, Salida para transmisin de datos Rx, 5ntrada para recepcin de datos R8S 6Request 8o Send7 Salida que indica una peticin de env$o &8S 6&lear 8o Send7 ,ispuesto para enviar? entrada por donde le indica el otro dispositivo que #a puede enviar los datos. ,SR 6,ata Set Read#7 ,ispositivo de datos preparado? entrada por donde le indica el otro dispositivo que #a est> listo. ,&, o &, 5ntrada para la deteccin de portadora ,8R 6,ata 8erminal Read#7 Salida? terminal de datos listo Interfaces y Perifricos, Gua 3 3 Microsoft Comm Control 6.0 5s el control que permite la comunicacin de una aplicacin !ec!a en Visual Basic . con el puerto serie. +o est> en la ca(a de !erramientas por de*ecto? de"e introducirse mediante el menD %ro#ecto # luego &omponentes. 5n el *ormulario solamente se ve en tiempo de dise=o. %ara !a"ilitar la !erramienta del puerto serie en Visual Basic realice lo siguiente@ Seleccione la opcin Proyecto>>Componentes? al aparecer el listado de componentes seleccionar@ Microsoft comm control 6.0? dE clic en aceptar? lo que provocar> que la "arra de !erramientas cam"ie como se muestra en la *igura 3. Aigura 3. FS&9FF &ontrol Propiedades 5ntre las propiedades del FS&9FF &ontrol !a# algunas que pueden esta"lecerse en tiempo de dise=o o en tiempo de e(ecucin? # otras que solamente se pueden esta"lecer o consultar en tiempo de e(ecucin. A continuacin se enuncian algunas propiedades de este control Interfaces y Perifricos, Gua 3 4 Propiedades que se establecen en tiempo de diseo o ejecucin &omm%ort 4ndica el nDmero del puerto serie a utilizar? admite valores del 1 al 2--? Ceneralmente las %& tienen dos puertos seriales@ &om1 # &om2? si se le coloca un nDmero de puerto inexistente dar> error Settings 4ndica ' par>metros en orden@ velocidad? paridad? nDmero de "its # "its de parada que se usar>n en la comunicacin 4nBu**erSize Fediante esta propiedad se esta"lece el tama=o del "u**er de entrada. %uede conocerse el nDmero de caracteres presentes en el "u**er de entrada consultando el valor de la propiedad 4nBu**er&ount 9utBu**erSize Fediante esta propiedad se controla el tama=o del "u**er de salida. %uede conocerse el nDmero de caracteres presentes en el "u**er de salida 6los que aDn est>n transmitirse7? consultando el valor de la propiedad 9utBu**er&ount Propiedades que se establecen slo en tiempo de ejecucin %ort9pen A"re el puerto de comunicacin. %uede tener los valores 8rue 6para a"rirlo7 # Aalse 6para cerrarlo7 4nBu**er&ount %ermite averiguar cu>ntos caracteres se tienen en el "u**er de entrada 9utBu**er&ount %ermite conocer cu>ntos caracteres quedan por transmitir en el "u**er de salida 9utput 5nv$a caracteres al "u**er de salida 4nput ;ee el "u**er de recepcin 5l control Ficroso*t &omm &ontrol ..2 tiene por de*ecto el nom"re FS&omm1. %ara esta"lecer o consultar una propiedad se de"e utilizar la siguiente sintaxis FS&omm1.%ropiedad %or e(emplo? para a"rir el puerto se coloca MSComm1.Portopen=True %ara leer el puerto Buffer=MSComm1.Input %ara escri"ir en el puerto MSComm1.Output=dato ,e igual *orma con las dem>s propiedades Manejo de Perif!ricos "nal#icos Mediante "rduino. ;a plata*orma Arduino? "asada en microcontrolador AVR? !ereda la capacidad intr$nseca de dic!o microcontrolador para mane(ar peri*Ericos analgicos mediante tEcnicas de conversin espec$*icas. ,ic!as tEcnicas consisten en la conversin analgica a digital 6A,&7 # modulacin por anc!o de pulso 6%3F7. &ada una permite interactuar con peri*Ericos analgicos que proveen in*ormacin de entrada 6A,&7 o que aceptan in*ormacin de salida 6%3F7 Con$ersin anal#ica a di#ital. 5l microcontrolador cuenta con un A,& integrado en el mismo c!ip? que permite tomar Interfaces y Perifricos, Gua 3 5 lecturas analgicas de volta(e de un dispositivo que genere tensiones entre 2 # -V. ;a con*iguracin de dic!o mdulo es autom>tica? "astando solamente con invocar la *uncin de lectura de datos? la cual se detalla a continuacin@ analo#%ead&numero'pin() Realiza la lectura so"re el pin analgico que se le especi*ique 6Slo se permiten los pines A2 al A-7. 5l valor que devuelve es un nDmero entero proporcional al volta(e de entrada? de tal *orma que si se introducen 2V devuelve un valor de 2 # si se introducen -V devuelve un valor de 1223? con todos los volta(es intermedios se producen valores distri"uidos linealmente a lo largo de este intervalo. +tese que no es necesario con*igurar previamente un pin analgico para poderlo usar con esta *uncin. "d$ertencia) 5l rango v>lido para los volta(es de entrada es solamente de 2 a -V. Si introduce volta(es negativos? o "ien? volta(es positivos arri"a de -V? podr> da=ar de manera permanente el dispositivo. Modulacin por anc*o de pulso &P+M(. 5l Ficrocontrolador AVR cuenta tam"iEn con dispositivos temporizadores que permiten generar se=ales externas? las cuales emplean la modulacin por anc!o de pulso para mane(ar cargas que sean compati"les con este esquema. Vale aclarar que la tEcnica en s$? es completamente di*erente de la conversin digital a analgica 6,A&7? puesto que no se generan tensiones analgicas constantes 6por e(emplo entre 2 # -V7 en ningDn momento? sino que m>s "ien la carga es encendida # apagada r>pidamente? produciendo un e*ecto equivalente a proveer un nivel de potencia intermedio? que puede variar entre completamente apagado # completamente encendido. Adem>s? de manera similar al A,&? los mdulos temporizadores son inicializados de manera autom>tica? "astando con invocar la *uncin que se detalla a continuacin@ analo#+rite&numero'pin, ciclo'de'trabajo() Cenera una se=al %3F so"re un pin digital que tenga esa capacidad 6denotado con G7. 5l rango v>lido para el ciclo de tra"a(o va desde 2 6completamente apagado7 !asta 2-- 6completamente encendido7. +tese que no todas las cargas son compati"les con la modulacin %3F? por lo que se recomienda que se in*orme antes de emplearla con algDn dispositivo en particular. ;a tEcnica *unciona "ien con algunas cargas como ;5,s # motores ,& peque=os? mas no con cargas como relEs o motores ,& sin esco"illas 6como los ventiladores para c!as$s de computadora7. Parte -. .ectura de entradas anal#icas. 1. %roceda a ensam"lar el circuito (unto con el Arduino. Si cuenta con con un potencimetro que permita conectar ca"les directamente a El? puede conectarlo directamente al Arduino sin una "read"oard. Recuerde que no es necesaria una *uente de suministro externa. !rocedimiento Interfaces y Perifricos, Gua 3 6 Aigura '. ,iagrama de circuito parte 1. 2. A"ra Visual Basic # genere el siguiente *ormulario? a continuacin introduzca el siguiente cdigo *uente en el mismo@ Aigura -. Aormulario para parte 1. %rivate Su" Aorm ;oad67 8imer1.4nterval H'22 FS&omm1.&omm%ort H ' IA(ustar al puerto real de su arduino en su %& FS&omm1.Settings H J1.22?n?0?1J FS&omm1.4nputFode H com4nputFode8ext FS&omm1.%ort9pen H 8rue 5nd Su" %rivate Su" 8imer1K8imer67 ,im valor As 4nteger ,im voltage As Single IVeri*ica si existen datos en el "u**er del puerto 4* FS&omm1.4nBu**er&ount LM 2 8!en ISi existen datos los retira Interfaces y Perifricos, Gua 3 7 valor H FS&omm1.4nput I&alcula el nivel de tensin que o"tuvo el A,& volta(e H valorB1223N- IActualiza la ventana con la in*ormacin reci"ida 8ext1.8ext H valor 8ext2.8ext H Round6volta(e?27 5nd 4* 5nd Su" .istado -. Pro#rama de Visual Basic para parte -. 3. A continuacin a"ra el Arduino 4,5 e introduzca el siguiente setc!. void setup67 O BB4nicializa el puerto serie Serial."egin61.227P Q void loop67 O int lecturaP lectura H analogRead627P BB8oma lectura del A,& Serial.print6lectura7P BB5nv$a el dato le$do dela#6-227P BBCenera un retardo "reve Q .istado / 0 S1etc* para la parte -. '. &onecte el ca"le USB # descargue el setc! al Arduino. 5(ecute el programa en Visual Basic # o"serve el valor que se presenta en la ventana. -. Var$e el potencimetro # o"serve cmo cam"ia el valor visualizado en pantalla. .. Fodi*ique el *ormulario para que muestre una "arra de desplazamiento !orizontal 6o el control de su eleccin7 que represente la posicin relativa del potencimetro. +oti*ique a su docente cuando termine el programa para que le sea evaluado. Parte /. Control de salidas mediante P+M /. ,esconecte la tar(eta Arduino del puerto USB # proceda a armar el siguiente circuito 6una vez m>s? el circuito no requiere de *uente externa7. Aigura .. ,iagrama de circuito de la parte 2 Interfaces y Perifricos, Gua 3 8 0. A continuacin genere un nuevo pro#ecto en Visual Basic. Siga el siguiente modelo para crear el *ormulario e introduzca el cdigo mostrado en el listado 3. Aigura /. Aormulario de programa de la parte 2 %rivate Su" AormK;oad67 FS&omm1.&omm%ort H ' IA(ustar al puerto real de su %& asignado a Arduino FS&omm1.Settings H R1.22?n?0?1J FS&omm1.4nputFode H com4nputFodeBinar# FS&omm1.%ort9pen H 8rue VScroll1.Fin H 2 VScroll1.Fax H 1- VScroll2.Fin H 2 VScroll2.Fax H 1- VScroll3.Fin H 2 VScroll3.Fax H 1- VScroll'.Fin H 2 VScroll'.Fax H 1- 5nd Su" %rivate Su" VScroll1K&!ange67 I,e*ine un vector de un dato? el dato a enviar ,im datoKenviado627 As B#te I&oloca el dato en el vector datoKenviado627 H VScroll1.Value S 2N1. I5nv$a el dato FS&omm1.9utput H datoKenviado ;a"el1.&aption H VScroll1.Value 5nd Su" %rivate Su" VScroll2K&!ange67 I,e*ine un vector de un dato? el dato a enviar Interfaces y Perifricos, Gua 3 9 ,im datoKenviado627 As B#te I&oloca el dato en el vector datoKenviado627 H VScroll2.Value S 1N1. I5nv$a el dato FS&omm1.9utput H datoKenviado ;a"el2.&aption H VScroll2.Value 5nd Su" %rivate Su" VScroll3K&!ange67 I,e*ine un vector de un dato? el dato a enviar ,im datoKenviado627 As B#te I&oloca el dato en el vector datoKenviado627 H VScroll3.Value S 2N1. I5nv$a el dato FS&omm1.9utput H datoKenviado ;a"el3.&aption H VScroll3.Value 5nd Su" %rivate Su" VScroll'K&!ange67 I,e*ine un vector de un dato? el dato a enviar ,im datoKenviado627 As B#te I&oloca el dato en el vector datoKenviado627 H VScroll'.Value S 3N1. I5nv$a el dato FS&omm1.9utput H datoKenviado ;a"el'.&aption H VScroll'.Value 5nd Su" ;istado 3. %rograma en Visual Basic de la parte 2 1. Taga un nuevo Setc! en el Arduino 4,5 # escri"a el siguiente programa@ void setup67O BB4nicializa el puerto serie Serial.Begin61.227P Q void loop67O int datoP int numKledP int "rilloP BBRealiza el proceso slo si se reci"en datos i*6Serial.availa"le677O BB8oma el "#te del puerto dato H Serial.read67P BB5xtrae los cuatro "its m>s signi*icativos para el nDmero del led numKled H datoMM'P BB5xtrae los cuatro "its menos signi*icativos para el valor del "rillo Interfaces y Perifricos, Gua 3 10 "rillo H dato U 2x2AP BBA(usta el "rillo segDn el led seleccionado s)itc!6numKled7O case 2@ analog3rite61?"rillo LL '7P "reaP case 1@ analog3rite6.?"rillo LL '7P "reaP case 2@ analog3rite6-?"rillo LL '7P "reaP case 3@ analog3rite63?"rillo LL '7P "reaP Q Q Q ;istado '. Setc! de Arduino para la parte 2 12. &onecte el ca"le USB a Arduino # descargue el Setc!. 5(ecute el programa de Visual Basic # deslice las "arras de desplazamiento. 9"serve lo que sucede con los ;5,s al variar las "arras. 11. Fodi*ique el programa de Visual Basic para generar el e*ecto de parpadeo atenuado en uno de los ;5,s 6el "rillo aumenta # disminu#e suavemente entre los extremos de encendido # apagado7? mediante un timer que var$e el "rillo autom>ticamente cada 2.-s. +oti*ique a su docente cuando lo termine para que le sea evaluado. 12. ,esconecte la tar(eta Arduino de su %& # desarme el circuito. ;uego apague su computadora # de(e en orden su puesto de tra"a(o. 1. V,e quE manera se realiza la lectura de los datos en la primera parteW V&mo se consigue sincronizar am"os extremosW 2. VXuE proceso se realiza para com"inar el valor de "rillo de cada ;5, con su posicin relativa al transmitirW V,e quE manera realiza el programa en Arduino la separacin de esta in*ormacinW 1. ,etermine cmo se puede !acer para agregar entradas # salidas adicionales en los programas de la primera # segunda parte. Re*erencia en l$nea del lengua(e@ !ttp@BBarduino.ccBenBRe*erenceBTome%age Fassimo Banzi? RCetting started )it! ArduinoJ 9IReill# Fedia B Fae %u"lis!er? Farzo 2221? 4SB+@ 1/0Y2Y-1.Y1---1Y3 n#lisis de $esultados Interfaces y Perifricos, Gua 3 Investigacin %omplementaria &ibliografa 11 EVALUACION % 1-4 5-7 8-10 Nota CONOCIMIENTO '() %onocimiento deficiente de los fundamentos tericos %onocimiento y e*plicacin incompleta de los fundamentos tericos %onocimiento completo y e*plicacin clara de los fundamentos tericos APLICACIN DEL CONOCIMIENTO +,) -o Termin completamente el programa y coment mal el cdigo ./,)0 -o reali1 el circuito correctamente .2,)0 Termin completamente el programa pero los comentarios no estaban del todo correctos El circuito funcion Termin completamente el programa con sus comentarios correctos El circuito funcion ACTITUD '3( ) Es un observador pasivo3 !articipa ocasionalmente o lo 4ace constantemente pero sin coordinarse con su compa5ero3 !articipa propositiva e integralmente en toda la pr#ctica3 '3( ) Es ordenado6 pero no 4ace un uso adecuado de los recursos 7ace un uso adecuado de los recursos8 respeta las pautas de seguridad6 pero es desordenado3 7ace un manejo responsable y adecuado de los recursos conforme a pautas de seguridad e 4igiene3 TOTAL 9,, ) 7oja de cotejo: / :ua /: rduino y %omunicacin ;erial con <isual &asic lumno: =ocente: :>: Fec4a: Maquina -o: Interfaces y Perifricos, Gua 3