Tabla de Contenidos
Introducción
Durante los comienzos del siglo XXI estamos viviendo una serie de revoluciones tecnológicas que están cambiando la forma de relacionarnos con nuestro medio. No solo hemos cambiado la forma de relacionarnos entre las personas sino también con el mundo que nos rodea, en el que las redes de comunicaciones han hecho posible la comunicación en tiempo real con cualquier persona al otro lado del mundo, y en la que internet adquiere un papel mas que relevante.
La interconexión digital de los objetos cotidianos con internet permitirá percibir, procesar, transmitir y comunicar datos entre estos objetos o con las personas con la finalidad de automatizar actividades y procesos diarios en nuestra vida cotidiana así como el análisis de los datos generados, aportándonos información útil que nos ayude a tomar decisiones sobre las situaciones que se nos presenten.
El software y hardware libre están ayudando al conocimiento de la tecnología por todo tipo personas, no solo en los campos de la ingeniera sino en campos tan diversos como la medicina, la agricultura, la logística o la moda, un concepto basado en las ideas sobre la libertad del conocimiento.
Como consecuencia estamos comenzando a utilizar esta tecnología como una extensión de nuestros propios sentidos, desplegando todo tipo de sensores en cualquier lugar del mundo que nos permiten conocer lo que allí sucede como si estuviéramos presentes y que convergerá en el encuentro definitivo entre el mundo digital y el real.
Objetivos
El objetivo de este proyecto es el desarrollo de un sistema electrónico de bajo coste que permita la monitorización de variables ambientales. Podrá servir como elemento para distintos proyectos que necesiten de este fin como pueden ser una estación meteorológica, el control domótico de una vivienda o la gestión de un huerto urbano. En concreto, el sistema permitirá la monitorización remota de las siguientes variables:
- Temperatura ambiental.
- Humedad ambiental.
- Presión barométrica.
El sistema, además deberá permitir el seguimiento del mes, día y hora en que se hacen las medidas, con la posibilidad de almacenamiento de los datos en una tarjeta micro-SD en el mismo sistema y la transmisión de estos datos vía Ethernet y su visualización en una plataforma IoT (Internt of Things) que permita su análisis.
Conceptos generales del proyecto
Para entender el conjunto del proyecto hay que conocer los siguientes conceptos:
Software Libre
El software libre (en inglés free software, por lo que a veces se confunde con gratis por la ambigüedad del término free en el idioma inglés) es la denominación del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, modificado, y redistribuido libremente. Según la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo modificado.
La Free Software Foundation se encarga de promover la filosofia de software libre y de proteger la propiedad intelectual mediante licencias basadas en este movimiento como es la Licencia Pública General de GNU. El movimiento Open Source o Código Abierto comparte la filosofia del software libre pero sin embargo, ciertas licencias de código abierto pueden incorporar algunas restricciones, como el requisito de mantener el nombre de los autores y la declaración de derechos de autor en el código, o permitir la modificación del código sólo para usos personales o la redistribución del software para usos no comerciales.
Hardware Libre
Se llama hardware libre a los dispositivos de hardware cuyas especificaciones y diagramas esquemáticos son de acceso público, ya sea bajo algún tipo de pago o de forma gratuita. La filosofía del software libre es aplicable a la del hardware libre. Se debe recordar en todo momento que libre no es sinónimo de gratis, el hardware libre forma parte de la cultura libre.
Hay que tener en cuenta que el hardware tiene asociados a él costos variables directos como son los componentes o el costo de fabricación, así que no se puede aplicar directamente el concepto libre como se aplica a la definición de software libre. Sin embargo, el término hardware libre se ha usado principalmente para reflejar el uso del software libre con el hardware y la publicación libre de la información con respecto al hardware, que a menudo incluyen los diagramas esquemáticos, diseños y montajes.
Arduino
Arduino es una plataforma de electrónica abierta basada en software y hardware libre para la creación de prototipos flexibles y fáciles de usar. Se creó en principio como una plataforma hardware de bajo coste para la docencia que por su versatilidad rápidamente atrajo a aficionados a la electrónica.
El funcionamiento de Arduino es muy sencillo, un microcontrolador que se programa mediante el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing) que permite a través del ordenador que el usuario logre interactuar con circuitos electrónicos y controlarlos por software mediante entradas/salidas analógicas y digitales. Una vez programado Arduino es capaz de actuar de manera autónoma sin estar conectado a un ordenador.
Existen múltiples modelos de Arduino que presentan una arquitectura de similares características, pero que poseen formas, capacidades y funciones distintas. Básicamente se componen de un microcontrolador ATMEL AVR y puertos de entradas/salidas. Los pines de conexionado se disponen de forma estándar lo que permite la conexión de módulos intercambiables entre los distintos modelos Arduino.
Internet de las cosas
El Internet de las cosas (Internet of Things, en inglés, por cuyas siglas IoT también se conoce) es una idea que se basa en que exista una capa de conectividad digital para cosas existentes, donde “cosas” se refiere a todo tipo de objetos cotidianos, y que se comuniquen entre ellas.
Para hacer realidad esta idea, se requiere una evolución en la tecnología que soporta a Internet y empresas como CISCO, Intel o IBM están enfocando sus unidades de negocio a esta tecnología. El uso integrado de las tecnologías de la información y las comunicaciones, el desarrollo y acuerdos sobre estándarización, y un nuevo modo de ver a toda la sociedad interactuando con una infraestructura de comunicaciones Persona-Máquina o M2M (Máquina a Máquina) proporcionara una nueva generación de servicios en una Internet de tercera generación con la interconexión de dispositivos de detección inalámbricos en Redes de Sensores Inalámbricas (WSN Wireless Sensor Network) basadas en IPv6.
Se espera que esta idea traiga consigo beneficios, en corto plazo, en aspectos como: optimización de la cadena de abastecimiento, efectividad de costos, mejoras en las experiencias de los consumidores, y beneficios en aspectos de seguridad y servicios de emergencia. Se estima que habrá 50.000 millones de dispositivos conectados en 2020.
Funcionamiento general del sistema
Arquitectura Hardware
Arduino Uno R3
Como comentamos anteriormente, existen múltiples modelos de Arduino que presentan una arquitectura de similares características. La placa Arduino Uno R3 se ha convertido en la más estandarizada de la plataforma Arduino, la cual hemos elegido para nuestro proyecto por su buen rendimiento, su ajustado precio y su gran capacidad de ampliación mediante shields. El Arduino Uno R3 es una placa dotada de un microcontrolador basado en el ATmega328. Tiene 14 pines de input/output digitales (de los cuales 6 se pueden usar como outputs PWM), 6 pines para inputs analógicos, un oscilador de cristal de 16 MHz, una conexión USB, un power jack, una conexión ICSP, y un botón de reset. Contiene todo lo necesario para soportar un microcontrolador. Para alimentarlo, basta con conectarlo a un ordenador con un cable USB o enchufarle una pila o un transformador AC/DC.
Especificaciones técnicas | |
---|---|
Microcontrolador | ATmega328 |
Alimentación para su funcionamiento | 5V |
Voltaje de input (recomendado) | 7-12V |
Voltaje de input (límites) | 6-20V |
Pines digitales de entrada y salida | 14 (de los cuales 6 proveen un output PWM) |
Pines de entrada analógica | 6 |
Corriente contínua por pin I/O | 40 mA |
Corriente contínua para pin de 3.3V | 50 mA |
Flash Memory | 32 KB (ATmega328) de los cuales 0.5 KB están utilizados por el cargador |
SRAM | 2 KB (ATmega328) |
EEPROM | 1 KB (ATmega328) |
Frecuencia de reloj | 16 MHz |
Arduino Uno R3 puede estar alimentado por dos vías:
- Conexión USB (que proporciona 5 V).
- Jack de alimentación (que normalmente será una pila de 9 V o fuente de alimentación, que se recomienda que esté entre 7 – 12 V).
Los pines de alimentación son para alimentar los circuitos la placa de prototipos o protoboard:
- 3.3 V proporciona una tensión de 3,3 V, y una intensidad máxima de 50 mA.
- 5 V proporciona una tensión de 5 V, y una intensidad máxima de 300 mA.
- GND es la toma de tierra, o nivel 0 V de referencia.
- Vin proporciona la tensión máxima con la que está alimentado Arduino.
En función de cómo esté siendo utilizado los pines de entrada/salida, tendremos los siguientes valores:
- Salida y entrada digital: Los valores de salida pueden ser o 0 V (LOW) o 5 V (HIGH), y se interpretará una entrada de entre 0 y 2 V como LOW y de entre 3 y 5 V como HIGH.
- Salida analógica: Los valores de salida van desde 0 V a 5 V en un rango de 0 a 255 (precisión de 8 bits) valores intermedios.
- Entrada analógica: Los valores de entrada van desde 0 V a 5 V en un rango de 0 a 1023 (precisión de 10 bits) valores intermedios.
La intensidad máxima de todos estos pines es de 40 mA.
Diagrama Pinout Arduino Uno R3 |
---|
La comunicación de Arduino Uno R3 con un ordenador se realiza mediante el conector USB y es necesario tener instalado en nuestro ordenador el software Arduino IDE, que sera también el entorno de programación que utilizaremos.
Arduino Ethernet Shield
Arduino Ethernet Shield es una tarjeta de expansión desarrollada por el grupo de diseñadores de Arduino, que permite tener acceso a una red Ethernet a las tarjetas Arduino, lo que nos da la opción de conectarnos a internet. Se basa en el chip Wiznet W5100 proporcionando una pila de red TCP/IP que permite usar tanto el protocolo TCP como el UDP. Soporta hasta cuatro sockets de conexión simultáneamente.
La shield provee de una conexión estándar de Ethernet RJ-45 que utiliza la biblioteca de Ethernet para escribir sketches con los que se puede hacer una conexión a Internet. Incluye un zócalo para tarjetas de memoria micro-SD que puede ser utilizado para almacenar ficheros.
También incluye un controlador de reset, para asegurar de que el módulo W5100 se reinicia correctamente cuando encendemos la tarjeta. El botón de reset en la tarjeta reinicia tanto el modulo W5100 como la placa Arduino.
Arduino Ethernet Shield se conecta mediante los pines macho que se encuentran en la parte inferior de la placa encajando perfectamente sobre los pines hembra de la placa Arduino UNO R3, esto mantiene la disposición de las conexiones intacta y permite que otra shield se conecte en la parte superior.
La placa Arduino se comunica con el módulo W5100 y la micro-SD utilizando el bus SPI (mediante el conector ICSP), mediante los pines digitales 11, 12 y 13. Además el pin 10 es utilizado para seleccionar el W5100 y el pin 4 para la micro-SD. Estos 5 pines no pueden ser utilizados para otros fines mientras la Ethernet Shield esté conectada.
Hay que tener en cuenta que el módulo W5100 y la micro-SD comparten el bus SPI, por lo que sólo uno de ellos puede ser utilizado a la vez. Si se desea utilizar ambos simultáneamente, hay que tenerlo en cuenta al escribir el código.
Arduino Ethernet Shield contiene LEDs para información: -PWR: indica que la placa y la shield están alimentadas. -LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o recibe datos. -FULLD: indica que la conexión de red es full duplex. -100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una de 10Mb/s). -RX: parpadea cuando la shield recibe datos. -TX: parpadea cuando la shield envía datos. -COLL: parpadea cuando se detectan colisiones en la red.
Sensor de humedad y temperatura AM2302 (DHT22)
El Sensor digital de humedad y temperatura AM2302 es la versión cableada y encapsulada en un cuerpo plástico del sensor DHT22. Se compone de un sensor capacitivo para medir la humedad y un termistor para medir la temperatura del aire en el ambiente, ambos sensores están calibrados por lo que no se debe ajustar ningún parámetro.
Es un sensor muy sencillo de usar y muy preciso pero que requiere una sincronización cuidadosa para tomar datos, el único inconveniente de este sensor es que sólo se puede obtener nuevos datos una vez cada 2 segundos, así que las lecturas que se pueden realizar serán mínimo cada 2 segundos.
Especificaciones técnicas | |
---|---|
Alimentación | 3.3-5 Vcc |
Consumo | 2.5 mA max (en captura) |
Señal de Salida | Digital |
Rango de medida Temperatura | De -40°C a 80 °C |
Precisión Temperatura | <±0.5 °C |
Resolución Temperatura | 0.1°C |
Rango de medida Humedad | De 0 a 100% RH |
Precisión Humedad | ±2-5% |
Resolución Humedad | 0.1%RH |
Sample rate | No más de 0.5 Hz (1 vez cada 2 seg) |
Tamaño | 27x59x13,5 mm |
Conexion | 3 cables de 23 cm |
La señal de salida es digital, por lo que la conexión se realizará con los pines digitales, y además incorporan un pequeño microcontrolador interno para hacer el tratamiento de la señal. El cable rojo (VCC)se conecta a la alimentación (3-5V), el amarillo (DATA) al pin de datos y el negro (GND) a la masa. Tiene internamente una resistencia pullup de 5.1K que conecta Vcc con Data por lo que no necesitas nada extra para utilizarlo.
Conexiones | |
---|---|
AM2302 | Arduino |
1.- VCC | 5 Vcc |
2.- DATA | Pin digital (D0-D13) |
3.- GND | GND |
Sensor barométrico BMP180 Adafruit
El modulo Adafruit contiene un sensor barométrico de alta precisión basado en el BMP180 de Bosch con un rango de medida de entre 300 y 1100 hPa (Hecto Pascal) con un margen de error mínimo de tan sólo 0.03 hPa. Está basado en tecnología piezo-resistiva de alta eficiencia, linealidad y larga duración.
Este sensor puede también medir la temperatura, y como la presión varia con la altitud, también se puede usar como altímetro de precisión que puede llegar a medir una diferencia de tan solo 25 cm. de altura. Estos parámetros no los tendremos en cuenta para nuestro proyecto pero es interesante conocer las posibilidades de este sensor para futuros proyectos.
Especificaciones técnicas | |
---|---|
Alimentación | 3-5 Vcc |
Rango de medida Presión | 300-1100 hPa |
Precisión Presión | 0,03hPa |
Rango de medida Altitud | 9000m a -500m sobre el nivel del mar |
Precisión Altitud | 0,25m |
Rango de medida Temperatura | De -40°C a 85 °C |
Precisión Temperatura | 0,2 °C |
Contiene un regulador de voltaje y un conversor I2C para 3,3V, de tal forma que se puede alimentar sin problemas con un voltaje de 3V-5V al igual que su interface I2C, además cuenta ya con resistencias Pull-Up.
Esta diseñado para ser conectado directamente mediante su interfaz I2C. Su conexión es muy sencilla, el pin VIN al pin de 5V del Arduino, el GND al pin de masa, el SCL al I2C Clock (pin 5 analógico) y el SDA al pin de datos I2C (pin 4 analógico).
ChronoDot RTC V2.1 Adafruit
El modulo ChronoDot RTC de Adafruit es un reloj en tiempo real sumamente exacto basado en el chip DS3231 con compensación de temperatura. Requiere para su funcionamiento una pila de litio CR1632, la cual durará aproximadamente 8 años si la interfaz I2C se utiliza solamente mientras el reloj es alimentado con 5V.
No necesita de ningún cristal ni ajuste externo para funcionar ya que el DS3231 tiene un cristal interno y un un banco de capacitores y su temperatura de funcionamiento está constantemente monitorizada para obtener una frecuencia lo más estable posible y ofrecer una lectura de tiempo muy precisa. El ChronoDot tiene una variación de apenas 1 minutos por año, por lo que es ideal para entornos donde se necesita medir el tiempo con precisión.
Puede ser pinchado directamente sobre una protoboard y también dispone de agujeros de montaje. Su interfaz funciona por I2C y es muy sencillo de implementar ya que es muy similar a los registros de funcionamiento del DS1337 y DS1307, lo que significa que tu código para estos podría funcionar perfectamente con ChronoDot sin grandes modificaciones.
Arquitectura Software
Además para englobar el proyecto bajo un denominador común hemos elegido IoT Ozone como nombre de nuestro proyecto para facilitar así nuestro trabajo.
- Adquisición y valoración de los elementos Hardware de la plataforma Arduino.
- Registro de la cuenta de correo IoT Ozone en Google.
- Registro de la cuenta de la plataforma IoT ThingSpeak.