jueves, 23 de enero de 2014
Arduino + GSM
Arduino da la posibilidad de utilizar "Shields" (escudos) para ampliar la conectividad con dispositivos, redes o medios existentes. En este caso, el Shield GSM, cuenta con un controlador SIM900 que le permite conectarse a la red de telefonía celular (Movistar, Claro o Personal) para realizar o recibir llamadas, enviar o recibir mensajes de texto (SMS) y conectarse a internet para enviar o recibir información de la web.
Esto aumenta el potencial de la automatización y control de dispositivos ya que ahora el alcance no esta limitado a nuestra propia red (Lan o Wireless), sino que a través de una red de terceros (con los mismos planes y costos que los abonos para teléfonos móviles) se puede acceder a información sobre el estado de algunas variables que estén fuera de nuestro alcance.
viernes, 17 de enero de 2014
Internet de las cosas == Internet of things (IOT)
La web que se viene no solo esta pensada para brindar servicios de 'Internet' a las personas, sino que el desafío es proveer a las 'cosas' de una conexión a Internet, a través de la cual puedan brindar en tiempo real información sobre su posición, y/o estado y/o cualquier otra propiedad que pueda resultar de interés para transformar una 'nube' de datos en conocimiento y acción. Es decir que este cúmulo de información puede resultar útil para aumentar el conocimiento de alguien o algo!, y también para que alguien o 'algo' (otra cosa) pueda tomar una acción o decisión en función de ese conocimiento. Esto podría implicar beneficios en la seguridad de los bienes valiosos, ya que sería mas fácil encontrar un objeto robado, pero mas allá de eso podría proveer mejoras directas en la calidad de vida de las personas, no solo por lo que ya se podría dejar en manos de las 'cosas', sino también por las ventajas que serían transmitir ciertos parámetros (datos) a alguien que les resulten valiosos (información) y que los pueda procesar y en base a ellos tomar una decisión acertada (conocimiento). Por ejemplo un paciente podría transmitir datos sobre un parámetro vital de su organismo (frecuencia cardíaca, presión, temperatura) y que alguien (o algo) a partir de esos datos pueda advertirle sobre un riesgo para la salud de esa persona.
Al final de cuentas parece que se trata de acortar el camino entre los 'sensores electrónicos' y los 'actuadores' y/o 'actores';Pero para que todo esto sea posible hace falta una estructura que soporte la conectividad y el manejo de los datos. Un buen ejemplo de esto último es el sitio web https://xively.com/
Xively Cloud Services™ empowers you to harness the power of the IoT to quickly and easily transform your connected product vision into market reality.
Algo así como que "te da el poder de aprovechar el poder de la IOT (Internet of the things) para transformar de manera fácil y rápida tu visión de productos conectados en una realidad del mercado".
Un poco mas modesto que eso es el proyecto de poner en la web datos sobre el 'estado' de algo (temperatura y humedad de un espacio abierto o cerrado) y poder visualizarlo desde cualquier dispositivo con navegador web. Por ejemplo temperatura y humedad de mi oficina y del patio al que da mi ventana.
Se puede ver en: https://xively.com/feeds/48055798
Para eso es necesario uno (o dos) sensores de temperatura y humedad (DHT11) conectados a un Hardware "inteligente" (Arduino Mega 2560) y la posibilidad de conectarse y enviarlos a la web (Ethernet Shield).
Estos componentes mas el software básico y las librerías que acompañan a cada uno de ellos y lo que aporta xively.com son suficientes para elaborar un programa que permita enviar en forma permanente los datos obtenidos a la plataforma web y que puedan ser visualizados en forma on-line a través de una dirección web publica. Por ejemplo en mi caso se pueden visualizar los datos en https://xively.com/feeds/48055798
En este proyecto personal queda pendiente algo que transforme este cúmulo de datos en una herramienta para la toma de decisión y la acción; por ejemplo encender o apagar el aire acondicionado cuando la diferencia de temperatura este dentro o fuera de un rango definido, pero eso quedará para el próximo proyecto.
jueves, 14 de noviembre de 2013
Arduino - Arrays
Arrays
A diferencia de las variables (comunes) que solo pueden
almacenar un valor único a la vez, y cada vez que se le asigna un nuevo valor
se le borra el anterior, los arrays son un caso especial de variables que
pueden almacenar un conjunto de valores, y modificar solo uno, o algunos, o
incluso todos los valores contenidos en el mismo en cualquier momento y según nuestra
conveniencia. También sería posible evitar el uso de arrays, y en vez de ello
crear ‘muchas’ variables (comunes) con distintos nombres; pero esto en algunos
casos no resultará cómodo para utilizar.
La traducción de array es literalmente ‘colección’, ya que
se utiliza para ‘juntar’ varios objetos de un mismo tipo. En otras materias,
como matemáticas, se conoce con el nombre de Matriz (y generalmente se usan las
de 2 dimensiones, por su facilidad para representarlas en un plano, ya que
tienen ancho y alto (lo mismo que un plano) y cada elemento de la matriz se
identifica por un par de números que indican la fila y la columna en que se
ubica el elemento. También podría tener la matriz 3 dimensiones (cubo) y en ese
caso cada elemento de la matriz se identificará con 3 valores ordenados (que
indicaran la posición relativa del elemento dentro de la Matriz), x ej:
A(1,8,76) habría que encontrarlo dentro de la matriz A, en la fila 1, columna
8, “nivel” o “capa” 76.
En el caso de Arduino es todavía más simple; ya que utilizaremos un caso de matriz de una sola dimensión (en este caso se llama vector) , aunque es el mismo término que se utiliza en física para representar magnitudes (definida por su módulo (o longitud), su dirección (u orientación) y su sentido (que distingue el origen del extremo)) en el caso de la informática un vector es “una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo” y solo sería posible conocer su módulo o longitud, pero no tienen en este caso los vectores dirección (orientación) {Es decir que da igual si se representan de manera horizontal, vertical u oblicua} ni tienen un sentido definido {es decir que da lo mismo recorrerlos de cualquier extremo al otro}
Finalmente (y llevado a la práctica) se podría definir (declarar) en Arduino un array o vector de las siguientes formas:
int myInts[6];
|
//se define que tendrá 6 elementos aunque todavía esta ‘vacía’)
|
int myPins[] = {2, 4, 8, 3,
6};
|
//se define la colección de valores numéricos enteros (la longitud queda implícita)
|
int mySensVals[6] = {2, 4, -8,
3, 2};
|
//igual al anterior, pero con algún entero negativo, y con un tamaño
(longitud) predefinido,
|
char message[6] =
"hola";
|
//en vez de números almacena caracteres individuales (y arma una
palabra!)
|
Los Arrays o vectores son zero indexed,
esto significa que, al referirse a una matriz o vector, el primer elemento de
la matriz está en el índice 0. Por lo tanto:
mySensVals[0] == 2, mySensVals[1] == 4, y sucesivos.
mySensVals[0] == 2, mySensVals[1] == 4, y sucesivos.
Esto también significa que en una
matriz con 10 elementos, el índice 9 es el último elemento. Por lo tanto:
int
myArray[10]={9,3,2,4,3,2,7,8,9,11};
// myArray[9] contiene 11
// myArray[10] es invalido y
contiene información aleatoria (de otra dirección de memoria)
Para mayor
información y ejemplos ver la fuente: http://arduino.cc/es/Reference/Array
Consigna
1. Escribir un programa en Arduino que genere 60 números aleatorios en un minuto y los almacene en un vector. Al finalizar la generación de números, deberá mostrar la lista de números generados en el Monitor Serial.2. Construir un dado virtual con 7 leds y un pulsador, para que al presionar el pulsador se genere una secuencia aleatoria para ‘lanzar el dado’ y a continuación quede fijo el número aleatorio que corresponda al dado. Ejemplo en youtube: ‘Arduino led dice’ by Eddie Maas http://www.youtube.com/watch?v=bVJLSnqbyEc
Antecedentes:
Analizar los programas de ejemplos: Button (http://arduino.cc/es/Tutorial/Button)
Blink (http://arduino.cc/es/Tutorial/Blink)
, Bucle For (http://arduino.cc/es/Tutorial/ForLoop)
y la Referncia del lenguaje http://arduino.cc/es/Reference/For
Punto Extra: Modificar el dado (y el programa) , para que en vez de usar
7 salidas digitales para los leds, mantenga el mismo funcionamiento pero con
solo 4 salidas digitales.
domingo, 1 de julio de 2012
UNLaR - Recuperatorio de Simulación
6/7 -> ya esta subido en otro sitio: bajar aqui
Les adjunto el enunciado y ejercicio resuelto bajar aqui Los alumnos que aprobaron esta instancia (y que están en condiciones de regularizar) son:
- Guzman, Gabriel
- Simonetti, Marcelo
- Troncoso, Emilio
- Fuentes Bazan, Rodrigo
- Peralta, Alejandro
- Corzo Barrera, Cesar
- Millicay, Alejandro
- Miranda, Patricia
- Ovejero, Yanina
- Caliva, Sebastian
Mas adelante les comunicaremos la lista definitiva de alumnos regulares y su calificación definitiva.
lunes, 25 de junio de 2012
Parcial de Simulación
Les adjunto el enunciado y una resolución posible de la evaluación parcial. Bajar aqui. De esta forma pueden tener mayor claridad o (percepción) de la nota. Ya subiré la lista de aprobados y desaprobados (que deberan recuperar esta instancia)
Agregado: Lista de alumnos aprobados (no deben recuperar)
Gonzalez, Federico
Rivera, Karla
Falón, Fabián
Rodriguez, Brenda
Contreras, Fernando
Gonzalez, Mario
Chanampe, Nerea
Romera, Jorge
Romero, Juan
Ibañez, Nancy
El recuperatorio es el Miércoles 27/6 a las 15 hs.
miércoles, 30 de mayo de 2012
Sucesiones.
UNLaR
– Programacion II – Primer parcial 2012.
La
sucesión de Fibonacci:
Esta sucesión tiene la
particularidad de que cada termino de la misma es igual a la suma de los dos
términos anteriores, es decir que f2 = f1
+ f0 y donde f0 = 0 y f1
= 1., con lo que resultan los valores: 1, 1, 2, 3, 5, 8, 13 y así sucesivamente. También es una sucesión
la conformada por los números 2, 4, 8, 16, 32, donde cada termino f(i+1)
= 2 * f(i), y f(0) = 1.
Se pide:
·
Generar un programa en el que
se pueda ingresar la formula general de cualquier sucesión, el o los valores de
los términos iniciales f(0) (y
f(1) si fuera necesario) y el rango de términos de la sucesión que
se desea mostrar y graficar.
·
Mostrar en cualquier objeto
visual solo los términos de la sucesión entre el rango indicado. (por ejemplo
los términos del 5to al 8vo de la sucesión)
·
Graficar los valores obtenidos
para el rango indicado.
Para ver un ejemplo terminado: descargar aqui
Etiquetas:
.net,
programación,
sucesiones,
visual basic
jueves, 24 de mayo de 2012
Suscribirse a:
Entradas (Atom)

