Inhaltsverzeichnis:
- Schritt 1: 3D-Modell entwerfen
- Schritt 2: 3D-Modell und Oberflächen drucken
- Schritt 3: Komponenten
- Schritt 4: Codierung (Arduino & Verarbeitung)
- Schritt 5: Schaltung
- Schritt 6: Prototypentest
- Schritt 7: Echtes Mock-up
- Schritt 8: GENIESSEN
Video: Verfügbarkeitsinformationssystem für Zugsitze - FGC - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Dieses Projekt basiert auf der maßstabsgetreuen Umsetzung eines Zuges, der es den Personen im Bahnhof ermöglicht, zu wissen, welche Plätze frei sind. Um den Prototypen durchzuführen, wird die Arduino UNO Software zusammen mit dem Processing für den grafischen Teil verwendet.
Dieses Konzept würde es ermöglichen, die Welt des öffentlichen Verkehrs zu revolutionieren, da es alle Sitzplätze des Zuges maximal optimiert, die Nutzung aller Waggons sicherstellt und die Möglichkeit bietet, später Daten zu sammeln und genaue Studien durchzuführen An.
Schritt 1: 3D-Modell entwerfen
Zunächst haben wir eine umfassende Recherche zu Zugmodellen durchgeführt. Mit allen gesammelten Informationen wurde der GTW-Zug (hergestellt von Stadler Rail) ausgewählt, der auf FGC (Ferrocarrils de la Generalitat de Catalunya) verwendet wird.
Später wurde mit der 3D-Software PTC Creo das Modell für den anschließenden 3D-Druck entworfen.
Schritt 2: 3D-Modell und Oberflächen drucken
Sobald der Zug konstruiert ist, wird er an den 3D-Druck übergeben. Sobald das Stück gedruckt ist, muss es poliert werden, um eine glatte Oberfläche zu erzielen.
Dieses Projekt kann auch mit bestehenden Zugmodellen durchgeführt werden.
Nach dem Druck werden die endgültigen Oberflächen gegeben.
Schritt 3: Komponenten
Für die Entwicklung dieses Projekts werden folgende Komponenten benötigt:
- FSR 0.04-4.5LBS (Drucksensor).
- 1.1K Ohm Widerstände
Schritt 4: Codierung (Arduino & Verarbeitung)
Jetzt ist es an der Zeit, den Arduino-Code zu schreiben, der es den Sensoren ermöglicht, ein Zeichen an die Verarbeitungssoftware zu senden, die die Informationen grafisch überträgt.
Als Sensoren haben wir 4 Drucksensoren für Arduino, die ihren Widerstand entsprechend der auf sie ausgeübten Kraft variieren. Ziel ist es also, das von den Sensoren gesendete Signal (wenn die Passagiere Platz nehmen) zu nutzen, um die Grafikbildschirme in Processing zu ändern.
Dann erstellen wir den grafischen Teil, bei dem wir das grafische Design der Ferrocarrils de la Generalitat de Catalunya berücksichtigt haben, um die Realität bestmöglich nachzuahmen.
Bei der Verarbeitung wurde ein Code geschrieben, der direkt mit der Arduino-Software verbunden ist. Auf diese Weise ändert sich jedes Mal, wenn jemand auf einem Sitzplatz sitzt, die Farbe, sodass der Benutzer am Bahnsteig in Echtzeit die Verfügbarkeit der Sitzplätze im Zug erfahren kann.
Hier seht ihr die Codierung
ARDUINO:
int-Pot = A0; // Verbinden Sie den mittleren Pin des Potis mit diesem Pinint pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // Variable zum Speichern der Pot-Werte;
int lectura2;int lectura3; int lectura4;
Void setup () {// serielle Kommunikation mit einer Baudrate von 9600 initialisieren Serial.begin (9600); }
Void Schleife () { String s = ""; // // Llegir sensor1 lectura1 = analogRead (pot); // lectura der analoge Wert if (lectura1 > 10) { s = "1"; Verzögerung (100); aufrechtzuerhalten. Sonst { s = "0"; Verzögerung (100); } Serial.println (s);
}
WIRD BEARBEITET:
Importabwicklung.seriell.*; // diese Bibliothek verarbeitet das serielle Gespräch String val=""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Serieller myPort; // Objekt aus Serial-Klasse erstellen
void setup () // dies wird nur einmal ausgeführt { fullScreen (); background(0);// Hintergrundfarbe auf schwarz setzen myPort = new Serial(this, "COM5", 9600); // Parameter für das Objekt der seriellen Klasse geben, die com angeben, mit der Ihr Arduino verbunden ist, und die Baudrate
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")) {Bild(s0001, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("0010")) {Bild(s0010, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("0011")) {Bild(s0011, 0, 0); aufrechtzuerhalten. Sonst wenn (val.equals("0100")) {Bild (s0100, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("0101")) {Bild(s0101, 0, 0); aufrechtzuerhalten. Sonst wenn (val.equals ("0110")) { Bild (s0110, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("0111")) {Bild(s0111, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("1000")) {Bild(s1000, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("1001")) {Bild(s1001, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("1010")) {Bild(s1010, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("1011")) {Bild(s1011, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("1100")) {Bild (s1100, 0, 0); aufrechtzuerhalten. Sonst if (val.equals ("1101")) { Bild (s1101, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("1110")) {Bild (s1110, 0, 0); aufrechtzuerhalten. Sonst if (val.equals("1111")) {Bild(s1111, 0, 0); aufrechtzuerhalten. Sonst { Bild (s0000, 0, 0); } } }
void serialEvent(Serial myPort) // wann immer ein serielles Ereignis auftritt, wird es ausgeführt { val = myPort.readStringUntil('\n'); //Stellen Sie sicher, dass unsere Daten nicht leer sind, bevor Sie fortfahren if (val != null) { // Leerraum und Formatierungszeichen trimmen (wie Wagenrücklauf) val = trim(val); println(val); } }
Schritt 5: Schaltung
Nach der Programmierung ist es an der Zeit, alle Sensoren mit dem Arduino UNO-Board zu verbinden.
Die Sensoren werden auf 4 Sitzen (die später mit einem Tuch bedeckt werden) platziert und mit Kabeln verschweißt, die direkt zum Motherboard des Arduino UNO führen. Das auf dem Board empfangene Signal wird an einen über USB angeschlossenen Computer gesendet, der die Informationen in Echtzeit an Processing sendet und die Farbe des Sitzes ändert.
Sie können ein Schema der Verbindungen sehen.
Schritt 6: Prototypentest
Sobald der Code auf das Arduino-Board hochgeladen und das Verarbeitungs- und Arduino-Programm eingeschaltet wurde, werden die Sensoren getestet. Auf dem Bildschirm sehen Sie die Änderungen der Sitzplätze aufgrund der Änderung der Bilder auf dem Display, die über die belegten Sitzplätze und die Anzahl der Sitzplätze informieren.
Schritt 7: Echtes Mock-up
Die eigentliche Anwendung würde versuchen, sie in Zügen und Bahnsteigen des FGC-Netzwerks zu installieren, um Reisende zu bedienen.
Schritt 8: GENIESSEN
Sie haben endlich einen Force Sensor Train (Prototyp) erstellt, der es dem Benutzer am Bahnsteig ermöglicht, in Echtzeit zu wissen, welcher Sitzplatz verfügbar ist.
WILLKOMMEN IN DER ZUKUNFT!
Projekt von Marc Godayol & Federico Domenech
Empfohlen:
Arduino Auto-Rückfahrwarnsystem - Schritt für Schritt: 4 Schritte
Arduino Auto-Rückfahrwarnsystem | Schritt für Schritt: In diesem Projekt entwerfe ich eine einfache Arduino-Auto-Rückwärts-Parksensorschaltung mit Arduino UNO und dem Ultraschallsensor HC-SR04. Dieses Arduino-basierte Car-Reverse-Warnsystem kann für eine autonome Navigation, Roboter-Ranging und andere Entfernungsr
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): 3 Schritte
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): Manchmal korrigiert die Autokorrektur möglicherweise etwas, das Sie nicht korrigieren möchten, z. Textabkürzungen beginnen sich in Großbuchstaben zu setzen (imo korrigieren zum Beispiel zu IMO). So erzwingen Sie, dass die Korrektur eines Wortes oder einer Phrase beendet wird, ohne aut zu deaktivieren
Interessante Programmieranleitung für Designer - Bringen Sie Ihr Bild zum Laufen (Teil 2): 8 Schritte
Interessante Programmieranleitung für Designer – Bringen Sie Ihr Bild zum Laufen (Teil 2): Mathematik scheint für die meisten von Ihnen nutzlos zu sein. Die in unserem täglichen Leben am häufigsten verwendete ist einfach Addieren, Subtrahieren, Multiplizieren und Dividieren. Es ist jedoch ganz anders, wenn Sie mit Programm erstellen können. Je mehr Sie wissen, desto mehr wundervolle Ergebnisse werden Sie erhalten
Installieren des Windows-Subsystems für Linux (WSL): 3 Schritte
Installieren des Windows-Subsystems für Linux (WSL): Diese Anleitung soll Benutzern helfen, das Windows-Subsystem für Linux auf ihrem Windows 10-Computer zu installieren. Die spezifische Linux-Distribution, die dieser Befehlssatz verwendet, heißt Ubuntu. Schauen Sie hier für eine Übersicht über die verschiedenen Linux
So erstellen Sie eine UML für Java in Microsoft Visio: 4 Schritte
So erstellen Sie eine UML für Java in Microsoft Visio: Das Erstellen einer UML kann zunächst etwas einschüchternd wirken. Es gibt viele komplizierte Notationsstile, und es kann sich anfühlen, als gäbe es keine guten Ressourcen, um eine lesbare und genaue UML zu formatieren. Microsoft Visio macht jedoch das Erstellen einer UML-Qu