domingo, 7 de enero de 2018

Controlando con el móvil el tiempo de encendido de las luces

Buenos días.

Feliz 2018 a tod@s. Espero que este sea un gran año lleno de buenos momentos tanto dentro como fuera del instituto.

Por lo que a Tecnología Industrial respecta empezamos el año como terminamos el 2017, avanzando en el aprendizaje de la programación de aplicaciones móviles mediante appinventor y de robótica con arduino.

Seguimos trabajando con nuestro semáforo, ahora controlando sus funciones desde el móvil. La siguiente función de control que vamos a implementar es la del tiempo de duración de los encendidos. Existen muchas manera de hacerlo y una de las más sencillas es la que os propongo en esta entrada: Utilizando un dos botones para cada luz, uno para aumentar el tiempo de encendido y otro para disminuirlo.

Empecemos con la aplicación móvil en App inventor, Vamos a añadir 3 layouts, uno para cada luz, con dos botones y una etiqueta en cada uno. Podéis ver el resultado en la siguiente imagen.


La programación de los elementos es sencilla pero incluye algunos elementos que no hemos visto hasta ahora: Creación de variables en app inventor (initialize global), realización de operaciones matemáticas con las variables y modificación del contenido de cuadros de texto usando la función "join".
Como podéis ver hemos añadido un condicional en cada botón para que el tiempo nunca sea menor que 1 segundo ni mayor de 30.


Una vez hecho para una de las luces copiamos y pegamos los bloques para las otras dos, cambiando la letra de envío por bluetooth y las variables:


Como os habréis dado cuenta no enviamos por bluetooth al arduino el valor del tiempo de las variables de app inventor, seguimos enviando solamente una letra diferente para cada operación que después en el código arduino nos indicará lo que tenemos que hacer con las variables de arduino, que será una réplica de lo que hemos hecho en app inventor. Por supuesto que existe la posibilidad de mandar variables por bluetooth con los datos del tiempo pero esto complicaría un poco más la programación ya que la señal de bluetooth además de la nueva cifra debería indicar para cual de las luces se ha realizado el cambio. Esto se realiza creando cadenas en el mensaje de bluetooth con diferentes partes que después en arduino fragmentamos y obtenemos la información correspondiente. Lo veremos más adelante en otras entradas, pero de momento en esta probaremos a programarlo de esta sencilla manera, cambio el valor de la variable en app inventor e indicando una simple letra como señal a arduino.

Pasamos a la programación en arduino que es más sencilla todavía:

Por un lado tenemos que crear 3 nuevas variables que comienzan con un valor de 5000ms (5 segundos):


En función  de la letra que recibamos por bluetooth iremos añadiendo o quitando 1000ms a cada una de las variables. Como veis aquí también controlamos que la variable no baje de 1000ms ni suba de 30000ms. Existen formas mucho más eficientes de programar esto, pero de momento para ir aprendiendo, programarlo en cada apartado, creo que es una buena manera de iniciarse en las operaciones matemáticas con variables y los condicionales.



Y por último no debemos olvidar sustituir en nuestro programa los tiempos de espera que teníamos por las variables que hemos creado.


De esta sencilla manera podemos ir controlando muchos otros parámetros como por ejemplo el tiempo de encendido y apagado de emergencia o cualquier otra que necesitemos. Un buen ejercicio ahora sería intentar controlar algún parámetro programando todo por vuestra cuenta.

Un saludo,
Raúl.

sábado, 16 de diciembre de 2017

Controlando el semáforo desde el móvil 1

Buenos días.

En las siguiente entradas vamos a ir incorporando a nuestro programa de arduino de control de un semáforo el código necesario para controlarlo desde el móvil.

En estas dos entradas previas se puede ver como fuimos programando el arduino para controlar el semáforo:



En esta primera entrada comenzaremos por añadir al programa más sencillo de semáforo, en el que se iban encendiendo las luces de manera secuencial (sin usar la función esperar, todo mediante el uso de tiempos de ejecución), la opción de apagar o encender el semáforo o de ponerlo en modo ámbar intermitente.


Sobre este programa de base vamos a añadir el código que nos va a permitir manejarlo desde el teléfono. Previamente tendremos que haber creado una aplicación con appinventor que envíe mensajes a nuestro arduino. En la entrada anterior del blog vimos como crear una aplicación sencilla que permitía enviar una A y una B. Para poder añadir el modo ámbar intermitente o modo de emergencia del semáforo deberemos añadir un tercer botón que envíe por ejemplo la señal C.

Una vez confirmado que tenemos el componente puerto serie en bitbloq y el Baudrate del mismo coincidiendo con el del bluetooth (en nuestro caso 9600), lo primero que deberemos programar en bitbloq son las nuevas variables que vamos a utilizar:


Como veis hemos añadido dos variables. La variable "datos", de la que ya hablamos en la entrada anterior, que usaremos para guardar el texto que llegue vía bluetooth. Y la variable MODO, que indicará el modo de funcionamiento del semáforo. De momento tendremos tres modos de funcionamiento. 0 cuando este apagado, 1 para modo normal en secuencia de colores y 2 para el modo ambar parpadeante.
En la imagen anterior puede verse también que en el apartado Setup de instrucciones iniciales comenzamos por defecto con el MODO 1 de funcionamiento normal del semáforo.

Al comienzo del bucle principal LOOP añadiremos las opciones para que en función de la letra recibida el programa cambie de un MODO a otro.



Vamos a ver que hace cada una de las opciones:
Si recibe una A, el semáforo pasa a modo normal (secuencia de encendidos) volviendo a comenzar como en las instrucciones iniciales por el rojo. Añadimos aquí que A_on y V_on pasen a ser 0 para asegurarnos que volverá a empezar de nuevo solo con una de las tres variables en 1, la de R_on.

Si recibe una B, el semáforo pasa a modo apagado. Enviamos señal de apagado a los tres leds y pasamos las tres variables a 0.

Si recibe una C el semáforo pasa a MODO 2, enciende solo el ámbar poniendo solo A_on a 1 y tomar el tiempo de ejecución como momento de encendido del ámbar.

El MODO 0 no necesita más programación el semáforo estará apagado hasta que enviemos alguna otra señal.

El MODO 1 es muy sencillo, simplemente tendremos que incluir todo el código que manejaba antes el semáforo dentro de esta opción como puede verse en la siguiente imagen:


Y por último programamos el MODO 2 de la siguiente manera:


Con esto conseguiremos un parpadeo de tiempo de encendido y apagado de 500ms en cada caso sin usar la función esperar que bloquearía el programa y dificultaría el envío de datos vía bluetooth.

Como veis un programa ya de un nivel muy interesante en el que empezamos a trabajar con las variables y los condicionales de manera ordenada. Siguiendo esta misma dinámica podremos ser capaces de ir añadiendo a este programa el resto de opciones que proponíamos en la entrada anterior:


En la siguiente entrada veremos como implementar algunas de ellas.

Un saludo,
Raúl.

lunes, 11 de diciembre de 2017

Semáforo Conexión Bluetooth - Arduino y Aplicación AppInventor

Buenos días.

En esta entrada vamos a dar los primeros pasos para conectarnos a la placa mediante el móvil usando el dispositivo bluetooth HC-06.

Lo primero será cambiar el nombre por defecto (HC-06) y el pin (1234) del dispositivo bluetooth. Para ello hay que usar el siguiente programa de arduino. Deberemos editarlo, cambiar los datos de la variable NOMBRE y PIN, conectar el bluetooth en los pines 2 (RX) y 3(TX) de nuestra placa y subir el programa a la placa.


El siguiente paso será sincronizar el módulo bluetooth con nuestro teléfono móvil, activando el bluetooth del teléfono, buscando el dispositivo por su nuevo nombre y sincronizando con el nuevo pin.
(En esta entrada del blog tenéis más información sobre la conexión vía bluetooth.)

Una vez sincronizado el dispositivo pasaremos a crear la aplicación con AppInventor. Para usar AppInventor es necesario tener una cuenta de gmail. AppInventor pedirá acceso directo a la cuenta de gmail, es por eso que recomiendo que creéis una solo para trabajar con esta web. Para simplificar los primeros pasos de conexión podéis importar este programa en el que ya están creados el ListPicker de conectar y el botón de desconectar. Podéis descargarlo en vuestro ordenador y una vez dentro de appinventor importar el archivo .aia de proyecto.

A este programa básico habrá que añadirle en un principio dos botones: Encender y apagar, que manden vía bluetooth información para que luego arduino la use para realizar las acciones de encender y apagar un led. En principio una forma sencilla de hacer esto es enviar las letras A para el encendido y B para el apagado.



Cuando tengamos terminada la aplicación debemos instalarla en el móvil, para ello hay que descargarla mediante el código QR o descargar el archivo .apk en el ordenador y enviarlo por mail al móvil o si lo conectamos con el cable usb al ordenador copiando y pegando el archivo. La opción de usar el código QR es muy cómoda. Una de las mejores aplicaciones gratuitas para leer códigos QR es QR Code Reader.

Solo nos queda programar la placa para que reciba la información del bluetooth. Para ello vamos a usar bitbloq y de momento hasta que veamos como usar el componente Bluetooth de bitbloq, las conexión vía bluetooth las vamos a realizar con el componente Puerto Serie. Es importante confirmar que el Baudrate del puerto serie es el mismo que el del bluetooth, en principio 9600 por defecto en los módulos HC-06.



Lo siguiente será programar los componentes. Para ello usaremos una variable "datos" que recibe la información del bluetooth y la almacena. Cuando la variable contenga algún dato (longitud>0) comprueba si es A o B para encender o apagar el led y a continuación borra el dato de la variable,


Es importante tener en cuenta que al usar el puerto de serie para las conexiones bluetooth será necesario conectar los pines TX y RX del módulo bluetooth a los pines 0 y 1 de arduino respectivamente (van cruzados el TX del bluetooth al RX de la placa que es el 0 y el RX del bluetooth al TX de la placa que es el 1) pero en el momento de cargar programas en la placa será necesario desconectarlos. Podemos mantener conectados los pines de Vcc y GND y por tanto seguir conectados al módulo con el móvil si ya está conectado. Una vez cargado el programa volveremos a conectar los pines del bluetooth a la placa para que la información que enviamos por el teléfono llegue hasta ella.

Una vez realizado este sencillo programa y comprobado que somos capaces de comunicarnos entre el teléfono móvil y la placa empezaremos a desarrollar la aplicación específica para el control del semáforo que deberá realizar al menos las siguientes funciones:

  • Encender y apagar el semáforo
  • Cambiar de modo secuencia a modo botón
  • Cambiar a modo ámbar parpadeando
  • Permitir cambiar los tiempos de espera de cada fase: rojo, ámbar y verde
  • Permitir activar y desactivar el sonido del zumbador
  • Recibir la información del sensor de luz en el móvil
  • Permitir variar el valor que determina si es de día o de noche
  • Alguna otra opción de creación propia

En el siguiente enlace tenéis la hoja de seguimiento de esta fase del proyecto:


Con esta parte terminada concluiremos este primer proyecto del semáforo en el que hemos podido trabajar: electrónica digital, analógica, programación, impresión en 3D, realización de proyectos, aplicaciones móviles y conexiones inalámbricas. Todo esto formará la base para los proyectos que realizaremos en la segunda parte del curso.

Un saludo,
Raúl.

sábado, 4 de noviembre de 2017

Maqueta semáforo

Buenos días.

Con toda la parte de programación y electrónica funcionando perfectamente vamos a dar el paso de llevarlo todo a una maqueta. Es importante no solo trabajar la parte abstracta y lógica de la programación y conexiones si no también la creativa de diseño de la maqueta y manipulativa de fabricación de la misma.

Como ejemplos de posibles soluciones presentamos estos dos vídeos, con un primer ejemplo de una solución sencilla pero que responde perfectamente a un trabajo limpio y bien acabado.


O esta otra en la que podemos ver un proyecto mucho más desarrollado.


Como curiosidad este otro vídeo en el que podemos ver todo el complejo circuito que maneja la maqueta de control de semáforo que seguro nos hará valorar mucho más el enorme potencial que tiene una "sencilla" placa de arduino con la que podemos conseguir mismo resultado o incluso superior.


Con el fin de comenzar a trabajar la impresión en 3D se valorará que la maqueta tenga algún componente impreso en 3D por nosotros mismos. Puede ser un componente descargado de internet en formato STL y después generado el archivo GCODE por nosotros mismo en el taller. Aquí tenéis algunos ejemplos:



O un STL descargado de internet y editado y modificado o incluso, porque no, íntegramente diseñado y fabricado por nosotros mismos.

Los programas que en principio vamos a usar para editar y generar archivos STL son


o la nueva versión online de Sketchup:

Sketchup app

En caso de trabajar con la versión de Sketchup de escritorio, para poder guardar los archivos de Sketchup  en formato STL es necesario tener instalada esta extensión y seguir los sencillos paso de exportación que se indican.

Los archivos GCODE los generaremos con el programa CURA que tenemos instalado en el taller en el ordenador junto a la impresora en 3D, el modelo que tenemos en el taller es la WITBOX 2, una fantástica impresora en 3D que conseguimos el año pasado gracias a clasificarnos al concurso Retotech.

Un saludo,
Raúl.

jueves, 2 de noviembre de 2017

Programación semáforo con Botón


Buenos días.

En esta entrada veremos como realizar el programa de control del semáforo mediante un botón.

Si tenemos programado el semáforo mediante tiempos de ejecución será realmente sencillo el paso a uso mediante botón.


Primero será necesario añadir una variable más para guardar el estado del botón.



Posteriormente tendremos que detectar si el botón ha sido pulsado y cambiar la variable. Colocamos un mientras en ese condicional para que el programa no avance hasta que el botón no haya sido dejado de pulsar.


Por último en el momento en que el semáforo tiene que dejar de estar en verde añadimos una opción más que es que la variable botón esté a 1. En ese momento deberemos volver a ponerla a 0.


Un saludo,
Raúl.

jueves, 19 de octubre de 2017

Programación proyecto SEMÁFORO

Buenos días.

Seguimos avanzando en el proyecto de programación en arduino, fabricación de maqueta y aplicación móvil de control de un semáforo. En el siguiente enlace podéis descargar las fases del proyecto a las que hemos añadido en una nueva página las rúbricas de evaluación de cada una de las partes del proyecto.


En un principio lo más sencillo es programar el semáforo usando la función <esperar> o <delay>:

En el siguiente ejemplo vamos a ver como hacerlo para una configuración de tiempos de encendido como la siguiente:

Estado de la luz de los coches         Estado de la luz de peatones        Tiempo de duración
              VERDE                                                 ROJO                                         8s
              ÁMBAR                                                ROJO                                         4s (en los 2 últimos segundos la luz ambar de coches deberá parpadear 4 veces)
              ROJO                                                   VERDE                                        6s (en los 2 últimos segundos la luz verde de peatones deberá parpadear 4 veces)
Para ello será necesario conectar correctamente 5 leds a nuestra controladora (recordar que siempre hay que dejar libres los pines 0 y 1 que son los necesarios para comunicarnos con la placa y cargar los programas por ejemplo) en los pines que después serán los mismos que usaremos en bitbloq para indicar la ubicación de nuestros leds tal y como puede verse en el ejemplo de la imágen.

Posteriormente pasaremos a la programación de la secuencia de encendido utilizando la función <esperar> o <delay> en inglés. Un ejemplo del código puede verse en la siguiente imagen.





En la parte de programación vamos a dar el salto de usar la función ESPERAR de Bitbloq a programar usando Obtener tiempos de ejecución, lo que nos permite tener un mayor control sobre el programa ya que la función esperar bloquea la programación y por tanto la recepción de información por parte de sensores o el control de las respuestas del semáforo.

Este nivel de programación nos llevará a trabajar con las diferentes opciones de código de arduino. Por un lado la Declaración de Variables, por otro Las Instrucciones iniciales (Setup) que se ejecutan una sola vez al iniciar el programa y por último el Bucle principal (Loop) en el que desarrollaremos la parte central del código que se repite en modo Loop.

A continuación dejamos las imágenes de una de las opciones de programación en bitbloq del semáforo en modo sencillo, alternando de rojo durante 8 segundos, a ambar durante 4 segundos y por último a verde durante 6 segundos usando <Obtener tiempo de ejecución>.

En esta opción de programación se juega con las variables TIEMPO y TIEMPO_RESET para crear un ciclo de 18000ms en el que se van secuenciando las luces:







Otra opción es utilizar variables de estado que nos indiquen que luz está encendida y con esa variable de estado y el control del tiempo poder decidir cuando apagarla y encender la siguiente. En este código ya aparece la secuencia correcta verde coches (rojo peatones) - ambar coches (rojo peatones) - rojo coches (verde peatones):




Existen más soluciones como la de usar un contador que vaya aumentando cada 1000ms... Lo fundamental es dar el salto a programar usando los tiempos de ejecución del programa y así evitar usar la función delay/esperar.

En las siguiente imágenes puede verse como incluir las luces de peatones y el parpadeo:




Parpadeo del ambar del coches:


Parpadeo del verde de peatones:



SONIDO EN EL SEMÁFORO:

El siguiente paso de este modo es el de añadir el sonido del zumbador a la programación. En esta imagen puede verse la parte de código correspondiente al apagado y encendido del zumbador. En la siguiente imagen puede verse que añadimos en arduino el zumbador como un led ya que queremos controlar su encendido como con los parpadeos usando <obtener tiempo de ejecución>.


Recordar que en el tema 2 está la imagen de como se conecta un zumbador a la protoboard y a arduino.

Por tanto el código de sonido intermitente será similar a los que ya hemos visto de parpadeo.


Por último para evitar que el zumbador pueda quedar activado en caso de que la luminosidad baje cuando está sonando hemos añadido una condición al inicio del programa.
Tendremos que añadir un LDR. 



Recordar que en el tema 2 está la imagen de como se conecta un LDR a la protoboard y a arduino.



Finalmente para programarlo tendremos que crear una nueva variable, en el ejemplo llamada "luminosidad" que guardará el valor del LDR en cada momento y lo incluirá como condición para que el sonido se produzca solo de día, ya que de noche podría ser excesivamente molesto.

En el ejemplo el valor de luminosidad que marca el cambio de día a noche es que el sensor de un valor de más de 40. Este valor no es fijo, dependerá de la resistencia que pongamos.



En el ejemplo el valor de luminosidad que marca el cambio de día a noche es que el sensor de un valor de más de 40. Este valor no es fijo, dependerá de la resistencia que pongamos y de la sensibilidad del LDR que estemos usando. En un futuro aprenderemos a ajustarlo con nuestro teléfono móvil, pero de momento aprenderemos a obtener este valor usando la información que arduino puede enviar al monitor serie mediante el puerto serie.
Primero tendremos que añadir el puerto serie como componente.



Posteriormente en la programación añadir el envío de los datos que necesitemos al puerto serie:



Y por último, tras cargar el programa en placa, abrir el monitor serie para comprobar los resultados.



En el siguiente tema profundizaremos en la programación incluyendo los parpadeos, y algunos otros componentes al semáforo.

Un saludo,
Raúl.


lunes, 2 de octubre de 2017

Conexiones arduino para el proyecto SEMÁFORO

Buenos días.

En esta entrada haremos una recopilación de imágenes y algún vídeo explicativo sobre la conexión de los componentes para nuestro proyecto del semáforo.

Recuperamos antes de empezar el enlace par la guía con las diferentes fases del proyecto:


Para poder hacer este proyecto necesitaremos por un lado conectar los leds:

Tal y como dicen en esta web:

"Hay dos tipos de personas, los que conectan los LEDs con resistencia y los que no… y solo una de ellas lo está haciendo bien."

Es por eso que nosotros lo vamos a hacer bien, es decir, con resistencia.



Para recordar el código de colores de la resistencia podemos usar estas imágenes en función de que lleve 3 o 4 lineas de colores + la tolerancia.




A continuación tendremos que conectar el zumbador:



El siguiente componente que tendremos que conectar es el LDR, la resistencia variable que nos permitirá saber si es de día o de noche.



Para profundizar más sobre la conexión del LDR y entender porque se conecta de esta manera mediante un divisor de tensión es muy práctica la información de la siguiente web.



El último componente que será necesario conectar es el pulsador:


Conectar los componentes es una fase que parece que tiene menor importancia que la de programar, pero sin duda es realmente importante prestar la máxima atención y entender porque se conectan los componentes de esta manera para evitar fallos que puedan dañar a la placa o los componentes y además nos puedan hacer dar mil vueltas a la programación sin darnos cuenta de que el problema no es de código si no de instalación y conexión.

Un saludo,
Raúl.


sábado, 30 de septiembre de 2017

Tecnología Industrial Curso 2017/18. Primer Proyecto: Semáforo

Buenos días.

Comenzamos un nuevo curso y lo hacemos como terminamos el anterior, trabajando un proyecto que aúna sistemas de control, electricidad, electrónica, circuitos analógicos y digitales, programación en arduino, impresión en 3D y programación de aplicaciones móviles con appinventor.

Será un sencillo proyecto que nos permita iniciarnos en cada una de las diferentes partes del curso como preparación a los trabajos que desarrollaremos a lo largo del curso.

En el siguiente enlace puede descargar el documento con la hoja de seguimiento de las fases del proyecto:


En próximas entradas iremos desarrollando los diferentes contenidos necesarios para la realización del semáforo. Desde la conexión de los componentes a las placas protoboard y arduino hasta la creación de la aplicación para android, pasando por el diseño e impresión de sencilla piezas en 3D.

Esperamos ir publicando pronto también vídeo e imágenes del desarrollo de los proyectos.

Saludos,
Raúl.