Բովանդակություն:

Գնացքի նստատեղերի առկայության տեղեկատվական համակարգ - FGC: 8 քայլ
Գնացքի նստատեղերի առկայության տեղեկատվական համակարգ - FGC: 8 քայլ

Video: Գնացքի նստատեղերի առկայության տեղեկատվական համակարգ - FGC: 8 քայլ

Video: Գնացքի նստատեղերի առկայության տեղեկատվական համակարգ - FGC: 8 քայլ
Video: Ինչպես ԱՄՆ-ում բեռնատարի վարորդը ավելի շատ է, քան 10 000 դոլար: Առավել մանրամասն ուղեցույց 2024, Նոյեմբեր
Anonim
Գնացքի նստատեղերի առկայության տեղեկատվական համակարգ - FGC
Գնացքի նստատեղերի առկայության տեղեկատվական համակարգ - FGC

Այս նախագիծը հիմնված է գնացքի իրականացման վրա, որը մասշտաբով թույլ է տալիս կայարանում գտնվող մարդկանց իմանալ, թե որ տեղերն են անվճար: Նախատիպն իրականացնելու համար գրաֆիկական մասի համար մշակվում է Arduino UNO ծրագիրը:

Այս հայեցակարգը հնարավորություն կտա հեղափոխել հասարակական տրանսպորտի աշխարհը, քանի որ այն առավելագույնս կբարձրացնի գնացքի բոլոր նստատեղերը ՝ ապահովելով բոլոր վագոնների օգտագործումը, հետագայում տվյալների հավաքագրման և ճշգրիտ ուսումնասիրություններ կատարելու հնարավորության հետ մեկտեղ: վրա.

Քայլ 1. Նախագծեք 3D մոդելը

3D մոդելի ձևավորում
3D մոդելի ձևավորում

Առաջին հերթին մենք կատարել ենք համապարփակ հետազոտություն գնացքների մոդելների վերաբերյալ: Հավաքված ամբողջ տեղեկատվության համաձայն ընտրվել է GTG գնացքը (արտադրված է Stadler Rail- ի կողմից), որն օգտագործվում է FGC- ում (Ferrocarrils de la Generalitat de Catalunya):

Հետագայում այն նախագծվեց PTC Creo եռաչափ ծրագրակազմով `հետագա 3D տպագրության համար:

Քայլ 2. 3D մոդելի և ավարտի տպում

Եռաչափ մոդելի և ավարտի տպագրություն
Եռաչափ մոդելի և ավարտի տպագրություն

Գնացքի նախագծումից հետո այն փոխանցվում է 3D տպագրությանը: Երբ կտորը տպվում է, այն պետք է հղկվել `հարթ մակերեսին հասնելու համար:

Այս նախագիծը կարող է իրականացվել նաև գնացքի առկա մոդելներով:

Տպվելուց հետո տրվում են վերջնական ավարտները:

Քայլ 3: Բաղադրիչներ

Բաղադրիչներ
Բաղադրիչներ

Այս նախագծի մշակման համար անհրաժեշտ են հետևյալ բաղադրիչները.

- FSR 0.04-4.5LBS (sensorնշման ցուցիչ):

- 1.1K ohms ռեզիստորներ

Քայլ 4: Կոդավորում (Arduino և մշակում)

Կոդավորում (Arduino և մշակում)
Կոդավորում (Arduino և մշակում)
Կոդավորում (Arduino և մշակում)
Կոդավորում (Arduino և մշակում)
Կոդավորում (Arduino և մշակում)
Կոդավորում (Arduino և մշակում)

Այժմ ժամանակն է գրել Arduino կոդը, որը թույլ կտա սենսորներին ուղարկել նշան Processing ծրագրին, որը տեղեկատվությունը գրաֆիկականորեն կփոխանցի:

Որպես սենսորներ մենք ունենք arduino- ի ճնշման 4 սենսոր, որոնք փոփոխում են դրա դիմադրողականությունը ՝ ըստ նրանց նկատմամբ կիրառվող ուժի: Այսպիսով, նպատակն է օգտվել սենսորների ուղարկած ազդանշանից (երբ ուղևորները նստում են) մշակման գրաֆիկական էկրանները փոխելու համար:

Այնուհետև մենք ստեղծում ենք գրաֆիկական մասը, որում հաշվի ենք առել Ferrocarrils de la Generalitat de Catalunya- ի գրաֆիկական ձևավորումը ՝ իրականությունը լավագույնս ընդօրինակելու համար:

Մշակման ընթացքում արդեն գրված է arduino ծրագրային ապահովման հետ միացված կոդ, այսպիսով, ամեն անգամ, երբ ինչ-որ մեկը նստում է նստատեղի վրա, այն փոխում է գույնը ՝ գնացքի հարթակում գտնվող օգտագործողին թույլ տալով իրական ժամանակում իմանալ գնացքի նստատեղերի առկայությունը:.

Այստեղ դուք կարող եք տեսնել կոդավորումը

ԱՐԴՈINԻՆՈ:

int pot = A0; // Կաթսայի միջին քորոցը միացրեք այս պինտ կաթսային 2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // փոփոխական կաթսայի արժեքները պահելու համար;

int lectura2; int lectura3; int lectura4;

void setup () {// սկզբնավորել սերիական հաղորդակցությունները 9600 baud արագությամբ Serial.begin (9600); }

void loop () {String s = ""; // // Llegir sensor1 lectura1 = analogRead (զամբյուղ); // lectura անալոգային արժեքը եթե (lectura1> 10) {s = "1"; ուշացում (100); } else {s = "0"; ուշացում (100); } Serial.println (ներ);

}

ՄՇԱԿՈՄ:

ներմուծման մշակում. սերիա:*; // այս գրադարանը վարում է սերիական խոսակցություն String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Սերիական myPort; // Ստեղծեք օբյեկտ Serial դասից

void setup () // սա աշխատում է ընդամենը մեկ անգամ {fullScreen (); ֆոն (0); // ֆոնի գույնը սև սահմանել myPort = նոր Սերիա (սա, «COM5», 9600); // սերիական դասի օբյեկտին պարամետրեր տալը, դնում այն com- ը, որին միացված է ձեր arduino- ն և բաուդ արագությունը

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")) {պատկեր (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")) {պատկեր (s0110, 0, 0); } else if (val.equals ("0111")) {image (s0111, 0, 0); } else if (val.equals («1000»)) {պատկեր (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 {պատկեր (s0000, 0, 0); }}}

void serialEvent (Serial myPort) // երբ սերիալային իրադարձություն է տեղի ունենում, այն անցնում է {val = myPort.readStringUntil ('\ n'); // համոզվեք, որ մեր տվյալները դատարկ չեն, եթե շարունակեք, եթե (val! = null) {// կարճացրեք տարածության և ձևաչափման նիշերը (օրինակ ՝ փոխադրման վերադարձը) val = trim (val); println (val); }}

Քայլ 5: Շղթա

Շրջան
Շրջան

Բոլոր ծրագրավորումներից հետո ժամանակն է բոլոր սենսորները միացնել Arduino UNO տախտակին:

Սենսորները տեղադրված են 4 նստատեղերի վրա (որոնք հետագայում ծածկվելու են կտորով) և եռակցվում են մալուխներին, որոնք անմիջապես անցնում են Arduino UNO- ի մայր տախտակին: Գրատախտակին ստացված ազդանշանն ուղարկվում է USB- ի միջոցով միացված համակարգչին, որը տեղեկատվությունը իրական ժամանակում ուղարկում է Processing ՝ փոխելով նստատեղի գույնը:

Դուք կարող եք տեսնել միացումների սխեման:

Քայլ 6: Նախատիպի փորձարկում

Երբ կոդը վերբեռնվել է arduino տախտակին և միացվել է մշակման և arduino ծրագիրը, սենսորները փորձարկվում են: Էկրանի վրա դուք կտեսնեք նստատեղերի փոփոխությունները `էկրանին պատկերների փոփոխության պատճառով, որոնք տեղեկացնում են զբաղեցրած նստատեղերի և ոչ.

Քայլ 7: Իրական ծաղրուծանակ

Իրական ծաղրուծանակ
Իրական ծաղրուծանակ
Իրական ծաղրուծանակ
Իրական ծաղրուծանակ
Իրական ծաղրուծանակ
Իրական ծաղրուծանակ
Իրական ծաղրուծանակ
Իրական ծաղրուծանակ

Իրական հավելվածը կփորձի տեղադրել այն FGC ցանցի գնացքներում և հարթակներում `ճանապարհորդներին սպասարկելու համար:

Քայլ 8: Վայելեք:

ՎԱՅԵԼ!
ՎԱՅԵԼ!
ՎԱՅԵԼ!
ՎԱՅԵԼ!

Դուք վերջապես պատրաստեցիք Force Sensor Train (նախատիպ), որը թույլ է տալիս գնացքի հարթակում գտնվող օգտագործողին իմանալ, թե որ նստատեղն է հասանելի իրական ժամանակում:

Ո WՈCOՅՆ ԱՊԱԳԱ:

Նախագիծ ՝ պատրաստված Մարկ Գոդայոլի և Ֆեդերիկո Դոմենեկի կողմից

Խորհուրդ ենք տալիս: