UNIVERSIDAD DE TALCA
FACULTAD DE INGENIERIA
ESCUELA DE INGENIERIA EN MECATRONICA
Desarrollo de un Sistema Inalámbrico para
Monitoreo de Humedad de Suelo en diversos
puntos de un Viñedo.
Memoria para optar al Título de
Ingeniero en Mecatrónica
Profesor Guía:
Carlos Baier Fuentes
Profesores Co-Guía:
Carlos Poblete Echeverría
Javier Muñoz Vidal
MAURICIO ALEJANDRO FLORES SOTO
CURICÓ-CHILE
2014
RESUMEN
El objetivo de esta memoria es desarrollar un sistema inalámbrico de comunicación
usando la topología de red “malla” (o como se conoce comúnmente por el lenguaje inglés
“mesh”), cuya principal función es conectar sensores para monitorear la humedad de suelo
en múltiples sectores de un viñedo. La aplicación del sistema es conocer la humedad de
suelo de un viñedo para optimizar riego. De esta forma se planea afrontar la escasez del
recurso hídrico y mejorar la calidad de las vides.
La solución propuesta consta de nodos interconectados con configuración “mesh”. Cada
nodo está basado en la plataforma de hardware “Arduino” con la capacidad de conectar
hasta 3 sensores, redundantes o diferentes, entre los que se pueden contar sensores de:
humedad de suelo, temperatura ambiental, velocidad del aire y/o radiación solar. Para la
conexión inalámbrica se utilizan módulos “XBee”, los que trabajan con el protocolo
DIGIMesh. Además, se buscó reducir al máximo el consumo eléctrico, para ello se
utilizaron las opciones de auto apagado mientras el sistema no está en uso, para así
garantizar la autonomía de cada nodo. Cabe mencionar que el sistema desarrollado es lo
suficiente resistente para soportar las inclemencias del tiempo y su uso en condiciones de
campo.
En conjunto con los nodos sensores se cuenta con una estación o nodo central, que se
encarga de enviar los datos recogidos (Gateway), en tiempo real o como resumen diario
para su posterior procesamiento y análisis.
Finalmente, el sistema completo es modular, escalable y de bajo costo respecto de
sistemas similares ya existentes.
I
ABSTRACT
The aim of this report is to develop a wireless communication system using the network
topology "mesh", whose main function is to connect sensors to monitor soil moisture in
multiple sectors of a vineyard. The implementation of the system is to determine the soil
moisture of a vineyard to optimize irrigation. Thus it is planned to address the shortage of
water resources and improve the quality of the vines.
The proposed solution consists of nodes interconnected with mesh configuration. Each
node is based on the hardware platform "Arduino" with the ability to connect up to 3
sensors, redundant or different, among which may have different types of sensors such as:
soil moisture, air temperature, air velocity and / or solar radiation. For wireless conection it
is used XBee modules, which work with the DigiMesh protocol. Furthermore, it seeks to
minimize power consumption, for that options were used auto off while the system is not in
use, thus ensuring the autonomy of each node. Should be mentioned that the developed
system is sufficiently strength to support the weather and their use in field conditions.
In conjunction with the sensor nodes is has a station or central node, which then sends
the data collected (Gateway), real-time or daily summary for further processing and
analysis.
Finally, the entire system is modular, scalable and low cost compared to existing similar
systems.
II
DEDICATORIA
A mis Padres
III
AGRADECIMIENTOS
Quiero exponer mis más profundos agradecimientos a las personas que me ayudaron en
este proyecto: Profesor Carlos Poblete, Profesor Carlos Baier, Marcelo, Héctor y todos en
el Citra. De todos ellos recibí alguna ayuda o enseñanza.
También quiero agradecer a la persona que posiblemente me tiene más fe en el mundo,
mi vieja. Costó, y sí que costó, pero se pudo =).
Por último, pero por supuesto no menos importante, quiero agradecer a Valeria <3 por
su apoyo en los buenos y malos momentos :*.
Y era gol de Pinilla
IV
TABLA DE CONTENIDO
Resumen ............................................................................................................................ I
Abstract ............................................................................................................................ II
Dedicatoria...................................................................................................................... III
Agradecimientos ............................................................................................................. IV
Tabla de contenido............................................................................................................ 1
Índice de figuras ............................................................................................................... 4
Índice de tablas ................................................................................................................. 6
Capítulo 1 Introducción .............................................................................................. 7
1.1. Introducción General ............................................................................................. 8
1.2. Objetivos Generales ............................................................................................... 9
1.3. Objetivos Específicos............................................................................................. 9
1.4. Metodología ......................................................................................................... 11
1.5. Alcances ............................................................................................................... 12
1.6. Resultados esperados ........................................................................................... 13
Capítulo 2 Componentes electrónicos y Comunicación Digital. .............................. 14
2.1. Hardware Arduino. .............................................................................................. 15
2.1.1. Comunicación SPI:.................................................................................................... 15
2.1.2. Comunicación I²C: .................................................................................................... 16
2.1.3. Comunicación Serial................................................................................................. 17
2.1.4. Lectura/Escritura de datos digitales. ....................................................................... 17
2.1.5. Lectura análoga:....................................................................................................... 18
2.1.6. Salidas PWM: ........................................................................................................... 20
2.2. XBee .................................................................................................................... 23
2.3. Módulo GPRS ...................................................................................................... 27
2.4. Módulo LCD ........................................................................................................ 30
2.5. Shield Arduino RTC + MicroSD ......................................................................... 31
2.6. Sensor de humedad EC-5 ..................................................................................... 33
2.7. Otros elementos ................................................................................................... 35
2.8. Software ............................................................................................................... 35
2.8.1. Arduino .................................................................................................................... 35
2.8.2. X-CTU ....................................................................................................................... 37
Capítulo 3 Prototipos. ............................................................................................... 39
3.1. Prototipo con sensor de humedad EC-5 ............................................................... 40
3.1.1. Programa para prototipo sensor de humedad EC-5 ................................................ 45
3.1.2. Calibración de resultados entregados por sensor EC-5 ........................................... 46
3.2. Prototipo Final. .................................................................................................... 50
Capítulo 4 Resultados. .............................................................................................. 57
4.1. Prototipo sensor EC-5 .......................................................................................... 58
4.2. Prototipo Final ..................................................................................................... 60
Capítulo 5 Conclusiones y trabajo futuro. ................................................................ 66
5.1. Conclusiones ........................................................................................................ 67
5.2. Trabajo futuro ...................................................................................................... 68
Glosario .......................................................................................................................... 70
Bibliografía ..................................................................................................................... 71
Anexos ......................................................................................................................... - 1 -
Otro Software Utilizado ........................................................................................... - 2 -
ISIS Proteus ...................................................................................................................... - 2 -
Eagle 5.12.0 ...................................................................................................................... - 2 -
RoutePro 2008 ................................................................................................................. - 4 -
Fritzing ............................................................................................................................. - 6 -
Equipos y Herramientas ........................................................................................... - 7 -
Bungard CCD MTC............................................................................................................ - 7 -
Instalación y uso de Software Arduino en entorno Microsoft Windows ................. - 9 -
Programas para Arduino .......................................................................................... - 9 -
Programa Arduino Uno R3 para sensor EC-5: ................................................................ - 10 -
Programa Arduino Mega 2560 para Nodo Central ........................................................ - 11 -
Programa Arduino Fio para Nodo Sensor ...................................................................... - 14 -
Programa Arduino UNO RTC DS1307 ............................................................................ - 16 -
Programa Arduino UNO RTC DS1340z ........................................................................... - 19 -
ÍNDICE DE FIGURAS
Figura 1: Esquema de conexión SPI; 1 maestro, 3 esclavos. ......................................... 16
Figura 2: Esquema de conexión I²C; 1 maestro, 3 esclavos. .......................................... 17
Figura 3: Equivalencia análoga digital. .......................................................................... 19
Figura 4: Ejemplos de ciclos de trabajo PWM ............................................................... 20
Figura 5: Arduino Uno R3 .............................................................................................. 21
Figura 6: Arduino FIO .................................................................................................... 21
Figura 7: Arduino Mega 2560 ........................................................................................ 21
Figura 8: XBee Pro Digimesh 2.4 GHz .......................................................................... 24
Figura 9: Topología Mesh utilizando ZigBee con módulos XBee S2. ........................... 25
Figura 10: Topología Mesh utilizando Digimesh. .......................................................... 26
Figura 11: Shield XBee desarrollado por MCI. .............................................................. 26
Figura 12: Módulo Celular GSM/GPRS GM862-QUAD .............................................. 28
Figura 13: Shield GM862-QUAD .................................................................................. 29
Figura 14: LCD 16x2 HD44780 ..................................................................................... 30
Figura 15: Shield Arduino LCD de DFRobot ................................................................. 31
Figura 16: Shield Arduino RTC + MicroSD MCI. ......................................................... 32
Figura 17: Shield MicroSD SparkFun Electronics. ........................................................ 32
Figura 18: Sensor de humedad EC-5 .............................................................................. 33
Figura 19: Plug 3.5 de sensor EC-5 ................................................................................ 34
Figura 20: Cables sensor EC-5 ....................................................................................... 34
Figura 21: Ventana principal de Ide Arduino. ................................................................ 36
Figura 22: Ventana principal de XCTU. ........................................................................ 38
Figura 23: Diagrama de flujo prototipo sensor. .............................................................. 40
Figura 24: Modificación de Shield microSD para Arduino (vista inferior). .................. 42
Figura 25: Modificación de Shield microSD para Arduino (vista superior). ................. 42
Figura 26: Esquema de un transistor NPN 2N2222. ...................................................... 43
Figura 27: Caracterización de elementos para la alimentación del sensor EC-5............ 43
Figura 28: Montaje de placa Shield RTC + microSD. .................................................... 44
Figura 29: Prototipo terminado para sensor EC-5 .......................................................... 45
Figura 30: Ajuste de datos obtenidos del sensor EC-5 y el WVC teórico...................... 49
Figura 31: Prototipo Nodo Gateway ............................................................................... 53
Figura 32: Prototipo Nodo Sensor en detalle.................................................................. 54
Figura 33: Prototipos Nodos Sensores............................................................................ 54
Figura 34: Diagrama de flujo de nodo central. ............................................................... 55
Figura 35: Diagrama de flujo de nodo sensor................................................................. 56
Figura 36: Gráfica de datos obtenidos por el sensor. ..................................................... 59
Figura 37: Ubicación de terreno de prueba de comunicación. ....................................... 61
Figura 38: Medición de distancia en comunicación punto a punto. ............................... 61
Figura 39: Configuración Malla Parcial. ........................................................................ 62
Figura 40: Configuración Malla Parcial. ........................................................................ 62
Figura 41: Configuración Malla Completa. .................................................................... 62
Figura 42: Recepción de datos en equipo móvil............................................................. 63
Figura 43: Isis Proteus ................................................................................................. - 2 -
Figura 44: Navegador de Eagle 5.12.0 ........................................................................ - 3 -
Figura 45: Esquemático de un circuito realizado en Eagle 5.12.0 .............................. - 4 -
Figura 46: Diseño de una PCB en Eagle 5.12.0 .......................................................... - 4 -
Figura 47: Pantalla de configuración de herramienta de RoutePro 2008. ................... - 5 -
Figura 48: Pantalla de configuración de área de trabajo de RoutePro 2008................ - 5 -
Figura 49: Pantalla de visualización de trabajo de CNC CCD en RoutePro 2008. ..... - 6 -
Figura 50: Fritzing ....................................................................................................... - 7 -
Figura 51: Fotografía de CNC Bungard CDD MTC realizando diseño de PCB. ........ - 8 -
ÍNDICE DE TABLAS
Tabla 1: Comparativa de Arduinos utilizados. ............................................................... 22
Tabla 2: Descripción de XBee Pro Digimesh 2.4 GHz .................................................. 24
Tabla 3: Descripción de módulo GM862 QUAD ........................................................... 27
Tabla 4: Especificaciones técnicas de Shield LCD de DFRobot .................................... 31
Tabla 5: Pines Shield microSD + RTC y Shield microSD ............................................. 33
Tabla 6: Especificaciones técnicas sensor ECH2O EC-5 de Decagon Devices. ............ 34
Tabla 7: Listado de componentes registrador de datos (sin conexión mesh) ................. 41
Tabla 8: Datos obtenidos para la calibración del sensor EC-5. ...................................... 48
Tabla 9: Listado de componentes nodo central de “mesh”, incluye Gateway ................ 51
Tabla 10: Listado de componentes de un nodo sensor. .................................................. 52
Tabla 11: Datos obtenidos del Sensor EC-5 ................................................................... 58
Tabla 12: Consumo máximo de corriente de prototipo para sensor EC-5...................... 59
Tabla 13: Consumo máximo de corriente de Prototipo Nodo Central (Mesh) ............... 64
Tabla 14: Consumo máximo de corriente, Prototipo Nodo Sensor EC-5 (Mesh) .......... 65
Tabla 15: Especificaciones técnicas de máquina CNC Router.................................... - 8 -
CAPÍTULO 1 INTRODUCCIÓN
En este capítulo se da a conocer el propósito de esta memoria, el motivo del desarrollo, la
metodología utilizada, sus alcances y resultados esperados.
Mauricio Flores Soto Pág. 7
CAPÍTULO 1: INTRODUCCIÓN.
1.1. INTRODUCCIÓN GENERAL
Actualmente en Chile se observa una baja en la cantidad de agua disponible, esto se ve
asociado a la desertificación, la que se estima que empeorará en los próximos años (1).
Dicha falta de agua afecta en muchos ámbitos, pero particularmente a la agricultura. Es por
eso que se vuelve necesario optimizar los recursos hídricos referidos a la agronomía y se
solicita la tecnificación del riego. Entonces, con esto se espera hidratar los cultivos o
plantaciones de una manera controlada y racionada, sólo en los momentos que la planta lo
requiera.
Un paso importante para el riego tecnificado es saber el estado actual de la planta y del
medio ambiente. Para conocer este estado, en este proyecto, se aplicará tecnología a la
medición de variables físicas que afectan los viñedos, como por ejemplo humedad.
Además, se dispondrá de estas variables en tiempo real, ya que se instalará en el terreno el
sistema de medición. Dichas variables serán transferidas hacia una central remota para el
posterior procesamiento y análisis.
Está en boga el uso de vehículos aéreos no tripulados (UAV – por las siglas en inglés de
“Unmanned Aerial System”) o también conocidos como drones. Los drones, para el uso en
agricultura, generalmente vienen equipados con GPS, cámaras de alta resolución y sensores
infrarrojos. Con los datos obtenidos por un dron, y con el uso de un software de
procesamiento de imágenes, se obtiene un “ortomosaico” con estimaciones de humedad de
suelo de todo un predio (2) (3).
Otro medio disponible para la medición, o más bien estimación, de la humedad de
suelo, es el uso de satélites. Satélites con equipos de microondas, difusores o radiómetros
logran imágenes con estimaciones de la humedad de suelo (4). Sin embargo, el uso de estos
queda condicionado a: la frecuencia de sobrevuelo de una zona, la resolución de los datos
obtenidos, el tipo de vegetación y la profundidad máxima estimada de la medición (5).
El desarrollo de tecnologías tiene un ritmo vertiginoso, con lo cual constantemente
podemos encontrar nuevas soluciones, ya sean electrónicas o informáticas, para problemas
que se presentan en los distintos campos de trabajo de la sociedad contemporánea. Es así
Mauricio Flores Soto Pág. 8
CAPÍTULO 1: INTRODUCCIÓN.
como a la vez que aparecen nuevos productos creando avances destacables en la tecnología,
el mercado tiende a equilibrar los precios por la constante competencia de productos. La
Agronomía no está ajena a la implementación de las nuevas tecnologías, ya que
aplicándolas no solo se pueden optimizar recursos, sino que también se pueden obtener
mejores resultados en la producción.
En base a lo anterior, es que esta memoria se fundamenta en la aplicación de un sistema
de comunicación inalámbrico de sensores de humedad de suelo con los cuales se obtendrán
lecturas en tiempo real (se deja abierta la posibilidad de ampliar a sensores de temperatura
ambiental, radiación solar, velocidad de viento, humedad relativa u otros), intentando
conseguir un producto final de bajo costo comparativamente con otros productos
comerciales.
El desarrollo de esta memoria de título es parte del proyecto FONDEF IDeA
“Desarrollo de un sistema móvil para la generación de mapas térmicos que permitan un
manejo óptimo del riego” de la Comisión Nacional de Investigación Científica y
Tecnológica CONICYT.
1.2. OBJETIVOS GENERALES
Desarrollar un sistema de comunicación inalámbrico para medición de humedad de
suelo. Considerando el almacenamiento de datos forma local y el envío a una central
remota.
1.3. OBJETIVOS ESPECÍFICOS
Los objetivos específicos de este proyecto son:
1. Utilizar topología de red “mesh” para la comunicación de los nodos.
En esta etapa se analiza la topología “mesh” y los posibles transmisores a utilizar,
teniendo en cuenta la distancia de transmisión, la velocidad de transmisión, la frecuencia
utilizada, el costo y la facilidad de uso. Además, se analizan las configuraciones que puede
presentar el transmisor seleccionado buscando la configuración óptima. Este objetivo
Mauricio Flores Soto Pág. 9
CAPÍTULO 1: INTRODUCCIÓN.
culmina al realizar las pruebas de comunicación en terreno, midiendo las distancias
abarcadas por los transmisores y comparándolas con las detalladas en las hojas de
especificaciones.
2. Analizar comportamiento de sensores de humedad de suelo en hardware
Arduino y calibrar los mismos.
Para el cumplimiento de este objetivo se utilizará el sensor ECH2O EC-5 de Decagon
Devices. Se debe detectar la magnitud de la humedad de suelo y lograr comunicación con la
placa Arduino. Este último cumplirá la función de traducir los datos obtenidos para ser
mostrados en una pantalla de 16x2 caracteres y guardados en una memoria microSD.
3. Comunicar Arduino vía GPRS
El sistema de comunicación incluye un nodo que actúa como gateway para enviar los
datos a un servidor remoto, este objetivo se cumplirá con el uso de tecnología GPRS.
4. Analizar el consumo de energía de componentes y de autonomía de prototipo.
En esta etapa se estudia el consumo de energía de los componentes más importantes del
sistema, basándose principalmente en las hojas de especificaciones. Se analiza y se logran
estimaciones de la duración del sistema en lo que refiere al consumo de energía.
5. Construir prototipo final del proyecto.
Se integrarán los sistemas de medición de datos de humedad de suelo, el almacenaje y
transmisión de estos a una central o “gateway” para posteriormente ser enviados a un
servidor remoto.
Mauricio Flores Soto Pág. 10
CAPÍTULO 1: INTRODUCCIÓN.
1.4. METODOLOGÍA
El proyecto tendrá la siguiente metodología:
Investigar y analizar bibliografía sobre sensores de humedad de suelo,
controladores, sistemas de comunicación que utilicen topología de red malla o
“mesh”, sistemas de comunicación GPRS y baterías. La información será obtenida
de internet y de la biblioteca de la Universidad de Talca.
Simular el funcionamiento de componentes electrónicos, las simulaciones se
realizarán utilizando el módulo VSM (acrónimo de “Virtual System Modeling”, en
castellano “Sistema Virtual de Modelado”) que viene integrado en ISIS (acrónimo
de “Intelligent Schematic Input System”, en castellano “Sistema de Enrutado de
Esquemas Inteligente”), que a su vez es parte de la compilación de programas
computacionales Proteus desarrollado por Labcenter Electronics.
Cotizar y comprar piezas para construir prototipos, las cotizaciones se realizarán a
través de internet, llamadas telefónicas o concurriendo a las tiendas específicas. Se
usarán dineros propios del proyecto para las compras y gastos relacionados, siendo
supervisados por personal administrativo del mismo proyecto.
Programar en plataforma Arduino, para utilizar las placas del mismo nombre
(Arduino Uno R3, Arduino Fio, Arduino Mega 2560) y lograr interacción con
pantallas LCD, sistemas de almacenamiento de datos, transmisores XBee, módulos
GPRS, módulos RTC (reloj de tiempo real), sensores y comunicación entre placas
Arduino.
Calibrar sensores de humedad de suelo. La electrónica involucrada será supervisada
por el Profesor Dr. Carlos Baier. La calibración será supervisada por el Profesor Dr.
Carlos Poblete y se realizará utilizando equipamiento y materiales de la Universidad
de Talca, en específico del CITRA, ubicado en Talca.
Programar transmisores XBee para establecer comunicación entre nodos.
Mauricio Flores Soto Pág. 11
CAPÍTULO 1: INTRODUCCIÓN.
Desarrollar y elaborar placas electrónicas para fines específicos, como construir un
reloj de tiempo real, o interfaces para la conexión de sensores. El trabajo se realizará
en laboratorio de electrónica de la Facultad de Ingeniería de la Universidad de Talca
en Curicó y será supervisado por el Profesor Luis Concha.
Estimar consumo energético del sistema, para este punto se analizará el consumo
energético de los componentes más relevantes del sistema buscando en la
documentación presentada por el fabricante.
Testear comunicación en terreno. Esta prueba consta de la medición de distancias de
comunicación en condiciones reales. Las pruebas se realizarán en dependencias de
la Universidad de Talca y en viñas contactadas por el Profesor Dr. Carlos Poblete.
1.5. ALCANCES
Los alcances del proyecto son:
Construir un prototipo de sensor de humedad para el suelo.
Se construirá un prototipo capaz de medir la humedad de suelo, utilizando el sensor
ECH2O EC-5 fabricado por Decagon Devices. El prototipo será autónomo, por lo cual
contará con un sistema de reloj en tiempo real, una pantalla LCD de 16x2 caracteres, y la
capacidad de almacenar los datos obtenidos en memoria microSD.
Establecer una red en malla o tipo “mesh”.
Se programarán los transmisores XBee, las placas Arduino Fio y una placa Arduino
Mega 2560 para establecer una red en malla o tipo “mesh”.
Construir prototipo de comunicación GPRS e integrar con prototipos anteriores.
Se construirá una central que funcionará como gateway, que posterior a la integración
del prototipo sensor de humedad de suelo y la conexión “mesh”, recolectará los datos de los
Mauricio Flores Soto Pág. 12
CAPÍTULO 1: INTRODUCCIÓN.
nodos y agregará la temperatura ambiental en su lugar de operación. Todos los datos serán
enviados a través de GPRS a un servidor remoto.
Estimar tiempo de funcionamiento del sistema completo en funcionamiento
utilizando baterías.
Se hará una revisión de los consumos de batería según hojas de especificaciones de los
componentes electrónicos, además se realizarán estimaciones de consumo energético del
sistema y duración del sistema en autonomía.
1.6. RESULTADOS ESPERADOS
De este trabajo se espera obtener un prototipo funcional que satisfaga las necesidades
del Centro de Investigación y Transferencia de Riego de la Universidad de Talca (CITRA)
en particular a lo que refiere al proyecto FONDEF IDeA y su requisito de obtener lecturas
de humedad relativa de suelo.
Por otro lado se espera cumplir los requisitos solicitados por la Escuela de Ingeniería en
Mecatrónica para la culminación de la Memoria de Título, demostrando aplicar algunos de
los tópicos aprendidos durante la carrera, como son la programación de microcontroladores,
la simulación de circuitos electrónicos, el diseño de PCB, la comunicación de datos a
distancia, la calibración de sensores e incluso el diseño adecuado de una carcasa.
Mauricio Flores Soto Pág. 13
CAPÍTULO 2 COMPONENTES ELECTRÓNICOS Y
COMUNICACIÓN DIGITAL.
En este capítulo se dan a conocer: Los materiales utilizados; tanto sensores, transmisores
y modem; los protocolos de comunicación y además los entornos de programación.
Mauricio Flores Soto Pág. 14
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
2.1. HARDWARE ARDUINO.
El hardware Arduino es una plataforma compuesta por un microcontrolador y una placa
electrónica con las características básicas para disponer de una fácil interacción con una
computadora. Las placas son desarrolladas bajo la ideología “Open Hardware”, por lo cual
los esquemáticos e incluso diseños de PCB se encuentran libremente en internet (se
adjuntan esquemáticos en Anexos). Las placas Arduino tienen la capacidad de realizar
comunicación en distintos estándares, como pueden ser SPI, I²C y comunicación serial,
también pueden realizar lecturas de datos digitales o análogos, e incluso pueden manejar
salidas PWM. Con todo lo anterior es que se puede controlar una amplia gama de sensores
o actuadores electrónicos.
A continuación se describen las formas de comunicación disponibles en Arduino:
2.1.1. COMUNICACIÓN SPI:
El nombre viene del inglés Serial Pheripheral Interface. Es un protocolo de datos
seriales sincrónicos utilizado para comunicar microcontroladores con dispositivos
periféricos, incluyendo otros microcontroladores. La comunicación es rápida y fue diseñado
para cortas distancias. La comunicación SPI es “maestro – esclavo”, en la que es necesario
un maestro por cada comunicación (6).
Para establecer comunicación SPI son necesarias las siguientes líneas de datos:
- MISO: (del inglés Master In, Slave Out) Envía datos desde el esclavo al maestro.
- MOSI: (del inglés Master Out, Slave In) Envía datos desde el maestro al esclavo.
- SCK: (del inglés Serial Clock) Envía pulsos de reloj que sincronizan la transmisión
del maestro.
- SS: (del inglés Slave Select) O también conocido por “CS” (Cable Selector) Es la
línea en cada dispositivo esclavo que el maestro utiliza para habilitar o deshabilitar
dicho dispositivo. El maestro debe disponer de una línea para cada esclavo.
En la Figura 1 se observa un esquema de conexión SPI entre 1 maestro y 3 esclavos.
Mauricio Flores Soto Pág. 15
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
SCK SCK
MISO SPI
MISO
MOSI SLAVE
SPI MOSI
1
Master SS1 SS
SS2
SS3
SCK
SPI
MISO
SLAVE
MOSI
2
SS
SCK
SPI
MISO
SLAVE
MOSI
3
SS
Figura 1: Esquema de conexión SPI; 1 maestro, 3 esclavos.
2.1.2. COMUNICACIÓN I²C:
El nombre de este estándar de comunicación proviene del inglés Inter-Integrated
Circuit, se pronuncia “I al cuadrado C” o simplemente I2C (I dos C) o también IIC.
I²C comparte ciertas similitudes con SPI, como por ejemplo; ambos son protocolos
Maestro – Esclavo, en los cuales puede haber multitud de esclavos. También ambos son
sincrónicos, ya que utilizan una línea de reloj. Sin embargo, I²C se destaca por usar
únicamente 2 líneas de comunicación, las cuales son llamadas SDA (datos) y SCL (reloj).
La conexión I²C requiere que las líneas de comunicación estén conectadas a resistencias
pull-up, esto se debe a que son líneas drenador abierto. Además es necesario que los
dispositivos tengan conexión a tierra común (7).
Mauricio Flores Soto Pág. 16
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Para establecer comunicación entre el maestro y un esclavo, I²C utiliza un sistema de
direcciones lógicas. Estas direcciones lógicas pueden ser de 7 u 8 bits, sin embargo en
Arduino solamente están implementadas las direcciones de 7 bits (8).
En la Figura 2 se observa un esquema de conexión entre 1 maestro y 3 esclavos
utilizando I²C:
Vdd
Rp Rp
SDA
SCL
Maestro Esclavo 1 Esclavo 2 Esclavo 3
Figura 2: Esquema de conexión I²C; 1 maestro, 3 esclavos.
2.1.3. COMUNICACIÓN SERIAL
La comunicación serial se logra a través del puerto serial, también conocido como
UART o USART. Todas las placas Arduino tienen al menos un puerto serial, el cual
consiste en los pines RX (Lectura) y TX (Escritura). Este puerto se utiliza principalmente
para la comunicación con una computadora, y en ese caso no se debe utilizar para lectura o
escritura de datos digitales (9).
2.1.4. LECTURA/ESCRITURA DE DATOS DIGITALES.
Todos los pines de una placa Arduino pueden ser utilizados para lectura o escritura
digital. La lectura/escritura digital se define por dos estados, los cuales pueden ser
nombrados de muchas formas: HIGH y LOW; 0 y 1; o true y false (10).
Mauricio Flores Soto Pág. 17
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Para utilizar Arduino en escritura o lectura de datos digitales, en el código fuente se
debe especificar que pin se utilizará con la función pinMode(a,b), donde a es el pin
representado por un número y b es el modo a utilizar siendo: INPUT u OUTPUT las
opciones disponibles. Por ejemplo para configurar el pin 3 como salida el código sería:
pinMode(3, INPUT);
Un pin de entrada de una placa Arduino considera la lectura de un estado alto (HIGH)
si:
- Recibe un voltaje mayor a 3 volts (Para placas que operan a 5 volts)
- Recibe un voltaje mayor a 2 volts (Para placas que operan a 3.3 volts)
Un pin de salida de una placa Arduino entrega un voltaje de (11):
- 5 volts (placas que operan a 5 volts) o 3.3 volts (placas que operan a 3.3 volts) para
estados altos.
- 0 volts para estados bajos.
2.1.5. LECTURA ANÁLOGA:
La lectura análoga consiste en tomar un valor análogo y convertirlo en uno digital, esto
se logra a través de un conversor análogo a digital o ADC (del inglés Analog to Digital
Converter). Las placas Arduino disponen de ADC, los cuales pueden leer niveles de hasta 5
volts (para las placas que operan a 5 volts) o 3.3 volts (para las placas que operan a 3.3
volts).
Como se mencionó, fruto de la conversión de un valor análogo se obtiene un valor
digital, el cual tiene una resolución máxima de 10 bits, es decir que se representa con
valores desde 0 a 1023. En la Figura 3 se observa la equivalencia de valores análogos y
digitales para un Arduino que opere a 5 volts, en donde se destaca que 2.5 volts equivalen
al valor digital 511.
Mauricio Flores Soto Pág. 18
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
1000 5; 1023
950
900
850
800
750
700
650
Valor Digital ( - )
600
550 2.5; 511
500
450
400
350
300
250
200
150
100
50
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Voltaje (V)
Figura 3: Equivalencia análoga digital.
Sumado a lo anterior, en Arduino existe la posibilidad de reducir la cota máxima del
nivel análogo, con lo que se consigue ganar resolución. Para esto se utiliza el comando
analogReference(), el cual dispone de algunos parámetros (12):
- DEFAULT: Aplica el valor por defecto a la referencia análoga de 5 volts (para las
placas Arduino de 5 volts) o 3.3 volts (para las placas Arduino de 3.3Volts)
- INTERNAL: Aplica una referencia interna de 1.1V en los Arduinos basados en
ATmega168 o ATmega328 y 2.56 volts enlos Arduinos basados en ATmega8 (esta
función no está disponible en Arduino Mega)
- INTERNAL1V1: Aplica una referencia interna de 1.1V (Solo funciona en Arduino
Mega)
- INTERNAL2V56: Aplica una referencia interna de 2.56 Volts (Solo funciona en
Arduino Mega)
- EXTERNAL: El voltaje aplicado a el pin AREF (solo se puede aplicar de 0 a 5
Volts) es usado como referencia.
Mauricio Flores Soto Pág. 19
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
2.1.6. SALIDAS PWM:
Del inglés Pulse-Width Modulation, como su nombre lo dice son pulsos de ancho
modulado. En la mayoría de los pines de las placas Arduino, los pulsos tienen una
frecuencia de 490 Hz, sin embargo los pines 5 y 6 de Arduino Uno tienen una frecuencia de
980 Hz. Utilizando PWM se puede controlar fácilmente el brillo de un diodo led (13). En la
Figura 4 se ven 5 ejemplos de modulación de pulso, con ciclos de trabajo de 0%, 25%,
50%, 75% y 100%.
Figura 4: Ejemplos de ciclos de trabajo PWM
En el proyecto se utilizaron 3 modelos de placas Arduino: Arduino Uno R3 (Figura 5),
Arduino Mega 2560 (Figura 6) y Arduino Fio (Figura 7).
Mauricio Flores Soto Pág. 20
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Figura 5: Arduino Uno R3
Figura 6: Arduino FIO
Figura 7: Arduino Mega 2560
Mauricio Flores Soto Pág. 21
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Las características técnicas de las placas Arduino utilizadas se presentan en la siguiente
tabla comparativa:
Tabla 1: Comparativa de Arduinos utilizados.
Arduino Uno R3 Arduino Fio Arduino Mega 2560
Microcontrolador ATmega328 ATmega328p ATmega2560
Voltaje Operación 5V 3.3 V 5V
Alimentación 7 – 12 V 3.35 V – 12 V 7 – 12V
E/S Digitales 14 (6 PWM) 14 54
E. Análogas 6 8 16
Corriente por pin 40 mA 40 mA 40 mA
Corriente pin 3.3v 50 mA - 50 mA
Memoria Flash 32 kB 32 kB 256 kB
SRAM 2 kB 2 kB 8 kB
EEPROM 1 kB 1 kB 4 kB
Reloj 16 MHz 8 MHz 16 MHz
Fuente: (14) (15) (16)
Una de las características importantes de las placas Arduino Uno R3 y MEGA 2560 es
que tienen la facilidad de interactuar con otras placas “Shield”, las que funcionan como
extensiones de la misma placa Arduino. Para utilizar una “Shield” comúnmente basta con
programar la placa Arduino y posteriormente montar la “Shield” (17), sin embargo las
placas más comunes son creadas para Arduino Uno R3, por sobre Arduino Mega 2560.
La característica citada en el párrafo anterior no es propia de Arduino Fio, ya que el
propósito de esta placa es la conexión directa de un transmisor XBee, razón por la cual
incluye un socket de este tipo. Además dispone de un conector JST para la conexión de una
batería de iones de litio (Li-Ion), para lo cual además tiene integrado un circuito de carga.
Es así como se puede asegurar una mayor autonomía usando por ejemplo un panel solar,
teniendo en cuenta que la tensión suministrada por éste debe ser entre 3.7 y 7 V. (15)
Como datos específicos se puede agregar que los pines digitales de entrada y salida en
Arduino Uno R3 y Arduino Fio son desde el 0 hasta el 13, de los cuales pueden ser
Mauricio Flores Soto Pág. 22
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
utilizados como PWM los siguientes: 3, 5, 6, 9, 10, 11. En Arduino MEGA los pines
digitales son desde el 0 hasta el 52, de los cuales desde el pin 2 hasta el pin 13 y desde el
pin 44 hasta el 46 son PWM. La resolución PWM para las 3 placas es de 8 bits.
La lectura análoga es de 10 bits de resolución para los 3 Arduinos utilizados, siendo los
pines: A0 - A5 para Arduino Uno R3, desde el A0 al A7 para Arduino Fio y desde A0 al
A15 para Arduino Mega 2560.
Los pines de comunicación serial por hardware son: 0 (RX) y 1 (TX) para el Arduino
Uno R3 y para el Arduino Fio, sin embargo para este último están conectados al socket de
comunicación XBee, a los pines DOUT y DIN respectivamente. Arduino Mega 2560
cuenta con 4 puertos de comunicación serial siendo los siguientes: 0 (RX0), 1 (TX0), 19
(RX1), 18 (TX1), 17 (RX2), 16 (TX2), 15 (RX3) y 14 (TX3).
Los pines de comunicación I²C para el Arduino UNO y FIO son: A4 (SDA) y A5
(SCL). Para Arduino Mega 2560 son 20 (SDA) y 21 (SCL)
Los pines de comunicación SPI son para Arduino Uno R3 y FIO: 10 (SS), 11 (MOSI),
12 (MISO), 13 (SCK). Para Arduino Mega 2560 los pines son 50 (MISO), 51 (MOSI), 52
(SCK) y 53 (SS). Se destaca que para usar una placa basada en un microcontrolador AVR
(Arduino) como maestro SPI, es necesario establecer en el código del programa que el pin
10 será una salida digital (OUTPUT), sin importar la cantidad de esclavos ni que pines se
utilicen para las líneas SS, caso contrario se puede entrar en modo esclavo por hardware.
2.2. XBEE
XBee es una marca comercial perteneciente a la empresa Digi International, de esta
marca existe una amplia gama de módulos de comunicaciones inalámbricas. Esto se debe
principalmente a que los diseños van enfocados en distintos tipos de proyectos, entre los
cuales se puede catalogar por ejemplo por: las distancias a las que se debe transmitir, la
velocidad a la que se deben transmitir los datos, la frecuencia a la que trabaje, la topología
de red usada, o el consumo de energía eléctrica.
Mauricio Flores Soto Pág. 23
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Basándose en las características del proyecto, se seleccionó el módulo XBee Pro
Digimesh 2.4 con conector [Link] (Figura 8), que es el encargado de realizar las
comunicaciones inalámbricas entre sensores, sus principales características se refieren a
que es de bajo consumo energético, que trabaja a largas distancias y funciona en topología
“mesh”.
Figura 8: XBee Pro Digimesh 2.4 GHz
Las principales especificaciones técnicas del módulo XBee seleccionado son las
siguientes (Especificaciones completas en el capítulo Anexos):
Tabla 2: Descripción de XBee Pro Digimesh 2.4 GHz
XBee Pro Digimesh 2.4 con conector [Link]
Velocidad de transferencia de datos 250 kbps
Distancia en exteriores 1.6 km
Potencia Tx 63 mW (+18 dBm)
Sensibilidad de receptor -100 dBm
Interface se datos seriales 3.3 V CMOS UART serial
Métodos de configuración AT y API
Frecuencia 2.4 GHz ISM
Corriente de transmisión 250 mA
Corriente de recepción 55 mA
Corriente apagado <50 uA
Fuente: (18)
Mauricio Flores Soto Pág. 24
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Una característica importante para el proyecto es obtener la conexión Mesh, existen
varios módulos que pueden alcanzar esta topología, como por ejemplo los XBee S2 que
utilizan el protocolo ZigBee el cual es jerarquizado y toda la malla depende de un
coordinador y sus routers. En la Figura 9 (19) se puede observar que la malla depende de un
nodo coordinador, el cual puede estar conectado a nodos router o nodos de dispositivo final.
Los nodos router tienen la capacidad de tener conectados más nodos routers o nodos de
dispositivos finales. Sólo los nodos de dispositivos finales pueden dormir. Otro tipo de
mesh es la que se puede crear con los módulos XBee Digimesh que cuentan con la ventaja
de no tener dependencia “Padre/hijo” considerándose todos los nodos iguales, como se ve
en la Figura 10 (19), razón por la cual prácticamente se utiliza una configuración única.
Como segunda ventaja de Digimesh y consecuentemente con la anterior, todos los
nodos pueden “dormir” en los momentos que no son utilizados, con esta propiedad se
puede lograr un importante ahorro de energía que consecuentemente llevarán al uso de
baterías pequeñas.
Figura 9: Topología Mesh utilizando ZigBee con módulos XBee S2.
Mauricio Flores Soto Pág. 25
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Figura 10: Topología Mesh utilizando Digimesh.
Para el uso de XBee en una placa Arduino Uno o Arduino Mega es necesario el uso de
una placa Shield, que será la encargada de realizar la conversión de niveles lógicos, porque
como ya se mencionó estas placas Arduino operan a 5V y XBee opera a 3.3v. Al montar la
Shield en un Arduino utilizará un puerto de comunicación serial (pines 0 y 1), además de la
alimentación. También dispone de un interruptor para habilitar el uso de puerto serial por
software en Arduino en los pines 2 y 3, sin embargo esta opción no se utilizó en el
proyecto. La placa seleccionada es la desarrollada por Ingeniería MCI Ltda. (desde ahora
MCI) (Figura 11), el esquemático se presenta en Anexos.
Figura 11: Shield XBee desarrollado por MCI.
Mauricio Flores Soto Pág. 26
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
2.3. MÓDULO GPRS
La tecnología GPRS es utilizada para el envío de datos a un servidor remoto, en el caso
de este proyecto por medio de SMS, esta tecnología data del año 1999 y es la predecesora
de la tecnología GSM que data del año 1982, por lo cual se le considera una mejora
tecnológica. Prácticamente la totalidad de las redes GSM soportan GPRS, estando presente
en 219 países, sirviendo a más de 3 mil millones de personas.
Durante el proyecto se utilizaron 3 módulos GPRS: SIM900 de SIMCom, M95 de
Quectel y GM862-QUAD de Telit (ver Figura 12) todos funcionaron sin inconvenientes,
sin embargo, las pruebas de prototipos se realizaron principalmente con el módulo GM862-
QUAD de Telit dado que la conexión de la alimentación es más sencilla, presenta mejor
calidad de señal y cuenta con mejores opciones de expansión, como es por ejemplo enviar
archivos por medio del protocolo FTP. A continuación se presenta una tabla de las
características técnicas más importantes del módulo GM862 QUAD.
Tabla 3: Descripción de módulo GM862 QUAD
Módulo Celular GSM/GPRS GM862 QUAD
Opera en redes 850/900/1800/1900 MHz
Comunicación SMS, Voz, Datos y Fax
Voltaje de alimentación 3.22-4.5 V
Antena Conector MMCX
Transferencia de datos 57.6 kbps
Consumo 200 mA modo dedicado
2.6 mA idle
26 µA apagado
Temperatura de operación -40°C hasta 85°C
Fuente: (20)
Durante la ejecución del proyecto el módulo GM862-QUAD fue descontinuado y
reemplazado por el módulo GE864-QUAD con el cual se asegura compatibilidad.
Mauricio Flores Soto Pág. 27
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Figura 12: Módulo Celular GSM/GPRS GM862-QUAD
De los módulos revisados se pudo observar que el funcionamiento básico es el mismo,
todos trabajan utilizando comandos Hayes (también conocidos como comandos AT)
recibidos por medio de comunicación serial de 0 a 3 V. Sin embargo, el modo de encendido
y apagado varía ligeramente.
Cada módulo de los vistos presenta un conector distinto, por lo que la gran diferencia
entre el uso de estos es el Shield a utilizar, este debe cumplir el propósito de regular el
voltaje de alimentación y además traducir los niveles lógicos (ya que Arduino Uno y Mega
2560 trabajan a 5 V).
Respecto de los Shields, se detectó que el que posee un módulo SIM900 presenta un
desperfecto de fábrica, lo que ocasiona una baja recepción de señal. La solución de este
problema no es fácil, por lo que se optó dejar de lado esta opción (el tema es comentado en
foros) (18). El módulo M95 distribuido por MCI es presentado de tal forma que puede ser
utilizado con un Shield XBee para la conversión de niveles lógicos (en efecto el módulo es
comercializado con el nombre GPRSBee en alusión a la citada marca comercial), sin
embargo la alimentación se debe realizar con un cable JST y el encendido del módulo se
presenta con un pin externo (19).
Refiriéndose exclusivamente al Shield GM862 (Figura 13), ya que será el de preferencia
de este proyecto, se puede decir que es fabricado únicamente por MCI, empresa que dejó
disponible el esquemático para un completo análisis (se adjunta en Anexos). Respecto de
Mauricio Flores Soto Pág. 28
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
las características técnicas, la placa tiene formato Arduino por lo cual, como se dijo en
párrafos anteriores, podría montarse sobre un Arduino Uno R3. Consta de botones de reset
y encendido/apagado, y también utiliza el pin 4 para encendido, por lo cual se puede
realizar la tarea de encender el módulo de forma manual o a través de software. La placa
cuenta con un regulador de tensión modelo LT1528 para la alimentación misma del módulo
GPRS el cual es capaz de suministrar corriente hasta 3 amperes a 3.8 volts, el regulador se
alimenta por el pin VIN, esto fue pensado para que el regulador de tensión de la placa
Arduino sea utilizado solamente para los niveles lógicos (comunicación), ya que la
corriente peak necesitada para la alimentación de los módulos GPRS pueden alcanzar los 2
amperes, muy por encima de los 800 mA que suministra el regulador tipo L7805 propio del
Arduino.
La placa incluye además del conector propio del módulo GM862, leds para mostrar el
encendido y el estado actual.
Figura 13: Shield GM862-QUAD
Mauricio Flores Soto Pág. 29
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
2.4. MÓDULO LCD
La pantalla LCD 16x2 con chip HD44780 (Figura 14) es la encargada de mostrar datos
al usuario, la que cuenta con 16 columnas y 2 filas. La comunicación de datos la realiza con
Arduino Mega 2560 a través de 4 pines digitales, a esto se le llama comunicación de 4 bits.
Existe también la posibilidad de crear caracteres personalizados, para lo cual es necesario
utilizar comunicación de 8 bits. Otros de sus pines están encargados de la alimentación,
regulación de contraste y regulación del brillo.
Figura 14: LCD 16x2 HD44780
En conjunto con el módulo de 16x2 se utilizó un Shield LCD creado por DFRobot
(Figura 15), el propósito de esta Shield es mostrar datos en los nodos autónomos creados
como objetivos parciales en el proyecto (nodos sin conexión Mesh ni GPRS). Como todas
las placas de expansión dispone del formato estándar de conexión con pines de Arduino,
por lo cual su instalación resulta fácil. Esta placa incluye componentes específicos para
facilitar la interacción con el usuario, como son: potenciómetro cuya finalidad es la
regulación del contraste de la pantalla, botonera, la cual puede ser programada en el código
de Arduino para propósitos individuales y utiliza únicamente el puerto análogo 0 de
Arduino. Además dispone de acceso fácil a los pines restantes que no son utilizados por la
placa.
Mauricio Flores Soto Pág. 30
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Figura 15: Shield Arduino LCD de DFRobot
Las características técnicas más importantes se pueden ver en Tabla 4. Esquemático y
hoja de datos de LCD se adjuntan en Anexos.
Tabla 4: Especificaciones técnicas de Shield LCD de DFRobot
LCD Shield DFRobot
Voltaje de Alimentación 5V
Consumo 160 mA
Pines de Conexión a Arduino A0, 4, 5, 6, 7, 8, 9, 10
Características especiales: 5 botones programables.
Botón Reset.
Selector de contraste.
Color Pantalla azul, caracteres blancos
Chip TC1602D de Tinsharp Electronics [Link]
Fuente: (23) (24)
2.5. SHIELD ARDUINO RTC + MICROSD
La placa Shield RTC + microSD para Arduino (Figura 16) fue diseñada para facilitar el
guardado de datos en una memoria flash microSD incluyendo un timestamp, Esta placa es
fabricada y comercializada por MCI y su diseño está basado en la Shield microSD de
SparkFun (Figura 17) que sólo cuenta con microSD. El encargado de proveer la hora y
fecha es el chip integrado DS1307, para lo cual además se le integró un porta baterías del
Mauricio Flores Soto Pág. 31
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
tipo 1205 de 3V, con lo cual se puede asegurar la autonomía del chip RTC independiente
del dispositivo al que le indique la hora actual. Para la interacción con la memoria microSD
se utiliza un conversor de niveles lógicos del tipo 74HC4050, pasando de los 5V propios de
Arduino UNO R3 a 3.3V que resultan manejables por las memorias flash. La comunicación
de la placa Arduino con el chip RTC y con la microSD se efectúa utilizando I²C y SPI
respectivamente. La ventaja de esta interfaz es el ahorro en cables y el orden que produce
(Al utilizarla sobre Arduino Uno R3), la desventaja es que no hay mayores posibilidades de
configurar los pines utilizados. Esto se ve reflejado al usarla con Arduino Mega 2560, ya
que la configuración de pines para el uso de protocolo I²C y SPI es diferente a Arduino Uno
R3, en este caso se interconectan con cables.
Figura 16: Shield Arduino RTC + MicroSD MCI.
Figura 17: Shield MicroSD SparkFun Electronics.
Mauricio Flores Soto Pág. 32
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Tabla 5: Pines Shield microSD + RTC y Shield microSD
Shield microSD + RTC MCI Shield microSD SparkFun
MOSI 11 11
MISO 12 12
SCK 13 13
CS 8 8
SDA A4 No se utiliza
SCL A5 No se utiliza
Fuente: (25) (26)
2.6. SENSOR DE HUMEDAD EC-5
ECH2O EC-5 de Decagon Devices (Figura 18) es un sensor para la medición de
humedad de suelo, económico y de gran precisión. Determina el contenido volumétrico de
agua midiendo la constante dieléctrica del medio. Se comunica con Arduino Uno R3 o
Arduino Fio a través de datos analógicos. Debe ser energizado con un voltaje de entre 2.5 a
3.6 volts sin superar los 10 milisegundos por cada medición (27).
Figura 18: Sensor de humedad EC-5
La conexión del sensor se realiza por medio del plug de 3.5 mm conocido como “plug
estéreo” (Figura 19) o también se puede conectar directamente de los 3 hilos internos del
cable (Figura 20), los cuales son: blanco - excitación, mallado - tierra y rojo - señal
analógica (27).
Mauricio Flores Soto Pág. 33
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Figura 19: Plug 3.5 de sensor EC-5
Figura 20: Cables sensor EC-5
Los datos técnicos más importantes del sensor se pueden observar en la Tabla 6, los cuales
fueron obtenidos del manual de usuario versión 2.
Tabla 6: Especificaciones técnicas sensor ECH2O EC-5 de Decagon Devices.
Sensor de humedad Decagon EC-5
Voltaje de excitación 2 - 3.6 V
Consumo 10 mA
Tiempo de Medida 10 mS
Precisión
Resolución 0.001 m3/m3 VWC en suelos minerales, 0.25% en
medios cultivables.
Señal de Salida 10-40% del voltaje de excitación (250 – 1000 mV con
2500mV de excitación)
Temperatura de operación -40 a 60 °C
Rango de mediciones Desde 0 a saturación
Fuente: (27)
Mauricio Flores Soto Pág. 34
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
2.7. OTROS ELEMENTOS
Otros elementos utilizados en el proyecto, que no requieren mayor descripción, son:
- Protoboard
- Placa reticulada
- Resistencias
- Condensadores
- RTC DS1340z
- Cristal 32kHz
- Trimpot de 10 kohm: El uso de los trimpot se restringe al control de brillo y
contraste de la pantalla LCD.
- Cable Jumper Macho-Macho
- Cable USB tipo A-B
- Cable para protoboard
- Transistor NPN 2N2222: Los transistores se utilizan para alimentar los sensores
utilizados. Son activados por voltajes lógicos y alimentan potencia.
- Header Stackable de 6 y 8 pines: Los headers stackables son utilizados para
conectar Shields a Arduino Uno R3, esto debido a que no todos los Shields vienen
con esta opción desde la fábrica.
2.8. SOFTWARE
2.8.1. ARDUINO
El entorno Arduino fue creado para interactuar entre una computadora personal y las
diferentes versiones de placas Arduino. Para utilizar el entorno Arduino con una placa
Arduino Uno R3 o una placa Arduino Mega 2560 sólo es necesario conectar ésta con un
cable USB a la computadora. Para otras placas, como por ejemplo Arduino Fio, es
necesario un adaptador de USB a Serial del tipo FTDI.
El IDE Arduino se encuentra en constante actualización, en el proyecto se utilizó la
versión 1.0.6, por lo cual se asegura compatibilidad de los programas desarrollados para
Mauricio Flores Soto Pág. 35
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
esta versión, sin embargo no se descarta la compatibilidad con versiones anteriores o
futuras.
La programación que se realiza en el IDE para la placa Arduino es basada en Wiring e
implementada en lenguaje C/C++ (20), que es orientado a objetos, es decir, se pueden
utilizar por ejemplo: clases, métodos, objetos y herencia. Se puede encontrar una vasta
cantidad de ejemplos de la programación de Arduino en la internet o incluso en el mismo
programa, para ello es necesario ir a la sección “Archivo/Ejemplos”
Figura 21: Ventana principal de Ide Arduino.
Mauricio Flores Soto Pág. 36
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
2.8.2. X-CTU
X-CTU es una aplicación libre y multiplataforma diseñada por Digi International
Inc., esta herramienta permite a desarrolladores interactuar con módulos RF fabricados por
la misma empresa a través de una simple interfaz gráfica
X-CTU incluye todas las herramientas necesitadas para rápidamente levantar y correr
una red con XBee como por ejemplo: la alternativa única de vista gráfica de la red, la que
representa gráficamente la red con XBee incluyendo la intensidad de la señal para cada
conexión. Además, la herramienta de construcción de frames API para XBee, que
intuitivamente ayuda a la construcción e interpretación de frames para XBee para ser
usados en el modo API.
Otras características destacadas de X-CTU son:
- La capacidad de administrar e incluso configurar múltiples dispositivos XBee
(OTA) conectados.
- La actualización de firmware, con la cual se restaura la configuración del módulo.
- Consolas API y AT diseñadas para la comunicación con los módulos.
- Opción de guardado de sesión de consola, con la posibilidad de cargarla en otro
computador que disponga de XCTU.
- Herramienta para la prueba de alcance, con la cual se pueden realizar pruebas de
comunicación entre dos módulos XBee analizando los alcances de transmisión.
- Explorador de firmware, con el cual se facilita la labor de cambio de firmware de
los módulos.
En el desarrollo de este proyecto se utilizó la versión 6.1.2 de X-CTU, la cual contiene
nuevas herramientas para preparar, configurar y probar los módulos RF XBee de Digi
respecto de las predecesoras. Una ventana del programa se puede ver en Figura 22.
Mauricio Flores Soto Pág. 37
CAPÍTULO 2: COMPONENTES ELECTRÓNICOS Y COMUNICACIÓN DIGITAL.
Figura 22: Ventana principal de XCTU.
Mauricio Flores Soto Pág. 38
CAPÍTULO 3 PROTOTIPOS.
En este capítulo se describe el desarrollo de los prototipos, las conexiones, configuraciones
y calibraciones realizadas.
Mauricio Flores Soto Pág. 39
CAPÍTULO 3: PROTOTIPOS.
3.1. PROTOTIPO CON SENSOR DE HUMEDAD EC-5
El prototipo creado para tomar mediciones de humedad relativa de suelo consiste,
básicamente, en un Arduino Uno R3. El funcionamiento del prototipo se explica en el
diagrama de flujo de la Figura 23
Inicio
NO
¿Hay MicroSD? Fin
SI
NO NO
Diferencia de
tiempo > 5 seg
SI
¿Se puede
escribir en
MicroSD?
SI
Activar Sensor Leer Sensor Apagar Sensor
Guardar Datos en Mostrar Datos en
Tomar Hora
MicroSD LCD
Figura 23: Diagrama de flujo prototipo sensor.
El listado completo de las piezas utilizadas para la construcción del prototipo se puede
ver en la Tabla 7:
Mauricio Flores Soto Pág. 40
CAPÍTULO 3: PROTOTIPOS.
Tabla 7: Listado de componentes registrador de datos (sin conexión mesh)
Ítem Cantidad Componente
1 1 Arduino Uno R3
2 1 Shield Datalogger fabricado por MCI.
3 1 Memoria microSD
4 1 Transistor NPN 2N2222
5 1 Resistencia 220 ohm
6 2 Header Stackable 6 pines
7 6 Header Stackable 8 pines
8 1 Shield LCD DFRobot
Los pasos generales necesarios para la creación del prototipo son los siguientes:
Paso 1. Preparación de placa “Shield Datalogger”
Paso 2. Establecer la fecha y hora de RTC.
Paso 3. Programación de Arduino Uno.
Paso 4. Montaje de placas y conexión de sensor.
La elaboración del prototipo comienza soldando 1 header stackable de 6 pines y 3
headers stackables de 8 pines sobre la shield Datalogger, la posición debe ser tal que se
mantenga el formato propio de los pines de las placas Arduino. El siguiente paso será cortar
la unión del pin número 8 hacía el header, esto se puede llevar a cabo con un objeto filoso,
se debe con un tester el corte de la continuidad. Posteriormente se debe soldar un pequeño
cable para protoboard desde el pin 8 hasta el pin 3, en la Figura 24 y Figura 25 se observa
el corte de la pista del pin 8 y unión al pin 3 en una placa Shield microSD.
Mauricio Flores Soto Pág. 41
CAPÍTULO 3: PROTOTIPOS.
Figura 24: Modificación de Shield microSD para Arduino (vista inferior).
Figura 25: Modificación de Shield microSD para Arduino (vista superior).
Con los headers instalados y con el puenteo de la pista del pin 8 al 3. Se procede con la
instalación de los componentes utilizados para la alimentación del sensor, los cuales son un
transistor 2N2222 y una resistencia de 220 ohms. Por otro lado se soldará un cable desde
3v3 hasta Aref. Cabe destacar que el transistor NPN 2N2222 obedece la siguiente
configuración:
Mauricio Flores Soto Pág. 42
CAPÍTULO 3: PROTOTIPOS.
Figura 26: Esquema de un transistor NPN 2N2222.
Las configuraciones de los componentes se caracterizan en el esquema de la Figura 27,
se debe tomar nota de que el sensor ECH2O EC-5, de Decagon Devices, debe ser
conectado en los pines inferiores del esquema haciendo coincidir los colores (Rojo-rojo,
blanco-blanco, verde a malla de sensor):
Figura 27: Caracterización de elementos para la alimentación del sensor EC-5.
Mauricio Flores Soto Pág. 43
CAPÍTULO 3: PROTOTIPOS.
Como paso final en la etapa de electrónica es montar las placas Shield RTC + microSD
y Shield LCD sobre el Arduino Uno R3, las siguientes fotografías muestran ambos pasos,
los colores de cables y placas pueden variar, lo importante es cumplir con las conexiones:
Figura 28: Montaje de placa Shield RTC + microSD.
Mauricio Flores Soto Pág. 44
CAPÍTULO 3: PROTOTIPOS.
Figura 29: Prototipo terminado para sensor EC-5
3.1.1. PROGRAMA PARA PROTOTIPO SENSOR DE HUMEDAD EC-5
A las instrucciones anteriores de carga de programas en la placa Arduino Uno R3, para
este caso se hace una acotación:
Es altamente recomendable DESMONTAR LAS PLACAS Shield
(RTC + microSD y LCD) ANTES DE REALIZAR LA CARGA. Lo
anterior se debe a que con la programación se cambia el voltaje de
referencia de lectura análoga, lo que podría provocar desperfectos en el
microcontrolador de la placa.
El sketch creado para Arduino está programado para:
Cambiar el voltaje de referencia de lecturas análogas.
Analizar el estado de la memoria microSD.
Crear el archivo “[Link]” en la tarjeta microSD (en caso de no existir)
Activar y desactivar sensor ECH2O EC-5, de Decagon Devices.
Mauricio Flores Soto Pág. 45
CAPÍTULO 3: PROTOTIPOS.
Tomar datos del sensor y la hora de medición, mostrarlos por pantalla y guardarlos
en la tarjeta microSD en formato csv.
El sketch fue configurado para tomar mediciones cada 5 segundos (5000 milisegundos),
para cambiar dicha configuración se puede modificar el valor de la línea:
long interval = 5000;
Para recalibrar la ecuación se debe cambiar la siguiente línea del programa, donde
“lectura” es la función y “analogRead(A1)” corresponde a la variable:
lectura = (0.0038*analogRead(A1))-0.6484;
3.1.2. CALIBRACIÓN DE RESULTADOS ENTREGADOS POR SENSOR EC-5
[Link]. ASPECTOS TEÓRICOS:
El procedimiento de calibración del sensor de humedad de suelo Decagon Devices
ECH2O EC-5 se fundamenta en que:
(3.1)
dónde Θ es el VWC (acrónimo de “Volumetric Water Content” o en castellano “Contenido
Volumétrico de Agua”) ( ⁄ , es el volumen del agua ( y es el volumen
de la masa de suelo ( .
Por otro lado se es fácil determinar el volumen de la muestra de suelo, ya que para esta
calibración se utilizó un recipiente cilíndrico, entonces el volumen de la muestra será:
(3.2)
donde r es el radio y h es la altura.
Además para esta calibración se estableció que la densidad del agua es ⁄ .
Mauricio Flores Soto Pág. 46
CAPÍTULO 3: PROTOTIPOS.
En cuanto al sensor ECH2O EC-5, está preparado para medir la constante dieléctrica
del medio y entregar un nivel de voltaje de respuesta a este para cada condición de
humedad de suelo, la relación entre la medición y la salida se pude considerar proporcional.
El nivel de voltaje es interpretado por la placa Arduino Uno R3, que es traducido a un valor
digital con una resolución máxima de 10 bits, es decir, un número entre 0 y 1023.
[Link]. ASPECTOS PRÁCTICOS:
De forma práctica, los elementos utilizados son:
Horno de secado
Bandeja grande de acero o aluminio.
Recipiente cilíndrico para las muestras.
Probeta graduada.
Balanza de precisión.
Sensor ECH2O EC-5, de Decagon Devices.
Arduino Uno R3 configurado para EC-5.
El primer paso en el procedimiento de calibración es obtener una muestra de suelo seca,
para ello se colocó un recipiente de aluminio con una muestra abundante de tierra, el cual
fue introducido en un horno y calentado a 150°C durante 16 horas.
De la tierra ya seca se procede a rellenar el recipiente cilíndrico dispuesto para la
calibración, simulando en lo posible la compactación real de la tierra del lugar obtenido. De
este relleno se obtuvo la altura del cilindro 12.9 cm, la que en conjunto con el diámetro del
cilindro es utilizada para obtener el volumen de la muestra.
Entonces tenemos que el volumen inicial de la muestra de suelo es:
( (3.3)
(3.4)
Con Arduino Uno R3 se analizaron diversas respuestas del sensor EC-5, primero la
reacción en el aire (muestra 0), luego la reacción a la tierra sacada del horno y puesta en el
recipiente cilíndrico, que en teoría tiene 0% de humedad (muestra 1). Posteriormente se le
Mauricio Flores Soto Pág. 47
CAPÍTULO 3: PROTOTIPOS.
agregó al recipiente 7 veces 20 mililitros de agua (muestras 2 a 8), luego se agregó 10
mililitros 2 veces (muestras 9 y 10).|
Para corroborar la cantidad de agua agregada a la muestra de suelo se utilizó la balanza
de precisión, con lo cual se detectaron pequeñas diferencias. Cada vez que se agregó agua
se homogenizó la muestra y se tomó la altura para determinar el nuevo volumen de cilindro.
De los datos anteriores se obtuvo la Tabla 8, donde las columnas de izquierda a derecha
representan: Número de muestra, el peso total de la muestra, agua aplicada con probeta a la
muestra, altura de la muestra en el recipiente cilíndrico, volumen de la muestra en
recipiente cilíndrico, valor analógico entregado por Arduino Uno R3, diferencia de peso
entre muestras, contenido volumétrico de agua teórico (según definición).
Tabla 8: Datos obtenidos para la calibración del sensor EC-5.
Muestra Peso (g) Agua Altura Volumen EC-5 Delta VWC
aplicada (ml) (cm) ( ) (analógica) peso ( ) (Θ)
0 0 0 12.90 0.00 100 0 0.000
1 643.2 0 12.90 468.49 132 0 0.000
2 663.4 20 12.59 457.08 163 20.2 0.044
3 682 20 12.27 445.75 191 38.8 0.087
4 702.1 20 11.96 434.42 211 58.9 0.136
5 722.5 20 11.65 423.09 222 79.3 0.187
6 741.8 20 11.34 411.76 235 98.6 0.239
7 761.2 20 11.03 400.43 258 118 0.295
8 778.9 20 10.71 389.10 265 135.7 0.349
9 788.2 10 10.40 377.77 270 145 0.384
10 796.4 10 10.09 366.44 279 153.2 0.418
De la Tabla 8, se utilizaron los datos de la salida analógica del sensor EC-5 (columna 6)
y VWC (columna 8) para hacer un ajuste por mínimos cuadrados. Arbitrariamente se
determinó eliminar los valores de las muestras 0, 1 y 2, ya que no son valores
representativos de la situación final en la que será instalado el sensor.
El ajuste por mínimos cuadrados queda representado en la siguiente gráfica:
Mauricio Flores Soto Pág. 48
CAPÍTULO 3: PROTOTIPOS.
0.45
Contenido volumétrico (%)
0.40 y = 0.0038x - 0.6484
0.35 R² = 0.9834
0.30
0.25
0.20
0.15
0.10
0.05
0.00
160 180 200 220 240 260 280 300
EC-5 Lectura analógica
Figura 30: Ajuste de datos obtenidos del sensor EC-5 y el WVC teórico.
Del ajuste se obtuvo la función (3.5):
(3.5)
La cual fue programada en Arduino Uno R3 para mostrar por pantalla y guardar en
memoria microSD el valor del VWC con su correspondiente timestamp.
Mauricio Flores Soto Pág. 49
CAPÍTULO 3: PROTOTIPOS.
3.2. PROTOTIPO FINAL.
El prototipo final del proyecto, es el resultante de la integración de sensores de
humedad relativa de suelo y comunicación inalámbrica.
Características del prototipo final:
- Hay dos tipos de nodos, los cuales fueron nominados: Nodo central y nodo sensor.
- La malla incluye solo un nodo central, el cual tienes las siguientes características:
o Fue construido en base a Arduino Mega 2560.
o Se comunica con los nodos sensores por medio de XBee Pro Digimesh 2.4
GHz.
o El módulo XBee del nodo central cumple el rol de coordinador de sueño de
los XBee de los nodos sensores.
o Almacena en una tarjeta flash microSD los datos recibidos de los nodos
sensores.
o Es alimentado por una batería de 12 v, 7 A.
o Envía SMS con los datos almacenados, para este propósito se utiliza el
módulo GM862.
- Respecto de los nodos sensores:
o La malla incluye 3 nodos sensores, sin embargo este número se puede
ampliar.
o Cada nodo sensor tiene la opción de conectar un máximo de 3 sensores
análogos.
o Se utilizaron sensores EC-5, los cuales fueron alimentados con 3.3V.
o Cada nodo sensor fue construido en base a Arduino FIO, el cual opera con
3.3V.
o Cada nodo sensor utiliza una batería de Li-Ion de 3.7V y 6000mAh.
o Cada sensor tiene su propio RTC y lector de memorias microSD, por lo cual
los datos se guardan en el sensor como respaldo.
Mauricio Flores Soto Pág. 50
CAPÍTULO 3: PROTOTIPOS.
o Los nodos sensores entran en estado de suspensión cuando no se están
utilizando. Esto se cumple en dos partes, primero se suspende el módulo
XBee y luego la placa Arduino.
o Salen del estado de suspensión también en dos partes, primero el módulo
XBee, el cual tiene suspensión sincronizada con los demás módulos, y luego
la placa Arduino a través de una interrupción provocada por la línea CTS de
XBee.
Los materiales utilizados en el nodo central y nodos sensores se listan en la Tabla 9 y Tabla
10 respectivamente.
Tabla 9: Listado de componentes nodo central de “mesh”, incluye Gateway
Ítem Cantidad Componente
1 1 Arduino Mega 2560
2 1 XBee Pro Digimesh 2.4GHz con conector uFL
3 1 Cable uFL a RP-SMA
4 1 Antena RP-SMA
5 1 Shield XBee
6 1 Módulo GSM GM862
7 1 Cable MMCX a RP-SMA
8 1 Antena RP-SMA
9 1 Shield GSM GM862 fabricado por MCI.
10 1 Shield Datalogger fabricado por MCI.
11 1 Memoria microSD
12 1 Módulo LCD 16x2
13 6 Conector Stackable 6 pines
14 6 Conector Stackable 8 pines
15 16 Separador plástico para PCB de 15 mm
16 1 Resistencia 220 ohm
17 2 Trimpot 10 kohm
Mauricio Flores Soto Pág. 51
CAPÍTULO 3: PROTOTIPOS.
Tabla 10: Listado de componentes de un nodo sensor.
Ítem Cantidad Componente
1 1 Arduino Fio
2 1 XBee Pro Digimesh 2.4GHz con conector uFL
3 1 Cable uFL a RP-SMA
4 1 Antena RP-SMA
5 1 Memoria microSD
6 1 RTC DS1340z
7 1 Capacitor cerámico 10uF (104)
8 1 Cristal 32 khz
Configuración de XBee
Para la configuración de los módulos XBee se utilizaron los siguientes materiales:
- XBee Explorer.
- XBee Digimesh 2.4 GHz
- Cable mini USB
- Computadora con software X-CTU y drivers de XBee Explorer previamente
instalados.
Procedimiento:
- Montar XBee Pro Digimesh 2.4 GHZ en Xbee Explorer.
- Conectar con cable mini usb XBee Explorer a computadora.
- Ejecutar el programa XCTU y presionar en el botón “Add Devices”, el cual viene
claramente señalado en el programa.
- Posterior a esto, siguiendo en XCTU, se debe seleccionar el puerto COM
correspondiente utilizado por XBee Explorer. (Como nota al margen se comenta
que XCTU tiene la capacidad de configurar múltiples dispositivos XBee
Mauricio Flores Soto Pág. 52
CAPÍTULO 3: PROTOTIPOS.
simultáneamente, para ello es necesario disponer de un número equivalente de
programadores XBee Explorer y puertos USB.)
En la Figura 31 se observa el Nodo Central, en operaciones de testeo, dispone de todas
las conexiones. En la Figura 32 se observa un Nodo Sensor en detalle y en la Figura 33 se
observan 3 nodos sensores y un XBee Explorer, todos en funcionamiento.
Figura 31: Prototipo Nodo Gateway
Mauricio Flores Soto Pág. 53
CAPÍTULO 3: PROTOTIPOS.
Figura 32: Prototipo Nodo Sensor en detalle.
Figura 33: Prototipos Nodos Sensores
Mauricio Flores Soto Pág. 54
CAPÍTULO 3: PROTOTIPOS.
En la Figura 34 se presenta el diagrama de flujo del funcionamiento del nodo central de
la malla. Al encender el nodo, el programa consulta si es una hora programada para enviar
los datos por SMS a un lugar remoto, en caso de no ser la hora se analiza si hay datos en el
puerto serie conectado a XBee para guardarlos en la tarjeta microSD.
Llegada la hora programada se ejecutan las acciones para el envío de los mensajes, que
comienzan por encender el módulo GPRS, se lee la memoria por líneas, las que vienen
separadas por un salto de carro. Si se llega al fin del archivo y se leyeron datos, o si se
contaron 130 caracteres o más se envía un mensaje. Si se llega al fin del archivo sin leer
más datos, se procede a apagar el módulo GPRS y volver al ciclo inicial.
Encendido
¿Hora
SI Encender GPRS
Programada?
NO NO
¿Datos XBee? Leer SD hasta CR
SI
¿Mas de 130
NO Caracteres?
Guardar Datos SD SI
NO
¿Fin de Archivo?
SI
¿Se leyeron
SI
datos?
Apagar GPRS NO
Enviar SMS
Figura 34: Diagrama de flujo de nodo central.
Mauricio Flores Soto Pág. 55
CAPÍTULO 3: PROTOTIPOS.
En la Figura 35 se presenta el diagrama de flujo de un nodo sensor, el cual por defecto
se enciende y apaga según la configuración que sea proporcionada en el nodo central, esta
configuración es sincronizada periódicamente, obteniendo encendidos y apagados
simultáneos en todos los nodos sensores. El diagrama de flujo fluye en dos ramas paralelas,
las que comienzan con el despertar del nodo según la sincronización de XBee.
La rama más corta comienza con el despertar del nodo y termina cuando se duerme el
módulo XBee. Por otro lado la rama más larga ejecuta el proceso completo de la lectura del
sensor en el microcontrolador AVR que posee la placa Arduino, este proceso termina con el
dormir del Arduino.
Sincronización
Despertar Nodo Esperar Dormir XBee
Esperar AVR Activar Sensor 10ms
Leer Sensor Desactivar Sensor
Guardar datos en
Tomar Hora
SD
Transmitir Datos a
Dormir Arduino
XBee
Figura 35: Diagrama de flujo de nodo sensor.
Mauricio Flores Soto Pág. 56
CAPÍTULO 4 RESULTADOS.
CAPÍTULO 4: RESULTADOS.
4.1. PROTOTIPO SENSOR EC-5
Si bien es cierto que el sensor ECH2O EC-5, de Decagon Devices, puede evaluar el
contenido volumétrico de agua desde 0 hasta 100%, con la calibración realizada se observó
que las lecturas entregadas por el dispositivo tienen un comportamiento lineal para las
mediciones, sin embargo en los extremos el comportamiento se asemeja a una exponencial.
En la programación de Arduino Uno R3 se aprovechó dicha zona lineal, principalmente
porque el sensor será finalmente instalado en suelo donde la ecuación representa los
porcentajes que se observarán.
Al realizar mediciones de contenido volumétrico de agua con el prototipo sensor, se
puede obtener un listado completo de los valores obtenidos en el archivo “[Link]”, este
archivo se encuentra en la memoria microSD del prototipo. El archivo puede ser
visualizado utilizando Microsoft Excel.
A continuación se presenta una tabla y gráfico con los valores obtenidos de una prueba,
la cual se presenta en video como anexo digital del informe.
Tabla 11: Datos obtenidos del Sensor EC-5
Hora VWC [Link] 12.66% [Link] 23.16%
[Link] 9.51% [Link] 13.01% [Link] 23.51%
[Link] 9.51% [Link] 13.36% [Link] 23.51%
[Link] 9.51% [Link] 13.36% [Link] 23.86%
[Link] 9.51% [Link] 13.36% [Link] 27.71%
[Link] 9.51% [Link] 13.36% [Link] 32.61%
[Link] 9.51% [Link] 13.36% [Link] 37.16%
[Link] 9.51% [Link] 15.11% [Link] 39.61%
[Link] 9.51% [Link] 16.86% [Link] 40.31%
[Link] 9.51% [Link] 18.61% [Link] 40.31%
[Link] 9.51% [Link] 20.36% [Link] 39.96%
[Link] 9.51% [Link] 21.76% [Link] 39.96%
[Link] 10.21% [Link] 22.46% [Link] 39.96%
[Link] 10.91% [Link] 22.81% [Link] 39.96%
[Link] 11.96% [Link] 23.51%
Mauricio Flores Soto Pág. 58
CAPÍTULO 4: RESULTADOS
Contenido Volumétrico de Agua
45.00%
40.00%
35.00%
30.00%
25.00%
20.00%
VWC
15.00%
10.00%
5.00%
0.00%
Figura 36: Gráfica de datos obtenidos por el sensor.
El consumo de energía máximo esperado del prototipo sensor de humedad se observa
en la Tabla 12 :
Tabla 12: Consumo máximo de corriente de prototipo para sensor EC -5
Ítem Componente Consumo Eléctrico
Máximo (mA)
1 Arduino Uno R3 (corriente de reposo regulador NCP1117) 10
2 Arduino Uno R3 (led de encendido) 10
3 Arduino Uno R3 (Atmega 328p con reloj interno a 8 MHz) 12
4 Arduino Uno R3 (Atmega 16U2-MU) 14
5 Shield Datalogger fabricado por MCI (led) 3.3
6 Shield Datalogger fabricado por MCI (DS1307) 1.5
7 Shield Datalogger fabricado por MCI (74HC4050) 50
8 Resistencia 220 ohm 22
9 Shield LCD DFRobot 160
10 Sensor EC-5 10
Total Consumo Máximo 292.8
Mauricio Flores Soto Pág. 59
CAPÍTULO 4: RESULTADOS
4.2. PROTOTIPO FINAL
Para el prototipo final se realizaron 3 pruebas, las cuales consistieron en:
- Distancia de comunicación:
Para realizar esta prueba se utilizaron 2 nodos los cuales estaban compuestos solamente
por un Arduino Fio, 1 XBee Pro 2.4 Ghz Digimesh, una antena y una batería Lipo de
2200mAh. La preparación de los elementos, para la medición de distancia, consistió en fijar
un nodo en un polín y alejarse con otro nodo a lo largo del terreno. El polín tenía una altura
aproximada de 2 metros. Las posiciones de ambos nodos fueron georreferenciadas
utilizando un GPS integrado en un teléfono móvil.
En la prueba misma, el nodo fijo transmitía un carácter cada 5 segundos, por otro lado
cada vez que el nodo móvil recibía el carácter se encendía el led integrado de Arduino Fio.
Se destaca que un carácter está compuesto por 8 bits, y que el led del nodo móvil se
encendió cada 5 segundos en los lugares evaluados, por lo cual se descarta que los
resultados fueran influenciados por ruido.
Resultado de lo anterior se logró comunicación punto a punto de más de 950 metros,
distancia que fue suficiente para abarcar todo el predio de prueba. En la Figura 37 y Figura
38 se presentan referencias de la ubicación del terreno evaluado y una imagen de
acercamiento a la medición respectivamente, estas fotos satelitales fueron obtenidas de
Google Earth utilizando los datos del GPS.
Mauricio Flores Soto Pág. 60
CAPÍTULO 4: RESULTADOS
Figura 37: Ubicación de terreno de prueba de comunicación.
Figura 38: Medición de distancia en comunicación punto a punto.
- Comunicación en topología Malla:
Mientras, en testeos de laboratorio se logró intercomunicar 4 nodos, con distintas
posiciones (Figura 39, Figura 40 y Figura 41). Se redujo la potencia al mínimo, no se
usaron antenas y se pusieron en cajas estancas cerradas, con lo cual el alcance quedó
acotado a 4 metros. Además, se sincronizó el sueño, por lo que se espera un ahorro
considerable de energía. Se presenta dos videos con la muestra (También presentes en los
Anexos digitales):
Mauricio Flores Soto Pág. 61
CAPÍTULO 4: RESULTADOS
- Nodos sensores y su sincronización automática: [Link]
- Recepción de datos en computador: [Link]
Nodo
Nodo 1 Nodo 2 Nodo 3
Central
Figura 39: Configuración Malla Parcial.
Nodo 3
Nodo
Nodo 1
Central
Nodo 2
Figura 40: Configuración Malla Parcial.
Nodo 1
Nodo
Central
Nodo 2 Nodo 3
Figura 41: Configuración Malla Completa.
Con esto se da por cumplido el objetivo de crear comunicación con topología malla.
- Gateway:
Por medio del nodo central se enviaron más de 400 mensajes de texto o SMS. De los
mensajes enviados se obtuvo 100% de recepción, sin embargo en ocasiones se presentó una
gran latencia, la que incluso fue de varios minutos.
Mauricio Flores Soto Pág. 62
CAPÍTULO 4: RESULTADOS
En la Figura 42 se observa la recepción de datos en un teléfono móvil. Los datos
enviados tienen formato CSV, donde son separados por punto y coma en lugar de coma,
esto para evitar confusiones por decimales. Los datos presentados en orden son: día, mes,
año, hora, minuto, segundo, identificador del sensor de origen, y finalmente el dato. Se
codificó ND como “No Data”, lo que significa que el sensor en ese momento está
desconectado del sistema. En la imagen se observa la recepción de 3 mensajes, dos de ellos
fueron abiertos (letras negras y globos blancos sobre fondo celeste) y el tercero está siendo
recibido (ícono verde, texto blanco sobre fondo negro), el número del emisor (Gateway,
nodo central) es 73855198.
Figura 42: Recepción de datos en equipo móvil.
Consumo de energía esperado:
A continuación se presentan dos tablas (Tabla 13 y Tabla 14), donde se estiman los
consumos máximos de energía esperados para los dos tipos de nodos de la malla. El caso
del consumo máximo se produce en la situación de que todos los componentes de un nodo
Mauricio Flores Soto Pág. 63
CAPÍTULO 4: RESULTADOS
encendidos. Estos valores pueden ser utilizados para la estimación de la duración de las
baterías.
Tabla 13: Consumo máximo de corriente de Prototipo Nodo Central (Mesh)
Consumo
Ítem Componente
máximo (mA)
1 Arduino Mega 2560 (Regulador NCP1117) 10
2 Arduino Mega 2560 (Led) 5
3 Arduino Mega 2560 (Atmega2560) 20
4 Arduino Mega 2560 (Atmega 16U2) 14
5 XBee Pro Digimesh 2.4GHz 250
6 Shield XBee (Led DOUT) 3.3
7 Shield XBee (Led DIN) 3.3
8 Shield XBee (Led RSSI) 3.3
9 Shield XBee (ADP3338)* 15
10 Módulo GM862 (idle) 200
11 Shield GSM GM862 fabricado por MCI. (Led Stat) 11.5
12 Shield GSM GM862 fabricado por MCI. (Led Power) 11.5
13 Shield GSM GM862 fabricado por MCI. (Led 13) 11.5
14 Shield GSM GM862 fabricado por MCI. (LT1528) 0.4
15 Shield Datalogger fabricado por MCI (led) 3.3
16 Shield Datalogger fabricado por MCI (DS1307) 1.5
17 Shield Datalogger fabricado por MCI (74HC4050) 50
18 Módulo LCD 16x2 (Operación) 2.5
19 Módulo LCD 16x2 (Backlight) 16
Total 632.1
Mauricio Flores Soto Pág. 64
CAPÍTULO 4: RESULTADOS
Tabla 14: Consumo máximo de corriente, Prototipo Nodo Sensor EC-5 (Mesh)
Consumo
Ítem Componente
máximo (mA)
1 Arduino Fio (Atmega328p) 12
2 Arduino Fio (MCP73831) 1.5
3 Arduino Fio (Led CHG) (a 5V) 10.6
4 Arduino Fio (Led D13) 3.3
5 Arduino Fio (Led RSSI) 3.3
6 Arduino Fio (reg. de voltaje, se estimó con equivalente ADP3338) 15
7 XBee Pro Digimesh 2.4GHz 250
8 Memoria microSD 40
9 RTC DS1340z 3
10 Sensor EC-5 10
11 Resistencia 220 ohm 15
Total 363.7
Mauricio Flores Soto Pág. 65
CAPÍTULO 5 CONCLUSIONES Y TRABAJO FUTURO.
En este capítulo se dan las conclusiones del proyecto y las posibilidades de mejoras del
prototipo.
Mauricio Flores Soto Pág. 66
CAPÍTULO 5: CONCLUSIONES Y TRABAJO FUTURO.
5.1. CONCLUSIONES
El prototipo desarrollado cumple a cabalidad el objetivo de establecer una red “Mesh”,
se probaron distintas posibilidades de interconexión, de mallas completas y medias mallas
en las que uno de los nodos era apagado. En las pruebas siempre se consideró un nodo
XBee como central, el cual opera como coordinador de sueño de los nodos sensores.
Respecto de la calibración de sensores, se lograron los resultados esperados, siempre
teniendo en cuenta que la resolución de las lecturas análogas de Arduino está limitada a 10
bits. Otra limitante que se consideró, fue que el sensor no utiliza todo el espectro
disponible, es decir, las señales entregadas por los sensores EC-5, de Decagon Devices,
tienen como valor máximo solo un 40% del valor de alimentación. Teniendo en cuenta
estas limitaciones, se puede agregar nuevos componentes con los cuales se puede mejorar
ostensiblemente la precisión de las lecturas. Como nota al margen se menciona que se
utilizaron para testeo otra línea de sensores análogos, el modelo GS-1 de Decagon Devices,
los cuales poseen similares limitaciones. Con las pruebas realizadas se manifiesta deseable
mejorar los sistemas de lectura análoga, ya sea integrando componentes ADC de mayor
resolución y/o agregando componentes amplificadores de tal forma de usar todo el espectro
disponible.
Otro tema en el que se presta especial atención, es la construcción del nodo que actúa
como central, y que comprende la comunicación XBee y el envío de SMS (Además de un
sistema propio de datalogger). En este sistema, el envío de SMS se presentó a la perfección
en pruebas de laboratorio utilizando los componentes descritos en el capítulo 2. Sin
embargo, las pruebas siempre fueron realizadas en urbes, por lo cual se plantea la
posibilidad de que en lugares remotos la señal telefónica sea débil o incluso nula. Ante esta
situación se puede recurrir a distintas opciones, entre las cuales se sugieren: buscar una
mejor ubicación para el nodo en el predio, probar con distintas señales telefónicas, utilizar
antenas GSM de mayor alcance o instalarlo en torres de mayor altura.
El sistema completo puede alcanzar tanta autonomía como su sistema de alimentación
lo permita, para ello se estableció el máximo consumo que puede llegar a tener cada nodo,
Mauricio Flores Soto Pág. 67
CAPÍTULO 5: CONCLUSIONES Y TRABAJO FUTURO.
el cual se presentó en tablas en el capítulo 4. Con dicha información se puede determinar la
correcta batería y panel solar a utilizar.
5.2. TRABAJO FUTURO
Este trabajo, a pesar de cumplir los objetivos, no deja de ser un prototipo. Se considera
que para llegar a una fase más acabada se debe:
- Mejorar la electrónica de conexión de sensores.
o Integrar una resistencia de valor alto en las entradas análogas utilizadas de
Arduino. Con esto se obtiene un valor digital muy bajo en caso de
desconexión o ausencia de un sensor, lo que acompañado de una mejora en
el software resultaría ser una excelente opción para detectar eventos externos
de los sensores.
o Integrar 2 diodos por cada entrada análoga utilizada de Arduino. Los pares
de diodos van conectados entre tierra y la señal analógica y entre la señal
analógica y Vdd. Este tipo de conexión se usa como protección de sobre
voltaje (positivo o negativo) de las entradas analógicas
o Reemplazar el conversor de datos analógicos a digitales por uno externo de
mayor resolución. Aumentando la resolución se consiguen intervalos
lecturas más precisas.
- Implementar un sistema de Feed Back para los SMS
o Implementar un sistema de Feed back en lo que respecta a los envíos de
mensajes SMS. El receptor del SMS puede enviar mensajes con códigos
confirmando la recepción de los mensajes.
- Implementar un sistema para la medición del estado de baterías.
o Este sistema además debería crear un registro de sus datos, con lo que se
podría comprender el ciclo de vida de la batería. Además en caso de llegar a
estados críticos de carga debería enviar mensajes de alerta.
- Alternativas por internet.
Mauricio Flores Soto Pág. 68
CAPÍTULO 5: CONCLUSIONES Y TRABAJO FUTURO.
o Establecer sistemas alternativos para el envío de datos, una forma puede ser
internet. Con esto se puede tener alternativas en caso de fallos de un tipo de
comunicación.
- Implementar sincronizado de hora.
o El sistema consistiría en que la central enviara comandos para la
sincronización de hora, la cual provendría de GPRS o GPS.
- Reducir la cantidad de datos enviados.
o Utilizar tiempo Unix u otro sistema de codificación del tiempo. El propósito
es reducir el tiempo de comunicaciones locales y maximizar la información
enviada por SMS.
Mauricio Flores Soto Pág. 69
GLOSARIO.
GLOSARIO
D
Decagon Devices
Es una corporación estadounidense que diseña instrumentos científicos, sensores, dataloggers y accesorios., 10, 12,
33, 34, 43, 45, 46, 47, 58, 67, 74
GPRS
Acrónimo de General Packet Radio Service o en castellano servicio general de paquetes vía radio. Es una extensión de
GSM para la transmisión de datos mediante paquetes., 10, 11, 12, 13, 27, 28, 29, 30
I
IDE
Sigla en inglés para Entorno de desarrollo integrado, se refiere al software creado para interactuar con determinada
plataforma., 35, 36
PCB
Acrónimo (en inglés) de “Printed Circuit Board”, o en castellano “Tarjeta de Circuitos Impresos”., 13, 15, 51, - 3 -, - 4 -,
- 7 -, - 8 -
RTC
acrónimo de “Real Time Clock”, o en castellano “Reloj de Tiempo Real”, 11, 31, 32, 33, 35, 44, 45, 50, 52, - 10 -
SMS
Sigla en inglés para “Short Message Service”, o en castellano “mensaje de mensajes cortos”., 27, 50
Mauricio Flores Soto Pág. 70
BIBLIOGRAFÍA.
BIBLIOGRAFÍA
1. Unidad de Diagnóstico Parlamentaria. Cámara de Diputados de Chile. [En línea]
Noviembre de 2012. [Link]
2. SenseFly Ltda. SenseFly. [En línea] Febrero de 2015.
[Link]
3. Modern Farmer Media. Modern Farmer. [En línea] 21 de Enero de 2014. [Citado
el: 10 de Febrero de 2015.] [Link]
4. Department of Geodesy and Geoinformation - Research Group Remote Sensing,
Vienna University of Technology. International Soil Mositure Network. [En línea]
[Link]
5. NASA. NASA. [En línea] 31 de Enero de 2015. [Citado el: 6 de Febrero de 2015.]
[Link]
mapping-satellite.
6. Arduino. Arduino - SPI. [En línea] Febrero de 2015.
[Link]
7. NXP. Documentation portal :: NXP Semiconductors. [En línea] 2015.
[Link]
8. Arduino. Arduino - Wire. [En línea] 2015.
[Link]
9. —. Arduino - Serial. [En línea] Febrero de 2015.
[Link]
10. —. Arduino - Constants. [En línea] Febrero de 2015.
[Link]
11. —. Arduino - DigitalWrite. [En línea] Febrero de 2015.
[Link]
Mauricio Flores Soto Pág. 71
BIBLIOGRAFÍA.
12. —. Arduino - AnalogReference. [En línea] 2015.
[Link]
13. —. Arduino - AnalogWrite. [En línea] 2015.
[Link]
14. —. Arduino UNO. [En línea] [Citado el: 2 de Enero de 2014.]
[Link]
15. —. Arduino - ArduinoBoardFio. [En línea] 2015. [Citado el: 2 de Enero de 2014.]
[Link]
16. —. Arduino - ArduinoBoardMega2560. [En línea] 2015.
[Link]
17. —. Arduino - ArduinoShields. [En línea] 2015. [Citado el: 1 de Febrero de 2015.]
[Link]
18. Digi International Inc. XBee/XBee-PRO, DigiMesh 2.4 RF Modules User Manual.
[Documento] 2014.
19. —. Wireless Mesh Networking ZigBee vs DigiMesh, White Paper. [Documento]
2008.
20. Telit Communications S.p.A. GM 862-QUAD Modem, GM 862-QUAD-PY
Modem. [Datasheet] 2009.
21. Geeetech. SIM900 - No registration to network. [En línea] 2014. [Citado el: 17 de
noviembre de 2014.]
[Link]
741bdc6c1f64ff.
22. MCI Ltda. - Olimex Chile. MCI Ltda. - Olimex Chile. Módulo de comunicación
GPRS compatible con socket Xbee GPRSBee. [En línea] 2014. [Citado el: 17 de Julio de
2014.]
Mauricio Flores Soto Pág. 72
BIBLIOGRAFÍA.
[Link]
omunicacion_GPRS_compatible_con_socket_Xbee_GPRSBee.
23. DFRobot Wiki. Arduino LCD KeyPad Shield (SKU: DFR0009). [En línea] 17 de
Enero de 2014 .
[Link]
0009).
24. Tinsharp Electronics [Link]. TC1602D(L). [Datasheet]
25. MCI Ltda. - Olimex Chile. Arduino Logger Shield (uSD + RTC). MCI Ltda. -
Olimex Chile. [En línea] 10 de 10 de 2014.
[Link]
er_Shield_(uSD_+_RTC).
26. —. Arduino microSD Shield. MCI Ltda. - Olimex Chile. [En línea] 10 de 10 de
2014.
[Link]
SD_Shield.
27. Decagon Devices. EC-5 Soil Moisture Sensor User's Manual Version 2. Pullman
WA USA : s.n., 2012.
28. Arduino. Arduino/Processing Language Comparison. [En línea] 2014. [Citado el:
12 de Diciembre de 2014.]
[Link]
29. Hayt, William H. Análisis de Circuitos en Ingeniería. s.l. : Mc Graw Hill.
30. Margolis, M. Arduino Cookbook. s.l. : O'Reilly Media, 2011. ISBN:
9781449305611.
31. Faludi, R. Building Wireless Sensor Networks: with ZigBee, XBee, Arduino, and
Processing. s.l. : O'Reilly Media, 2010. ISBN: 9781449302740.
Mauricio Flores Soto Pág. 73
BIBLIOGRAFÍA.
32. GSMA. GSMA. [En línea] 2014. [Citado el: 06 de Noviembre de 2014.]
[Link]
Mauricio Flores Soto Pág. 74
Anexos
Mauricio Flores Soto Pág. - 1 - anexos
ANEXOS.
OTRO SOFTWARE UTILIZADO
ISIS PROTEUS
Isis (ver Figura 43) es un programa desarrollado por Labcenter Electronics que forma
parte de la suite Proteus. El programa fue utilizado para elaborar simulaciones del
comportamiento de diversos componentes electrónicos, esto se pudo lograr debido a que
Isis consta de una amplia base de datos de componentes, entre las que incluso se encuentran
microcontroladores con la posibilidad de ejecutar binarios de código previamente
compilado.
En este proyecto se utilizó la versión 7.7 profesional de Proteus, a la que se le incluyó
una librería de simulación de Arduino.
Figura 43: Isis Proteus
EAGLE 5.12.0
Mauricio Flores Soto Pág. - 2 - anexos
ANEXOS.
Eagle es un programa para el desarrollo de placas PCB, fue creado por Cadsoft y el
nombre corresponde al acrónimo “Easily Applicable Graphical Layout Editor”. El
programa es ampliamente utilizado por disponer de versiones freeware, que a pesar de tener
algunas limitaciones, su funcionalidad alcanza para diseños de placas pequeñas. En la
actualidad Eagle está en la versión 7, sin embargo se utilizó la versión 5.1.2 por ser la que
presenta mejor compatibilidad con la máquina CNC perteneciente a la Facultad de
Ingeniería de la Universidad de Talca.
El programa presenta a grandes rasgos tres ventanas:
- Control panel (Figura 44): Sirve para mantener en orden los proyectos de PCBs
creados.
- Schematic (Figura 45): Sirve para realizar el esquema de componentes electrónicos.
- Board (Figura 46): Muestra la forma final de la placa, incluyendo las rutas a crear.
Figura 44: Navegador de Eagle 5.12.0
Mauricio Flores Soto Pág. - 3 - anexos
ANEXOS.
Figura 45: Esquemático de un circuito realizado en Eagle 5.12.0
Figura 46: Diseño de una PCB en Eagle 5.12.0
ROUTEPRO 2008
Mauricio Flores Soto Pág. - 4 - anexos
ANEXOS.
RouterPro 2008 (Figura 47, Figura 48 y Figura 49) es el software provisto por la
empresa alemana Bungard Elektronik para la utilización de las máquinas de control
numérico de taladrado-fresado modelo CCD MTC, CCD ATC y CCD/2 de la misma
empresa.
Figura 47: Pantalla de configuración de herramienta de RoutePro 2008.
Figura 48: Pantalla de configuración de área de trabajo de R outePro 2008.
Mauricio Flores Soto Pág. - 5 - anexos
ANEXOS.
Figura 49: Pantalla de visualización de trabajo de CNC CCD en RoutePro 2008.
FRITZING
Fritzing (Figura 50) es un programa de automatización de diseño electrónico, que fue
creado en la Universidad de Ciencias Aplicadas de Potsdam. El enfoque del programa es
para ser usado por aficionados, diseñadores y artistas, es por esto que incluye interesantes
opciones de diseño y además mantiene una interfaz interactiva, didáctica y sumamente
gráfica.
El programa es código libre, por lo cual cuenta con el apoyo de la comunidad para la
corrección de errores, construcción de nuevos elementos y consultas, además se encuentra
en constante actualización.
Sumado a lo anterior, Fritzing incluye una amplia base de datos de elementos, sin
embargo la cantidad de elementos es ampliable, ya que se pueden descargar desde internet
nuevas piezas para ser integradas al programa y ser usadas en los diseños.
Mauricio Flores Soto Pág. - 6 - anexos
ANEXOS.
A pesar de todas las opciones presentes en Fritzing, en el proyecto fue utilizado
solamente como un medio para obtener las gráficas de los esquemas de conexiones entre
Arduino a otros elementos electrónicos.
Figura 50: Fritzing
EQUIPOS Y HERRAMIENTAS
BUNGARD CCD MTC
Para la elaboración de PCB se utilizó la CNC modelo CCD MTC fabricada por
Bungard Elektronik perteneciente a la Facultad de Ingeniería de la Universidad de Talca.
Esta máquina de control numérico para fresado y taladrado es de alta precisión y, como su
nombre lo indica, cuenta con cambio de herramienta semiautomático (MTC significa
“manual tool change” o en castellano “Cambio manual de herramienta”). Esta herramienta
también se puede usar para el grabado de plásticos o metales blandos como el aluminio.
Mauricio Flores Soto Pág. - 7 - anexos
ANEXOS.
Figura 51: Fotografía de CNC Bungard CDD MTC realizando diseño de PCB .
Tabla 15: Especificaciones técnicas de máquina CNC Router
CCD MTC
Fuente de alimentación 110-240 V, 50-60 Hz + aspiradora (1500W)
Alcance de RPM 30.000 – 63.000
Velocidad de 1 – 9000 mm/min
desplazamiento
Resolución de software 0,0001 mm (0,1µm)
Resolución Mecánica De paso seleccionable por software: 1, ½, ¼ mili pulgada
Diámetro de Herramienta 0.1mm – 3,175mm (recomendados, se pueden utilizar
herramientas más grandes)
Precisión de la posición 20 ppm (0.002%) sobre toda el área de trabajo
Velocidad máxima de 9000/mm/min (=150 mm/s)
posición por eje:
Velocidad máxima de 9000/mm/min (=150 mm/s), individual setting on a per-tool
trabajo por eje basis, independent from position speed
Velocidad de taladro 5/s (= 18.000 hoyos/h= 300 hoyos/min)
Accesorios requeridos Computador
Fijación de Material Fijación manual por medio de pasadores y abrazaderas
Peso (kg) 35
Dimensión (mm) 700x800x300
Área de trabajo (mm) 325x495x38
Cambio de herramienta Manual
Mauricio Flores Soto Pág. - 8 - anexos
ANEXOS.
INSTALACIÓN Y USO DE SOFTWARE ARDUINO EN ENTORNO MICROSOFT
WINDOWS
Para utilizar una placa Arduino en Microsot Windows es necesario descargar e instalar
el software Arduino desde el siguiente link: [Link]
El siguiente paso es conectar la placa Arduino al computador, para el caso de un
Arduino UNO solo se necesita un cable USB Tipo A Macho – B macho, para el caso del
Arduino Fio es necesario un adaptador FTDI.
Al conectar la placa Arduino al computador, automáticamente Windows requerirá los
drivers correspondientes. Una forma de instalar los drivers es dirigirse al “Administrador de
dispositivos” en el “Panel de control”, una vez en el administrador de dispositivos, buscar
“Puertos”, allí debe aparecer, para el caso de una placa Arduino UNO, “Arduino UNO
(COMxx)” dar click derecho sobre y luego pinchar “Actualizar software del controlador”,
luego en “Buscar software en el equipo” y finalmente dirigirse a la carpeta “Drivers” que
está en el directorio del software Arduino, allí seleccionar el archivo “[Link]”. Para el
caso del Arduino Fio los pasos son similares, con la salvedad que el driver se debe buscar
en “Drivers/FTDI USB Drivers” en el mismo directorio de “Arduino”, en este caso el
archivo será “[Link]”
El siguiente paso será abrir el programa Arduino, para esto basta con dar doble clic al
icono del programa.
Para comprobar el correcto funcionamiento del sistema, se puede cargar el archivo de
ejemplo “blink” que se encuentra en el menú “Archivo / Ejemplo / [Link]”. Antes de la
carga del archivo de ejemplo en la placa Arduino es necesario comprobar que el programa
esté configurado para la placa y en el puerto correcto, esto se puede comprobar en los
menús “Herramientas / Tarjeta” y “Herramientas / Puerto Serial” respectivamente.
Teniendo todo listo solo falta presionar el botón “Cargar” para terminar el proceso de
carga.
PROGRAMAS PARA ARDUINO
Mauricio Flores Soto Pág. - 9 - anexos
ANEXOS.
PROGRAMA ARDUINO UNO R3 PARA SENSOR EC-5:
#include <LiquidCrystal.h>
#include <Wire.h>
#include <SD.h>
#include "RTClib.h" // Incluye la librería RTClib
RTC_DS1307 RTC; // Crea el objeto RTC
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
File myFile;
float lectura;
long interval = 5000; //intervalo de medición en milisegundos
long previousMillis = 0;
long loaderInterval = 1000;
long loaderPreviusMillis = 0;
boolean changeLoader = true;
void setup(){
analogReference(EXTERNAL);
pinMode(2, OUTPUT);
//Se inicia I2C
[Link]();
// Establece la velocidad de datos del RTC
[Link]();
[Link](16, 2);
analogWrite(10, 100);
pinMode(10, OUTPUT);
if () {
[Link]("SD... ERROR");
delay(2000);
return;
}
else{
[Link]("SD... OK");
delay(1000);
}
}
void loop(){
unsigned long currentMillis = millis();
unsigned long loaderCurrentMillis = millis();
if (loaderCurrentMillis - loaderPreviusMillis > loaderInterval){
loaderPreviusMillis = loaderCurrentMillis;
[Link](15, 0);
changeLoader = !changeLoader;
if(changeLoader){
[Link]("-");
}
else{
[Link]("|");
}
}
if(currentMillis - previousMillis > interval){
previousMillis = currentMillis;
myFile = [Link]("[Link]", FILE_WRITE);
if (myFile) {
digitalWrite(2, HIGH);
delay(9);
lectura = (0.0038*analogRead(A1))-0.6484;
digitalWrite(2, LOW);
DateTime now = [Link]();
[Link]([Link](), DEC);
[Link](';');
Mauricio Flores Soto Pág. - 10 - anexos
ANEXOS.
[Link]([Link](), DEC);
[Link](';');
[Link]([Link](), DEC);
[Link](';');
[Link]([Link](), DEC);
[Link](';');
[Link]([Link](), DEC);
[Link](';');
[Link]([Link](), DEC);
[Link](';');
[Link](lectura);
[Link]();
[Link](0, 1);
[Link]([Link](), DEC);
[Link](':');
[Link]([Link](), DEC);
[Link](':');
[Link]([Link](), DEC);
[Link](0, 0);
[Link]("VWC:");
[Link](4, 0);
[Link](" ");
[Link](4, 0);
[Link](lectura);
[Link](11, 1);
[Link]("SD OK");
}
else {
[Link](1, 1);
[Link]("ERROR EN SD");
delay(1000);
}
}
}
PROGRAMA ARDUINO MEGA 2560 PARA NODO CENTRAL
Newgatewayv13
//[Link](9600);
[Link](9600); //XBee
//[Link](9600);//Gprs SIM900
pinMode(4,OUTPUT);//pin encendido GSM862
[Link]();
[Link]();
[Link](16, 2);
[Link](0, 0);
[Link]("Central");
[Link](0, 1);
[Link]("Activada");
pinMode(53, OUTPUT);
if ()
{
[Link]();
[Link]("SD... ERROR");
delay(1000);
return;
}
else
{
Mauricio Flores Soto Pág. - 11 - anexos
ANEXOS.
}
}
void loop(){
/////
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > 59000) {
previousMillis = currentMillis;
DateTime now = [Link]();
if ([Link]() == 58)
{
if ([Link]() == 7 || [Link]() == 9 || [Link]() == 11 || [Link]() == 13 || [Link]() == 15 || [Link]() == 17 || [Link]()
== 19)
{
if (varEnviarMensaje)
{
[Link](0, 0);
[Link](" ");
[Link](0, 1);
[Link](" ");
enviarMensaje();
varEnviarMensaje = false;
// while(1);
}
}
}
else{
[Link](10, 0);
[Link]([Link]());
[Link]([Link]());
varEnviarMensaje = true;
}
}
}
[Link]
void enviarMensaje()
{
myFile = [Link]("[Link]", FILE_READ);
[Link]();
[Link]();
if (myFile)
{
int contador = 0;
while([Link]())
{
contador++;
// [Link]([Link]());
char inChar = (char)[Link]();
inputString += inChar;
if (inChar == '\n' && contador>130)
{
[Link](buf, 160);
Mauricio Flores Soto Pág. - 12 - anexos
ANEXOS.
while (![Link]())
{
delay(1000);
[Link]();
}
//Entel
[Link]("+56973855198", buf);
digitalWrite(ST_LED_pin,HIGH);
delay(3000);
inputString = "";
contador = 0;
[Link](0,0);
[Link]("SMS enviado");
}
}
if(inputString > "0")
{
[Link](buf, 160);
while (![Link]())
{
delay(1000);
[Link]();
}
//Entel
[Link]("+56973855198", buf);
digitalWrite(ST_LED_pin,HIGH);
delay(2000);
inputString = "";
contador = 0;
[Link](0,0);
[Link]("SMS enviado");
[Link]();
[Link]("[Link]");
}
else {
inputString = "ERROR EN LECTURA DE TARJETA SD!";
[Link](buf, 160);
while (![Link]())
{
delay(1000);
[Link]();
}
//Entel
[Link]("+56973855198", buf);
digitalWrite(ST_LED_pin,HIGH);
delay(2000);
[Link](0,0);
[Link]("SMS enviado");
[Link](1, 1);
[Link]("ERROR EN SD");
delay(1000);
}
}
[Link]
//String para guardar datos recibidos
String inputStringSerial = "";
//Para cuando un string está completo
boolean stringCompleteSerial = false;
Mauricio Flores Soto Pág. - 13 - anexos
ANEXOS.
char caracter;
void serialEvent1() {
myFile = [Link]("[Link]", FILE_WRITE);
fileTemp = [Link]("[Link]", FILE_WRITE);
while ([Link]()) {
caracter = [Link]();
[Link](caracter);
[Link](caracter);
}
[Link]();
[Link]();
}
PROGRAMA ARDUINO FIO PARA NODO SENSOR
//Librerias utilizadas
#include <avr/sleep.h>
#include <Wire.h> //I2C
#include <DS1340Z.h> //RTC
#include <SD.h> //SD
int wakePin = 2; // pin used for waking up
int count = 0; // counter
//Nombre del sensor, cambiar en caso de instalar varios sensores
String idNodo1 = "A1";
int valorAnalogo1 = 0;
File myFile;
int rtc_hours = 0;
int rtc_minutes = 0;
int rtc_seconds = 0;
int rtc_year = 0;
int rtc_month = 0;
int rtc_day = 0;
int rtc_dow = 0;
void setup(){
pinMode(wakePin, INPUT);
pinMode(3, INPUT_PULLUP);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10,OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(13,LOW);
attachInterrupt(0, wakeUpNow, LOW); // use interrupt 0 (pin 2) and run function
// wakeUpNow when pin 2 gets LOW
void loop(){
delay(1000); // waits for 1 second
Mauricio Flores Soto Pág. - 14 - anexos
ANEXOS.
digitalWrite(13,HIGH);
//Inicializa comunicacion serial
[Link](9600);
//Inicializa RTC
[Link]();
//Analiza estado de microSD
if () {
}
//Activa sensor
digitalWrite(6, HIGH);
delay(9);
valorAnalogo1 = analogRead(A1);
float lectura1 = (valorAnalogo1 * 0.1653) - 62.669;
//Desactiva sensores
digitalWrite(6, LOW);
//Obtiene la fecha de RTC
rtc.get_date(&rtc_day, &rtc_month, &rtc_year, &rtc_dow);
//Obtiene la hora de RTC
rtc.get_time(&rtc_hours, &rtc_minutes, &rtc_seconds);
//Envía datos a XBee
[Link](rtc_day);
[Link](";");
[Link](rtc_month);
[Link](";");
[Link](rtc_year);
[Link](";");
[Link](rtc_hours);
[Link](";");
[Link](rtc_minutes);
[Link](";");
[Link](rtc_seconds);
[Link](";");
[Link](idNodo1);
[Link](";");
if (valorAnalogo1 < 10){
[Link]("ND");
}
else{
[Link](lectura1);
}
//Envía datos a microSD
myFile = [Link]("[Link]", FILE_WRITE);
if (myFile){
[Link](rtc_day);
[Link](';');
[Link](rtc_month);
[Link](';');
[Link](rtc_year);
[Link](';');
[Link](rtc_hours);
[Link](';');
[Link](rtc_minutes);
[Link](';');
[Link](rtc_seconds);
[Link](';');
[Link]('LAT');
[Link](';');
[Link]('LON');
[Link](';');
if (valorAnalogo1 < 10){
[Link]("ND");
}
else{
[Link](lectura1);
}
[Link]();
Mauricio Flores Soto Pág. - 15 - anexos
ANEXOS.
}
else
{
[Link]("NSD" + idNodo1);
}
[Link]();
delay(11000);
digitalWrite(13,LOW);
sleepNow();
}
void sleepNow() // here we put the arduino to sleep
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
sleep_enable(); // enables the sleep bit in the mcucr register
// so sleep is possible. just a safety pin
attachInterrupt(0,wakeUpNow, LOW); // use interrupt 0 (pin 2) and run function
// wakeUpNow when pin 2 gets LOW
sleep_mode(); // here the device is actually put to sleep!!
// THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP
sleep_disable(); // first thing after waking from sleep:
// disable sleep...
detachInterrupt(0); // disables interrupt 0 on pin 2 so the
// wakeUpNow code will not be executed
// during normal running time.
void wakeUpNow() // here the interrupt is handled after wakeup
{
// execute code here after wake-up before returning to the loop() function
// timers and code using timers ([Link] and more...) will not work here.
// we don't really need to execute any special functions here, since we
// just want the thing to wake up
pinMode(13, OUTPUT);
digitalWrite(13,HIGH);
}
PROGRAMA ARDUINO UNO RTC DS1307
/*Código Original en:
[Link]
Obtenido el 30 de abril 2014
Modificación Mauricio Alejandro Flores Soto, 9 de diciembre 2014
*/
//Configuración de reloj I2C DS1307
//Testeado en Arduino UNO y Arduino Mega 2560
//Para otros microcontroladores verificar el voltaje de operación y de datos (5V)
/*Instrucciones:
-Conectar Arduino al PC
-Cargar el programa en Arduino.
-Desconectar Arduino del PC
-Conectar líneas SDA y SCL entre reloj y Arduino
-Conectar 5v y GND entre reloj y Arduino
-Conectar Arduino al PC
Mauricio Flores Soto Pág. - 16 - anexos
ANEXOS.
-Ejecutar Monitor Serial en IDE Arduino
-Ingresar los datos requeridos por el programa.
*/
#include <Wire.h>
const int DS1307 = 0x68; // Address of DS1307 see data sheets
const char* days[] =
{"Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"};
const char* months[] =
{"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto","Septiembre", "Octubre", "Noviembre", "Diciembre"};
// Initializes all values:
byte second = 0;
byte minute = 0;
byte hour = 0;
byte weekday = 0;
byte monthday = 0;
byte month = 0;
byte year = 0;
void setup() {
[Link]();
[Link](9600);
[Link]("Leyendo la hora actual, por favor espere...");
delay(2000); // This delay allows the MCU to read the current date and time.
[Link]("La hora y fecha actual es: ");
printTime();
[Link]("Cambie la configuracion a \"Nueva Linea\" en la esquina inferior derecha del Monitor Serial (esta ventana)");
[Link]("Quiere configurar la fecha y hora? Presione \"s\" (sin comillas y en minuscula)");
while (![Link]()) delay(10);
if ([Link]() == 's' || [Link]() == 'S')
// This set of functions allows the user to change the date and time
{
[Link]();
setTime();
[Link]("Ahora la hora y fecha actual es: ");
printTime();
}
[Link]("Gracias.");
}
// Continuous function for converting bytes to decimals and vice versa
void loop() {
}
byte decToBcd(byte val) {
return ((val/10*16) + (val%10));
}
byte bcdToDec(byte val) {
return ((val/16*10) + (val%16));
}
// This set of codes is allows input of data
void setTime() {
[Link]("Por favor ingrese el anio actual, 00-99. - ");
year = readByte();
[Link](year);
[Link]("Por favor ingrese el mes actual, 1-12. - ");
month = readByte();
[Link](months[month-1]);
[Link]("Por favor ingrese el dia de mes actual, 1-31. - ");
monthday = readByte();
[Link](monthday);
[Link]("Por favor ingrese el numero de dia actual, 1-7.");
[Link]("1 Lun | 2 Mar | 3 Mie | 4 Jue | 5 Vie | 6 Sab | 7 Dom - ");
Mauricio Flores Soto Pág. - 17 - anexos
ANEXOS.
weekday = readByte();
[Link](days[weekday-1]);
[Link]("Por favor ingrese la hora actual en formato de 24Hrs, 0-23. - ");
hour = readByte();
[Link](hour);
[Link]("Por favor ingrese el minuto actual, 0-59. - ");
minute = readByte();
[Link](minute);
[Link]("Por favor ingrese el segundo actual, 0-59. - ");
[Link]("Los datos seran ingresados inmediatamente al presionar ENTER!");
second = readByte();
[Link]("Los datos fueron ingresados.");
// The following codes transmits the data to the RTC
[Link](DS1307);
[Link](byte(0));
[Link](decToBcd(second));
[Link](decToBcd(minute));
[Link](decToBcd(hour));
[Link](decToBcd(weekday));
[Link](decToBcd(monthday));
[Link](decToBcd(month));
[Link](decToBcd(year));
[Link](byte(0));
[Link]();
// Ends transmission of data
}
byte readByte() {
while (![Link]()) delay(10);
byte reading = 0;
byte incomingByte = [Link]();
while (incomingByte != '\n') {
if (incomingByte >= '0' && incomingByte <= '9')
reading = reading * 10 + (incomingByte - '0');
else;
incomingByte = [Link]();
}
[Link]();
return reading;
}
void printTime() {
char buffer[3];
const char* AMPM = 0;
readTime();
[Link](days[weekday-1]);
[Link](" ");
[Link](months[month-1]);
[Link](" ");
[Link](monthday);
[Link](", 20");
[Link](year);
[Link](" ");
if (hour > 12) {
hour -= 12;
AMPM = " PM";
}
else AMPM = " AM";
[Link](hour);
[Link](":");
sprintf(buffer, "%02d", minute);
[Link](buffer);
[Link](AMPM);
}
Mauricio Flores Soto Pág. - 18 - anexos
ANEXOS.
void readTime() {
[Link](DS1307);
[Link](byte(0));
[Link]();
[Link](DS1307, 7);
second = bcdToDec([Link]());
minute = bcdToDec([Link]());
hour = bcdToDec([Link]());
weekday = bcdToDec([Link]());
monthday = bcdToDec([Link]());
month = bcdToDec([Link]());
year = bcdToDec([Link]());
}
PROGRAMA ARDUINO UNO RTC DS1340Z
/*//////////////////////////////////////////////
Programa para configuración de módulo D1340z
Autor: Mauricio Alejandro Flores Soto
2014/11/04
//////////////////////////////////////////////*/
/* La librería DS1340Z.h debe ser agregada manualmente
*/
/*Pines Usados Arduino FIO
A4 = I2C SDA RTC
A5 = I2C SCL RTC
*/
//Librerias utilizadas
#include <Wire.h> //I2C
#include <DS1340Z.h> //RTC
int rtc_hours = 0;
int rtc_minutes = 0;
int rtc_seconds = 0;
int rtc_year = 0;
int rtc_month = 0;
int rtc_day = 0;
int rtc_dow = 0;
void setup(){
//Inicializa comunicacion serial
[Link](9600);
//Inicializa RTC
[Link]();
}
void loop(){
byte serial_in;
// check if data has been sent from the computer:
if ([Link]())
{
serial_in = [Link]();
}
Mauricio Flores Soto Pág. - 19 - anexos
ANEXOS.
if(serial_in == 's')
{
rtc.set_date_time(5, 11, 2014, 3, 2, 12, 0);
}
//Obtiene la fecha de RTC
rtc.get_date(&rtc_day, &rtc_month, &rtc_year, &rtc_dow);
//Obtiene la hora de RTC
rtc.get_time(&rtc_hours, &rtc_minutes, &rtc_seconds);
//Envía datos a XBee
[Link](rtc_day);
[Link]("/");
[Link](rtc_month);
[Link]("/");
[Link](rtc_year);
[Link](" ");
[Link](rtc_hours);
[Link](":");
[Link](rtc_minutes);
[Link](":");
[Link](rtc_seconds);
delay(1000);
}
Motivo
Función
Mauricio Flores Soto Pág. - 20 - anexos