Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
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
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
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
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)
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
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 aplikacija bi jo poskušala namestiti na vlake in platforme omrežja FGC, da bi služila potnikom.
8. korak: 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