Innehållsförteckning:

Tågsäts tillgänglighetsinformationssystem - FGC: 8 steg
Tågsäts tillgänglighetsinformationssystem - FGC: 8 steg

Video: Tågsäts tillgänglighetsinformationssystem - FGC: 8 steg

Video: Tågsäts tillgänglighetsinformationssystem - FGC: 8 steg
Video: Är IT ute? 2024, Juli
Anonim
Tågsäts tillgänglighetsinformationssystem - FGC
Tågsäts tillgänglighetsinformationssystem - FGC

Detta projekt är baserat på implementering, i skala, av ett tåg som gör det möjligt för personerna på stationen att veta vilka platser som är lediga. För att utföra prototypen används Arduino UNO -programvaran tillsammans med bearbetningen för den grafiska delen.

Detta koncept skulle göra det möjligt att revolutionera kollektivtrafikvärlden, eftersom det skulle optimera alla säten i tåget till det maximala, säkerställa användningen av alla vagnar, tillsammans med möjligheten att samla in data och utföra studier som är korrekta, senare på.

Steg 1: Designa 3D -modell

Design 3D -modell
Design 3D -modell

Först och främst har vi gjort en omfattande forskning om tågmodeller. Med all information som samlats in har GTW -tåget (producerat av Stadler Rail) som används på FGC (Ferrocarrils de la Generalitat de Catalunya) valts.

Den designades senare med 3D -programvaran PTC Creo, modellen för efterföljande 3D -utskrift.

Steg 2: Skriva ut 3D -modell och finish

Skriva ut 3D -modell och finish
Skriva ut 3D -modell och finish

När tåget är konstruerat överförs det till 3D -utskrift. När biten är tryckt måste den poleras för att få en slät yta.

Detta projekt kan också göras med befintliga tågmodeller.

När de har skrivits ut ges de slutliga finisherna.

Steg 3: Komponenter

Komponenter
Komponenter

Följande komponenter behövs för utvecklingen av detta projekt:

- FSR 0.04-4.5LBS (trycksensor).

- 1.1K ohm motstånd

Steg 4: Kodning (Arduino och bearbetning)

Kodning (Arduino och bearbetning)
Kodning (Arduino och bearbetning)
Kodning (Arduino och bearbetning)
Kodning (Arduino och bearbetning)
Kodning (Arduino och bearbetning)
Kodning (Arduino och bearbetning)

Nu är det dags att skriva Arduino -koden som låter sensorerna skicka ett tecken till bearbetningsprogramvaran som överför informationen grafiskt.

Som sensorer har vi 4 trycksensorer för arduino som varierar dess motstånd beroende på kraften som appliceras på dem. Så målet är att dra nytta av signalen som skickas av sensorerna (när passagerarna sitter) för att ändra de grafiska skärmarna i Processing.

Sedan skapar vi den grafiska delen där vi har tagit hänsyn till den grafiska utformningen av Ferrocarrils de la Generalitat de Catalunya, för att efterlikna verkligheten på bästa möjliga sätt.

Vid bearbetningen har det skrivits en kod som är direkt ansluten till arduino-programvaran, på detta sätt, varje gång någon sätter sig på ett säte, ändrar det färg, så att användaren på tågplattformen kan veta i realtid hur tåget är tillgängligt.

Här kan du se kodningen

ARDUINO:

int pot = A0; // Anslut potten i mitten till denna pinint pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // variabel för lagring av krukvärdena;

int lectura2; int lectura3; int lectura4;

void setup () {// initiera seriell kommunikation med en 9600 baudhastighet Serial.begin (9600); }

void loop () {String s = ""; // // Llegir sensor1 lectura1 = analogRead (pot); // lectura det analoga värdet if (lectura1> 10) {s = "1"; fördröjning (100); } annat {s = "0"; fördröjning (100); } Serial.println (s);

}

BEHANDLING:

import bearbetning. serie.*; // detta bibliotek hanterar det seriella samtalet String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Seriell myPort; // Skapa objekt från serieklass

void setup () // detta körs bara en gång {fullScreen (); bakgrund (0); // inställning av bakgrundsfärg till svart myPort = new Serial (detta, "COM5", 9600); // ge parametrar till objekt i seriell klass, lägg den kom till vilken din arduino är ansluten och överföringshastigheten

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

void serialEvent (Serial myPort) // när seriell händelse inträffar körs {val = myPort.readStringUntil ('\ n'); // se till att våra data inte är tomma innan du fortsätter om (val! = null) {// trimar blanksteg och formateringstecken (som vagnretur) val = trim (val); println (val); }}

Steg 5: Krets

Krets
Krets

Efter all programmering är det dags att ansluta alla sensorer med Arduino UNO -kortet.

Sensorerna är placerade på 4 säten (som senare kommer att täckas av en trasa) och svetsas till kablar som går direkt till moderkortet till Arduino UNO. Signalen som tas emot på kortet skickas till en dator som är ansluten via USB som skickar informationen till Processing i realtid och ändrar färg på sätet.

Du kan se ett schema över anslutningarna.

Steg 6: Prototyptest

När koden har laddats upp till arduino -kortet och bearbetnings- och arduino -programmet aktiverats testas sensorerna. På skärmen ser du förändringarna i sätena på grund av att bilderna på displayen informerar om de upptagna platserna och nr.

Steg 7: Real Mock-up

Verklig mock-up
Verklig mock-up
Verklig mock-up
Verklig mock-up
Verklig mock-up
Verklig mock-up
Verklig mock-up
Verklig mock-up

Den riktiga applikationen skulle försöka installera den på tåg och plattformar i FGC -nätverket för att betjäna resenärer.

Steg 8: NJUTA

NJUT AV!
NJUT AV!
NJUT AV!
NJUT AV!

Du har äntligen gjort ett Force Sensor Train (prototyp) som låter användaren på tågplattformen veta vilket säte som är tillgängligt i realtid.

VÄLKOMMEN TILL FRAMTIDEN!

Projekt gjord av Marc Godayol & Federico Domenech

Rekommenderad: