Kazalo:

Informacijski sistem o razpoložljivosti vlakovnih sedežev - FGC: 8 korakov
Informacijski sistem o razpoložljivosti vlakovnih sedežev - FGC: 8 korakov

Video: Informacijski sistem o razpoložljivosti vlakovnih sedežev - FGC: 8 korakov

Video: Informacijski sistem o razpoložljivosti vlakovnih sedežev - FGC: 8 korakov
Video: Zasloni in upravljanje sistemov Audi: Personalizacija menijev sistema MMI 2024, November
Anonim
Informacijski sistem o razpoložljivosti vlakovnih sedežev - FGC
Informacijski sistem o razpoložljivosti vlakovnih sedežev - FGC

Ta projekt temelji na izvedbi, v obsežnem obsegu, vlaka, ki ljudem na postaji omogoča vedeti, kateri sedeži so prosti. Za izvedbo prototipa se programska oprema Arduino UNO skupaj z obdelavo uporablja za grafični del.

Ta koncept bi omogočil revolucijo v svetu javnega prevoza, saj bi maksimalno optimiziral vse sedeže vlaka, s čimer bi zagotovil uporabo vseh vagonov, skupaj z možnostjo zbiranja podatkov in izvedbe natančnih študij, kasneje naprej.

1. korak: Oblikujte 3D model

Oblikujte 3D model
Oblikujte 3D model

Najprej smo opravili obsežno raziskavo modelov vlakov. Z vsemi zbranimi informacijami je bil izbran vlak GTW (proizvajalca Stadler Rail), ki se uporablja na FGC (Ferrocarrils de la Generalitat de Catalunya).

Kasneje je bil s 3D programsko opremo PTC Creo oblikovan kot model za kasnejše 3D tiskanje.

2. korak: Tiskanje 3D modela in zaključek

Tiskanje 3D modela in zaključek
Tiskanje 3D modela in zaključek

Ko je vlak načrtovan, se prenese v 3D tiskanje. Ko je kos natisnjen, ga je treba polirati, da doseže gladko površino.

Ta projekt je mogoče izvesti tudi z obstoječimi modeli vlakov.

Ko so natisnjeni, so podani končni zaključki.

3. korak: Komponente

Sestavni deli
Sestavni deli

Za razvoj tega projekta so potrebne naslednje komponente:

- FSR 0,04-4,5LBS (senzor tlaka).

- 1.1K ohmski upori

4. korak: Kodiranje (Arduino in obdelava)

Kodiranje (Arduino in obdelava)
Kodiranje (Arduino in obdelava)
Kodiranje (Arduino in obdelava)
Kodiranje (Arduino in obdelava)
Kodiranje (Arduino in obdelava)
Kodiranje (Arduino in obdelava)

Zdaj je čas za pisanje kode Arduino, ki bo senzorjem omogočila, da pošljejo znak programski opremi za obdelavo, ki bo podatke prenašala grafično.

Kot senzorji imamo 4 senzorje tlaka za arduino, ki spreminjajo njegov upor glede na silo, ki deluje nanje. Zato je cilj izkoristiti signal, ki ga pošljejo senzorji (ko potniki sedijo), da spremenite grafične zaslone v obdelavi.

Nato ustvarimo grafični del, v katerem smo upoštevali grafično zasnovo Ferrocarrils de la Generalitat de Catalunya, da posnemamo realnost na najboljši možni način.

Pri obdelavi je bila napisana koda, ki je neposredno povezana s programsko opremo arduino, tako da vsakič, ko nekdo sede na sedež, spremeni barvo, kar uporabniku na peronu vlaka omogoča, da v realnem času ugotovi razpoložljivost sedežev v vlaku..

Tukaj si lahko ogledate kodiranje

ARDUINO:

int pot = A0; // Srednji zatič lonca povežemo s tem loncem pinint2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // spremenljivka za shranjevanje vrednosti lonca;

int lectura2; int lectura3; int lectura4;

void setup () {// inicializira serijsko komunikacijo s hitrostjo 9600 baud Serial.begin (9600); }

void loop () {String s = ""; // // Llegir sensor1 lectura1 = analogRead (lonec); // lectura analogna vrednost if (lectura1> 10) {s = "1"; zamuda (100); } else {s = "0"; zamuda (100); } Serial.println (s);

}

OBRAVNAVATI:

uvozna obdelava.serial.*; // ta knjižnica obravnava serijski pogovor String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Serijski myPort; // Ustvarjanje predmeta iz razreda Serial

void setup () // to se izvede samo enkrat {fullScreen (); background (0); // nastavitev barve ozadja na črno myPort = new Serial (this, "COM5", 9600); // podajanje parametrov objektu serijskega razreda, vnesite com, na katerega je povezan vaš arduino, in hitrost prenosa

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")) {slika (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 {slika (s0000, 0, 0); }}}

void serialEvent (Serial myPort) // kadar koli se zgodi serijski dogodek, se zažene {val = myPort.readStringUntil ('\ n'); // se prepričajte, da naši podatki niso prazni, preden nadaljujete, če (val! = null) {// obrežete presledke in oblikovalske znake (na primer vrnitev nosilca) val = trim (val); println (val); }}

5. korak: Vezje

Vezje
Vezje

Po vsem programiranju je čas, da vse senzorje povežete s ploščo Arduino UNO.

Senzorji so nameščeni na 4 sedežih (ki bodo pozneje prekriti s krpo) in privarjeni na kable, ki gredo neposredno na matično ploščo Arduino UNO. Signal, prejet na plošči, se pošlje v računalnik, povezan prek USB -ja, ki podatke v realnem času pošlje v Processing in spremeni barvo sedeža.

Ogledate si lahko shemo povezav.

6. korak: Preskus prototipa

Ko je koda naložena na ploščo arduino in program za obdelavo in arduino vklopljen, se senzorji preskusijo. Na zaslonu boste videli spremembe sedežev zaradi spremembe slik na zaslonu, ki obveščajo o zasedenih sedežih in št.

7. korak: Prava maketa

Prava maketa
Prava maketa
Prava maketa
Prava maketa
Prava maketa
Prava maketa
Prava maketa
Prava maketa

Prava aplikacija bi jo poskušala namestiti na vlake in platforme omrežja FGC, da bi služila potnikom.

8. korak: UŽIVAJTE

UŽIVAJTE!
UŽIVAJTE!
UŽIVAJTE!
UŽIVAJTE!

Končno ste izdelali vlak senzorskega senzorja (prototip), ki uporabniku na peron vlaku omogoča vedeti, kateri sedež je na voljo v realnem času.

VABLJENI V PRIHODNOST!

Projekt sta izdelala Marc Godayol in Federico Domenech

Priporočena: