Mundarija:

Poyezd o'rindig'ining mavjudligi to'g'risida ma'lumot tizimi - FGC: 8 qadam
Poyezd o'rindig'ining mavjudligi to'g'risida ma'lumot tizimi - FGC: 8 qadam

Video: Poyezd o'rindig'ining mavjudligi to'g'risida ma'lumot tizimi - FGC: 8 qadam

Video: Poyezd o'rindig'ining mavjudligi to'g'risida ma'lumot tizimi - FGC: 8 qadam
Video: Полицейская машина застряла в песке Малыш играет в профессию полицейского 2024, Noyabr
Anonim
Poezd o'rindig'ining mavjudligi to'g'risida ma'lumot tizimi - FGC
Poezd o'rindig'ining mavjudligi to'g'risida ma'lumot tizimi - FGC

Bu loyiha poezdni amalga oshirishga asoslangan, bu stansiyada bo'lgan odamlarga qaysi o'rindiqlar bepul ekanligini bilish imkonini beradi. Prototipni amalga oshirish uchun Arduino UNO dasturiy ta'minoti grafik qismni qayta ishlash bilan birga ishlatiladi.

Bu kontseptsiya jamoat transporti dunyosida inqilob qilish imkonini beradi, chunki u poezdning barcha o'rindiqlarini maksimal darajada optimallashtiradi, barcha vagonlardan foydalanishni ta'minlaydi, shuningdek ma'lumotlarni to'plash va aniqroq tadqiqotlar o'tkazish imkoniyatini beradi. yoqilgan.

1 -qadam: 3D modelini loyihalash

Dizayn 3D model
Dizayn 3D model

Birinchidan, biz poezd modellari bo'yicha keng qamrovli tadqiqotlar o'tkazdik. To'plangan barcha ma'lumotlar bilan FGC (Ferrocarrils de la Generalitat de Catalunya) da ishlatiladigan GTW poezdi (Stadler Rail ishlab chiqargan) tanlangan.

Keyinchalik u PTC Creo 3D dasturi yordamida keyingi 3D bosib chiqarish uchun yaratilgan.

2 -qadam: 3D model va tugatishlarni chop etish

3D model va tugatishlarni chop etish
3D model va tugatishlarni chop etish

Poyezd loyihalashtirilgach, u 3D bosib chiqarishga o'tkaziladi. Parcha chop etilgandan so'ng, silliq yuzaga erishish uchun uni silliqlash kerak.

Ushbu loyiha, shuningdek, mavjud poezd modellari bilan ham amalga oshirilishi mumkin.

Bosib chiqarilgandan so'ng, oxirgi tugatish beriladi.

3 -qadam: komponentlar

Komponentlar
Komponentlar

Loyihani ishlab chiqish uchun quyidagi komponentlar zarur:

- FSR 0.04-4.5LBS (bosim sensori).

- 1,1 K ohmli rezistorlar

4 -qadam: kodlash (Arduino va ishlov berish)

Kodlash (Arduino va ishlov berish)
Kodlash (Arduino va ishlov berish)
Kodlash (Arduino va ishlov berish)
Kodlash (Arduino va ishlov berish)
Kodlash (Arduino va ishlov berish)
Kodlash (Arduino va ishlov berish)

Endi sensorlarga ma'lumotlarni qayta ishlash dasturiga signal yuborish imkonini beradigan Arduino kodini yozish vaqti keldi.

Datchiklar sifatida bizda 4 ta bosim sensori mavjud bo'lib, ular qarshilik kuchini ta'sir kuchiga qarab o'zgartiradi. Shunday qilib, maqsad - ishlov berishda grafik ekranlarni o'zgartirish uchun sensorlar yuborgan signaldan foydalanish (yo'lovchilar o'tirganda).

Keyin, biz haqiqatni eng yaxshi tarzda taqlid qilish uchun Ferrocarrils de la Generalitat de Catalunya -ning grafik dizaynini hisobga olgan grafik qismini yaratamiz.

Qayta ishlashda arduino dasturiy ta'minotiga to'g'ridan-to'g'ri ulangan kod yozilgan, shuning uchun har safar kimdir o'tirganda, u rangini o'zgartiradi, bu esa poezd platformasidagi foydalanuvchiga o'rindiqlar borligini real vaqtda bilishga imkon beradi..

Bu erda siz kodlashni ko'rishingiz mumkin

ARDUINO:

int pot = A0; // Idishning o'rta pinini shu pinint qozonga ulang2 = A1; int pot3 = A2; int pot4 = A3; int lektura1; // pot qiymatlarini saqlash uchun o'zgaruvchi;

int lektura2; int lektura3; int lektura4;

void setup () {// ketma -ket aloqani 9600 bayd tezligida Serial.begin (9600) ishga tushirish; }

void loop () {String s = ""; // // Llegir sensor1 lektura1 = analogRead (pot); // lektura analog qiymati agar (lektura1> 10) {s = "1"; kechikish (100); } boshqa {s = "0"; kechikish (100); } Serial.println (lar);

}

Ishlov berish:

importni qayta ishlash.serial.*; // bu kutubxona String val = "" ketma -ket suhbatini boshqaradi. PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Seriyali myPort; // Serial sinfidan ob'ekt yaratish

void setup () // bu faqat bir marta ishlaydi {fullScreen (); background (0); // fon rangini qora qilib belgilash myPort = new Serial (this, "COM5", 9600); // ketma -ket sinf ob'ektiga parametrlar berish, sizning arduino ulangan com va bod tezligini qo'ying.

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")) {tasvir (s0001, 0, 0); } else if (val.equals ("0010")) {image (s0010, 0, 0); } if if (val.equals ("0011")) {image (s0011, 0, 0); } if if (val.equals ("0100")) {image (s0100, 0, 0); } if if (val.equals ("0101")) {image (s0101, 0, 0); } if if (val.equals ("0110")) {image (s0110, 0, 0); } if if (val.equals ("0111")) {image (s0111, 0, 0); } if if (val.equals ("1000")) {image (s1000, 0, 0); } if if (val.equals ("1001")) {image (s1001, 0, 0); } if if (val.equals ("1010")) {image (s1010, 0, 0); } if if (val.equals ("1011")) {image (s1011, 0, 0); } if if (val.equals ("1100")) {image (s1100, 0, 0); } if if (val.equals ("1101")) {image (s1101, 0, 0); } if if (val.equals ("1110")) {image (s1110, 0, 0); } if if (val.equals ("1111")) {image (s1111, 0, 0); } boshqa {rasm (s0000, 0, 0); }}}

void serialEvent (Serial myPort) // ketma -ket voqea sodir bo'lganda u ishlaydi {val = myPort.readStringUntil ('\ n'); // davom etishdan oldin, ma'lumotlarimiz bo'sh emasligiga ishonch hosil qiling, agar (val! = null) {// bo'sh joyni kesish va belgilarni formatlash (aravachani qaytarish kabi) val = trim (val); println (val); }}

5 -qadam: O'chirish

O'chirish
O'chirish

Barcha dasturlardan so'ng, barcha sensorlarni Arduino UNO platasiga ulash vaqti keldi.

Datchiklar 4 o'rindiqqa o'rnatiladi (keyinchalik ular mato bilan yopiladi) va Arduino UNO anakartiga to'g'ridan -to'g'ri o'tadigan kabellarga payvandlanadi. Bortda qabul qilingan signal USB orqali ulangan kompyuterga yuboriladi, u ma'lumotni ishlov berishga real vaqtda yuboradi va o'rindiq rangini o'zgartiradi.

Siz ulanish sxemasini ko'rishingiz mumkin.

6 -qadam: prototip sinovi

Kod arduino kartasiga yuklanganidan so'ng, ishlov berish va arduino dasturi yoqilgandan so'ng, datchiklar sinovdan o'tkaziladi. Ekranda siz o'rindiqlardagi o'zgarishlarni ko'rasiz, chunki displeyda bo'sh joylar haqida ma'lumot berilgan.

7-qadam: haqiqiy maket

Haqiqiy maket
Haqiqiy maket
Haqiqiy maket
Haqiqiy maket
Haqiqiy maket
Haqiqiy maket
Haqiqiy maket
Haqiqiy maket

Haqiqiy dastur sayohatchilarga xizmat ko'rsatish uchun uni FGC tarmog'ining poezdlari va platformalariga o'rnatishga harakat qiladi.

8 -qadam: Xursand bo'ling

Xursand bo'ling!
Xursand bo'ling!
Xursand bo'ling!
Xursand bo'ling!

Siz nihoyat kuch sensori poezdini (prototipini) yaratdingiz, bu poezd platformasidagi foydalanuvchiga qaysi o'rindiq real vaqtda mavjudligini bilish imkonini beradi.

Kelajakka xush kelibsiz!

Loyiha Mark Godayol va Federiko Domenech

Tavsiya: