You are on page 1of 24

DEPARTAMENTO DE CIENCIAS DE LA ENERGA Y MECNICA

CARRERA DE INGENIERA MECATRNICA

Prctica No.1

COMUNICACIN RS485 CON LA PLATAFORMA UBIDOTS

Grupo De Laboratorio:

Erazo Mara Ins


Pazmio Esteban
Romero Jakelyn

Latacunga, 12 de Enero del 2016

OBJETIVOS:
Objetivo General.

Estudiar el funcionamiento e implementar la comunicacin RS485 con conexin


ethernet mediante un ejercicio prctico.

Objetivos Especficos.

Realizar y cargar el cdigo de programacin correspondiente a los arduinos


designados como maestro y esclavo.

Conectar el modulo ethernet de arduino para subir los datos a la plataforma.

Analizar el datasheet del max485 para de esta manera establecer los pines
correspondientes que pertenecen a los transmisores y receptores.

MARCO TERICO:
MODULO ETHERNET ENC28JC60 3
El

mdulo Ethernet

ENC28J60 utiliza

el ENC28J60 controlador

autnomo

de

Microchip que ofrece una serie de caractersticas para manejar la mayor parte de los
requisitos del protocolo de redes.
La tarjeta se puede conectar directamente a la mayora de los microcontroladores ( PIC,
Arduino, AVR, DSP, STM32, 8051, etc ) con una interfaz estndar SPI con una velocidad
de transferencia de hasta 20MHz.
Se trata de un mdulo mediante el cual usted puede poner su tarjeta de control en lnea. Y
por supuesto que se puede utilizar en la plataforma Arduino. Su funcin es la misma
que Shield Ethernet V1.0 para Arduino, por lo que con ella se puede realizar todas las
funciones que se han hecho en la V1.0 Ethernet Shield para Arduino. Es pequeo y
conveniente.
Para utilizarlo como el V1.0 Ethernet Shield para Arduino solo es necesario conectar 10
cables desde tu modulo Ethernet ENC28J60 a tu placa Arduino, una vez hecha la
conexin puede ser usado la Shield Ethernet de Arduino.
La conexin para emular nuestro modulo

Ethernet ENC28J60 como el shield Arduino

se muestra en la tabla siguiente.

Mdulo ENC28J60

Arduino Due / UNO

Mega Arduino

VCC

3V3

3V3

REAJUSTE

REAJUSTE

REAJUSTE

ENC-INT

GND

GND

GND

SCK

13

52

MISO

12

50

MOSI

11

51

CS

10

53

CLKOUT
ENC-WOL

Figura 1: Modulo Ethernet.

INTERNET DE LAS COSAS CON UBIDOTS 4


La facilidad de programacin que nos brindan las diferentes plataformas de hardware
actuales, nos invitan a pensar en una gran cantidad de posibilid ades. Por ejemplo, gracias
a un dispositivo como el Arduino, es posible medir variables del entorno tales como

temperatura, aceleracin, posicionamiento, nivel de luz, e incluso cualquier otro sensor


que queramos conectar a travs de sus puertos anlogos.
El desarrollo de ste tipo de proyectos que leen informacin del ambiente a travs de
sensores se conoce como el Internet de las Cosas y es una tendencia tecnolgica que
promete crear una nueva era de aplicaciones que revolucionarn la forma en que vivimos.
Tal como lo hicieron las aplicaciones web en los aos 90s, las redes sociales en la dcada
del 2000, o las aplicaciones mviles en la presente dcada, el Internet de las Cosas es una
oportunidad para crear innovadoras soluciones en diversos sectores como el comercio, la
energa, el transporte, la manufactura, el agro e incluso el hogar.
Para un completo desarrollo de ste nuevo tipo de aplicaciones, debemos trabajar en tres
diferentes niveles: la electrnica, las comunicaciones y el software.

QU ES UBIDOTS?4
Ubidots es un servicio en la nube que nos permite almacenar e interpretar informacin de
sensores en tiempo real, haciendo posible la creacin de aplicaciones para el Internet de
las Cosas de una manera fcil, rpida y divertida.

Figura 2: Conexin con la plataforma Ubidots.


Gracias a sta herramienta, podremos ahorrarnos tiempo y dinero al momento de
desarrollar aplicaciones como sistemas de telemetra GPS, sistemas para monitoreo de
temperatura, aplicaciones para contar vehculos en una calle, etc.
En la siguiente grfica se ilustra el ahorro en tiempo y esfuerzo al crear una aplicacin de
Internet de las Cosas con la plataforma Ubidots, o sin ella:

ARDUINO 1

Figura 3: Placa Arduino UNO


Arduino es una plataforma libre de computacin de bajo coste basada en una placa de
entrada-salida y en un entorno de desarrollo IDE que implementa el lenguaje
vProcessing/WiringHardware. Arduino se puede usar para desarrollar objetos interactivos
automticos o conectarse a software en el ordenador (Pure Data, Flash, Processing;
MaxMSP.
Arduino naci a Ivrea Interaction Design Institute como una herramienta fcil para

prototipado rpido, dirigido a estudiantes sin experiencia en electrnica y programaci n.


Tan pronto como lleg a una comunidad ms amplia, la placa Arduino comenz a cambiar
para adaptarse a las nuevas necesidades y desafos, diferenciar su oferta de tablas simples
de 8 bits a los productos para aplicaciones de la IO,, impresin 3D porttil y entornos
integrados. Todas las placas Arduino son completamente de cdigo abierto, permitie ndo
a los usuarios crear de forma independiente y, finalmente, adaptarlos a sus necesidades
particulares. El software tambin es de cdigo abierto, y est creciendo a travs de las
aportaciones de los usuarios en todo el mundo.
Elementos de la placa
La placa es una placa de circuito impreso donde va instalado el microprocesador, la
memoria, las conexiones de entrada y salida y la conexin para el puerto usb.
-

Botn de reset: permite resetear el programa y permite cargar uno nuevo.

Puerto usb: a travs de l se cargan las instrucciones a ejecutar, el programa que


es realizado en el entorno de programacin de arduino. Comunicacin Arduino Ordenador.

Microprocesador: realiza las instrucciones almacenadas en el programa de forma


cclica. Es un circuito integrado que contiene muchas de las mismas cualidades
que una computadora. Escribe en los pines DS2-13 y lee en los DE2-13 AE0-5.

Pines de entrada y salida: Permiten conectar elemento que dan informacin y


crean actuaciones.

MAX485 2
El MAX485, es uno circuitos integrado que permiten hacer el RS485.
Cuando se requieren mayores distancias y velocidades de trasmisin, entonces deben de
emplearse las normas RS422 y RS485. Adems, estas normas permiten tambin la
trasmisin multipunto, es decir una computadora central conectada con varias UTR. Dado
que la computadora central tpicamente tiene como salida la interfaz RS232, se hace
necesaria la conexin de un mdulo convertidor RS232 a RS422/485, para impleme ntar
una red.

Todos los dispositivos RS485 poseen drivers "tristate" que permiten a las UTR
desconectarse de la lnea una vez que trasmitieron su informacin. Normalmente, para
este fin se usa un circuito temporizador automtico habilitado por el flanco ascendente de
la seal de trasmisin. El temporizador habilita el circuito trasmisor durante el tiempo
que dura el mensaje y lo deshabilita al terminar ste.

Entre las aplicaciones tpicas de la norma RS485, se encuentran los sistemas de control
de acceso, los sistemas distribuidos de control industrial y los sistemas de seguridad
casera. En todos estos casos, varias UTR reportan su informacin hacia una computadora
central o bien reciben comandos de la misma.

Figura 4: Circuito de operacin del MAX 485

MATERIALES:

Arduino UNO

Arduino MEGA

Modulo Ethernet para arduinno

Max485

Display

Protoboard

PROCEDIMIENTO:

1. Realizar el cdigo que pertenece al arduino maestro.

Ser necesario definir la direccin MAC del mdulo, y usar la librera


UIPEthernet

para e correcto funcionamiento

del mdulo

ethernet

ENC28JC60.
/*
Web client

This sketch connects to a website using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13

created 18 Dec 2009


modified 9 Apr 2012
by David A. Mellis
modified 15 Jan 2015
by Mateo Velez for Ubidots, Inc.

*/

#include <UIPEthernet.h>
#include <Wire.h>
#define START_NODE 1 // The starting I2C address of slave nodes
#define NODE_MAX 3 // maximum number of slave nodes (I2C addresses) to
probe

// Enter a MAC address for your controller below.


// Newer Ethernet shields have a MAC address printed on a sticker on the
shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
int data[3];

// Initialize the Ethernet client library

// with the IP address and port of the server


// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

String potVarId = "569282bb76254259d6b1e1f9";


String pulsVarId = "56906cc676254251b8db1f46";
String fresVarId = "56928d177625427083ba06a6";
String token =
"PCGj6rnLPhLGt6uBMBaarEYXgJhlyM9AAaId76aSS4EMwJV3qtHySNTtpV
1B";

void setup() {
// Open serial communications and wait for port to open:
Wire.begin();// Activate I2C link
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for(;;);
}
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");
}

void loop()
{
for (int nodeAddress = START_NODE; nodeAddress <= NODE_MAX;
nodeAddress++) { // we are starting from Node address 1

Wire.requestFrom(nodeAddress, 1);

// request data from node#

if(Wire.available()) { // if data size is avaliable from nodes


data[nodeAddress] = Wire.read();
}
}
float pot = data[1]*5.0/249.15;
int puls = data[2];
float fres = data[3]*100.0/255.0;
delay(200);

save_value(pot,puls,fres);
}

void save_value(float potValue, int pulsValue, float fresValue)


{
// if you get a connection, report back via serial:
int num=0;
delay(200);

String var = "[{\"variable\": \"" + potVarId + "\", \"value\":" +


String(potValue) + "}";
var += ",{\"variable\": \"" + pulsVarId + "\", \"value\":" + String(pulsValue)
+ "}";
var += ",{\"variable\": \"" + fresVarId + "\", \"value\":" + String(fresValue) +
"}]";
num = var.length();

if(client.connect("things.ubidots.com", 80))
{
Serial.println("connected");

// New lines according to ubidots support:|


client.println("POST /api/v1.6/collections/values HTTP/1.1");
Serial.println("POST /api/v1.6/collections/values HTTP/1.1");

10

client.println("Content-Type: application/json");
Serial.println("Content-Type: application/json");
client.println("Content-Length: "+String(num));
Serial.println("Content-Length: "+String(num));
client.println("X-Auth-Token: "+token);
Serial.println("X-Auth-Token: "+token);
client.println("Host: things.ubidots.com\n");
Serial.println("Host: things.ubidots.com\n");
client.print(var);
Serial.print(var+"\n");
}
else
{
// if you didn't get a connection to the server:
Serial.println("connection failed");
}

if (!client.connected())
{
Serial.println();
Serial.println("disconnecting.");
client.stop();
}

if (client.available())
{
char c = client.read();
Serial.print(c);
}
client.flush();
client.stop();

}
2. Realizar el cdigo correspondiente para el arduino esclavo1.

11

// Program: I2C slave sender template for multi-node Arduino I2C network
// Programmer: Hazim Bitar (techbitar.com)
// Date: March 30, 2014
// This example code is in the public domain.

#include <Wire.h>

#define NODE_ADDRESS 1 // Change this unique address for each I2C slave
node

byte nodePayload;

void setup()
{

Serial.begin(9600);
Serial.println("SLAVE SENDER NODE");
Serial.print("Node address: ");
Serial.println(NODE_ADDRESS);
Serial.println("***********************");
Wire.begin(NODE_ADDRESS); // Activate I2C network
Wire.onRequest(requestEvent); // Request attention of master node
}

void loop()
{
delay(100);
nodePayload = analogRead(A1)/3.95; // Read A0 and fit into 1 byte. Replace
this line with your sensor value
Serial.println(nodePayload);
}

void requestEvent()
{

12

Wire.write(nodePayload);
Serial.print("Sensor value: "); // for debugging purposes.
Serial.println(nodePayload); // for debugging purposes.
}
3. Realizar el cdigo correspondiente para el arduino esclavo2.
// Program: I2C slave sender template for multi-node Arduino I2C network
// Programmer: Hazim Bitar (techbitar.com)
// Date: March 30, 2014
// This example code is in the public domain.

#include <Wire.h>

#define NODE_ADDRESS 2 // Change this unique address for each I2C slave
node

byte nodePayload;

void setup()
{

Serial.begin(9600);
Serial.println("SLAVE SENDER NODE");
Serial.print("Node address: ");
Serial.println(NODE_ADDRESS);
Serial.println("***********************");
Wire.begin(NODE_ADDRESS); // Activate I2C network
Wire.onRequest(requestEvent); // Request attention of master node
}

void loop()
{
delay(100);
nodePayload = digitalRead(52); // Read A0 and fit into 1 byte. Replace this line
with your sensor value

13

Serial.println(nodePayload);
}

void requestEvent()
{
Wire.write(nodePayload);
Serial.print("Sensor value: "); // for debugging purposes.
Serial.println(nodePayload); // for debugging purposes.
}
4. Realizar el cdigo correspondiente para el arduino esclavo3.
// Program: I2C slave sender template for multi-node Arduino I2C network
// Programmer: Hazim Bitar (techbitar.com)
// Date: March 30, 2014
// This example code is in the public domain.

#include <Wire.h>

#define NODE_ADDRESS 3 // Change this unique address for each I2C slave
node

byte nodePayload;

void setup()
{

Serial.begin(9600);
Serial.println("SLAVE SENDER NODE");
Serial.print("Node address: ");
Serial.println(NODE_ADDRESS);
Serial.println("***********************");
Wire.begin(NODE_ADDRESS); // Activate I2C network
Wire.onRequest(requestEvent); // Request attention of master node
}

14

void loop()
{
delay(100);
nodePayload = analogRead(A1)/3.52; // Read A0 and fit into 1 byte. Replace
this line with your sensor value
Serial.println(nodePayload);
}

void requestEvent()
{
Wire.write(nodePayload);
Serial.print("Sensor value: "); // for debugging purposes.
Serial.println(nodePayload); // for debugging purposes.
}
5. Implementar el circuito correspondiente para el correcto funcionamiento de la
prctica.

Para la conexin del mdulo ethernet en este caso lo conectaremos al


arduino mega en los pines digitales 50 51 52 y 53 para la comunicacin y
a 5v para la alimentacin. EL modulo posee una entrada para cable de red,
de la cual saldr un cable utp a cualquiera de los puertos lan del router
inalmbrico que proporciona el internet.

Figura 5: Circuito a implementar.

15

6. Para conectarse con la plataforma Ubidots ingresar el siguiente Link


https://app.ubidots.com/accounts/signup/.
7. Crear una cuenta en la plataforma Ubidots.
8. Para crear la fuente de datos en la plataforma seleccionar Sources.

Figura 6: Herramienta Source


9. Seleccionar en aadir fuente de datos.

Figura 7: Aadir fuente de datos.


10. Seleccionar un dispositivo para la adquisicin de datos.

16

Figura 8: Aadir dispositivos.


11. Ingresar los detalles de los datos a obtener.

Figura 9: Informacin de los datos a obtener.


12. Crear la fuente de datos.

Figura 10: Creacin de fuente de datos.


13. Para aadir variables ingresar en la fuente de datos creada y seleccionar aadir
variable.

17

Figura 11: Aadir nueva variable.


14. Ingresar los siguientes parmetros que poseer nuestra variable y dar clic en
crear.

Figura 12: Parmetros de la variable.


15. Tome nota del ID de las variables a la cual se desea enviar informacin.
Necesitar esto para ingresar en el cdigo.

18

Figura 13: ID de la variable.

16. Crear un Token dando clic en My Profile. Necesitar esto para el cdigo.:

Figura 14: Generacin de token.


17. Para poder visualizar en el Dashboard seleccionar en la parte superior derecha
Add Widget.

19

Figura 15: Aadir Widget.


18. Seleccionar el tipo de icono a visualizar con la informa cin enviada

Figura 16: Seleccin de icono para la variable.


19. Seleccionar la fuente de los datos.

Figura 17: Seleccin de fuente de datos.


20. Seleccionar la variable y los rangos en que estar la informaci n adquirida, dar
clic en finalizar.

20

Figura 18: Seleccin de la variable y sus rangos.


ANLISIS DE RESULTADOS:
Por medio de la aplicacin ubidots se va a monitorear los datos que entrega en arduino
maestro enviados por cada esclavo. El primer elemnto es el pulsador el mismo que
mediante la aplicacin al momento que genere un 1 logico o se pulse cambiar a color
verde.El segundo elemto es un potecimetro se enceuntra en una escala de 0 a 5V
dependiendo el dado de giro se visualizar si es voltaje es alto o bajo. El ultimo elemnto
es una LDR que permite monitorear el % de lumijnosidad.

Figura 19: Visualizacin del Dashboard de nuestra plataforma.

21

En la siguiente imagen se puede verificar el monitoreo realizado cuando el pulsador entra


a funcionar, es posible observar las fechas las cuales fueron monitoreadas y el
funcionamiento de pulsador que es 0 si no se encuentra pulsado o 1 si est en ejecucin.

Figura 20: Monitoreo del pulsador.


En la siguiente imagen se puede verificar el monitoreo realizado cuando el potencimetro
entra a funcionar, es posible observar las fechas las cuales fueron monitoreadas y el
funcionamiento del potencimetro dependiendo del movimiento que se realice al mismo
pueden ser valores que estn dentro del intervalo de 0 a 5V los que se pueden verificar en
el monitoreo, as mismo se muestra una tabla que determina el valor monitoreado con su
fecha respectiva.

Figura 21: Monitoreo del potencimetro.

22

En la siguiente imagen se puede verificar el monitoreo realizado cuando la LDR entra a


funcionar,

es posible observar las fechas las cuales fueron monitoreadas y el

funcionamiento de la misma dependiendo la cantidad de luminosidad que existe si no


existe luz el porcentaje monitoreado es bajo mientras que si hay presencia de luz el
porcentaje de monitoreo va subiendo dependiendo de la cantidad de luz existente.

Figura 22: Monitoreo LDR.

CONCLUSIONES:
-

Mediante el desarrollo de la prctica se determina que para realizar una


transmisin a travs del MAX485 se necesita controlar el terminal DE (habilita el
envo) y RE (habilita recepcin).

Al transmitir informacin hay que colocar el pin 2 y el 3 en nivel alto, de esta


forma se habilita el integrado para enviar informacin por el pin 4 y se bloquea
para recibir informacin por el pin 1, en caso contrario, para recibir informac i n
hay que colocar el pin 2 y el 3 en nivel bajo, en este caso se bloquea el envo de
informacin por el pin 4 y se activa la recepcin de informacin por el pin1.

De manera fsica y como consejo se coloca para los enlaces con RS-485 una
resistencia de 120 ohms (Rt) a travs de las lneas A y B en cada extremo de la
lnea, para proveer a los dispositivos de una adaptacin de impedancia al medio
de transmisin.

Mediante el proyecto realizado se pudo monitorear los datos entregados del


arduino maestro por medio de la aplicacin ubidots.

23

Los elementos que se utiliz en la prctica para su monitoreo fueron un pulsador,


un potencimetro y una fotocelda.

Dentro de la comunicacin para l envi de datos que recibe el maestro de sus


esclavos y este enva a la aplicacin ubidots se determin que un factor importante
es el ancho de banda de la red.

RECOMENDACIONES:
-

Es ptimo al momento de realizar la programacin ir colocando lneas de


comentario para luego al compilar el programa, si llegar a existir errores poderlos
detectar fcilmente.

Conocer cules y que permite cada pin del MAX485, para realizar

la

comunicacin deseada y permitir obtener un resultado ptimo.


-

Poseer los materiales necesarios para realizar el montaje del circuito que se desee
monitorear por medio de ubidots.

Comprobar la calidad de internet que se posee.

BIBLIOGRAFA:
[1] Tecnologa, I. B.-D. (n.d.). EL MICROCONTROLADOR ARDUINO. Retrieved
Noviembre

18,

2015,

from

http://www.cscjprofes.com/wp-

content/uploads/2014/02/teoria_arduino2009.pdf
[2] S.A., P. f. (n.d.). Estndares de comunicaciones RS232, RS422, RS485. Retrieved
Noviembre 19, 2015, from http://www.puntoflotante.net/RS485.htm
[3] nextiafenix. (s.f.). Obtenido

de http://www.nextiafenix.com/producto/modulo-

ethernet-enc28jc60/
[4]

Ubidots.

(2014).

Obtenido

de

http://ubidots.com/docs/es/get_started/introduccion.html

24

You might also like