Concurso de fotografía AM

Temática: «Una panorámica de tu acuario».
Ya esta abierto el plazo para presentar fotografías.

Más info
image01

¿Aún no conoces AMA?

Hazte socio de Acuariofilia Madrid Asociación.
CERRADO EL PLAZO DE INSCRIPCIÓN

Más info
image01

Atlas de peces de AM

¡Hemos alcanzado las 800 fichas! Visita nuestro atlas de peces actualizado.

Más info
image01

Cardúmenes y sociabilidad

Nueva actualización de la tabla con una extensa relación de peces, donde podrás conocer qué entorno necesita cada especie, su sociabilidad y si convive o no en cardumen. ¡Pasa a descubrirla!

Mas info
image01
CaoBT un proyecto Arduino con HC-05
Respuestas: 43    Visitas: 18549
#16
He retocado la imagen que contiene la errata para no inducir a errores.
[Imagen: xj4DmMg.jpg]
#17
En la lista de materiales que puse previamente hay componentes como resistencias y condensadores que pueden variar.

La PCB contempla algunas resistencias que podrían hacer falta usar. En otras palabras, hablamos de un diseño que está abierto a pequeñas variaciones dependiendo de las necesidades de cada uno y la PCB que hemos diseñado Ruben y yo, intenta cubrir el máximo de necesidades posibles.

Me he fijado que los condensadores que he puesto eran de 1000 microfaradios. La decisión es un poco arbitraria. Puse un valor alto porque me preocupaba el filtrado del dimeo del ventilador pero dependiendo de la potencia del ventilador puede no hacer falta tanta capacidad.
#18
Bien, conectado directo el USB-pc > FTDI > HC-05, sin alimentar inicialmente e HC-05

Pulsando el miniswich al conectar la alimentación del HC-05 consigo que el led pestañee lento.

Tras ajustar el monitor serie del IDE a 38400b y el puerto com de win a misma velocidad consigo el AT Ok
y AT+VERSION me da +VERSION:2.0-20100601

Ya esta en modo AT para configurar, ¿Qué parámetros de configuración hay que poner/cambiar?
#19
Felicidades.

Cambia el nombre. Recomiendo algo indicativo de la función y del sitio donde funcionará. Por ejemplo "Refrigerador Gambario 35 Litros".

Un poco exagerado el tamaño del nombre, pero tranquilo, no tendrías que volver a teclearlo. En el Android cuando entre a configurarlo te mostrará por dirección y nombre los Bluetooth que encuentre y reconocerás perfectamente el que te interese. Piensa que en un futuro podrías tener varios controladores de diferentes tipos situados en distintos acuarios y con el Android podrías seleccionar el que quieras para monitorizarlo o para configurarlo.

Al intentar vincularlo en Android te pedirá la password. Se trata de cuatro dígitos decimales que no deberás olvidar. De lo contrario tendrás que volver a entrar en el HC-05 con el modo AT para cambiarla. Si dejas el nombre y la password originales ("HC-05" y "1234") un vecino a menos de 10 metros podría conectarse a tu HC-05.

He buscado lo del nombre pero al final he tenido que investigar por mi cuenta, y creo que admite un conjunto limitado de hasta 32 caracteres. Admite mayúsculas minúsculas, espacios en blanco, y algunos sinos como '+', '-', '*', '/', pero no he podido usar signos de puntuación.
#20
Bueno pos si que está cachondo el modulo BT, una vez activado el modo AT con el microboton resulta que entra en el modo AT capao, que ni AT+NAME entiende.

He tenido que tirar de tu doc http://www.martyncurrey.com/arduino-with...e-at-mode/ para enterarme un poco y como conclusión saco que:

El modulo HC-05 tiene dos modos AT uno capao (que admite algunos comandos AT aunque faltan por ejemplo cambiar el nombre o la velocidad) y otro total

Si se mantiene pulsado el microbotón cuando se conecta a corriente entra en modo AT capao

Para entrar en modo AT total hay que dejar en High 3.3v el pin 34 de la plaquita BT (el superior derecha visto desde componentes), por suerte es el mas externo e incluso con una funda termoretractil es accesible

Por lo que he observado el pin EN (o Key) no tiene nada que ver con ese pin 34, ya que el poner High el pin EN no produce el mismo efecto.

Bien, nombre cambiado, y nada mas se me ocurrió configurar, ni la pass, ya que para estar a 10m el vecino me tiene que saltar la valla.
#21
Yo solo he usado el pulsador y cuando lo estuve probando, no permitía el comando AT+NAME? ni el comando AT+NAME Ambos sirven para preguntar el nombre, pero si le pones AT+NAME=<Nuevo nombre> te aceptará el comando y lo cambiará. Lo curioso es que sí que te permite preguntar la password, así que no le veo mucho sentido a ese comportamiento.
#22
Test_CaoBT_Refrig_Mini_V1

Es una aplicación para probar el hardware de CaoBT_Refrig_Mini.
Desde Android se vee así.
[Imagen: jHEUFx1.jpg]
Si teneis una protoboard y algunos componentes que veis aquí...
[Imagen: IrXUj3K.png]
Podréis jugar con el software que incluyo en

.zip   Test_CaoBT_Mini_V1.zip (Tamaño: 97.53 KB / Descargas: 14)

Para poder manejarse con HC-05 y Arduino conviene informarse antes y avanzar pasito a pasito.

Yo recomiendo unos video tutoriales del Profe García que están explicados de forma muy precisa y escueta.

Control del Arduino desde su teléfono Android (vía Bluetooth).
Este tutorial explica como bajarse una aplicación para Arduino (ArduDroid de TechBitar) gratuita y con licencia de libre uso y modificación. Sirve para conectar nuestro Android con un Arduino a través del HC-05. Usa un protocolo muy sencillo y por ello la aplicación Arduino para interactuar con él también es muy simple y el vídeo también explica como modificarla para personalizar dicha aplicación. Todo ello proporciona una visión de conjunto inicial muy buena. Ofrece instrucciones de conexión del HC-05 con el Arduino, instrucciones para establecer la conexión Bluetooth desde Android.

Como crear su propia App en Android para controlar Arduino (Bluetooth)
Describe como desarrollar una aplicación Android muy sencilla desde cero en app inventor, que enciende y apaga un LED. App Inventor ofrece una forma de programación visual de aplicaciones para Android. También documenta como programar la aplicación Arduino.

Conectar Arduino con su teléfono Android por Bluetooth creando su propia App.
Describe el programa Android para conectar con la aplicación anterior y explica el conexionado de Arduino con HC-05, y como vincular el modulo Bluetooth en Android.
#23
(29-08-2015, 12:54 PM)Antonio Castro escribió: Test_CaoBT_Refrig_Mini_V1

Es una aplicación para probar el hardware de CaoBT_Refrig_Mini.
Desde Android se vee así.
[Imagen: jHEUFx1.jpg]
Si teneis una protoboard y algunos componentes que veis aquí...
[Imagen: IrXUj3K.png]
Podréis jugar con el software que incluyo en


Para poder manejarse con HC-05 y Arduino conviene informarse antes y avanzar pasito a pasito.

Yo recomiendo unos video tutoriales del Profe García que están explicados de forma muy precisa y escueta.

Control del Arduino desde su teléfono Android (vía Bluetooth).
Este tutorial explica como bajarse una aplicación para Arduino (ArduDroid de TechBitar) gratuita y con licencia de libre uso y modificación. Sirve para conectar nuestro Android con un Arduino a través del HC-05. Usa un protocolo muy sencillo y por ello la aplicación Arduino para interactuar con él también es muy simple y el vídeo también explica como modificarla para personalizar dicha aplicación. Todo ello proporciona una visión de conjunto inicial muy buena. Ofrece instrucciones de conexión del HC-05 con el Arduino, instrucciones para establecer la conexión Bluetooth desde Android.

Como crear su propia App en Android para controlar Arduino (Bluetooth)
Describe como desarrollar una aplicación Android muy sencilla desde cero en app inventor, que enciende y apaga un LED. App Inventor ofrece una forma de programación visual de aplicaciones para Android. También documenta como programar la aplicación Arduino.

Conectar Arduino con su teléfono Android por Bluetooth creando su propia App.
Describe el programa Android para conectar con la aplicación anterior y explica el conexionado de Arduino con HC-05, y como vincular el modulo Bluetooth en Android.

Tiene buena pinta esta APP, cuando reciba el HC-05 la pruebo.
#24
Ya he soldado los componentes en la PCB que me hizo llegar Ruben y me he pasado bastante tiempo intentado averiguar porque el HC-05 se negaba a funcionar y no es la primera vez que un montaje con HC-05 se niega a funcionar pese a usar idéntico circuito que el que monté en la protoboard y que me funciona sin problemas. Pensé que podría que ser un problema con el divisor de tensión por culpa de las desviaciones en los valores de las resistencia y al hacer el cálculo con los valores medidos en el tester hice un apaño y terminó funcionando.

En teoría podemos usar diversos tipos de divisores de tensión usando resistencias con valores estándar, pero si trabajamos con resistencias con tolerancias del 20% o del 10%, existe el riesgo de que nuestro circuito no funcione. Por ejemplo, podemos plantear un divisor con los siguientes valores teóricos:

(Pin TX Arduino a +5v ) 2K2 ==(Pin RX HC-05)==4K7 == GND
5v/(2200+4700) = 0.000724 A
0.000724 * 4700 Ohms = 3.4v

Después de lo que he leído últimamente, creo que 3.4v (solo una décima por encima del valor requerido) resultaría aceptable, pero también creo que es un valor límite. Algunos montajes pueden funcionar y otros no.

Nosotros deberíamos asegurarnos que nuestro divisor de tensión para 5v entregue un voltaje que creo debe de estar comprendido entre 3.4v y 2.4v.

En un divisor de tensión las desviaciones de ambas resistencias pueden compensarse total o parcialmente, o por el contrario pueden sumarse. Si trabajamos con resistencias con alta tolerancia y no validamos sus valores reales, estaremos jugando a la lotería, porque HC-05 probablemente dejará de funcionar si nos salimos fuera del mencionado rango entre 3.4v y 2.4v. Se trata de un margen pequeño.

Tengo comprobado que aquí en España, las resistencias en muchos comercios, no vienen con una distribución normal (gausiana) de sus valores, sino que suelen venderlas con desviaciones extremas dentro del nivel de tolerancia especificado.

Es decir cumplen el margen de tolerancia pero se apartan del valor ideal.

Si en nuestro divisor de tensión llamamos R1 a la resistencia de menor valor y R2 a la de mayor valor, podemos usar la siguiente fórmula.

5*R2/(R1+R2)

Ejemplo:
Un divisor con 4K7 y 2K2 debería funcionar, pero podrían vendernos una combinación de resistencias que no funcione. En mi caso eso fue lo que ocurrió. Concretamente R2=5.07K y R1=2.17K

5*5.07/(5.07+2.17) = 3.5v (Este voltaje resultó excesivo)

El parche fue poner una resistencia de 47k en paralelo con la de 5.07K para así rebajarla a 4.58K y con ello mejorar ligeramente el divisor de tensión.

R2=4.58K y R1= 2.17K
5*4.58/(4.58+2.17) = 3.39v (Este voltaje si ha resultado aceptable para el HC-05).

Cada vez me sorprendo más por la cantidad de pequeños detallitos escasamente documentados en la mayoría de tutoriales que existen y que pueden influir en hacer que un HC-05 se niegue a funcionar.

Acabo de encargar resistencias variadas de 1/4w con tolerancia de 1% a Aliexpress.

Concretamente: 122 clases de resistencias con 1% de tolerancia en unidades de 10.
#25
Bueno es saber lo de ese limite superior de 3.4v

Pero lo cierto es que con las resistencias mas que mirarle los colores lo mejor es mirar el polímetro.

Porque rite tu de los 1% chinos, ya recibí un pack y hay que mirarlas todas (bueno cada ristra (estas suelen ser coincidentes) que a pesar del fondo azulito y las 5 bandas de color encontré p.e. que mis 3K3 son 3K0. Eso si por lo que te cuesta 1 resistencia aquí los chinos te dan 10.

Ahora ya me habéis liao, Antonio y Ruben, me pongo con la BreadBoard o a aprender appinventor
#26
(30-08-2015, 08:30 PM)ArturoS escribió: Bueno es saber lo de ese limite superior de 3.4v

Pero lo cierto es que con las resistencias mas que mirarle los colores lo mejor es mirar el polímetro.

Porque rite tu de los 1% chinos, ya recibí un pack y hay que mirarlas todas (bueno cada ristra (estas suelen ser coincidentes) que a pesar del fondo azulito y las 5 bandas de color encontré p.e. que mis 3K3 son 3K0. Eso si por lo que te cuesta 1 resistencia aquí los chinos te dan 10.

Ahora ya me habéis liao, Antonio y Ruben, me pongo con la BreadBoard o a aprender appinventor

Yo las miro todas siempre, pero no solía dar demasiada importancia a las pequeñas desviaciones porque no suelen ser críticas y porque no siempre se consiguen componentes con mayor precisión. Por desgracia, pueden ser críticas en algunos circuitos y en este caso os recomiendo estar atentos. He dedicado la mañana a hacer pruebas y estudiar esos límites para poder documentar un poco mejor este problema.

Sobre el App Inventor habría bastante que comentar, porque pese a ofrecer una curva de aprendizaje rápida y ofrecer funcionalidades bastante potentes, tiene bastantes carencias como lenguaje de programación serio. Lo difícil lo hace fácil, pero lo fácil, puede complicarlo bastante. Por poner un ejemplo, resulta un poco ridículo tener que programar las funciones tipo sleep() o delay() mediante bucles.

A mí me ha evitado tener que familiarizarme con el entorno de programación Android porque me temo que requiere bastante tiempo y dedicación, pero no me gusta hacer programas, con código escasamente reutilizable.

La programación 100% visual sin generación de código impone limitaciones y la considero un reclamo para novatos.

Superados los inconvenientes de App Inventor, hay que reconocer que los resultados son bastante chulos.

Respecto a la BreadBoard no te cortes. Úsala todo lo que puedas antes de soldar. Hay auténticos artistas de la BreadBoard y da gusto ver algunos trabajos.

[Imagen: FU011AZGYGF8IV4.MEDIUM.jpg]
#27
Antonio, ayer coincidí con una persona que tiene experiencia en programar para Android y me comentó lo mismo que tú.
Cuando empezó, el App Inventor le resultó cómodo, ya que es fácil iniciarse , pero cuando se puso al día con Processing ya no ha vuelto a usar más el App inventor.
#28
El lenguaje de programación de Arduino se inspiró en Processing.

Hay otras muchas posibilidades para programar en Android y no tengo claro de por donde tirar.

Me queda claro que se trata de un lenguaje de propósito general y a medio y largo plazo parece una opción interesante. Para ello basta echar un vistazo a https://processing.org/reference/ y a https://processing.org/reference/libraries/

Aún no he visto demasiados ejemplos, ni he tenido oportunidad de jugar con él. Si alguien tiene experiencia me interesa su opinión sobre la curva de aprendizaje en comparación con otras opciones.
#29
Comentaré algunas de las opciones que he considerado para programar la parte Android de proyectos con Arduino y HC-05. Son decisiones importantes.

Processing:
Me ha costado encontrar un artículo decente que describiera el lenguaje de programación Processing de una forma que permita evaluar todo su potencial, los puntos fuertes de su entorno de programación, su curva de aprendizaje, su idoneidad para combinarlo con Arduino o con Androis, etc. Y me ha parecido muy interesante.
http://users.dsic.upv.es/~jlinares/grafi..._spa_1.pdf

Yo no descarto seguir haciendo alguna cosa en App Inventor, para programitas pequeños está muy bien, pero para aplicaciones complejas me lo tendré que pensar dos veces.

App Inventor
Está basado en la librería Java Open Blocks del MIT pero no hay forma de obtener generacion de código Java.

Yo creo que está pensado como un juguete potente, pero juguete al fin y al cabo. Es tan fácil de usar que tiene bastante interés, pero conformarse con App Inventor es una limitación importante para un programador.

Incluso la documentación está redactada de forma poco precisa y poco exaustiva para no intimidar a los principiantes y te hace perder tiempo porque tienes que hacer pruebas para resolver las dudas que la documentación no aclaró.

Para mí los principales inconvenientes para grandes desarrollos es que apenas existen facilidades de reutilización de código y que al aumentar de tamaño el código tiende a hacerse más y mas feo. El requisito mínimo de cualquier programa es que haga lo que se pretende. Por desgracia, para hacer que un código voluminoso de App Inventor funcione tienes que esquivar limitaciones que afearan tu código considerablemente.

Tengo entendido que se está considerando un kit de desarrollo de componentes. Esto permitiría a toda la comunidad de programadores construir componentes App Inventor con Java y ampliar la funcionalidad de App Inventor. Eso ayudaría mucho y serviría en primer lugar a esquivar la necesidad de programar algunas cosas muy tontas pero muy necesarias que no están implementadas aún.

App Inventor incluye muchas funcionalidades realmente potentes, pero también faltan algunas funcionalidades extremadamente básicas. Por ejemplo para hacer una espera tienes que implementarla tú mismo mediate un bucle que consulte el tiempo transcurrido lo cual consume CPU.

Como está pensado para principiantes, hay temas que no se abordan; por ejemplo para comunicaciones BlueTooth sería interesante disponer de alguna función de comprobación Checksum, o disponer funciones que permitan programar dichas funciones de forma fácil, tales como operadores de bits (Bitwise operator). Ni siquiera existen funciones de conversión de datos, y eso impide averiguar cosas como el código ascii de un caracter. Por esa razón, hacer una función de checksum y muchas otras funciones que no son necesariamente complicadas, puede convertirse en un desafío que supondrá un coste importante en cantidad de código que además será muy feo.

Ni siquiera navegar visualmente por el código resulta fácil cuando el número de bloques aumenta. Los bloques van creciendo y te obligan a recolocar gran parte de otros bloques para mantener una vision agradable y clara de los mismos. No está pensado para poder estructurar el software en módulos así que todo el código a medida que crece tiende a convertirse en una sopa de bloques escasamente reutilizables.

No conviene abusar de las variables globales. Un número alto de variables globales podrían generar un problema para poder usarlas debido a las limitaciones del tamaño de la lista de variables para elegir entre ellas. No existe la posibitidad de definir constantes y consumen una variable global.

El tamaño final de las aplicaciines desarrollada (.apk) parece mayor de lo habitual.

Detectar los errores de sintaxis en el mismo momento que se producen ayuda bastante aunque no se detecta todo lo que puede dar problemas. En especial, el uso de un tipo de dato inadecuado para alguna operación suele dar el problema en tiempo de ejecución.

La programación visual es más agradable para el novato que lo ve como completar un rompecabezas de los tradicionales, pero los programas de texto tienen muchas ventajas a la hora de manejarse con un volumen de código importante y se hecha en falta cosas como poder buscar el uso de las variables en las distintas partes de código.

Lo ideal es que existiera una etapa de generación de código sobre la cual se pudiera trabajar con posterioridad.

App Inventor hace mucho con muy poco, pero en algunas cosas resulta poco flexible y hay que recurrir a trucos que se van aprendiendo mediante la lectura de ejemplos.

Como lenguaje para aprender programacion, su utilidad sería la de una primera toma de contacto, pero rápidamente aparecen los inconvenientes. Induce a los novatos a adquirir malos habitos de programacion que pueden derivar en vicios.

A pesar de que la curva de aprendizaje es rápida y suave, no facilta la labor de desarrollar aplicaciones con mucho codigo, ya que la dificultad de mantener depurar e incluso de leer el código aumenta exponencialmente con el tamaño del programa y por ello las aplicaciones escalan mal.

No facilita una buena estructuración de los programas. No facilita la programación en unidades reutilizables de código.

Pese a todo, puede resultar una alternativa a considerar frente a entornos de desarrollo como por ejemplo SDK, o Android Studio que implican no solo conocer bastante de programación, sino del propio entorno de programación de Android que es suficientemente complejo como para necesitar un periodo de tiempo considerable hasta abarcar las diferentes areas de conocimiento. En ese sentido, las limitaciones de App Inventor pueden ser un precio asumible cuando lo único que se pretende es hacer programas pequeños y no se conoce el entorno de programación Androidni otros lenguajes de programación.

La modificación del aspecto en el diseño de la pantalla de la aplicación funciona bastante bien y es muy sencilla. Basta cambiar las cosas de sitio, de forma, de color y de tamaño en la pantalla de diseño, además se van a seguir mejorando algunas cosas.

Livecode
Una tercera alternativa que he visto es un entorno de desarrollo visual interesante que se llama LiveCode, pero que es de pago y aún no parece muy maduro.
Genera código Java, parece muy completo y es multi plataforma.
http://www.hermanotemblon.com/livecode-u...programar/

Livecode es una herramienta de programación muy reciente, con un objetivo muy interesante. Su objetivo es que un mismo programa hecho con esta herramienta, incluso tratándose de programas que manejan gráficos, funcione sin problemas en Windows, LINUX, MacOSX, UNIX (Solaris y BSDs) IOS y Android.

Este es un objetivo aún no conseguido plenamente debido a su juventud y a que la empresa es pequeña. La comunidad de usuarios tambien es pequeña y falta documentacion.

A partir del año 2013 existen dos versiones de Livecode: Una versión de pago que cuesta unos 500€ y una versión libre (completamente pública), la cual es gratis pero pone como condición que si se comercializa un programa con la misma, es obligatorio publicar el código de forma pública (Licencia GPL).

No lo he probado pero se puede bajar LiveCode desde aquí (Hay versiones de la herramienta de desarrollo para Windows, Linux y Mac): http://livecode.com
#30
Después de investigar un poco por la red las tres opciones de programación para Android que has puesto, a mí el que más me atrae aprender es Processing. Como bien dices Arduino se inspiró en Processing, y será por eso que le veo mayor similitud con Arduino que se me hace más comprensible. Sin duda va a ser uno de mis objetivos el intentar aprender Processing, después veremos como se da.

Por otra parte , esta mañana he recibido un link que creo interesante. Se trata de la utilización del módulo wifi ESP8266, el cual es más potente de lo que parece.
ESP8266

Usuarios navegando en este tema: 7 invitado(s)


Salto de foro: