TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: J1M en 28 de Diciembre de 2010, 14:26:18
-
Bueno, con eso de que las vacaciones son ese periodo en el cual, en vez de descansar, hacemos más que cuando estamos sumidos en la rutina... me he dedicido a sacar de la pila de cosas que tenía ganas de probar, una sencilla aplicación que relaciona nuestros queridos PICs, la aclamada conexión Bluetooth y el sistema operativo para móviles de moda, Android. Para el desarrollo en esta plataforma (Android), podemos optar por dos caminos, hacer uso de las SDK ó usar una Aplicación Web de los GoogleLabs llamada App Inventor. Programación visual, por bloques, muy sencillito y con el objetivo de hacer aplicaciones de una forma rápida! Recientemente ha dejado de ser una Beta privada por lo que cualquiera de nosotros puede usarla. Como ya os imaginaréis me he decidio por el App Inventor, con el objetivo, como siempre, de hacer algo sencillo y que seais vosotros quienes lo compliquéis para hacer una aplicación con una utilidad real!! :)
- Dispositivos utilizados:
* PIC18F4553Trainer: http://www.microingenia.com/electronics/product.php?id_product=31
* ModBluetooth: http://www.microingenia.com/electronics/product.php?id_product=4
* Samsung Galaxy S: http://www.samsungmobile.es/moviles/samsung-galaxy-s
- Software utilizado:
* CCS: http://www.ccsinfo.com
* App Inventor: http://appinventor.googlelabs.com
El Objetivo de esta sencilla aplicación es hacer un toggle del led bicolor de la entrendora, verde -> rojo -> ambar -> off...
La aplicación en concreto consta de dos partes, por un lado, la aplicación para el PIC y por el otro la aplicación que cargaremos en el terminal Android.
Código fuente para el PIC (está mas menos explicado, si tenéis dudas preguntadlas en el hilo!)
////////////////////////////////////////////////////////////////////////
//ModBluetooth V1.0 Test Code - www.microingenia.com 12/02/2010//
// //
//Simple code to show how to use a communication over bluetooth. //
//You must link your Bluetooth dongle with ModBluetooth first. //
//Pswd: 0000, this catch an ascii to turn on/off led //
// //
//Released under the cc by-nc-sa 3.0 License. //
//http://creativecommons.org/licenses/by-nc-sa/3.0/ //
////////////////////////////////////////////////////////////////////////
#include <18F4553.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOBROWNOUT,USBDIV,PLL2,CPUDIV1,VREGEN,PUT,MCLR
#use delay(clock=48000000)
// MiE USB HID Bootloader
#define CODE_START 0x1000
#build(reset=CODE_START, interrupt=CODE_START+0x08)
#org 0, CODE_START-1 {}
// Definitions for LEDs on Board
#define ON output_high
#define OFF output_low
// Connections in 18F4553Trainer
#define LedV PIN_B0
#define LedR PIN_B1
// Connections between ModBluetooth and 18F4553Trainer
#define Rx PIN_C6
#define Tx PIN_C7
#use rs232(UART1, baud=115200, xmit=Rx, rcv=Tx, STREAM=BLUE)
#include "string.h"
int8 CR = 0x0d; // Carriage Return
void main()
{
ON(LedR); // Red: No connection
OFF(LedV);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
delay_ms(3000);
fprintf(BLUE,"$$$"); // Get into command mode
delay_ms(250);
fprintf(BLUE,"SA,1"); // Enable authentication
fputc(CR,BLUE);
delay_ms(250);
fprintf(BLUE,"SP,0000"); // Set Password
fputc(CR,BLUE);
delay_ms(250);
fprintf(BLUE,"SN,ModBluetooth"); // Device name
fputc(CR,BLUE);
delay_ms(250);
fprintf(BLUE,"SS,ModBluePort"); // Service name
fputc(CR,BLUE);
delay_ms(250);
fprintf(BLUE,"ST,0"); // Enable vinculation
fputc(CR,BLUE);
delay_ms(250);
fprintf(BLUE,"---"); // Get out command mode
fputc(CR,BLUE);
ON(LedV); // Green: Bluetooth ready! Link it now.
OFF(LedR);
while(true);
}
#INT_RDA
void rda_isr(void)
{
char c;
c = fgetc(blue);
if(c == '@')
{
ON(ledR);
OFF(ledV);
}
else if(c == '#')
{
ON(ledV);
OFF(ledR);
}
else if(c == '$')
{
ON(ledR);
ON(ledV);
}
else if(c == '%')
{
OFF(ledR);
OFF(ledV);
}
}
Código para Android, como ya os he comentado, es visual y por bloques... aquí la imagen!
(http://www.microingenia.com/temp/MiEPICBT/MiEPICBT_C.png)
Y aquí una captura de pantalla del móvil corriendo la aplicación:
(http://www.microingenia.com/temp/MiEPICBT/MiEPICBT_S.png)
Ya que el App Inventor da la posibilidad de importar/exportar el código fuente de la aplicación os lo dejo acontinuación, así os ahorrais tener que construir el puzzle...!
http://www.microingenia.com/temp/MiEPICBT/MiEPICBT.zip
Os subo también el APK (instalador de Android) listo para ejecutar en vuestros móviles:
http://www.microingenia.com/temp/MiEPICBT/MiEPICBT.apk
Bueno ahora os toca a vosotros empezar a cacharrear! Me imagino que os surgirán dudas, así que id poniendolas por aquí abajo.
Un saludo a todos y feliz 2011 !! :mrgreen:
-
Siempre innovando, Jaime :shock:
Me suscribo al hilo porque me interesa mucho. Gracias por la info
-
Interesantisimo! Gracias J1M!
-
Hola.
Disculpa la pregunta ... como ejecuto el .apk? lo copie a mi móvil y no reconoce el archivo. Necesito algo más?
Saludos
-
Hola.
Disculpa la pregunta ... como ejecuto el .apk? lo copie a mi móvil y no reconoce el archivo. Necesito algo más?
Saludos
Hola MLO. Yo sólo he instalado APKs en el emulador Android. Talvez esta guía (http://electrolinks.blogspot.com/2009/03/instalar-aplicaciones-apk-en-emulador.html) te pueda dar alguna pista.
-
Gracias mig. Lo leo con mucha antención ;-)
Entonces, para que la aplicación corra en el celular .... que se debe hacer? toca usar otro soft? he visto que los juegos son .jar, es decir en JAVA cierto?
Saludos
-
Gracias mig. Lo leo con mucha antención ;-)
Entonces, para que la aplicación corra en el celular .... que se debe hacer? toca usar otro soft? he visto que los juegos son .jar, es decir en JAVA cierto?
Saludos
No sé si te vaya a servir ya que el link es para una SD card y no conozco bien los Android, pero me avisas si hay suerte.
JAR corre en la máquina virtual de Java y es independiente del móvil que uses.
Los APK sólo corren dentro del OS Android. Es como los EXE de Microsoft.
-
Hola mig.
Esos comandos (mksdcard) en donde los escribo? :oops:
-
Para instalarlo puedes hacerlo de dos formas diferentes:
- Lanzarlo mediante un File Manager, yo uso el AndroZip. Mete el archivo en la memoria SD de tu móvil y desde el AndroZip lo ejecutas.
- Mete el código fuente del App Inventor en el panel de control de aplicaciones (deberás loguearte en Google y darte de alta en el App Inventor... de esta forma podrás crear tus aplicaciones) y la descargas al móvil mediante el código QR que genera. Para ello necesitarás un scanner de códigos QR, por ejemplo el Google Goggles.
Saludos!
PD: Entiendo que tu móvil lleva Android como SO verdad??
-
MLO, mejor haz lo que el amigo J1M recomienda. ;-)
-
Gracias J1M.
Pues no se que SO tendrá, no soy ni medio en celulares :D es un Nokia 5310 ... creo que es Symbian S40 (http://www.tuexperto.com/2007/12/18/nokia-5310-xpress-music-a-fondo/) si sirve mi carcacha???
Voy a intentar hacerlo a ver como me va ... cualquier cosa silbo :oops:
Saludos
-
Nop MLO_ por eso te lo decía, esto es solo para los móviles con sistema Android.
Saludos!
-
:(
No hay forma entonces ...
Gracias
-
hola tengo una consulta con el envió de datos, solo envía por carácter ya que para mensajes largos es un poco engorroso y lo otro la recepción de datos tendrás algún ejemplo por ahí
gracias
-
perdón por el up y me colgare de este tema alguien que maneje android para que me pueda dar una mano revisando mi código
desde ya gracias
-
Hola que tal?
Me preguntaba si me podriais ayudar, ya que estoy haciendo una aplicacion para leer un sensor desde el pic, que lo manda por BT a la app de android.
Si que me funciona pero tengo alguna dudilla sobre el modulo BT.
Como puedo leer 2 variables, es decir, discretizar en la aplicacion del movil cuando recibo los datos por BT, que en una etiqueta ponga el valor de la primera variable, y en otra etiqueta ponga el valor de la otra??
Utilizo un timer, y con la funcion BluetoothClient1.BytesAviableToReceive, leo todos los bytes juntos, los paso mediante printf(), y fuera de la interrupcion del puerto serie del pic.
(Si habeis visto un articulo de NeoTeo donde lee un sensor, es basicamente eso lo que hago, pero no se como leer varios sensores a la vez)
Estoy un poco atascado..., si me pudierais dar alguna sugerencia os lo agracería.
Tambien preguntaros si hay algun tutorial sobre el bloque BT de app inventor?
Muchas gracias, y perdon por las molestias!!
Un saludo, David.
-
Buenisimo!!! :-/
Ya me lo estoy bajando. Yo tambien quiero jugar con esto!
-
Si quiero ejecutarlo en una tablet sin bluetooth, puedo hacerlo por USB ??
-
Me contesto solo.
NO se puede...
-
Me contesto solo.
NO se puede...
Yo no pude ni hacer funcionar el adaptador USB/bluetooth en la tablet :tongue:
-
Huyy, yo estaba por comprar uno para hacer eso mismo... :shock: :shock:
-
Huyy, yo estaba por comprar uno para hacer eso mismo... :shock: :shock:
Por lo que he leido, me parece que funcionan pero en las versiones actuales de android, en el 2.1 no lo logre :mrgreen:
-
Que tablet tenes y que version tiene ??
Una pregunta que siempre me hice es:
Pueod actualizarle la version a mi tablet??
-
Que tablet tenes y que version tiene ??
Una pregunta que siempre me hice es:
Pueod actualizarle la version a mi tablet??
La Zenithink creo que era, ya no la tengo, con Android 2.1.
Se puede actualizar, hay que buscar en la pagina del fabricante que generalmente largan actualizaciones compatibles. O sino buscar por la red, pero ya no es seguro :tongue:
-
que tal, espero no interrumpir, por lo que pasa es que quiero hacer algo parecido, pero primero quiero ver si logro hacer funcionar este proyecto usando un pic18f2550 y tengo un cristal de 20 M y 12 M. la pregunta es... me funcionaria si solo cambio el nombre del pic y en #use delay(clock=48000000) le pongo 20000000 y los pines de tx y rx que creo que son diferentes ??
-
aaa y se me olvidaba, también seria la velocidad a 9600 baudios ya que así esta configurado mi modulo
( por que de hecho ya lo intente y no logro que funcione :?
-
que tal, espero no interrumpir, por lo que pasa es que quiero hacer algo parecido, pero primero quiero ver si logro hacer funcionar este proyecto usando un pic18f2550 y tengo un cristal de 20 M y 12 M. la pregunta es... me funcionaria si solo cambio el nombre del pic y en #use delay(clock=48000000) le pongo 20000000 y los pines de tx y rx que creo que son diferentes ??
Tenes dos maneras colocando el de 20MHz:
- Cambiar HS_PLL por HS y #use delay(clock=48000000) por #use delay(clock=20000000)
- Dejar HS_PLL, asegurarte de que quede PLL5 y dejar #use delay(clock=48000000)
Saludos!
Saludos!
-
gracias por contestar, ahora mismo lo hago y veo que pasa
-
no pues ya intente de las dos formas y sigue sin funcionar :?
-
una vez mas yo :? realmente quiero hacer la comunicación y ya pase casi todo el día y no logro controlar mi modulo, hice lo que dijo suky y no funciono, busque en la red y me encontré con que alguien tenia un problema mas o menos al mio pero el lo soluciono conectando el tx del modulo al rx del pic y el rx de modulo al tx del pic, por que así vienen unos módulos,( el mio es un JY -MCU) así que lo hice y resulto que cuando le daba en togle! el led rojo encendía y el verde se apagaba pero solo se quedaba así hasta recetar y de nuevo tenia que hacer lo mismo, entonces decidí encender otro led modificando el programa del pic y el del app pero resulta que sigue haciendo lo mismo entonces no se que hacer. esto es lo que modifique, aver si alguien me puede ayudar ( solo quiero prender y apagar un led)
adjunto el programa del pic ( los cambios son: pic a utilizar, baudios , pines xt y xr, clock, led ( B2) y creo que ya )
y una imagen de app inventor, sn lo mismo solo que en vez de togle puse on y otro botón que dice of y en panel de bloques mande los datos $ y %)
espero que alguien me pueda ayudar,gracias