Tabla de contenido:
- Paso 1: Diseño del modelo 3D
- Paso 2: Impresión de modelos y acabados en 3D
- Paso 3: componentes
- Paso 4: Codificación (Arduino y procesamiento)
- Paso 5: circuito
- Paso 6: Prueba de prototipo
- Paso 7: maqueta real
- Paso 8: ¡DISFRUTA
Video: Sistema de información de disponibilidad de asientos de tren - FGC: 8 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
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
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
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
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)
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
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
La aplicación real intentaría instalarla en trenes y andenes de la red FGC para dar servicio a los viajeros.
Paso 8: ¡DISFRUTA
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:
Envío de información con Helium Atom: 3 pasos
Envío de información con Helium Atom: Helium es una plataforma inalámbrica completa para Internet de las cosas, que proporciona hardware integrado, interfaz de software y una infraestructura integrada para conectar objetos a Internet de forma fácil, eficiente y segura. Hay dos componentes de hardware
Medición de temperatura automática e información por voz: 5 pasos (con imágenes)
Medición de temperatura automática e información de voz: Recientemente, todo el mundo está luchando contra el virus Covid19. La primera comprobación de personas afectadas (o sospechosas de estar afectadas) es medir la temperatura corporal. Así que este proyecto está hecho a un modelo que puede medir la temperatura corporal automáticamente e informar por vo
CovBot: un chatbot basado en WhatsApp para información de COVID 19 y más: 7 pasos
CovBot: un chatbot basado en WhatsApp para información de COVID 19 y más: CoVbot es un chatbot simple e intuitivo basado en Whatsapp. La característica principal del bot es: Puede brindarle el estado más reciente de COVID-19 en el país de su elección de una manera simple e intuitiva. Además, el bot puede sugerir actividades divertidas para hacer AT H
Plano de asientos RFID: 7 pasos
Plan de asientos RFID: Quería hacer algo especial para el gráfico de las mesas de mi boda y pensé que era una buena manera de hacerlo personal, ya que refleja mi amor (adicción) por los proyectos electrónicos. Así que el plan era hacer una gran madera panel con el plano de la habitación en
Sistema de asientos de tren: 4 pasos (con imágenes)
Sistema de asientos de tren: hoy creamos un sistema que se puede implementar en asientos de tren. Tuvimos que encontrar una molestia y encontrar una solución. Decidimos que crearíamos un sistema que le diga si hay un asiento disponible en el carro del tren en el que se encuentra actualmente. No hay nada más