En esta entrada veremos un proyecto de IoT, con el apoyo de la empresa Ubidots, pueden visitar la página en https://ubidots.com/?utm_source=youtube&utm_medium=referral&utm_campaign=carlosvolt
Y registrase tiene un periodo de prueba gratis de 30 días, donde podrán hcer un uso completo de la plataforma.
En este proyecto vamos a subir datos a los servicio en la nube de ubidots. Usaremos un arduino uno, tambien un módulo ethernet para lograr la conexíon, y un display oled donde visualizaremos la temperatura.
Código fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
// * Incluimos las siguientes librerías #include <Ethernet.h> #include <SPI.h> #include <UbidotsEthernet.h> #include "DHT.h" #include "U8glib.h" U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI // Se habilita esta linea según el display a a usar en este caso el driver SH1106 #define DHTPIN 2 // Pin digital al caual vamos a conectar el sensor de temperatura // Tipo de sensor que vamos a usar #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); // Parámetros para el servidor de Ubidots.*/ char const * TOKEN = "BBFF-k3bid88HLUIzAbEXYKIZqrgATC0qM9"; // Token asignado por Ubidots char const * VARIABLE_LABEL_1 = "temperatura_dht"; // Asigna una etiqueta de variable única para enviar los datos char const * VARIABLE_LABEL_2 = "humedad_dht"; // Asigna una etiqueta de variable única para enviar los datos de la humedad int temperatura = 0; int humedad = 0; /* Dirección MAC para el módulo ethernet */ byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; Ubidots client(TOKEN); void setup() { Serial.begin(9600); //Inicializa el sensor de temperatura dht.begin(); /* Inicializa la conexión Ethernet */ Serial.print(F("Inicializando conexión ethernet...")); if (!Ethernet.begin(mac)) { Serial.println(F("ops hubo un problema")); } else { Serial.println(Ethernet.localIP()); } // Esperamos un tiempo para el módulo arranque delay(2000); Serial.println(F("PLaca ethernet lista!!!")); } void loop() { Ethernet.maintain(); float valor_temperatura = dht.readTemperature();// Leemos la temperatura en grados celsius float valor_humedad = dht.readHumidity();//Leemos la humedad temperatura = valor_temperatura; humedad = valor_humedad; //Impimimos estos valores en el terminal serial Serial.print("Temperatura:"); Serial.println(valor_temperatura); Serial.print("Humedad:"); Serial.println(valor_humedad); /* Enviando datos a Ubidots*/ client.add(VARIABLE_LABEL_1, valor_temperatura); client.add(VARIABLE_LABEL_2, valor_humedad); client.sendAll(); //Llamamos a nuestro display para que muestre los valores obtenidos u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); //Esperemos 5 segunsdo antes de volver a subir otro datos a Ubidots delay(5000); } void draw(void) { u8g.setFont(u8g_font_unifont); //Veremos en pantalla los valores de Temperatura y humedad en la posición asignada u8g.setPrintPos(0, 20); u8g.print("Temperatura:"); u8g.print(temperatura); u8g.setPrintPos(0, 40); u8g.print("Humedad:"); u8g.print(humedad); } |
Materiales
Escudo ethernet
Nuestro escudo ethernet será necesario, para subir datos a ubidots.com y también para mostrar datos en nuestra red local, sólo debemos abrir algún navegador web y escribir la ip que allá asignado nuestro router, eso lo podemos ver en el terminal serial. Una de las mejoras que se hará a futuro es agregar esta información en el display.
Arduino uno
Podemos usar el arduino uno o el arduino mega, pero observen el código fuente poque hay que hacer una leve modificación, al mismo según el arduino a usar. Nuestro arduino es el cerebro de todo el proyecto es quien se encargará de tomar lecturas del sensor y procesar estas señales para poder verlas en el display, el terminal serial, el control del escudo ethernet, y proveerá de la alimentación a todo el circuito.
Display Oled sh1106
Se trata de un módulo de pantalla OLED monocromática DE 128×64 puntos con interface I2C .Que presenta varias ventajas en comparación con pantallas LCD, y podemos destacar su alto brillo, un muy buen contraste, un ángulo de visión más amplio, y bajo consumo de energía. ES compatible con Arduino Rasberry Pi y micro controladores PIC entre otros. Trabaja con niveles lógicos de 3.3V a 5V tiene un angulo de visión mayor a los 160 grados. el Tamaño de la pantalla es de 1,3 pulgadas. Se alimenta con un voltaje de 3.3V a 5V Se lo puede usar en aplicaciones como relojes inteligentes, MP3, termómetros, instrumentos, y proyectos varios, etc.
Librería
Características
Interface: I2C(3.3V / 5V logic level)
Resolution: 128 x 64
Angle of view: >160 degree
Display color: Blue
Display size: 1.3 inch
Driver IC: SH1106
Power supply: DC 3.3V~5V
Operating temperature: -20~70’C
Application: smart watch, MP3, thermometer, instruments, DIY projects, etc.
Librería Ubidots Ethernet
ubidots-arduino-ethernet-master
Sensor DHT11
Circuito
Instalación librería para arduino
Para subir datos a ubidots con nuestra placa arduino y ethernet, deberemos instalar esta librería.
Pasos para subir datos a Ubidots
Nos dirigiremos a dispositivos y click en “dispositivos”.
Click en “add new device”.
Click en “Ethernet” y luego en “Blank”.
Y escribimos un nombre para nuestro dispositivo, y lo creamos con este botón.
Hacemos click en el dispositivo.
La nombramos según la etiqueta que le pusimos en el código fuente, para datos de temperatura.
Agregamos otra variable “normal”. La nombramos con la otra etiqueta para obtener la humedad.
Y como vemos nuestro dispositivo ya tiene dos variables distintas.
Y vamos a “agregar nuevo witget”. Elegimos “Thermometer”.
Agregamos una variable.
Y en “Label” le ponemos el mismo nombre de la etiqueta que en el código fuente, para la temperatura.
En “nombre” le ponemos un nombre descriptivo, del tipo de datos que vamos a recolectar, aceptamos.
Y hacemos click en el dispositivo creado en este caso “arduino-ethernet”.
Ya podemos ver la temperatura.
Agregamos otro “witget”, en este caso es un “Line Chart”.
En “Label” ponemos la misma etiqueta.
En “Nombre” ponemos un nombre descriptivo. Aceptamos los cambios.
Turno del widget para la humedad. Elegimos “Gauge”.
Agregamos una etiqueta que nos debe coincidir con con la que pusimos en el código fuente de arduino, y también un nombre descriptivo. Los valores máximos y mínimos los dejamos tal cual.
Otro “Line chart” para el histórico de humedad es recomendable agregar, Los pasos para su creación son los mismo que ya vimos.
Podemos acomodar los widget como nos quede más cómodo.
Eventos
Iremos a “Crear un evento”.
Click en “Seleccionar Variable”
Elegimos “Mayor que” para que nos notifique en el caso de un exceso de temperatura.
Y le asignamos el valor máximo antes de una notificación. Podemos poner que tiempo puede permanecer en ese valor antes del envío de la notificación.
Acá podemos elegir que tipo de notificación deseamos recibir.
Si elegimos, por ejemplo, notificación por correo electrónico, agregamos la dirección donde recibiremos la alerta.
También podemos personalizar el mensaje, según lo que nos convenga.
Y en “default token” hacemos click en “Click to show”, y copiamos el token que debemos agregar a nuestro código fuente.
También podemos agregar, modificar y borrar otros token.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
VIDEOS RECOMENDADO