Logo Studenta

PROYECTO ESCRITO - Diego Omar Matias Cruz (4)

¡Este material tiene más páginas!

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”

Continuar navegando