viernes, 21 de agosto de 2015

Proteus/Arduino




En el mundo empresarial a nadie se le ocurre empezar a fabricar nada sin antes simular, simular y volver a simular para ver que todo funciona correctamente. Esto se hace así para evitar los costes y riesgos que suponen empezar por el prototipo físico. Pero simular Arduino tiene otra razón de ser, ya que normalmente no vamos a romper nada si nos confundimos y que no supone grandes costes hacer pequeños proyectos. La razón de simular Arduino es aprender a programar y a usar componentes que no tengamos, otra razón puede ser saciar nuestra ansia de programar, por ejemplo un LCD desde que lo pedimos a china hasta que llega a casa para que sea montar y funcionar o simplemente no tenemos un Arduino.
¿POR QUÉ SIMULAR ARDUINO?

En el mundo empresarial a nadie se le ocurre empezar a fabricar nada sin antes simular, simular y volver a simular para ver que todo funciona correctamente. Esto se hace así para evitar los costes y riesgos que suponen empezar por el prototipo físico. Pero simular Arduino tiene otra razón de ser, ya que normalmente no vamos a romper nada si nos confundimos y que no supone grandes costes hacer pequeños proyectos. La razón de simular Arduino es aprender a programar y a usar componentes que no tengamos, otra razón puede ser saciar nuestra ansia de programar, por ejemplo un LCD desde que lo pedimos a china hasta que llega a casa para que sea montar y funcionar o simplemente no tenemos un Arduino.
SIMULAR ARDUINO EN PROTEUS

En el vídeo vamos a abrir Proteus y vamos a abrir uno de los muchos ejemplos que trae, en concreto uno de servos. Vamos a simularlo y a modificarlo para ver que efectivamente podemos hacer nuestras propias simulaciones. Luego guardamos el código en un texto externo para que la próxima vez con copiar y pegar volvamos al código donde lo habíamos dejado.

Es obvio que necesitamos tener el IDE de Arduino instalado.



La casa Domótica.

La domótica es un concepto que se refiere a la integración de las distintas tecnologías en el hogar mediante el uso simultáneo de la electricidad, la electrónica, la informática y las telecomunicaciones. Su fin es mejorar la seguridad, el confort, la flexibilidad, las comunicaciones, el ahorro energético, facilitar el control integral de los sistemas para los usuarios y ofrecer nuevos servicios.

Algunos de los áreas principales de la domótica son:

· Automatización y Control - incluye el control (abrir / cerrar, on / off y regulación) de la iluminación, climatización, persianas y toldos, puertas y ventanas, cerraduras, riego, electrodomésticos, suministro de agua y gas etc.

· Seguridad - incluye alarmas de intrusión, alarmas personales y alarmas técnicas (incendio, humo, agua, gas, fallo de suministro eléctrico).

· Telecomunicaciones - incluye transmisión de voz y datos con redes locales (LAN) para compartir acceso de alta velocidad a Internet, recursos y el intercambio entre todos los equipos. Además permite disfrutar de nuevos servicios como Telefonía sobre IP y Televisión digital.

· Audio y video - incluye la distribución de imágenes de video capturadas con cámaras dentro y fuera de la casa a toda la casa y a través de Internet. Otra parte de audio / video trata del entretenimiento como el multi-room y el "Cine En Casa".

Con la integración de las específicas funcionalidades de estos sistemas se puede crear servicios de "valor añadido", como por ejemplo:

· Automatización de eventos (apagar y encender iluminación exterior, riego, regular temperaturas etc.)

· Escenarios tipo "Me voy de Casa" que con pulsar un botón podemos bajar todas las persianas, apagar toda la iluminación, armar la casa, bajar la temperatura; "Cine en Casa" que con un simple presión de un botón bajar las persianas del salón, bajar la luz a 25%, armar la planta baja, y encender el amplificador, el proyector y bajar la pantalla motorizada. "Cena" que regula la iluminación del salón y comedor, pone la música al fondo y enciende la iluminación de la terraza.

· Avisos por teléfono, sms o email de la llegada o salida de terceros a la vivienda (hijos, asistenta, etc.) o por el contrario, la ausencia de actividad si se queda alguien en la vivienda (niños, ancianos, etc) en un determinado intervalo de tiempo.

El proceso - La casa domótica

Para empezar nuestro trabajo formaremos equipos de 4 alumnos. Dos seréis constructores y otros dos ingenieros. El trabajo que realicéis se presentará en papel con formato DIN-A4. Para aquellos que seáis hábiles con el uso del ordenador podéis utilizar un procesador de texto y escanear las imágenes.


Trabajo para los constructores:


Dibujaréis un plano de la vivienda, indicando los tabiques, ventanas, persianas, puertas, terraza, toldo, plantas del jardín, caldera, horno, lavadora, lámpara del salón. Utiliza como ejemplo este plano. Dibújalo a escala 1:50.




Buscaréis el lugar más idóneo donde colocar el automáta que gobernará la vivienda. Lo indicaréis en el plano dibujando un armario con este símbolo .

Para estar mejor informado sobre el uso de un autómata y sus posibilidades, leer y hacer un resumen de la información que sobre él encontraréis aquí

Trabajo para los ingenieros:

Buscaréis información sobre sensores y actuadores, pinchando aquí. Elige en el marco izquierdo el enlace de Domótica. Haced un resumen con los elementos que podríais necesitar. No os olvidéis de tomar nota del precio.

Elaboraréis una tabla con todos los elementos que van a ser controlados, al lado pondréis los sensores que condicionan su funcionamiento y sus símbolos. Tomad como ejemplo esta tabla. Para elegir los símbolos, aquí tenéis este diagrama.



Del PC a la placa a la arduino


Lo primero que tenemos que hacer para comenzar a trabajar con el entorno de desarrollo de arduino es configurar las comunicaciones entre la placa Arduino y el PC. Para ello deberemos abrir en el menú "Tools" la opción "Serial Port". En esta opción deberemos seleccionar el puerto serie al que está conectada nuestra placa. En Windows, si desconocemos el puerto al que está conectado nuestra placa podemos descubrirlo a través del Administrador de dispositivos (Puertos COM & LPT/ USB Serial Port).

El primer paso para comprobar que todo lo que hemos hecho hasta ahora está bien y familiarizarnos con el interfaz de desarrollo, es abrir uno de los ejemplos. Se recomienda abrir el ejemplo "Blink". Para ello debemos acceder a través del menú File ( Sketchbook ( Examples ( Digital ( Blink.

El ejemplo "Blink" lo único que hace es parpadear un LED que está colocado en el pin número 13 de la placa. Vamos a ver qué hay que hacer para subir el programa a la placa Arduino. Primero comprobamos que el código fuente es el correcto. Para ello pulsamos el botón de verificación de código que tiene forma de triángulo inclinado 90 grados (Figura 3.a). Si todo va bien deberá aparecer un mensaje en la parte inferior de la interfaz indicando "Done compiling". Una vez que el código ha sido verificado procederemos a cargarlo en la placa. Para ello tenemos que pulsar el botón de reset de la placa (Figura 3.b) e inmediatamente después pulsar el botón que comienza la carga (Figura 3.c).

Durante la carga del programa, en la placa USB, se encenderán los LED que indican que se están enviando y recibiendo información por el puerto serie: TX/RX. Si todo se ha realizado correctamente debe aparecer el mensaje "Done uploading". Ahora tan sólo queda esperar unos 8 segundos aproximadamente para comprobar que todo ha salido bien. Si el led colocado en el pin 13 de la placa se enciende y se apaga cada segundo entonces todo ha ido bien. Por fin tenemos todo listo para empezar a trabajar con la placa Arduino.

Programación

Para programar la placa es necesario descargarse de la página web de Arduino el entorno de desarrollo (IDE). Se dispone de versiones para Windows y para MAC, así como las fuentes para compilarlas en LINUX. En la Figura 2 se muestra el aspecto del entorno de programación. En el caso de disponer de una placa USB es necesario instalar los drivers FTDI. Estos drivers vienen incluidos en el paquete de Arduino mencionado anteriormente. Existen en la web versiones para distintos sistemas operativos.

Operadores aritméticos

Empleando variables, valores constantes o componentes de un array pueden realizarse operaciones aritméticas y se puede utilizar el operador cast para conversión de tipos. Ej. int a = (int)3.5; Además pueden hacerse las siguientes asignaciones:
x ++. Lo mismo que x = x + 1. x --. Lo mismo que x = x - 1, or decrements x by -1. x += y. Lo mismo que x = x + y, or increments x by +y. x -= y. Lo mismo que x = x - y . x *= y. Lo mismo que x = x * y. x /= y. Lo mismo que x = x / y. 

Y los siguientes operadores lógicos:
Para su utilización en sentencias condicionales u otras funciones Arduino permite utilizar los siguientes operadores de comparación:
 x == y. x es igual a y.
 x != y. x no es igual a y.
 x < y, x > y, x <= y, x >= y. 
 Y lógico:  if (x > 0 &#38;&#38; x < 5). Cierto si las dos expresiones lo son.
 O lógico:  if (x > 0 || y > 0). Cierto si alguna expresión lo es.
HIGH/LOW. Estas constantes definen los niveles de los pines como HIGH o LOW y son empleados cuando se leen o escriben en las entradas o salidas digitales. HIGH se define como el nivel lógico 1 (ON) o 5 V. LOW es el nivel lógico 0, OFF, o 0 V.
NO lógico: if (!x > 0). Cierto si la expresión es falsa. El lenguaje de Arduino presenta las siguientes constantes predefinidas: TRUE / FALSE. INPUT/OUTPUT. Constantes empleadas con la función pinMode() para definir el tipo de un pin digital usado como entrada INPUT o salida OUTPUT. Ej. pinMode(13, OUTPUT);

Sentencias condicionales

El lenguaje de arduino permite realizar sentencias condicionales if, if... else, for, while, do... while. Su utilización es similar a las funciones correspondientes en C.




Arduino

Características generales de la placa


Se trata de una placa open hardware por lo que su diseño es de libre distribución y utilización, que incluso podemos construirnos nosotros mismos (En la Figura 1 se observa el aspecto de la placa). En la siguiente web puede encontrarse mucha información relativa a la placa:






El programa se implementará haciendo uso del entorno de programación propio de arduino y se transferirá empleando un cable USB. Si bien en el caso de la placa USB no es preciso utilizar una fuente de alimentación externa, ya que el propio cable USB la proporciona, para la realización de algunos de los experimentos prácticos sí que será necesario disponer de una fuente de alimentación externa ya que la alimentación proporcionada por el USB puede no ser suficiente. El voltaje de la fuente puede estar entre 6 y 25 Voltios.


Entradas y salidas digitales y analógicas



Función pinMode(pin, mode)

Función usada en la function setup() para configurar un pin dado para comportarse como INPUT o OUTPUT. Ej. pinMode(pin, OUTPUT); configura el pin número 'pin' como de salida. Los pines de Arduino funcionan por defecto como entradas, de forma que no necesitan declararse explícitamente como entradas empleando pinMode().

Función digitalRead(pin)

Lee el valor desde un pin digital específico. Devuelve un valor HIGH o LOW. El pin puede ser especificado con una variable o una constante (0-13). Ej. v = digitalRead(Pin);

Funcion digitalWrite(pin, value)

Introduce un nivel alto (HIGH) o bajo (LOW) en el pin digital especificado. De nuevo, el pin puede ser especificado con una variable o una constante 0-13. Ej. digitalWrite(pin, HIGH);

 Función analogRead(pin)

Lee el valor desde el pin analógico especificado con una resolución de 10 bits. Esta función solo funciona en los pines analógicos (0-5). El valor resultante es un entero de 0 a 1023. Los pines analógicos, a diferencia de los digitales no necesitan declararse previamente como INPUT o OUTPUT.

Función analogWrite(pin, value)

Escribe un valor pseudo-analógico usando modulación por ancho de pulso (PWM) en un pin de salida marcado como PWM. Esta función está activa para los pines 3, 5, 6, 9, 10, 11. Ej analogWrite(pin, v); // escribe 'v' en el 'pin' analógico. Puede especificarse un valor de 0 - 255. Un valor 0 genera 0 V en el pin especificado y 255 genera 5 V. Para valores de 0 a 255, el pin alterna rápidamente entre 0 V y 5 V, cuanto mayor sea el valor, más a menudo el pin se encuentra en HIGH (5 V). Por ejemplo, un valor de 64 será 0 V tres cuartas partes del tiempo y 5 V una cuarta parte. Un valor de 128 será 0 V la mitad del tiempo y 5 V la otra mitad. Un valor de 192 será 0 V una cuarta parte del tiempo y 5 V tres cuartas partes.