Comunicación entre módulo bluetooth y un microcontrolador PIC

Buenas noches, soy alumno de electrónica y tengo en mente un proyecto que me interesa mucho desarrollarlo como aprendizaje personal.
Bueno este proyecto consiste en controlar las luces de una habitación mediante bluetooth la cual es la siguiente:
Mediante un teléfono celular activar el bluetooth(transmisor) para que éste mande señales al bluetooth receptor que éste a su vez lo comunique al PIC16F877A y en sus salidas del mismo accionen a los focos.
Quisiera saber si alguien sabe como podré desarrollarlo claro las pautas a desarrollar para que me asesore en éste proyecto; gracias por su atención y cualquier aporte será bienvenido. Gracias.
 
Última edición:
Solo coloca un conversor Bluetooth UART y listo, si alimentas el PIC también a 3.3V te evitas la conversión de nivel (tendrias que usar el 16LF877A) pero igual venden modulos ya ensamblados para operar a 5V. Lo otro dependerá de que teléfono uses, si es Smartphone con Android o si el programa será por JAVA.
El modulo ya se encarga de la comunicación y solo necesitas conectar los pines RX/TX del PIC, a lo mucho si deseas configurar lo seria usando los comandos AT para cambiar la velocidad, nombre y/o contraseña, esto se hace activando ciertas terminales del modulo y luego conectándote con la computadora para enviar los comandos.
 
Última edición:
Muchas gracias por tu aporte; pero también podría utilizar el PIC16F877A? es con el que estoy trabajando, y otra pregunta es de los comandos AT... sólo son si es que quiero colocarle contraseña al bluetooth o sea es opcional lo digo como no se mucho de ese comando.
 
Hola yo acabo de hacer algo parecido solo que en ves del celular es una computadora la que controla un led mediante un programa en Visual Basic 2008.
Si te interesa te puedo mostrar en detalle mi trabajo, utilize un modulo bluetooth compatible con niveles de 5v y en cuanto a los comandos AT no los nesesitas almenos que quieras cambiar la configuracion del modulo pero si lo deseas es realmente sencillo.
Te dejo una foto de como me quedo.
2013-01-25 19.56.59.jpg

Si lo quieres mañana te lo paso ya que lo tengo en la PC de escritorio.

Saludos,
 
Esta bien chévere tu proyecto, si es con una computadora está perfecto, me encantaría saber más en detalles de la realización del mismo.
Esperaré tu aporte, gracias.
 
Última edición:
Pues no hay problema con si es el 16LF877A o 16F877A, la unica diferencia es que el LF puede ser alimentado a 3,3V lo que permite usar el modulo sencillo, si lo usas a 5V necesitas el que ya esta armado para 5V e incluye regulador a 3,3V y conversor de nivel para las señales, los comandos AT son opcionales, ya vienen configurados como UART usando el perfil SPP (Serial Port Profile), tipicamente con un nombre como HC-0x (según el modulo) y con la contraseña "1234" a una velocidad de 9600baud pero se puede cambiar usando los comando AT, solo lo configuras una ves si quieres y se guarda. Son simples comandos, te conectas usando por ejemplo el hyperterminal del Windows y mandas simplemente la configuración como:
AT+PSWD=XXXX para cambiar la contraseña
AT+NAME=XXXXX para cambiar el nombre
Si ya sabes programar para usar el UART y el puerto serie en la computadora no hay más diferencia, solo es conectar los pines TX/RX con los del adaptador, puedes trabajar sin preocuparte por ello, el asunto es si lo quieres hacer en un celular dependerá de si es Android, Java, iOS, Windows Phone... el como programes la interfaz para controlarlo.
Yo también quiero hacer este proyecto, pero en mi caso es más ambicioso por que quiero usar un CC2540 (es un MCU de Texas Instruments que tiene transmisor Bluetooth) pero por ahora estoy ahorrando para si quiera comprar el programador :p
 
Última edición:
Aya esa es la diferencia usando el PIC16F877A la de la alimentación, pero este PIC me permite un rango de trabajo de 2.0V a 5.5V según su datasheet, asi que sí puede ser compatible con el módulo bluetooth.
Mi interrogante es la programación del PIC para que reconosca al módulo bluetooth, pienso que debe ser como la de una comunicación serial(mediante el USART) o me equivoco; y la otra es de no usar celular y uso la laptop para mandar las señales al bluetooth receptor que programa haría dicha finalidad
para la comunicación entre (TX/RX).

PD: El CC2540 es completo viene con su módulo bluetooth, excelente si lo llegaras a concretar.
 
Última edición:
Pues el PIC reconocerá el Bluetooth como cualquier otro UART como si lo conectarás con otro PIC u ordenador por RS-232 con el MAX232, el PIC no necesita programarse para nada más que para usar el UART, el modulo Bluetooth directamente transferirá los comandos por bluetooth hacia y desde el UART al perfil SPP con lo que aparecerá un puerto serie estándar en la computadora, lo del voltaje lo vi en la data sheet, el que va de 2V-5.5V es el LF, el F es de 4V-5.5V alimentarlo con menos puede traer complicaciones.
Aqui no estas tratando como yo que quiero usar el CC2540, en mi caso tendría que programar las funciones bluetooth, usando el adaptador ya viene el chip programado, de hecho incluso se tiene acceso a algunos Pin In/Out del MCU que controla la comunicación y es posible activarlos usando los comandos AT enviando:
AT+PIO=<numero de PIO>,<Estado>
Por ejemplo AT+PI0=10,1 cambia el PIO 10 a High
Si con esos te basta ni siquiera necesitarías del PIC, solo tendrás que revisar la data sheet del modulo para ver los comandos soportados y el diagrama y así poder hacer un PCB adecuado ya que generalmente solo los usan de UART y no aprovechan estas funciones adicionales.
Te dejo la del HC-05 para que la veas
 

Adjuntos

  • HC-05-datasheet.pdf
    840.6 KB · Visitas: 626
Última edición:
¿USART es lo mismo que UART?
O sea programo el PIC como receptor asíncrono y lo reconocerá al bluetooth sin problemas como si fuese con otro PIC. ¿Y de la laptop a módulo bluetooth como sería?, disculpa por tantas interrogantes, estoy empezando a eleborar mis propios proyectos jeje.
Con respecto a los voltajes de alimentación del PIC16F877 lo leí de acá:
ww1.microchip.com/downloads/en/devicedoc/39582b.pdf

PD: ¿El módulo HC-05 y el HC-06 son casi el mismo?
 
Última edición:
El USART (Universal Synchronous Asynchronous Receiver Transmitter) básicamente es lo mismo al UART, la diferencia es que este soporta el modo sincrono como un extra, también esta el EUSART que es la versión optimizada, entre el HC-05 y el HC-06 solo esta la diferencia de que el primero soporta actuar como maestro(conectarse a otro dispositivo) mientras que el segundo solo en esclavo (que se conecten a él).
 
Bueno aqui te dejo lo que te habia prometido:

Dejame explicarte mas detalles: en cuanto al hardware se compone de un pic 16f628a, un boton en el puerto B.0, un led en el puerto B.3 y el modulo bluetoth conectado al puerto USART del pic (Puerto B 1 y 2). Sobre el modulo bluetoth solo hace falta decir que funciona de 3 a 6v en modo esclavo, tiene la configuracion de fabrica y no hace falta configurar ningun comando en el pic para usarlo, el modulo establece un enlace SPP de forma automatica con la PC a la hora de emparejarlo, asi que lo unico que ocupas poner en el pic es la rutina de comunicacion que usaras para tu aplicacion y nada mas.

En cuanto al software de pic el mio esta hecho para checar el boton constantemente y mediante interupcion recibe los datos de la PC, cuando recibe una "A" se apaga, cuando recibe una "B" se enciende, cuando recibe una "C" invierte el estado del led ( si esta prendido lo apaga y si esta apagado lo enciende) y cuando recibe una "D" envia el estado del led un "1" para encendido y un "0" para apagado. Tambien hace lo mismo con los otros tres comandos para poder actualizar la ventana de mi programa en la PC.
Adicionalmente puedes prender o apagar el led con el boton y se vera reflejado en el programa del PC si estas conectado.

Ahora sobre el software del PC lo elabore en Visual Basic 2008 Express Edition yes muy sencillo tiene botones para abrir y cerrrar el puerto, prender y apagar el led, y otra boton el que cambia de color gris para no conectado, negro para led apagado y rojo para led encendido, adicionalmente si lo presionas invertiras el estado del led.
Mediante un timer que esta verificando constantemente el estado del led por lo que se actualiza inmediatamente si cambias el estado del led con el boton del pic.

Basicamente eso es todo, hice este proyecto como una prueba antes de comenzar a construir mi robot explorador.

El archivo contiene el codigo en Basic y el .hex para el pic (yo use un 16f628a) y la aplicacion terminada que hize en Visual Basic 2008.

Nota: la aplicacion aun no esta terminada, me falta corregir algunos errores y que se pueda elegir la configuracion del puerto COM... asi como te la doy esta configurada para usar el puerto COM 8 a 9600 baudios. Si tienes alguna duda o problema me avisas.
Por ahora no te puedo hablar mucho del program en VB ya que como dije no esta terminado pero cuando lo acabe lo subo con su codigo fuente y el diagrama del circuito te lo debo ya que ni siquiera lo hice solo lo arme y ya, pero si lo ocupas con todo gusto te lo hago. (aunque creo que lo puedes sacar facilmente si miras la imagen que habia puesto antes)

Salu2 espero te sirva
 

Adjuntos

  • Proyecto Bluetooth.rar
    157.1 KB · Visitas: 1,906
Muchas gracias Justiciero24, toda la información que me haz proporcionado me ha sido de mucha utilidad; con respecto al programa yo uso el mikroC para programar los PIC's trataré de programarlo mediante la lógica del programa o sea del funcionamiento del circuito. ¿No habría problema si uso el PIC16F877A?, ya que éste es el que manejo un poco más y aparte que también tiene el USART.
Cualquier duda te la haré llegar y nuevamente muchas gracias.
 
Aya ya te entendí o sea una vez alimentado y encendido el módulo bluetooth la laptop lo reconoce y ya puedo empezar a mandar señales de transmisión... me había confundido pensé que tenía que conectarlo por un puerto RS232 para programar el bluetooth para que recién la laptop reconosca a dicho módulo bluetooth; ya aclaré más esta parte gracias nuevamente Justiciero24.

PD: El detalle lo veo en como el software en este caso que elaboraste por Visual Basic hace para enviarlo por medio de bluetooth al PIC.
 
Última edición:
Asi es, basta con emparejar la pc y el modulo para crear un enlace serial a traves de un puerto COM virtual en la PC y de ahi trabaje el programa en visual basic como si se tratase de un puerto RS 232

Si quieres te publico el proyecto de visual basic como lo tengo para que te des una idea.
 
Si ya me aclaré ese punto ahora sé que la conexión de por sí va ser inalámbrica de la laptop y el módulo bluetooth para la transmisioón de los datos de la laptop.
Sí porfavor publica el proyecto de visual basic para darme una idea ya que yo no se mucho de programación con visual basic; nuevamente gracias.
 
Por supuesto,aqui te lo dejo... aunque te digo que este apenas es mi segundo programa en VB :rolleyes::LOL::LOL::LOL:

PD: le quite los logos ya que son propiedad de mi empresa.
 

Adjuntos

  • WindowsAppBT2S.rar
    1.2 MB · Visitas: 679
Interesado en el tema sigo este hilo unos meses despues de comenzado =) tengo una pregunta por no estar muy seguro. estoy basando mi proyecto (hola mundo con un celular) con un HC-06 (3.3v) y un pic 16F628A (2.0 a 5.5v),
1 - ¿puedo alimentar todo con 3.3v y listo?
2 - este pic tiene compatibilidad TX, RX USART con el modulo bluetooth?

gracias
 
Atrás
Arriba