Sommario:
- Passaggio 1: progettare il modello 3D
- Passaggio 2: stampa del modello 3D e delle finiture
- Passaggio 3: componenti
- Passaggio 4: codifica (Arduino e elaborazione)
- Passaggio 5: circuito
- Passaggio 6: test del prototipo
- Passaggio 7: vero mock-up
- Passaggio 8: DIVERTITI
Video: Sistema di informazione sulla disponibilità dei posti in treno - FGC: 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
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
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
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
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)
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
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
La vera applicazione cercherebbe di installarlo sui treni e sulle piattaforme della rete FGC per servire i viaggiatori.
Passaggio 8: DIVERTITI
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:
Saldatura dei fili ai fili - Nozioni di base sulla saldatura: 11 passaggi
Saldatura dei fili ai fili | Nozioni di base sulla saldatura: per questo Instructable, parlerò dei modi comuni per saldare i fili ad altri fili. Suppongo che tu abbia già verificato i primi 2 Instructables per la mia serie di basi di saldatura. Se non hai controllato i miei Instructables sull'uso
Smart Watchz con rilevamento dei sintomi della corona e registrazione dei dati: 10 passaggi
Smart Watchz con rilevamento dei sintomi della corona e registrazione dei dati: questo è uno smartwatch con rilevamento dei sintomi della corona che utilizza LM35 e accelerometro con registrazione dei dati sul server. Rtc viene utilizzato per mostrare l'ora e sincronizzarsi con il telefono e utilizzarlo per la registrazione dei dati. Esp32 è usato come un cervello con controller corteccia con Blue
Programma MicroPython: aggiornamento dei dati sulla malattia da coronavirus (COVID-19) in tempo reale: 10 passaggi (con immagini)
Programma MicroPython: aggiornamento dei dati sulla malattia da coronavirus (COVID-19) in tempo reale: nelle ultime settimane, il numero di casi confermati di malattia da coronavirus (COVID 19) in tutto il mondo ha superato i 100.000 e l'Organizzazione mondiale della sanità (OMS) ha dichiarato nuovo focolaio di polmonite da coronavirus per essere una pandemia globale. Io ero molto
SUGGERIMENTI PER LA RISOLUZIONE DEI PROBLEMI DEI SENSORI ATLAS: 7 passaggi
SUGGERIMENTI PER LA RISOLUZIONE DEI PROBLEMI DEI SENSORI ATLAS: Questa documentazione mira a fornire alcune informazioni chiave che consentiranno il corretto utilizzo e le prestazioni dei sensori Atlas Scientific. Può aiutare con il debug poiché alcune delle aree su cui si concentrano sono problemi comuni riscontrati dagli utenti. È
Sistema di sedili del treno: 4 passaggi (con immagini)
Train Seat System: Oggi abbiamo realizzato un sistema che può essere implementato nei sedili dei treni. Abbiamo dovuto trovare un fastidio e trovare una soluzione. Abbiamo deciso di creare un sistema che ti dice se un posto è disponibile nel carrello del treno in cui ti trovi attualmente. Niente è mo