Cuprins:
- Pasul 1: Proiectați modelul 3D
- Pasul 2: Tipărirea modelului 3D și a finisajelor
- Pasul 3: Componente
- Pasul 4: Codificare (Arduino și procesare)
- Pasul 5: Circuit
- Pasul 6: Testarea prototipului
- Pasul 7: machetă reală
- Pasul 8: DISCURAȚI-VĂ
Video: Sistem de informații privind disponibilitatea locurilor de tren - FGC: 8 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
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
Î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
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
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)
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
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ă
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Ă
Î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:
CovBot - un chatbot bazat pe WhatsApp pentru informații COVID 19 și mai multe: 7 pași
CovBot - un chatbot bazat pe WhatsApp pentru informații COVID 19 și mai multe: CoVbot este un chatbot simplu și intuitiv bazat pe Whatsapp. Principala caracteristică a robotului este: Vă poate oferi cea mai recentă stare a COVID-19 în țara aleasă într-un mod simplu și intuitiv. În plus, robotul poate sugera activități distractive de făcut pe H
Senzor cu ultrasunete LED-uri automate de animație de bun venit și ecran de informații LCD: 6 pași
Senzor cu ultrasunete LED-uri automate de întâmpinare cu lumini de animație și ecran de informații LCD: Când vă întoarceți acasă obositor și încercați să vă așezați și să vă relaxați, trebuie să fie foarte plictisitor să vedeți același lucru în jurul vostru în fiecare zi. De ce nu adăugați ceva distractiv și interesant care vă schimbă starea de spirit? Construiește un Arduin foarte ușor
TUTORIAL DE BAZĂ PRIVIND LIMBAJUL DE MARKUP DE INTELIGENȚĂ ARTIFICIALĂ (AIML) VIA NOTEPAD: 8 pași
TUTORIAL DE BAZĂ PRIVIND LIMBAJUL DE MARKUP DE INTELIGENȚĂ ARTIFICIALĂ (AIML) VIA NOTEPAD: Artificial Intelligence Markup Language (AIML) este un limbaj de programare care este o specificație Extensible Markup Language (XML) utilizată de chatbot, verbot, pandorabot, superbot și alt robot vorbitor. A fost dezvoltat de Dr. Richard Wallace și
Stație de informații (Arduino): 5 pași (cu imagini)
Stație de informații (Arduino): Bine ați venit la ultimul meu instructabil de a construi o stație de informații autonomă! Acest dispozitiv minunat folosește un Arduino Uno cu un scut ethernet pentru a vă conecta la internet și a trage în jos cele mai recente știri și vremea locală și a le afișa pe un ecran LCD
Cum să obțineți muzică de la APROAPE ORICE site web (Haha) (Atâta timp cât îl puteți auzi, îl puteți obține Ok Bine dacă este încorporat în Flash s-ar putea să nu fiți capabil să) EDITAȚI !!!!! Informații adăugate: 4 pași
Cum să obțineți muzică de la APROAPE ORICE site (Haha) (Atâta timp cât îl puteți auzi, îl puteți obține … Ok Bine, dacă este încorporat în Flash, s-ar putea să nu fiți capabil să) EDITAȚI !!!!! Informații adăugate: dacă mergeți vreodată pe un site web și redă un cântec care vă place și îl doriți, atunci iată instrucțiunea pentru care nu vina mea dacă deranjați ceva (singurul mod în care se va întâmpla este dacă începeți să ștergeți lucruri fără motiv ) am reușit să obțin muzică pentru