Tartalomjegyzék:

Vonatülés -elérhetőség információs rendszer - FGC: 8 lépés
Vonatülés -elérhetőség információs rendszer - FGC: 8 lépés

Videó: Vonatülés -elérhetőség információs rendszer - FGC: 8 lépés

Videó: Vonatülés -elérhetőség információs rendszer - FGC: 8 lépés
Videó: SZIR-01 Egyszerüsített Szállításírányítási Információs Rendszer 2024, November
Anonim
Vonatülés -elérhetőség információs rendszer - FGC
Vonatülés -elérhetőség információs rendszer - FGC

Ez a projekt egy vonat vonatkozású, skála szerinti megvalósításán alapul, amely lehetővé teszi az állomáson tartózkodó személyek számára, hogy megtudják, melyek a szabad helyek. A prototípus elkészítéséhez az grafikus rész feldolgozásával együtt az Arduino UNO szoftvert használják.

Ez a koncepció lehetővé tenné a forradalmasítást a tömegközlekedés világában, mivel a vonat minden ülését a lehető legnagyobb mértékben optimalizálná, biztosítva az összes vagon használatát, valamint az adatok gyűjtésének és a későbbiekben pontos vizsgálatok elvégzésének lehetőségét. tovább.

1. lépés: Tervezzen 3D modellt

3D modell tervezése
3D modell tervezése

Először is átfogó kutatást végeztünk a vonatmodellekről. Az összes összegyűjtött információ alapján az FGC -n (Ferrocarrils de la Generalitat de Catalunya) használt GTW vonatot (a Stadler Rail gyártja) választották.

Később a PTC Creo 3D szoftverrel tervezték a modellt a későbbi 3D nyomtatáshoz.

2. lépés: 3D modell nyomtatása és befejezése

3D modell nyomtatása és befejezése
3D modell nyomtatása és befejezése

Miután a vonatot megtervezték, átadják a 3D nyomtatásnak. Miután kinyomtatta a darabot, csiszolni kell, hogy sima felületet kapjon.

Ez a projekt meglévő vonatmodellekkel is elvégezhető.

Nyomtatás után megadják a végső befejezést.

3. lépés: Alkatrészek

Alkatrészek
Alkatrészek

A projekt fejlesztéséhez a következő összetevőkre van szükség:

- FSR 0,04-4,5 LBS (nyomásérzékelő).

- 1.1K ohmos ellenállások

4. lépés: Kódolás (Arduino és feldolgozás)

Kódolás (Arduino és feldolgozás)
Kódolás (Arduino és feldolgozás)
Kódolás (Arduino és feldolgozás)
Kódolás (Arduino és feldolgozás)
Kódolás (Arduino és feldolgozás)
Kódolás (Arduino és feldolgozás)

Itt az ideje megírni az Arduino kódot, amely lehetővé teszi az érzékelők számára, hogy jelet küldjenek a feldolgozó szoftvernek, amely grafikusan továbbítja az információkat.

Szenzorként 4 nyomásérzékelőnk van az arduino számára, amelyek az ellenállásukat a rájuk gyakorolt erőnek megfelelően változtatják. A cél tehát az érzékelők által küldött jel kihasználása (amikor az utasok ülnek), hogy megváltoztassák a feldolgozás grafikus képernyőit.

Ezután elkészítjük azt a grafikai részt, amelyben figyelembe vettük a Ferrocarrils de la Generalitat de Catalunya grafikai tervezését, hogy a lehető legjobb módon utánozzuk a valóságot.

A feldolgozás során olyan kódot írtak, amely közvetlenül kapcsolódik az arduino szoftverhez, ily módon minden alkalommal, amikor valaki leül egy ülésre, megváltoztatja a színét, így a vonatplatformon tartózkodó felhasználó valós időben tudja meg a vonatok férőhelyét.

Itt láthatja a kódolást

ARDUINO:

int pot = A0; // Csatlakoztassa az edény középső csapját ehhez a pinint pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // változó a pot értékeinek tárolására;

int lectura2; int lectura3; int lectura4;

void setup () {// inicializálja a soros kommunikációt 9600 baud sebességgel Serial.begin (9600); }

void loop () {String s = ""; // Llegir sensor1 lectura1 = analogRead (pot); // lectura az analóg érték, ha (lectura1> 10) {s = "1"; késleltetés (100); } else {s = "0"; késleltetés (100); } Sorozat.println (ek);

}

FELDOLGOZÁS:

import feldolgozás.sorozat.*; // ez a könyvtár kezeli a soros beszélgetést String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Soros myPort; // Objektum létrehozása Soros osztályból

void setup () // ez csak egyszer fut {fullScreen (); háttér (0); // a háttérszín beállítása feketera

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

void serialEvent (Serial myPort) // ha soros esemény történik, akkor fut {val = myPort.readStringUntil ('\ n'); // győződjön meg arról, hogy az adatok nem üresek a folytatás előtt, ha (val! = null) {// vágja be a szóközöket és a formázási karaktereket (például a kocsi visszaadása) val = trim (val); println (val); }}

5. lépés: Áramkör

Áramkör
Áramkör

Minden programozás után itt az ideje, hogy az összes érzékelőt összekapcsolja az Arduino UNO kártyával.

Az érzékelőket 4 ülésre helyezik (amelyeket később kendővel fednek le), és olyan kábelekhez hegesztik, amelyek közvetlenül az Arduino UNO alaplapjához csatlakoznak. A táblán kapott jel egy USB -n keresztül csatlakoztatott számítógépre kerül, amely valós időben elküldi az adatokat a Processing -nek, megváltoztatva az ülés színét.

Láthatja a kapcsolatok sémáját.

6. lépés: Prototípus teszt

Miután a kódot feltöltötte az arduino táblára, és bekapcsolta a feldolgozó és arduino programot, az érzékelőket tesztelik. A képernyőn látni fogja az ülésekben bekövetkezett változásokat, amelyek a képernyőn megjelenő képek megváltozása miatt tájékoztatnak a foglalt ülésekről és nem.

7. lépés: Valódi makett

Igazi makett
Igazi makett
Igazi makett
Igazi makett
Igazi makett
Igazi makett
Igazi makett
Igazi makett

Az igazi alkalmazás megpróbálja telepíteni az FGC hálózat vonataira és platformjaira, hogy kiszolgálja az utazókat.

8. lépés: ÉLVEZZ

ÉLVEZD!
ÉLVEZD!
ÉLVEZD!
ÉLVEZD!

Végre elkészített egy erőérzékelő vonatot (prototípust), amely lehetővé teszi a vonatplatformon lévő felhasználó számára, hogy tudja, melyik ülés áll rendelkezésre valós időben.

ÜDVÖZÖLJÜK A JÖVŐBEN!

A projektet Marc Godayol és Federico Domenech készítette

Ajánlott: