Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
INSTITUTO POLITÉCNICO NACIONAL Unidad Profesional Interdisciplinaria de ingeniería campus coahuila DISEÑO DE SISTEMAS DIGITALES Tercer semestre de IIA grupo 01 Profesor: Jesus Alvares Proyecto: Carteles Led’s con mensajes programables Equipo 3: ● GLORIA ARISBETH ALVARADO GUZMAN ● ÁNGEL DEHESA NIEVES ● IBRAHIM ABRAHAM HERNANDEZ LUCIO ● DIEGO OMAR MATIAS CRUZ ● DANIELA MENDOZA BEDOLLA ● SABRINA MICHAUS GUTIERREZ Introducción Nuestro trabajo se enfoca en la elaboración de un proyecto que nos ayude a comprender y practicar el uso de nuestra tarjeta arduino usando los conocimientos que previamente adquirimos, por ello nos damos a la tarea de investigar cómo podemos conectar una serie de leds que podamos controlar desde una página web que es accesible desde cualquier dispositivo conectado a internet. Creando así mensajes programables por un usuario, de manera sencilla, en un determinado orden. Estado del arte Existen muchos proyectos similares a nuestro prototipo donde normalmente hemos encontrado ideas similares a la nuestra en pequeños carteles luminosos de uso comercial o personal en autos, estos son fáciles de conseguir en paginas como amazon o mercado libre, como : Flexible Panel Led Publicidad Exterior, Personalizado Rotulo Luminoso Led, Letrero Led Programable para Auto, Pantalla Led De Texto Tablero De Pantalla Led Bluetooth RGB-controlado con La Aplicación Gracias a esta competencia comercial conocemos el producto y el precio que estos deben de tener, sabemos que las ventas en internet de este cartel dan un mayor alcance al público de este prototipo. Nuestra innovación se enfoca en desarrollar la producción de carteles que sean usados para el tránsito, por ende se necesitan carteles grandes y visibles para ser usados en carreteras de tránsito preferentemente lento (como en el tráfico de una ciudad) para que los mensajes legibles sean poco peligrosos para los conductores, con el objetivo de que no sean grandes distractores. Sin embargo el prototipo a entregar se espera de una tamaño pequeño y práctico, que sea demostrable su uso en las instalaciones de la UPIIC con sus mensajes programables. Objetivo Lo que se busca es que se cree una manera más sencilla de crear ya sean señales de tránsito o advertencias para la sociedad que sean sencillas de ver y leer sin interrumpir alguna tarea que este esté haciendo, así con el fin de ayudar a reducir accidentes o incluso dar indicaciones. Usos prácticos El proyecto está visualizado para poderlo utilizar en posters, autopistas, carteles de publicidad, de igual manera cumpliendo su función pensada desde un inicio. En este caso nuestro proyecto se impartirá en UPIIC como cartel principal dando un saludo hacia los futuros estudiantes que lleguen a la institución al igual que a docentes y estudiantes que ya estén estudiando en el campus. Especificaciones de hardware utilizado Computadora Las especificaciones del equipo de cómputo que se utilizó para el desarrollo del proyecto fueron las siguientes: Estilo Ryzen 5 5500U | Touch screen Marca Asus Series TM420UA-DS52T Tamaño de la pantalla 14 Color Negro a medida Tamaño del disco duro 512 GB Modelo de CPU AMD Ryzen 7 Tamaño de la memoria RAM instalada 8 GB Sistema operativo Windows 10 Home Descripción de la tarjeta gráfica Integrada Coprocesador de gráficos AMD Radeon Graphics Especificaciones de SW utilizado Windows 10 home ● Las características de seguridad integradas incluyen protección antivirus, de firewall y de Internet. ● Digitalice su cara o huella digital con Windows Hello para desbloquear su equipo de forma rápida, segura y sin necesidad de contraseñas.* ● El Asistente de concentración le permite bloquear las notificaciones, los sonidos y las alertas para obtener un tiempo de trabajo libre de distracciones. ● La escala de tiempo proporciona una forma rápida y sencilla de desplazarse por los documentos, aplicaciones y sitios web más recientes. ● Microsoft Photos es una forma sencilla de organizar, buscar, editar y compartir sus fotos y vídeos. ● Transmita en directo de forma instantánea partidas, realiza grabaciones de pantalla y controla la configuración de audio individual con la barra de juegos. Programación del arduino Cuando hablamos de programación en el entorno educativo hay dos plataformas que surgen rápidamente en la conversación: Arduino y Scratch, cada una con sus beneficios en el aprendizaje escolar. Editor web de Arduino El editor web de Arduino es un sustituto online del IDE. Sirve para compilar sketches y cargarlos a las placas compatibles con Arduino, sin instalar el IDE en la computadora. Solamente debemos instalar un plugin que se hará cargo de la conexión con la placa de Arduino. Nube Arduino IoT Tenemos varias maneras de monitorizar los datos que captamos a través de los sensores. La más básica y que requiere tener el dispositivo conectado a un ordenador es a través del monitor serie. Si tenemos algún display como un LCD o https://twitter.com/arduino una pantalla TFT, ya podremos desconectar el Arduino del ordenador y llevarlo a cualquier sitio. Pero existe una tercera opción, quizás la más idónea, para poder ver los datos y la información, utilizar una plataforma para proyectos de IoT. Diagrama de conexiones ● Encontramos que así es como visualizamos nuestros focos led en nuestros carteles: ● Este es el diagrama de coneccion de la serie de led’s con nuestro Arduino Código comentado #include <WiFiNINA.h> char ssid[] = "TP-Link_71EA"; // Colocamos el nombre de nuestra red entre las " " char pass[] = "65608333"; // Colocamos la contrasña entre las " " int keyIndex = 0; // Su número de índice de clave de red (necesario solo para WEP) int status = WL_IDLE_STATUS; // Estado de conexion WiFiServer server(80); //server socket WiFiClient client = server.available(); int ledPin_0 = 0; // Nombrando como ledPin_N a el numero de pin que corresponde int ledPin_1 = 1; int ledPin_2 = 2; int ledPin_3 = 3; int ledPin_4 = 4; int ledPin_5 = 5; int ledPin_6 = 6; int ledPin_7 = 7; int ledPin_8 = 8; int ledPin_9 = 9; int ledPin_10 = 10; int ledPin_11 = 11; int ledPin_12 = 12; int ledPin_13 = 13; int ledPin_14 = 14; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(ledPin_0, OUTPUT); // Declarando lo que va a hacer cada pin en este caso una salida pinMode(ledPin_1, OUTPUT); pinMode(ledPin_2, OUTPUT); pinMode(ledPin_3, OUTPUT); pinMode(ledPin_4, OUTPUT); pinMode(ledPin_5, OUTPUT); pinMode(ledPin_6, OUTPUT); pinMode(ledPin_7, OUTPUT); pinMode(ledPin_8, OUTPUT); pinMode(ledPin_9, OUTPUT); pinMode(ledPin_10, OUTPUT); pinMode(ledPin_11, OUTPUT); pinMode(ledPin_12, OUTPUT); pinMode(ledPin_13, OUTPUT); pinMode(ledPin_14, OUTPUT); pinMode(A0, OUTPUT); pinMode(A1, OUTPUT); pinMode(A2, OUTPUT); pinMode(A3, OUTPUT); pinMode(A4, OUTPUT); while (!Serial) ; enable_WiFi(); connect_WiFi(); server.begin(); printWifiStatus(); } void loop() { // Introduce tu mensaje principal para poder hacer la repetición client = server.available(); if (client) { printWEB(); } } void apagar (){ //Funcion para apagar todos los leds digitalWrite(ledPin_0, LOW); digitalWrite(ledPin_1, LOW); digitalWrite(ledPin_2, LOW); digitalWrite(ledPin_3, LOW); digitalWrite(ledPin_4, LOW); digitalWrite(ledPin_5, LOW); digitalWrite(ledPin_6, LOW); digitalWrite(ledPin_7, LOW); digitalWrite(ledPin_8, LOW); digitalWrite(ledPin_9, LOW); digitalWrite(ledPin_10, LOW); digitalWrite(ledPin_11, LOW); digitalWrite(ledPin_12, LOW); digitalWrite(ledPin_13, LOW); digitalWrite(ledPin_14, LOW); digitalWrite(A0, LOW); digitalWrite(A1, LOW); digitalWrite(A2, LOW); digitalWrite(A3, LOW); digitalWrite(A4, LOW); } void H(){ //Letra H en el circuito digitalWrite(ledPin_0, HIGH); digitalWrite(ledPin_3, HIGH); digitalWrite(ledPin_4, HIGH); digitalWrite(ledPin_7, HIGH); digitalWrite(ledPin_8, HIGH); digitalWrite(ledPin_9, HIGH); digitalWrite(ledPin_10, HIGH); digitalWrite(ledPin_11, HIGH); digitalWrite(ledPin_12, HIGH);digitalWrite(A0, HIGH); digitalWrite(A1, HIGH); digitalWrite(A4, HIGH); delay(2000); // tiempo en que se mantienen encendidos los leds 2s apagar (); //Llamamos a la funcion apagar para que reiniciar los leds } void O(){ //Letra O en el circuito digitalWrite(ledPin_1, HIGH); digitalWrite(ledPin_2, HIGH); digitalWrite(ledPin_4, HIGH); digitalWrite(ledPin_7, HIGH); digitalWrite(ledPin_8, HIGH); digitalWrite(ledPin_11, HIGH); digitalWrite(ledPin_12, HIGH); digitalWrite(A0, HIGH); digitalWrite(A2, HIGH); digitalWrite(A3, HIGH); delay(2000); // tiempo en que se mantienen encendidos los leds 2s apagar (); //Llamamos a la funcion apagar para que reiniciar los leds } void L(){ //Letra L en el circuito digitalWrite(ledPin_0, HIGH); digitalWrite(ledPin_4, HIGH); digitalWrite(ledPin_8, HIGH); digitalWrite(ledPin_12, HIGH); digitalWrite(A1, HIGH); digitalWrite(A2, HIGH); digitalWrite(A3, HIGH); digitalWrite(A4, HIGH); delay(2000); // tiempo en que se mantienen encendidos los leds 2s apagar (); //Llamamos a la funcion apagar para que reiniciar los leds } void A(){ //Letra H en el circuito digitalWrite(ledPin_1, HIGH); digitalWrite(ledPin_2, HIGH); digitalWrite(ledPin_4, HIGH); digitalWrite(ledPin_7, HIGH); digitalWrite(ledPin_8, HIGH); digitalWrite(ledPin_9, HIGH); digitalWrite(ledPin_10, HIGH); digitalWrite(ledPin_11, HIGH); digitalWrite(ledPin_12, HIGH); digitalWrite(A0, HIGH); digitalWrite(A1, HIGH); digitalWrite(A4, HIGH); delay(2000); // tiempo en que se mantienen encendidos los leds 2s apagar (); //Llamamos a la funcion apagar para que reiniciar los leds } void hola(){ //Funcion para que se enciendan las luces de mandera consecutiva y escriban "HOLA" en los leds H(); O(); L(); A(); } void printWifiStatus() { // imprime el SSID de la red a la que estás conectado: Serial.print("SSID: "); Serial.println(WiFi.SSID()); // imprime la dirección IP de tu tablero: IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip); // imprime la señal recibida long rssi = WiFi.RSSI(); Serial.print("signal strength (RSSI):"); Serial.print(rssi); Serial.println(" dBm"); Serial.print("To see this page in action, open a browser to http://"); Serial.println(ip); } void enable_WiFi() { // verificando la conexión con el WiFi: if (WiFi.status() == WL_NO_MODULE) { Serial.println("Communication with WiFi module failed!"); // no continuar while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < "1.0.0") { Serial.println("Please upgrade the firmware"); } } void connect_WiFi() { // Te conecta a la red Wifi: while (status != WL_CONNECTED) { Serial.print("Attempting to connect to SSID: "); Serial.println(ssid); // Indica a que red conectarse dependiendo si se usa una red local status = WiFi.begin(ssid, pass); // Tiempo que el programa pide de espera para poder ejecutarse delay(10000); } } void printWEB() { if (client) { // sí en caso de que se tenga cliente Serial.println("new client"); // se imprimira un mensaje con el puerto serie diciendo "cliente nuevo" String currentLine = ""; // hace una cadena para contener los datos entrantes del cliente while (client.connected()) { // Bucle mientras el cliente está conectado if (client.available()) { // Si hay datos disponibles del cliente char c = client.read(); // leer un byte, entonces Serial.write(c); // imprimirlo en el monitor serial if (c == '\n') { // si el byte es un carácter de nueva línea // si la línea actual está en blanco, tiene dos caracteres de nueva línea seguidos. // ese es el final de la solicitud HTTP del cliente, así que envíe una respuesta: if (currentLine.length() == 0) { // Los encabezados HTTP siempre comienzan con un código de respuesta (por ejemplo, HTTP/1.1 200 OK) // y un tipo de contenido para que el cliente sepa lo que viene, luego una línea en blanco: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); //crear los botones client.print("Click <a href=\"/D\">here</a> para Hola <br><br><br>"); int randomReading = analogRead(A1); client.print("Random reading from analog pin: "); client.print(randomReading); // El HTTP se hace el termino de la acción con un espacio en blanco client.println(); // se hara un cierre si es que el ciclo no se llega a cumplir o este se cumple dependiendo de la informacióin recaudada break; } else { // se optiene una linea nueva como actual currentLine = ""; } } else if (c != '\r') { // Si se tiene mas de un caracter entonces este te lo regresa currentLine += c; // se agrega a una nueva línea } if (currentLine.endsWith("GET /D")) { hola(); //Mandamos a llamar a la funcion HOLA } } } } client.stop(); Serial.println("client disconnected"); } Imagen de prototipo (desglosando cada parte de este) ● Armamos nuestro prototipo junto con la tarjeta arduino para conectar nuestro circuito. ● Al hacer clic en esta página podemos encender los led en el orden adecuado para que diga el mensaje de “Hola” ● Nuestro proyecto soldado en un cartel es el que mostrará el mensaje de hola sin embargo es la única parte que falta. ● En las siguientes imágenes “demostrativas del funcionamiento del prototipo” podemos observar cómo somos capaces de controlar los leds con el arduino. Imágenes demostrativas del funcionamiento del prototipo Manual o instrucciones de uso y/o armado 1. Para poder acceder a nuestro trabajo necesitas ingresar al link proporcionado por nuestro equipo de trabajo. 2. Esta es la página que nos direccionará el link, aquí se indicará el puerto de link al que se dirige. 3. Nuestro cartel ilumina la secuencia deseada como puede notarse en la imagen. 4. Esto es todo tan fácil como “Hacer un CLIC”
Compartir