Sommario:

Sistema di informazione sulla disponibilità dei posti in treno - FGC: 8 passaggi
Sistema di informazione sulla disponibilità dei posti in treno - FGC: 8 passaggi

Video: Sistema di informazione sulla disponibilità dei posti in treno - FGC: 8 passaggi

Video: Sistema di informazione sulla disponibilità dei posti in treno - FGC: 8 passaggi
Video: [S.S LAZIO: LAZIALISSIMI NOI 24/01/2024] ARRIVERà QUALCUNO DAL MERCATO? 2024, Novembre
Anonim
Sistema di informazione sulla disponibilità dei posti in treno - FGC
Sistema di informazione sulla disponibilità dei posti in treno - FGC

Questo progetto si basa sulla realizzazione, su scala, di un treno che permetta alle persone che si trovano in stazione di sapere quali posti sono liberi. Per realizzare il prototipo viene utilizzato il software Arduino UNO insieme al Processing per la parte grafica.

Questo concetto permetterebbe di rivoluzionare il mondo del trasporto pubblico, in quanto ottimizzerebbe al massimo tutti i posti del treno, garantendo l'utilizzo di tutti i vagoni, insieme alla possibilità di raccogliere dati e realizzare studi accurati, in seguito Su.

Passaggio 1: progettare il modello 3D

Progetta modello 3D
Progetta modello 3D

Prima di tutto abbiamo fatto una ricerca completa sui modelli di treno. Con tutte le informazioni raccolte, è stato scelto il treno GTW (prodotto da Stadler Rail) utilizzato su FGC (Ferrocarrils de la Generalitat de Catalunya).

Successivamente è stato progettato con il software 3D PTC Creo il modello per la successiva stampa 3D.

Passaggio 2: stampa del modello 3D e delle finiture

Stampa di modelli 3D e finiture
Stampa di modelli 3D e finiture

Una volta progettato il treno, si passa alla stampa 3D. Una volta stampato, il pezzo deve essere lucidato per ottenere una superficie liscia.

Questo progetto può essere realizzato anche con modelli di treno esistenti.

Una volta stampate, vengono date le finiture finali.

Passaggio 3: componenti

Componenti
Componenti

Per lo sviluppo di questo progetto sono necessari i seguenti componenti:

- FSR 0.04-4.5LBS (sensore di pressione).

- Resistori da 1,1K ohm

Passaggio 4: codifica (Arduino e elaborazione)

Codifica (Arduino & Elaborazione)
Codifica (Arduino & Elaborazione)
Codifica (Arduino & Elaborazione)
Codifica (Arduino & Elaborazione)
Codifica (Arduino & Elaborazione)
Codifica (Arduino & Elaborazione)

Ora è il momento di scrivere il codice Arduino che consentirà ai sensori di inviare un segnale al software di elaborazione che trasmetterà le informazioni graficamente.

Come sensori abbiamo 4 sensori di pressione per arduino che variano la sua resistenza in base alla forza che viene loro applicata. Quindi lo scopo è sfruttare il segnale inviato dai sensori (quando i passeggeri si siedono) per cambiare le schermate grafiche in Processing.

Quindi, creiamo la parte grafica in cui abbiamo preso in considerazione il design grafico dei Ferrocarrils de la Generalitat de Catalunya, per emulare la realtà nel miglior modo possibile.

Nell'elaborazione è stato scritto un codice che si collega direttamente al software arduino, in questo modo, ogni volta che qualcuno si siede su un sedile, cambia colore, permettendo all'utente in banchina di conoscere in tempo reale la disponibilità dei posti del treno.

Qui puoi vedere la codifica

ARDUINO:

int pot = A0; // Collega il pin centrale del pot a questo pinint pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1;// variabile per memorizzare i valori del piatto;

int lezione2;int lezione3; int lezione4;

void setup(){ //inizializza le comunicazioni seriali a una velocità di 9600 baud Serial.begin(9600); }

void loop() { String s = ""; // //Legir sensore1 lezione1 = analogRead(pot); // lectura il valore analogico if (lectura1 > 10) { s = "1"; ritardo(100); } else { s = "0"; ritardo(100); } Serial.println(s);

}

IN LAVORAZIONE:

import processing.serial.*; // questa libreria gestisce la conversazione seriale String val=""; PImmagine s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; myPort seriale; // Crea oggetto dalla classe Serial

void setup()// viene eseguito solo una volta{ fullScreen(); background(0);// impostando il colore di sfondo su nero myPort = new Serial(this, "COM5", 9600);// dando i parametri all'oggetto di classe seriale, metti la com a cui è connesso il tuo arduino e il baud rate

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

void serialEvent(Serial myPort)// ogni volta che si verifica un evento seriale, viene eseguito{ val = myPort.readStringUntil('\n'); //assicurati che i nostri dati non siano vuoti prima di continuare if (val != null) { //trim spazi bianchi e caratteri di formattazione (come ritorno a capo) val = trim(val); println(val); } }

Passaggio 5: circuito

Circuito
Circuito

Dopo tutta la programmazione, è il momento di collegare tutti i sensori con la scheda Arduino UNO.

I sensori sono posti su 4 sedi (che verranno poi coperte da un telo) e saldati a cavi che vanno direttamente alla scheda madre di Arduino UNO. Il segnale ricevuto sulla scheda viene inviato ad un computer collegato tramite USB che invia le informazioni a Processing in tempo reale, modificando il colore della seduta.

Puoi vedere uno schema delle connessioni.

Passaggio 6: test del prototipo

Una volta che il codice è stato caricato sulla scheda arduino e il programma di elaborazione e arduino è stato attivato, i sensori vengono testati. Sullo schermo vedrai le variazioni dei posti dovute al cambio delle immagini sul display che informano sui posti occupati e n.

Passaggio 7: vero mock-up

vero mock-up
vero mock-up
vero mock-up
vero mock-up
vero mock-up
vero mock-up
vero mock-up
vero mock-up

La vera applicazione cercherebbe di installarlo sui treni e sulle piattaforme della rete FGC per servire i viaggiatori.

Passaggio 8: DIVERTITI

GODERE!
GODERE!
GODERE!
GODERE!

Hai finalmente realizzato un Force Sensor Train (prototipo) che consente all'utente sulla piattaforma del treno di sapere quale posto è disponibile in tempo reale.

BENVENUTO NEL FUTURO!

Progetto realizzato da Marc Godayol & Federico Domenech

Consigliato: