Taula de continguts:

Sistema d’informació de disponibilitat de seients de trens - FGC: 8 passos
Sistema d’informació de disponibilitat de seients de trens - FGC: 8 passos

Vídeo: Sistema d’informació de disponibilitat de seients de trens - FGC: 8 passos

Vídeo: Sistema d’informació de disponibilitat de seients de trens - FGC: 8 passos
Vídeo: Представлен новый гибрид Toyota Land Hopper 2025 года: посмотрите, что нового! 2024, Juliol
Anonim
Sistema d'informació sobre disponibilitat de seients de trens - FGC
Sistema d'informació sobre disponibilitat de seients de trens - FGC

Aquest projecte es basa en la implementació, a escala, d’un tren que permet a les persones que estan a l’estació saber quines places són lliures. Per dur a terme el prototip, s’utilitza el programari Arduino UNO juntament amb el processament de la part gràfica.

Aquest concepte permetria revolucionar el món del transport públic, ja que optimitzaria al màxim totes les places del tren, garantint l’ús de tots els vagons, juntament amb la possibilitat de recollir dades i realitzar estudis que siguin precisos, posteriorment. encès.

Pas 1: dissenyar el model 3D

Disseny de models 3D
Disseny de models 3D

Primer de tot, hem fet una investigació completa sobre models de trens. Amb tota la informació recollida, s’ha escollit el tren GTW (produït per Stadler Rail) utilitzat a FGC (Ferrocarrils de la Generalitat de Catalunya).

Posteriorment es va dissenyar amb el programari 3D PTC Creo el model per a la impressió 3D posterior.

Pas 2: Impressió de models i acabats 3D

Impressió de models i acabats 3D
Impressió de models i acabats 3D

Un cop dissenyat el tren, es passa a la impressió 3D. Un cop impresa la peça, s’ha de polir per aconseguir una superfície llisa.

Aquest projecte també es pot fer amb models de tren existents.

Un cop imprès, es donen els acabats finals.

Pas 3: components

Components
Components

Per al desenvolupament d’aquest projecte són necessaris els components següents:

- FSR 0,04-4,5 LBS (sensor de pressió).

- Resistències d’1,1K ohms

Pas 4: Codificació (Arduino i processament)

Codificació (Arduino i processament)
Codificació (Arduino i processament)
Codificació (Arduino i processament)
Codificació (Arduino i processament)
Codificació (Arduino i processament)
Codificació (Arduino i processament)

Ara és hora d’escriure el codi Arduino que permetrà als sensors enviar un signe al programari Processing que transmetrà la informació gràficament.

Com a sensors tenim 4 sensors de pressió per a arduino que varien la seva resistència segons la força que se'ls aplica. Per tant, l’objectiu és aprofitar el senyal enviat pels sensors (quan els passatgers s’asseuen) per canviar les pantalles gràfiques de Processament.

A continuació, creem la part gràfica en què hem tingut en compte el disseny gràfic dels Ferrocarrils de la Generalitat de Catalunya, per emular la realitat de la millor manera possible.

En processar s’ha escrit un codi que està directament connectat al programari arduino, d’aquesta manera, cada vegada que algú s’asseu en un seient, canvia de color, cosa que permet a l’usuari de l’andana del tren conèixer en temps real la disponibilitat de seients del tren.

Aquí podeu veure la codificació

ARDUINO:

int pot = A0; // Connecteu el passador central del pot a aquest pinint pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // variable per emmagatzemar els valors del pot;

int lectura2; int lectura3; int lectura4;

void setup () {// inicialitza les comunicacions en sèrie a una velocitat de transmissió de 9600 Serial.begin (9600); }

bucle buit () {Cadena s = ""; // // Llegir sensor1 lectura1 = analogRead (pot); // lectura del valor analògic if (lectura1> 10) {s = "1"; retard (100); } else {s = "0"; retard (100); } Serial.println (s);

}

TRACTAMENT:

processament de la importació. sèrie. *; // aquesta biblioteca gestiona la conversa en sèrie String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; MyPort en sèrie; // Crea un objecte a partir de la classe Serial

void setup () // només s'executa una vegada {fullScreen (); background (0); // configuració del color de fons a negre myPort = new Serial (this, "COM5", 9600); // donant paràmetres a l'objecte de classe serial, poseu la com a la qual està connectat el vostre arduino i la velocitat en bauds

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 = retallar (val);} void draw () {if (val! = nul) {

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

void serialEvent (Serial myPort) // sempre que succeeix un esdeveniment en sèrie, s'executa {val = myPort.readStringUntil ('\ n'); // assegureu-vos que les nostres dades no estiguin buides abans de continuar si (val! = nul) {// retalla l'espai en blanc i els caràcters de format (com ara retorn de carro) val = retalla (val); println (val); }}

Pas 5: Circuit

Circuit
Circuit

Després de tota la programació, és hora de connectar tots els sensors amb la placa Arduino UNO.

Els sensors es col·loquen en 4 seients (que posteriorment seran coberts per un drap) i soldats a cables que van directament a la placa base d'Arduino UNO. El senyal rebut al tauler s’envia a un ordinador connectat mitjançant USB que envia la informació a Processing en temps real, canviant el color del seient.

Podeu veure un esquema de les connexions.

Pas 6: Prova de prototipus

Un cop s'ha carregat el codi a la placa arduino i s'ha activat el programa de processament i arduino, es proven els sensors. A la pantalla veureu els canvis als seients a causa del canvi d’imatges a la pantalla que informen sobre els seients ocupats i el núm.

Pas 7: maqueta real

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

L’aplicació real intentaria instal·lar-la als trens i andanes de la xarxa FGC per atendre els viatgers.

Pas 8: GAUDEIX

GAUDEIX!
GAUDEIX!
GAUDEIX!
GAUDEIX!

Finalment heu creat un tren de sensor de força (prototip) que permet a l’usuari a l’andana del tren saber quin seient està disponible en temps real.

BENVINGUTS AL FUTUR

Projecte realitzat per Marc Godayol i Federico Domenech

Recomanat: