Innholdsfortegnelse:

Tilgjengelighetsinformasjonssystem for togseter - FGC: 8 trinn
Tilgjengelighetsinformasjonssystem for togseter - FGC: 8 trinn

Video: Tilgjengelighetsinformasjonssystem for togseter - FGC: 8 trinn

Video: Tilgjengelighetsinformasjonssystem for togseter - FGC: 8 trinn
Video: Голубая стрела (1958) фильм 2024, Juli
Anonim
Tilgjengelighetsinformasjonssystem for togseter - FGC
Tilgjengelighetsinformasjonssystem for togseter - FGC

Dette prosjektet er basert på implementering, på en skala, av et tog som lar folk på stasjonen vite hvilke seter som er ledige. For å utføre prototypen brukes Arduino UNO -programvaren sammen med behandlingen for den grafiske delen.

Dette konseptet ville gjøre det mulig å revolusjonere offentlig transport, ettersom det ville optimalisere alle togstoler maksimalt, sikre bruk av alle vogner, sammen med muligheten til å samle inn data og utføre nøyaktige studier senere på.

Trinn 1: Design 3D -modell

Design 3D -modell
Design 3D -modell

Først av alt har vi gjort en omfattende undersøkelse av togmodeller. Med all informasjonen samlet, er GTW -toget (produsert av Stadler Rail) brukt på FGC (Ferrocarrils de la Generalitat de Catalunya) valgt.

Den ble senere designet med 3D -programvaren PTC Creo, modellen for den påfølgende 3D -utskriften.

Trinn 2: Skrive ut 3D -modell og ferdig

Skriver ut 3D -modell og utførelser
Skriver ut 3D -modell og utførelser

Når toget er designet, blir det overført til 3D -utskrift. Når stykket er trykt, må det poleres for å oppnå en glatt overflate.

Dette prosjektet kan også gjøres med eksisterende togmodeller.

Når de er skrevet ut, er de siste finishene gitt.

Trinn 3: Komponenter

Komponenter
Komponenter

Følgende komponenter er nødvendige for utviklingen av dette prosjektet:

- FSR 0.04-4.5LBS (trykksensor).

- 1.1K ohm motstander

Trinn 4: Koding (Arduino og prosessering)

Koding (Arduino og prosessering)
Koding (Arduino og prosessering)
Koding (Arduino og prosessering)
Koding (Arduino og prosessering)
Koding (Arduino og prosessering)
Koding (Arduino og prosessering)

Nå er det på tide å skrive Arduino -koden som lar sensorene sende et tegn til behandlingsprogramvaren som vil overføre informasjonen grafisk.

Som sensorer har vi 4 trykksensorer for arduino som varierer motstanden i henhold til kraften som påføres dem. Så målet er å dra nytte av signalet som sendes av sensorene (når passasjerene sitter) for å endre de grafiske skjermbildene i Processing.

Deretter lager vi den grafiske delen der vi har tatt hensyn til den grafiske utformingen av Ferrocarrils de la Generalitat de Catalunya, for å etterligne virkeligheten på best mulig måte.

Under behandlingen er det blitt skrevet en kode som er direkte koblet til arduino-programvaren, på denne måten, hver gang noen sitter på et sete, endrer den farge, slik at brukeren på togplattformen kan kjenne sanntid på tilgjengeligheten av seter.

Her kan du se kodingen

ARDUINO:

int pot = A0; // Koble den midterste potten til denne pinint pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // variabel for lagring av pottverdiene;

int lectura2; int lectura3; int lectura4;

void setup () {// initialisere seriell kommunikasjon med en 9600 baud rate Serial.begin (9600); }

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

}

BEHANDLING:

import behandling. serie.*; // dette biblioteket håndterer seriesamtalen String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Seriell myPort; // Lag objekt fra serieklassen

void setup () // dette kjøres bare én gang {fullScreen (); bakgrunn (0); // sette bakgrunnsfarge til svart myPort = new Serial (dette, "COM5", 9600); // gi parametere til objektet i serieklassen, sett com som din arduino er koblet til og baudhastigheten

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

void serialEvent (Serial myPort) // når seriell hendelse skjer, kjører den {val = myPort.readStringUntil ('\ n'); // sørg for at dataene våre ikke er tomme før du fortsetter hvis (val! = null) {// trimmer mellomrom og formaterer tegn (som vognretur) val = trim (val); println (val); }}

Trinn 5: Krets

Krets
Krets

Etter all programmeringen er det på tide å koble alle sensorene med Arduino UNO -kortet.

Sensorene er plassert på 4 seter (som senere vil bli dekket av en klut) og sveiset til kabler som går direkte til hovedkortet til Arduino UNO. Signalet mottatt på kortet sendes til en datamaskin som er koblet til via USB som sender informasjonen til Processing i sanntid, og endrer fargen på setet.

Du kan se et skjema for tilkoblingene.

Trinn 6: Prototypetest

Når koden er lastet opp til arduino -kortet og behandlings- og arduino -programmet er slått på, testes sensorene. På skjermen vil du se endringene i setene på grunn av endring av bilder på displayet som informerer om setene som er okkupert og nei.

Trinn 7: Real Mock-up

Ekte mock-up
Ekte mock-up
Ekte mock-up
Ekte mock-up
Ekte mock-up
Ekte mock-up
Ekte mock-up
Ekte mock-up

Den virkelige applikasjonen ville prøve å installere den på tog og plattformer i FGC -nettverket for å betjene reisende.

Trinn 8: NYT

NYT!
NYT!
NYT!
NYT!

Du har endelig laget et Force Sensor Train (prototype) som lar brukeren på togplattformen vite hvilket sete som er tilgjengelig i sanntid.

VELKOMMEN TIL FREMTIDEN!

Prosjekt laget av Marc Godayol & Federico Domenech

Anbefalt: