Indholdsfortegnelse:

Togsæde tilgængelighed informationssystem - FGC: 8 trin
Togsæde tilgængelighed informationssystem - FGC: 8 trin

Video: Togsæde tilgængelighed informationssystem - FGC: 8 trin

Video: Togsæde tilgængelighed informationssystem - FGC: 8 trin
Video: Riding the Japan's Premium Train Hinotori First Class Seat 2024, Juli
Anonim
Togsæde tilgængelighed informationssystem - FGC
Togsæde tilgængelighed informationssystem - FGC

Dette projekt er baseret på implementering i en skala af et tog, der gør det muligt for folk på stationen at vide, hvilke pladser der er gratis. For at udføre prototypen bruges Arduino UNO -softwaren sammen med Processing for den grafiske del.

Dette koncept ville gøre det muligt at revolutionere verden af offentlig transport, da det ville optimere alle sæder i toget til det maksimale og sikre brugen af alle vogne sammen med muligheden for at indsamle data og udføre nøjagtige undersøgelser senere på.

Trin 1: Design 3D -model

Design 3D -model
Design 3D -model

Først og fremmest har vi foretaget en omfattende undersøgelse af togmodeller. Med alle de indsamlede oplysninger er GTW -toget (produceret af Stadler Rail) brugt på FGC (Ferrocarrils de la Generalitat de Catalunya) blevet valgt.

Det blev senere designet med 3D -softwaren PTC Creo modellen til den efterfølgende 3D -udskrivning.

Trin 2: Udskrivning af 3D -model og finish

Udskrivning af 3D -model og finish
Udskrivning af 3D -model og finish

Når toget er designet, overføres det til 3D -print. Når stykket er trykt, skal det poleres for at opnå en glat overflade.

Dette projekt kan også udføres med eksisterende togmodeller.

Når de er udskrevet, gives de sidste finish.

Trin 3: Komponenter

Komponenter
Komponenter

Følgende komponenter er nødvendige til udviklingen af dette projekt:

- FSR 0.04-4.5LBS (tryksensor).

- 1.1K ohm modstande

Trin 4: Kodning (Arduino og behandling)

Kodning (Arduino og behandling)
Kodning (Arduino og behandling)
Kodning (Arduino og behandling)
Kodning (Arduino og behandling)
Kodning (Arduino og behandling)
Kodning (Arduino og behandling)

Nu er det tid til at skrive Arduino -koden, der lader sensorerne sende et tegn til Processing -softwaren, der vil overføre informationen grafisk.

Som sensorer har vi 4 trykfølere for arduino, der varierer dens modstand alt efter den kraft, der påføres dem. Så målet er at udnytte det signal, der sendes af sensorerne (når passagererne sidder) for at ændre de grafiske skærme i Processing.

Derefter skaber vi den grafiske del, hvor vi har taget hensyn til det grafiske design af Ferrocarrils de la Generalitat de Catalunya, for at efterligne virkeligheden på den bedst mulige måde.

Under behandlingen er det blevet skrevet en kode, der er direkte forbundet til arduino-softwaren, på denne måde, hver gang nogen sidder på et sæde, skifter det farve, så brugeren på togplatformen kan kende togets tilgængelighed i realtid i realtid.

Her kan du se kodningen

ARDUINO:

int pot = A0; // Tilslut den midterste pin af potten til denne pinint pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // variabel til lagring af potværdierne;

int lectura2; int lectura3; int lectura4;

void setup () {// initialiser seriel kommunikation med en 9600 baud rate Serial.begin (9600); }

void loop () {String s = ""; // // Llegir sensor1 lectura1 = analogRead (pot); // lectura den analoge værdi hvis (lectura1> 10) {s = "1"; forsinkelse (100); } andet {s = "0"; forsinkelse (100); } Serial.println (s);

}

FORARBEJDNING:

import behandling. serie.*; // dette bibliotek håndterer den serielle tale String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Seriel myPort; // Opret objekt fra seriel klasse

void setup () // dette kører bare én gang {fullScreen (); baggrund (0); // indstilling af baggrundsfarve til sort myPort = new Serial (dette, "COM5", 9600); // giver parametre til objekt af seriel klasse, sæt den com, som din arduino er forbundet til, og baudhastigheden

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 (displayBredde, displayHøjde); s0110.resize (displayWidth, displayHeight); s0111.resize (displayBredde, displayHøjde); 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); } ellers if (val.equals ("0010")) {image (s0010, 0, 0); } ellers if (val.equals ("0011")) {image (s0011, 0, 0); } ellers if (val.equals ("0100")) {billede (s0100, 0, 0); } ellers if (val.equals ("0101")) {billede (s0101, 0, 0); } ellers if (val.equals ("0110")) {image (s0110, 0, 0); } ellers if (val.equals ("0111")) {image (s0111, 0, 0); } ellers if (val.equals ("1000")) {image (s1000, 0, 0); } ellers if (val.equals ("1001")) {image (s1001, 0, 0); } ellers if (val.equals ("1010")) {billede (s1010, 0, 0); } ellers if (val.equals ("1011")) {image (s1011, 0, 0); } ellers if (val.equals ("1100")) {image (s1100, 0, 0); } ellers if (val.equals ("1101")) {image (s1101, 0, 0); } ellers if (val.equals ("1110")) {image (s1110, 0, 0); } ellers if (val.equals ("1111")) {billede (s1111, 0, 0); } andet {billede (s0000, 0, 0); }}}

void serialEvent (Serial myPort) // når der sker en seriel hændelse, kører den {val = myPort.readStringUntil ('\ n'); // sørg for, at vores data ikke er tomme, før du fortsætter, hvis (val! = null) {// trimmer mellemrum og formaterer tegn (som vognretur) val = trim (val); println (val); }}

Trin 5: Kredsløb

Kredsløb
Kredsløb

Efter al programmering er det tid til at forbinde alle sensorerne med Arduino UNO -kortet.

Sensorerne er placeret på 4 sæder (som senere vil blive dækket af en klud) og svejset til kabler, der går direkte til bundkortet til Arduino UNO. Signalet, der modtages på tavlen, sendes til en computer, der er tilsluttet via USB, der sender informationerne til Processing i realtid og ændrer sædefarven.

Du kan se et skema af forbindelserne.

Trin 6: Prototypetest

Når koden er blevet uploadet til arduino -kortet, og behandlings- og arduino -programmet er tændt, testes sensorerne. På skærmen vil du se ændringerne i sæderne på grund af ændring af billeder på displayet, der informerer om de besatte pladser og nr.

Trin 7: Ægte mock-up

Rigtig mock-up
Rigtig mock-up
Rigtig mock-up
Rigtig mock-up
Rigtig mock-up
Rigtig mock-up
Rigtig mock-up
Rigtig mock-up

Den rigtige applikation ville prøve at installere den på tog og platforme i FGC -netværket for at betjene rejsende.

Trin 8: NYD

GOD FORNØJELSE!
GOD FORNØJELSE!
GOD FORNØJELSE!
GOD FORNØJELSE!

Du har endelig lavet et Force Sensor Train (prototype), der gør det muligt for brugeren på togplatformen at vide, hvilket sæde der er tilgængeligt i realtid.

VELKOMMEN TIL FREMTIDEN!

Projekt lavet af Marc Godayol & Federico Domenech

Anbefalede: