martes, enero 03, 2017

IoT: Monitoriza la temperatura (no negativa) con un sistema LM35 + ESP8266 y envía los datos a Internet.

Nada nuevo bajo el sol. Queremos medir temperatura y enviar los datos a la nube para poder verlos desde cualquier dispositivo móvil conectado a internet. Esto ya era posible hacerlo hace unos años con Arduino pero era más costoso en tiempo y dinero (se requería montar un servidor web, tener una shield adicional para Wifi o Ethernet). Ahora con el micro ESP8266 y servicios como dweet.io o thingspeak.com (entre muchos otros) se puede implementar un sistema de monitorización de manera bien sencilla, barata y sin perder la esencia maker.

**INCISO: Este sistema sólo mide temperatura positiva. Si hace frío y la temperatura queda por debajo de cero grados Celsius habrá que utilizar otro sensor distinto al LM35D, que es el que he utilizado para este ejemplo.

Vamos al tema.

Paso 1: Materiales

1 x placa con ESP8266 (LinkNode D1)
1 x sensor LM35 (http://www.ti.com/lit/ds/symlink/lm35.pdf)

Paso 2: Conexiones:

El sensor LM35 es un circuito integrado con tres pines de conexión: Alimentación (+), tierra (- GND) y señal (S).

El pin de alimentación se conectará al +5V de la placa, el pin de tierra a GND y el de señal a A0 (pin de entrada analógica de la placa).

Sensor | Placa

+ =  5V
- = GND
S = A0


Paso 3: Programa.

El proveedor de servicios para monitorizar los datos que he elegido es thingspeak.com, por su compatibilidad con Matlab, por lo tanto habrá que crearse previamente una cuenta en él.
El código lo he incluido en github y el proyecto se llama weather station. La idea es hacerlo crecer con más sensores y acabar haciendo una pequeña estación meteorológica.
El enlace al programa:
https://github.com/jorgeroden/weather-station/blob/master/weather.ino

IMPORTANTE: Si estás investigando en la búsqueda de una vacuna contra el SIDA, o en la cura de enfermedades raras; creando nuevos materiales o investigando para revolucionar la física y necesitas medir la temperatura ambiente, no utilices este tutorial. La medida no es lo suficientemente precisa (+/- 0.5 ºC). Si estás envuelto en algún "fregao" de ese calado me encantaría ayudarte ;-). Con unos cuantos dólares más (yo me encargo de buscarlos) podemos mejorar mucho la precisión del sistema.


Un ejemplo de lo que tengo montado en el balcón de mi casa:
https://thingspeak.com/channels/207881


martes, septiembre 23, 2014

Simplificar funciones lógicas (circuitos digitales) con Wolfram Alpha

Wolfram Alpha (http://www.wolframalpha.com) es la bestia parda de las matemáticas en internet, y no lo es únicamente porque tenga una cantidad de recursos impresionante en cuanto a cálculo matemático, sino porque sólo es necesario tener un navegador y conexión a internet para utilizarlo cosa que, si eres docente, es de agradecer. Estaba buscando un software de simulación de circuitos digitales para realizar simplificación de funciones lógicas (para comprobar los mapas de Karnaugh en mis clases de electrónica digital) y pensé en el Wolfram.
Pues bien, aquí publico los pasos a seguir para comprobar tus ejercicios de electrónica digital en los que tengas que simplificar funciones lógicas:

Caso de ejemplo. Simplificar la función booleana dada en minterms:

 f(a, b, c) = m2 + m3 + m4 + m5 + m6 + m7

El resultado  final es: f(a, b, c) = a + b

Vamos a ver cómo se introduce en el programa:

Tecleando los términos desarrollados.
Los símbolos utilizados son:
&& para el producto (AND)
|| para la suma (OR)
! para la negación





(!a && b && !c) || ((!a && b && c) || (a && !b && !c) || (a && !b && c) || (a && b && !c) || (a && b && c) 

 o bien directamente indicando los minterms:


BooleanMinterms[{2,3,4,5,6, 7},3]

Y el resultado es:

Tabla de verdad




Simplificación:













donde
DNF es Disjunctive normal form , o sea f = a + b
CNF es Conjunctive normal form



ale, rapidito y limpio.