Cuprins:

Sistem de informații privind disponibilitatea locurilor de tren - FGC: 8 pași
Sistem de informații privind disponibilitatea locurilor de tren - FGC: 8 pași

Video: Sistem de informații privind disponibilitatea locurilor de tren - FGC: 8 pași

Video: Sistem de informații privind disponibilitatea locurilor de tren - FGC: 8 pași
Video: Part 11 - Our Mutual Friend Audiobook by Charles Dickens (Book 3, Chs 10-14) 2024, Iulie
Anonim
Sistem de informații privind disponibilitatea locurilor de tren - FGC
Sistem de informații privind disponibilitatea locurilor de tren - FGC

Acest proiect se bazează pe implementarea, la scară, a unui tren care permite oamenilor aflați în gară să știe ce locuri sunt libere. Pentru a realiza prototipul, software-ul Arduino UNO este utilizat împreună cu Procesarea pentru partea grafică.

Acest concept ar face posibilă revoluționarea lumii transportului public, deoarece ar optimiza la maximum toate locurile trenului, asigurând utilizarea tuturor vagoanelor, împreună cu posibilitatea de a colecta date și de a efectua studii corecte, ulterior. pe.

Pasul 1: Proiectați modelul 3D

Proiectați modelul 3D
Proiectați modelul 3D

În primul rând am făcut o cercetare cuprinzătoare asupra modelelor de tren. Cu toate informațiile colectate, a fost ales trenul GTW (produs de Stadler Rail) utilizat pe FGC (Ferrocarrils de la Generalitat de Catalunya).

Ulterior a fost proiectat cu software-ul 3D PTC Creo modelul pentru imprimarea 3D ulterioară.

Pasul 2: Tipărirea modelului 3D și a finisajelor

Tipărirea modelului 3D și a finisajelor
Tipărirea modelului 3D și a finisajelor

Odată ce trenul este proiectat, acesta este trecut la imprimarea 3D. Odată ce piesa este tipărită, trebuie lustruită pentru a obține o suprafață netedă.

Acest proiect poate fi realizat și cu modele de trenuri existente.

Odată tipărite, sunt date finisajele finale.

Pasul 3: Componente

Componente
Componente

Pentru dezvoltarea acestui proiect sunt necesare următoarele componente:

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

- Rezistențe de 1,1K ohmi

Pasul 4: Codificare (Arduino și procesare)

Codificare (Arduino și procesare)
Codificare (Arduino și procesare)
Codificare (Arduino și procesare)
Codificare (Arduino și procesare)
Codificare (Arduino și procesare)
Codificare (Arduino și procesare)

Acum este timpul să scrieți codul Arduino care va permite senzorilor să trimită un semn către software-ul de procesare care va transmite informațiile grafic.

Ca senzori avem 4 senzori de presiune pentru arduino care variază rezistența acestuia în funcție de forța care li se aplică. Așadar, scopul este de a profita de semnalul trimis de senzori (când pasagerii se așează) pentru a schimba ecranele grafice din Procesare.

Apoi, creăm partea grafică în care am luat în calcul designul grafic al Ferrocarrils de la Generalitat de Catalunya, pentru a imita realitatea în cel mai bun mod posibil.

În procesare a fost scris un cod care este conectat direct la software-ul arduino, în acest fel, de fiecare dată când cineva stă pe un scaun, acesta își schimbă culoarea, permițând utilizatorului de pe platforma trenului să cunoască în timp real disponibilitatea locurilor de tren.

Aici puteți vedea codarea

ARDUINO:

int pot = A0; // Conectați pinul din mijloc al vasului la acest pinint pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // variabilă pentru stocarea valorilor potului;

int lectura2; int lectura3; int lectura4;

void setup () {// inițializează comunicațiile seriale la o rată de 9600 baud Serial.begin (9600); }

bucla void () {String s = ""; // // Llegir sensor1 lectura1 = analogRead (pot); // lectura valorii analogice if (lectura1> 10) {s = "1"; întârziere (100); } else {s = "0"; întârziere (100); } Serial.println (s);

}

PRELUCRARE:

procesare import.serial. *; // această bibliotecă gestionează discuția în serie String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Serial myPort; // Creați obiect din clasa Serial

void setup () // aceasta rulează o singură dată {fullScreen (); background (0); // setarea culorii de fundal la negru myPort = new Serial (this, "COM5", 9600); // oferind parametrii obiectului clasei seriale, puneți com-ul la care este conectat arduino-ul și rata baud

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! = nul) {

if (val.equals ("0001")) {imagine (s0001, 0, 0); } else if (val.equals ("0010")) {imagine (s0010, 0, 0); } else if (val.equals ("0011")) {imagine (s0011, 0, 0); } else if (val.equals ("0100")) {imagine (s0100, 0, 0); } else if (val.equals ("0101")) {image (s0101, 0, 0); } else if (val.equals ("0110")) {imagine (s0110, 0, 0); } else if (val.equals ("0111")) {image (s0111, 0, 0); } else if (val.equals ("1000")) {imagine (s1000, 0, 0); } else if (val.equals ("1001")) {imagine (s1001, 0, 0); } else if (val.equals ("1010")) {imagine (s1010, 0, 0); } else if (val.equals ("1011")) {imagine (s1011, 0, 0); } else if (val.equals ("1100")) {imagine (s1100, 0, 0); } else if (val.equals ("1101"))) {imagine (s1101, 0, 0); } else if (val.equals ("1110")) {imagine (s1110, 0, 0); } else if (val.equals ("1111")) {imagine (s1111, 0, 0); } else {imagine (s0000, 0, 0); }}}

void serialEvent (Serial myPort) // ori de câte ori se întâmplă un eveniment serial, acesta rulează {val = myPort.readStringUntil ('\ n'); // asigurați-vă că datele noastre nu sunt goale înainte de a continua dacă (val! = nul) {// tăiați spațiul alb și caractere de formatare (cum ar fi returnarea transportului) val = trim (val); println (val); }}

Pasul 5: Circuit

Circuit
Circuit

După toată programarea, este timpul să conectați toți senzorii cu placa Arduino UNO.

Senzorii sunt așezați pe 4 locuri (care ulterior vor fi acoperite de o cârpă) și sudate pe cabluri care merg direct pe placa de bază a Arduino UNO. Semnalul primit pe placă este trimis către un computer conectat prin USB care trimite informațiile către Procesare în timp real, schimbând culoarea scaunului.

Puteți vedea o schemă a conexiunilor.

Pasul 6: Testarea prototipului

Odată ce codul a fost încărcat pe placa arduino și programul de procesare și arduino pornit, senzorii sunt testați. Pe ecran veți vedea modificările locurilor datorate schimbării imaginilor de pe afișaj care informează despre locurile ocupate și nr.

Pasul 7: machetă reală

Mașină reală
Mașină reală
Mașină reală
Mașină reală
Mașină reală
Mașină reală
Mașină reală
Mașină reală

Aplicația reală ar încerca să o instaleze pe trenuri și platforme ale rețelei FGC pentru a servi călătorii.

Pasul 8: DISCURAȚI-VĂ

DISCURAȚI-VĂ!
DISCURAȚI-VĂ!
DISCURAȚI-VĂ!
DISCURAȚI-VĂ!

În cele din urmă ați creat un tren senzor de forță (prototip) care permite utilizatorului de pe platforma trenului să știe ce scaun este disponibil în timp real.

BINE AȚI VENIT LA VIITOR!

Proiect realizat de Marc Godayol și Federico Domenech

Recomandat: