Practica Pic Bluetooth
Practica Pic Bluetooth
Practica Pic Bluetooth
MASTER EN SISTEMAS TELEMTICOS E INFORMTICOS DOMTICA Y SISTEMAS EMBEBIDOS PARA COMUNICACIONES INALMBRICAS
DTE
GUIN PRCTICA 2: Comunicacin PIC y mdulo Bluetooth Conexin hardware y configuracin a bajo nivel entre un PIC y un mdulo Bluetooth
NDICE
1 OBJETIVO DE LA PRCTICA........................................................................................ 3 1.1 Objetivo General............................................................................................... 3 1.2 Objetivos Especficos. ...................................................................................... 3 2 MATERIAL Y MONTAJE .............................................................................................. 3 2.1 Material............................................................................................................. 3 2.2 Montaje Hardware ............................................................................................ 5 3 DISEO DEL PROGRAMA EN ENSAMBLADOR .............................................................. 6 4 DISEO DE LA APLICACIN DE CONTROL PARA EL MDULO BLUETOOTH. ............. 10 4.1 Diagrama del Ejemplo ejepicbt1.asm ......................................................... 15 4.2 Diagrama general............................................................................................ 16 4.3 Diagrama A: Configuracin de los registros del PIC16F876......................... 17 4.4 Diagrama B: Configuracin para Bluetooth................................................... 18 4.5 Diagramas de control comunicacin BT. ....................................................... 19 4.5.1 Diagrama conexin con otro mdulo Bluetooth..................................... 19 4.5.2 Diagrama del protocolo de control de encendido de las bombillas........ 20
DTE
1 OBJETIVO DE LA PRCTICA
1.1 Objetivo General.
Al terminar la prctica el alumno deber ser capaz de: Realizar un programa que desde el microcontrolador permita conexiones inalmbricas por Bluetooth para controlar el sistema de encendido de los LEDs. Se tendr que realizar un protocolo que desde el microcontrolador permita recibir peticiones desde dispositivos mviles con Bluetooth. Realizar un diseo fsico y lgico para la conexin hardware entre un microcontrolador (PIC 16F876) con un mdulo Bluetooth realizando una configuracin a bajo nivel. o El lenguaje de programacin podr ser C o podr ser ensamblador. Opcin opcional y complementaria: realizar la opcin utilizando el mdulo Arduino presentado en la prctica 1. o El lenguaje de programacin ser java para Arduino.
Con respecto al kit de Arduino: - Analizar los comandos y libreras - Configurar el puerto serie para la comunicacin con el chip de Bluegiga. -
2 MATERIAL Y MONTAJE
2.1 Material
Hoja de especificaciones del PIC16F876 (PIC16F87X.pdf). Cable conexin Puerto serie RS232. Alimentacin para el mdulo bluetooth y el pic. PC con Sistema Operativo Windows o Linux.
DTE
CD con MPLAB IDE para Windows. Programa ejemplo ejepicbt1.asm en ensamblador del directorio programas_ejemplo_HD\ENSAMB_PIC.
DTE
Figura 1. En la figura aparece un reloj de 4Mhz, puede ser ese mismo o bien uno de 3.6864, revisa tu placa.
En la figura anterior, se presenta el diseo lgico de las conexiones entre el microcontrolador y el mdulo Bluetooth de Bluegiga del kit de las prcticas. Como se puede observar, tanto la alimentacin como la tierra, deben ser las mismas para que ambos dispositivos tengan las mismas referencias. La resistencia que se pone en el pin Vpp es para evitar que el dispositivo est haciendo reset continuamente (ms informacin en el datasheet del PIC16F876). Es necesario que ambos (mdulo BT y pic16f876) tengan el mismo nivel de tensin de alimentacin puesto que los pines RX y TX dependen del valor con que se alimente el pin Vdd (datasheet PIC16F876). Estos pines se cruzan en la conexin con el mdulo BT debido a que cuando el microcontrolador enva por TX el otro mdulo lo debe recibir por RX. Y lo mismo con el pin RX del PIC. El reloj de cristal puede ser de 4Mhz o de 3.6864Mhz, debes
comprobar este valor para realizar los clculos que se van a requerir para esta prctica. En los pines RB6 y RB5 se han puesto leds junto con resistencias, para que sirva para depurar lo que sucede en el programa. Es decir, que se enciendan dependiendo del estado del control que hayamos implementado para el microcontrolador. Tambin los utilizaremos para que simulen dos bombillas. Una vez realizadas las conexiones de la figura, el siguiente paso es conectar la alimentacin al mdulo Bluetooth (que suministrar la alimentacin para el PIC). Nota: Se suele conectar para una mejor proteccin del circuito un condensador de 100nF entre Vdd y Vss.
DTE
Figura 2
Figura 3
Paso 4: Indicamos el path del compilador, del linkador de libreras como aparece en la siguiente figura. Pulsamos siguiente.
DTE
Figura 4
Paso 5: Indicamos el nombre del proyecto en la casilla Proyect Name, lo denominaremos practicaPIC. En la casilla de Proyect Directory indicamos el path del proyecto, podemos cambiarlo pulsando la tecla Browse. Y finalmente pulsamos siguiente.
Figura 5
Paso 6: En la siguiente figura aparece un men para aadir un fichero a nuestro proyecto, pero puesto que partimos de 0 no lo aadimos. Sino, simplemente apareceran dos ventanas: en la de la izquierda aparecen los archivos de nuestro ordenador, buscamos el que queremos aadir y pulsamos la tecla Aadir. A la derecha aparecern los ficheros que se hayan aadido. Paso 7: Pulsamos Finalizar y nuestro proyecto ya est creado. Ver siguiente figura.
DTE
Figura 6
Paso 8: Una vez creado el proyecto nos aparecer en la parte izquierda de la pantalla una ventana en la que se incluyen los ficheros de nuestro proyecto. o Paso 8.1: Si no tenemos el cdigo de ningn fichero que queramos aadir a nuestro proyecto pulsamos: ! File ! New. ! Aparece una ventana en blanco. Escribimos el cdigo del fichero. ! Guardamos el fichero con extensin .asm. o Paso 8.2: Una vez que tenemos el cdigo, en la ventana del proyecto pulsamos con el botn derecho del ratn sobre Source Files y seleccionamos Add Files. Nos aparece un men para seleccionar el archivo guardado en nuestro PC con extensin .asm.
Figura 7
Paso 9: Lo siguiente ser configurar los bits del dispositivo. Para ello pulsamos sobre configure ! configure bits. Los configuramos con los datos que aparecen en la siguiente figura. o Oscillator: XT. Cristal de cuarzo externo. o Watchdog Timer: Desactivado. o Power Up Timer: Desactivado. o Brown Out Detect: Desactivado. o Low Voltage Program: Activado. Trabaja con tensin baja. o Flash Program Write: Activado. Permitimos reescribir la flash del pic. o Data EE Read Protect: Proteccin de datos del pic16f876 para lectura desactivado. o Code Protect: Desactivado. Se puede cambiar el programa del dispositivo. Reprogramar.
DTE
Figura 8
compile y
Paso 11: Si no ha habido ningn problema al compilar saldr una ventana indicndolo. Ahora podemos grabar el programa en el pic. Para ello primero tenemos que seleccionar el programador. En nuestro caso, seleccionaremos en el men Programmer ! PICSTART PLUS.
Figura 9
Paso 12: Posteriormente activamos el programador en el mismo men Programmer ! Enable. Paso 13: Los iconos del programador se activarn. Existen 4: read, write, verify, clear. Pulsamos el botn clear, y posteriormente write. Si no ha habido ningn problema indicar que se ha producido de forma satisfactoria la programacin.
DTE
10
DTE
btfss PIR1,RCIF goto Esperar_Dato bcf PIR1,RCIF BANKSEL RCREG movf RCREG,W RXdato BANKSEL dato_REC movwf dato_REC return
; Prueba si el buffer de RX esta lleno ; Recibir_Serie ; Esperar_Dato ; No hay dato ; Hay dato ; Si el buffer esta lleno lo lee y guarda
Si no utilizas ninguna de las dos opciones es posible que en la siguiente prctica tengas problemas para que el pic reciba los datos enviados desde el telfono. HITOS A SEGUIR: (Recuerda que el informe de esta prctica debes de ir hacindolo a medida que hagas la prctica, slo se entregar al profesor el da de la entrega de la memoria final, pero recuerda estar atento a las pautas de entrega en clase de partes del cdigo o especificaciones. Este trabajo continuo se valora positivamente en la nota final) Consejo importante: vas a empezar a utilizar un hardware diseado por el departamento de tecnologa electrnica, por los propios profesores de la asignatura, que con un coste muy pequeo te ofrecen la posibilidad de crear tu desarrollo de un mini-sistema embebido para encender/apagar leds (bombillas). Adems, estas placas las hemos ido evolucionando desde el ao 2006, te rogamos que las tratas con el respeto adecuado ya que otros compaeros tuyos tamibn las utilizarn, para esta asignatura y para otras. Tienes que ser paciente con el hardware, hace lo que le dices, pero es dficil de depurar. As que lee atentemente los hitos e intenta seguir los consejos que te damos. Hito 1: La configuracin Bluetooth que se debe realizar se describe en el diagrama 4.3 y 4.4 es: i) Configuracin del mdulo UART del pic16f876 (diagrama 4.3). ii) Configuracin registros del mdulo Bluetooth a travs de comandos AT (diagrama 4.4). (1) Nombre del dispositivo: DOMOLUZ. (2) Tipo de dispositivo: Remote Control. Ayuda en el documento BluetoothBaseBand.pdf. (3) Nombre del servicio Serial Port: ServLight. (4) Conectable y descubrible por otros dispositivos. (5) Si queremos Autentificacin el PIN=1234. O si no queremos que haya autentificacin no introducimos el PIN. (6) El rango de cobertura del dispositivo Bluetooth ser de 10-20 metros. (7) Para finalizar, se puede manda un reset para que comience a trabajar el mdulo Bluetooth con los parmetros de configuracin dados. Con este comando, si hubiese alguna conexin previa no cerrada, se terminara. El ejemplo de este comando no viene en el diagrama, pero se puede incluir as como otros que se consideren necesarios para mejor la prctica. Hito 2: El siguiente paso ser implementar el protocolo de control de bombillas. Puede seguirse otro de manera opcional, pero se debe seguir el mismo criterio de simplicidad. Protocolo para encender las bombillas. Diagramas del apartado 4.5:
11
DTE
(1) Una vez establecida la conexin entre el kit (pic+mdulo bt) y otro dispositivo bluetooth (pc telfono mvil) se debe realizar lo siguiente: ! Desde el telfono mvil con bluetooth se enva: Paquete para encender bombilla: @i1 + \r o Donde i es el nmero de bombilla que se quiere encender. Paquete para apagar bombilla: @i0+ \r o Donde i es el nmero de bombilla que se quiere encender. ! La respuesta desde la placa de la prctica a estos paquetes si se han recibido correctamente, es decir, cumplen la sintaxis: Respuesta a los paquetes: OK\r Hito 3: Simular: 1) Utilizando el manual de MPLAB subido en la web de la asignatura se debern seguir los pasos para simular el cdigo desde el MPLAB. 2) Debes describir qu bits has testeado para la simulacin. 3) Recuerda que para recibir y enviar por la UART hay ciertos bits en las subrutinas (putchar y recibir_serie) que no permiten ser cambiados desde el simulador. Piensa como lo haras. Hito 4: Bajar a placa y validar desde el hiperterminal: 1) ANTES DE BAJAR A PLACA SE DEBE: a. Configurar el chip bluetooth para disminuir la velocidad a 9600 baudios. Recuerda que se ha acordado que el pic va a hablar a 9600 baudios a un reloj de 3.6864 Mhz. Y recuerda tambin que el bluetooth va por defecto a 115200 baudios. b. Tambin se recomienda quitar el ECO del chip bluetooth para evitar errores en el cdigo. Si no quitas el eco recuerda que todo lo que se manda por la UART del pic al bluetooth se replica, por lo tanto, tu programa de leer los paquetes de encendido/apagado puede fallar ya que va a tener que leer demasiados caracteres, y si no se hace un uso eficiente de la UART puede fallarte el cdigo. c. Recuerda tambin echar un vistazo al datasheet del pic para ver qu bits debes reiniciar en la UART para evitar problemas para leer del buffer de la UART. Esto no es obligatorio pero conveniente que lo intentes averiguar. 2) Compila la versin donde slo se envan los comandos AT descritos en del diagrama 4.4. 3) Tendrs que leerte el manual para bajar el programa utilizando el ic-prog. Recuerda que el entorno MPLAB tiene su propio simulador y grabador de pics, pero vamos a utilizar uno muy econmico y que slo requiere de un programa: ic-prog. 4) Para grabar el cdigo con el ic-prog localiza el fichero .hex generado al realizar un build all de tu prctica. Copia el .hex y crgalo a tu pic desde el ic-prog. Recuerda leer el manual. 5) Enciende la placa y desde tu mvil comprueba que se ha cambiado el nombre del chip bluetooth. a. Si tienes problemas para ver el nombre desde tu mvil asegrate que la antena est bien conectada. Si no toca levemente con el dedo. b. Otra cosa que puedes hacer es encender la placa conectada al hiperterminal y QUITANDO EL PIC. Es decir, como si estuvisemos en la prctica 1 para hacer lo siguiente:
12
DTE
i. Teclea el comando SET y mira (con el pic quitado) si los registros del bluetooth se han actualizado. Por ejemplo, cambie el nombre del dispositivo y no le pongas PIN. ii. Comprueba que est a 9600 baudios. iii. Si no se han alterado los comandos del bluetooth avisa al profesor. Comprueba que has compilado el cdigo y configurado los bits de reloj y del pic (recuerda en la parte del manual del MPLAB donde se hablaba del men en MPLAB configure-> configure bits, tienes que ponerlo igual que en el manual). iv. Si te sigue sin funcionar comprueba que has configurado el pic, el reloj y los bits de Vcc/MCLR correctamente desde el icprog. v. Si te sigue sin funcionar avisa al profesor. c. Para probar que te funciona el cdigo, o que al menos has grabado bien, AHORA S QUE TIENES QUE PONER EL PIC EN LA PLACA Y CONECTARLA AL HIPERTERMINAL, enciende la placa conectado al hiperterminal, comprueba que los Leds del inicio se apagan y se encienden (recuerda el cdigo de ejemplo). Por favor, apaga la placa y encindele adecuadamente utilizando el conector cada vez que hagas cambios en el software del pic. No coloques el pic con la placa encendida porque puedes estropearla. d. Es aconsejable ponerse en ciertos puntos encender/apagar un led para saber por que partes vas del cdigo en tiempo real. Ten en cuenta que entre encender y apagar un led tienes que meter una Pausa para que te de tiempo ver como se encienden y se apagan. 6) Haz lo mismo (pasos Hito 4 del 1 al 4) con la versin de cdigo que slo examina el protocolo de encendido/apagado de bombillas. a. Para probar esta parte S TIENES QUE CONECTAR EL PIC A LA PLACA Y LA PLACA AL HIPERTERMINAL. b. Recuerda tener bien configurado los bits del men de mplab (configure -> configure bits) y en el ic-prog (reloj de cristal, tipo de pic, etc). c. Ahora tienes al hiperterminal funcionando como sniffer de tu prctica. Cuando escribas por el teclado es como si le estuvieses enviando al pic comandos como si fueras el chip bluetooth. Es decir, cuando le escribes cosas por teclado al pic te llegan como si fueras el mvil que le ha enviado por bluetooth un comando de encender/apagar. d. As que prueba a enviar encender la bombilla 1 desde el teclado a ver que pasa. e. A veces se recomienda en el cdigo del pic utilizar un led como depurador, de tal modo que, sabes si est analizando bien la trama. Se dice como ejemplo un led pero puedes utilizar los que quieras hasta que consigas entender que te funciona. f. Otros compaeros utilizan lo siguiente: i. Cuando el pic recibe correctamente una secuencia de encendido/apagado el propio pic enva OK1, OK2, OK3 indicando el 1, 2, 3 el estado del funcionamiento del pic. ii. Si te falla quita el chip bluetooth con cuidado pero pidiendo permiso antes a la profesora. NO suele ser el problema pero si tienes algo mal del cdigo te puede dar una excepcin que no atiendes porque no se detecta.
13
DTE
NOTA: Si utilizas un adaptador usb-rs232 puedes tener problemas a utilizar el ic-prog. Por eso se recomienda que hagas uso de los ordenadores de prcticas que tienen rs232 aunque sea para grabarte el programa y depurar con el hiperterminal. NOTA: En la entrega final de la prctica cada uno de estos hitos debe estar documentado correctamente. NOTA PARA LA SIGUIENTE PRCTICA: antes de implementar la siguiente prctica tienes que haber testeado si tu programa para el PIC funciona para recibir las peticiones de encendido/apagado. Para ello, conecta la placa al hiperterminal y escribe los comandos por el teclado que enviara el mvil. Si la placa enciende y apaga la bombillas que le indicas por los comandos del hiperterminal (teclado), debera ser automtico que te funcionase con el telfono mvil. Esto es porque tambin le llegarn de manera serializada los comandos al microcontrolador del kit, pero en vez de utilizar el puerto serie para comunicarse con l, se realizar por Bluetooth mediante el envo de comandos desde un telfono mvil o un PC. El objetivo es poder enlazar esta prctica con la siguiente, que ser sobre el programa en el telfono mvil que se encargar de controlar el sistema domtico.
14
DTE
Inicio
Configuracin serie del PIC 9600 baudios, 8 bits, 1 bit stop, 0 paridad. Habilitada la transmisin. Reloj 3.6864Mhz
Lectura respuesta
AT + fin de lnea + retorno de carro + OK + fin de lnea + retorno de
carro
Fin
15
DTE
Inicio
Configuracin serie del PIC 57600 baudios, 8 bits, 1 bit stop, 0 paridad. Habilitada la transmisin.
Procesar comunicaciones
Atender peticiones
NO
fin? S Fin
16
DTE
Atributos de la comunicacin serie: 9200 baudios, (3.6864Mhz) 8 bits, 1 bit stop, 0 paridad
17
DTE
18
DTE
Procesar comunicaciones.
Enviar al telfono: CONNECT 0 MAC_TELEFONO 1 RFCOMM Conexin establecida con el telfono y el mdulo Bluetooth.
*externo: Telfono mvil u otro dispositivo Bluetooth que se haya conectado a nuestra placa de la prctica. 19
DTE
@10 + \r
Fin
NOTA: LOS COMANDOS DESCRITOS EN ESTE DIAGRAMA PARA ENCENDER O APAGAR BOMBILLAS SON UN EJEMPLO. SI QUIERES PUEDES CAMBIAR EL FORMATO. PERO RECUERDA: DEBEN EMPEZAR POR @.
20