Tabla de contenido:

Sistema de información de disponibilidad de asientos de tren - FGC: 8 pasos
Sistema de información de disponibilidad de asientos de tren - FGC: 8 pasos

Video: Sistema de información de disponibilidad de asientos de tren - FGC: 8 pasos

Video: Sistema de información de disponibilidad de asientos de tren - FGC: 8 pasos
Video: EJERCICIOS DE PROGRAMACIÓN LINEAL RESUELTOS 2024, Noviembre
Anonim
Sistema de información de disponibilidad de asientos de tren - FGC
Sistema de información de disponibilidad de asientos de tren - FGC

Este proyecto se basa en la implementación, a escala, de un tren que permita a las personas que se encuentran en la estación saber qué asientos están libres. Para realizar el prototipo se utiliza el software Arduino UNO junto con el Processing para la parte gráfica.

Este concepto permitiría revolucionar el mundo del transporte público, ya que optimizaría al máximo todos los asientos del tren, asegurando el uso de todos los vagones, junto con la posibilidad de recopilar datos y realizar estudios más precisos, posteriormente. sobre.

Paso 1: Diseño del modelo 3D

Diseño de modelo 3D
Diseño de modelo 3D

En primer lugar, hemos realizado una investigación exhaustiva sobre modelos de trenes. Con toda la información recogida se ha elegido el tren GTW (producido por Stadler Rail) utilizado en FGC (Ferrocarrils de la Generalitat de Catalunya).

Posteriormente se diseñó con el software 3D PTC Creo el modelo para la posterior impresión 3D.

Paso 2: Impresión de modelos y acabados en 3D

Impresión de modelos y acabados 3D
Impresión de modelos y acabados 3D

Una vez diseñado el tren, se pasa a la impresión 3D. Una vez impresa la pieza, se debe pulir para lograr una superficie lisa.

Este proyecto también se puede realizar con modelos de trenes existentes.

Una vez impreso, se dan los acabados definitivos.

Paso 3: componentes

Componentes
Componentes

Para el desarrollo de este proyecto se necesitan los siguientes componentes:

- FSR 0.04-4.5LBS (sensor de presión).

- Resistencias de 1.1K ohmios

Paso 4: Codificación (Arduino y procesamiento)

Codificación (Arduino y procesamiento)
Codificación (Arduino y procesamiento)
Codificación (Arduino y procesamiento)
Codificación (Arduino y procesamiento)
Codificación (Arduino y procesamiento)
Codificación (Arduino y procesamiento)

Ahora es el momento de escribir el código Arduino que permitirá a los sensores enviar una señal al software de procesamiento que transmitirá la información de forma gráfica.

Como sensores tenemos 4 sensores de presión para arduino que varían su resistencia según la fuerza que se les aplique. Así que el objetivo es aprovechar la señal que envían los sensores (cuando los pasajeros se sientan) para cambiar las pantallas gráficas en Processing.

A continuación, creamos la parte gráfica en la que hemos tenido en cuenta el diseño gráfico de los Ferrocarrils de la Generalitat de Catalunya, para emular la realidad de la mejor forma posible.

En el procesamiento se ha escrito un código que se conecta directamente al software arduino, de esta manera, cada vez que alguien se sienta en un asiento cambia de color, permitiendo al usuario en la plataforma del tren conocer en tiempo real la disponibilidad de asientos del tren..

Aquí puedes ver la codificación

ARDUINO:

int pot = A0; // Conecta el pin del medio de la olla a este pinint pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // variable para almacenar los valores del bote;

int lectura2; int lectura3; int lectura4;

void setup () {// inicializar las comunicaciones en serie a una velocidad de 9600 baudios Serial.begin (9600); }

bucle vacío () {String s = ""; // // Llegir sensor1 lectura1 = analogRead (pot); // lectura del valor analógico if (lectura1> 10) {s = "1"; retraso (100); } else {s = "0"; retraso (100); } Serial.println (s);

}

PROCESANDO:

procesamiento de importación.serie. *; // esta biblioteca maneja la conversación serial String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Serial myPort; // Crear objeto a partir de la clase serial

void setup () // esto se ejecuta solo una vez {fullScreen (); background (0); // establecer el color de fondo en negro myPort = new Serial (this, "COM5", 9600); // dar parámetros al objeto de la clase serial, poner el com al que está conectado su arduino y la velocidad en baudios

s0000 = loadImage ("0000.jpg"); s0001 = loadImage ("0001.jpg"); s0010 = loadImage ("0010.jpg"); s0011 = loadImage ("0011.jpg"); s0100 = loadImage ("0100.jpg"); s0101 = loadImage ("0101.jpg"); s0110 = loadImage ("0110.jpg"); s0111 = loadImage ("0111.jpg"); s1000 = loadImage ("1000.jpg"); s1001 = loadImage ("1001.jpg"); s1010 = loadImage ("1010.jpg"); s1011 = loadImage ("1011.jpg"); s1100 = loadImage ("1100.jpg"); s1101 = loadImage ("1101.jpg"); s1110 = loadImage ("1110.jpg"); s1111 = loadImage ("1111.jpg");

s0000.resize (displayWidth, displayHeight); s0001.resize (displayWidth, displayHeight); s0010.resize (displayWidth, displayHeight); s0011.resize (displayWidth, displayHeight); s0100.resize (displayWidth, displayHeight); s0101.resize (displayWidth, displayHeight); s0110.resize (displayWidth, displayHeight); s0111.resize (displayWidth, displayHeight); s1000.resize (displayWidth, displayHeight); s1001.resize (displayWidth, displayHeight); s1010.resize (displayWidth, displayHeight); s1011.resize (displayWidth, displayHeight); s1100.resize (displayWidth, displayHeight); s1101.resize (displayWidth, displayHeight); s1110.resize (displayWidth, displayHeight); s1111.resize (displayWidth, displayHeight);

val = trim (val);} void draw () {if (val! = null) {

if (val.equals ("0001")) {imagen (s0001, 0, 0); } else if (val.equals ("0010")) {imagen (s0010, 0, 0); } else if (val.equals ("0011")) {imagen (s0011, 0, 0); } else if (val.equals ("0100")) {imagen (s0100, 0, 0); } else if (val.equals ("0101")) {imagen (s0101, 0, 0); } else if (val.equals ("0110")) {imagen (s0110, 0, 0); } else if (val.equals ("0111")) {imagen (s0111, 0, 0); } else if (val.equals ("1000")) {imagen (s1000, 0, 0); } else if (val.equals ("1001")) {imagen (s1001, 0, 0); } else if (val.equals ("1010")) {imagen (s1010, 0, 0); } else if (val.equals ("1011")) {imagen (s1011, 0, 0); } else if (val.equals ("1100")) {imagen (s1100, 0, 0); } else if (val.equals ("1101")) {imagen (s1101, 0, 0); } else if (val.equals ("1110")) {imagen (s1110, 0, 0); } else if (val.equals ("1111")) {imagen (s1111, 0, 0); } else {imagen (s0000, 0, 0); }}}

void serialEvent (Serial myPort) // siempre que ocurre un evento serial, se ejecuta {val = myPort.readStringUntil ('\ n'); // asegúrese de que nuestros datos no estén vacíos antes de continuar if (val! = null) {// recortar los espacios en blanco y los caracteres de formato (como el retorno de carro) val = trim (val); println (val); }}

Paso 5: circuito

Circuito
Circuito

Después de toda la programación, es hora de conectar todos los sensores con la placa Arduino UNO.

Los sensores se colocan en 4 asientos (que luego se cubrirán con un paño) y se sueldan a cables que van directamente a la placa base de Arduino UNO. La señal recibida en la placa se envía a una computadora conectada vía USB que envía la información a Processing en tiempo real, cambiando el color del asiento.

Puede ver un esquema de las conexiones.

Paso 6: Prueba de prototipo

Una vez que se ha cargado el código en la placa arduino y se han encendido el procesamiento y el programa arduino, se prueban los sensores. En la pantalla verá los cambios en los asientos debido al cambio de imágenes en la pantalla informando sobre los asientos ocupados y no.

Paso 7: maqueta real

Maqueta real
Maqueta real
Maqueta real
Maqueta real
Maqueta real
Maqueta real
Maqueta real
Maqueta real

La aplicación real intentaría instalarla en trenes y andenes de la red FGC para dar servicio a los viajeros.

Paso 8: ¡DISFRUTA

¡DISFRUTAR!
¡DISFRUTAR!
¡DISFRUTAR!
¡DISFRUTAR!

Finalmente ha realizado un tren de sensores de fuerza (prototipo) que permite al usuario en la plataforma del tren saber qué asiento está disponible en tiempo real.

¡BIENVENIDO AL FUTURO!

Proyecto realizado por Marc Godayol & Federico Domenech

Recomendado: