สารบัญ:

ระบบข้อมูลที่นั่งว่างบนรถไฟ - FGC: 8 ขั้นตอน
ระบบข้อมูลที่นั่งว่างบนรถไฟ - FGC: 8 ขั้นตอน

วีดีโอ: ระบบข้อมูลที่นั่งว่างบนรถไฟ - FGC: 8 ขั้นตอน

วีดีโอ: ระบบข้อมูลที่นั่งว่างบนรถไฟ - FGC: 8 ขั้นตอน
วีดีโอ: [FGC] รุ่นที่ขายดีที่สุดกับ F42 2024, กรกฎาคม
Anonim
ระบบข้อมูลที่นั่งว่างบนรถไฟ - FGC
ระบบข้อมูลที่นั่งว่างบนรถไฟ - FGC

โครงการนี้มีพื้นฐานมาจากการดำเนินการตามมาตราส่วนของรถไฟที่ช่วยให้ผู้คนที่อยู่ในสถานีทราบว่ามีที่นั่งว่างใดบ้าง เพื่อดำเนินการสร้างต้นแบบ ซอฟต์แวร์ Arduino UNO จะใช้ร่วมกับการประมวลผลสำหรับส่วนกราฟิก

แนวความคิดนี้จะทำให้สามารถปฏิวัติโลกแห่งการขนส่งสาธารณะได้ เนื่องจากจะทำให้ที่นั่งของรถไฟทุกที่นั่งเหมาะสมที่สุด รับรองการใช้เกวียนทั้งหมด ควบคู่ไปกับความเป็นไปได้ในการรวบรวมข้อมูลและดำเนินการศึกษาที่ถูกต้องในภายหลัง บน.

ขั้นตอนที่ 1: ออกแบบโมเดล 3 มิติ

ออกแบบโมเดล 3 มิติ
ออกแบบโมเดล 3 มิติ

อันดับแรก เราได้ทำการวิจัยอย่างละเอียดเกี่ยวกับโมเดลรถไฟ ด้วยข้อมูลทั้งหมดที่รวบรวมได้ รถไฟ GTW (ผลิตโดย Stadler Rail) ที่ใช้กับ FGC (Ferrocarrils de la Generalitat de Catalunya) ได้ถูกเลือกแล้ว

ต่อมาได้รับการออกแบบด้วยซอฟต์แวร์ 3D PTC Creo ซึ่งเป็นแบบจำลองสำหรับการพิมพ์ 3D ในภายหลัง

ขั้นตอนที่ 2: การพิมพ์โมเดล 3 มิติและเสร็จสิ้น

การพิมพ์แบบจำลอง 3 มิติและเสร็จสิ้น
การพิมพ์แบบจำลอง 3 มิติและเสร็จสิ้น

เมื่อออกแบบรถไฟแล้ว ก็ส่งต่อไปยังการพิมพ์ 3 มิติ เมื่อพิมพ์ชิ้นงานแล้วจะต้องขัดเพื่อให้ได้พื้นผิวที่เรียบ

โครงการนี้สามารถทำได้ด้วยโมเดลรถไฟที่มีอยู่

เมื่อพิมพ์เสร็จจะได้รับเสร็จสิ้นขั้นสุดท้าย

ขั้นตอนที่ 3: ส่วนประกอบ

ส่วนประกอบ
ส่วนประกอบ

สำหรับการพัฒนาโครงการนี้ จำเป็นต้องมีองค์ประกอบต่อไปนี้:

- FSR 0.04-4.5LBS (เซ็นเซอร์ความดัน)

- ตัวต้านทาน 1.1K โอห์ม

ขั้นตอนที่ 4: การเข้ารหัส (Arduino & การประมวลผล)

การเข้ารหัส (Arduino & การประมวลผล)
การเข้ารหัส (Arduino & การประมวลผล)
การเข้ารหัส (Arduino & การประมวลผล)
การเข้ารหัส (Arduino & การประมวลผล)
การเข้ารหัส (Arduino & การประมวลผล)
การเข้ารหัส (Arduino & การประมวลผล)

ตอนนี้เป็นเวลาเขียนโค้ด Arduino ที่จะให้เซ็นเซอร์ส่งสัญญาณไปยังซอฟต์แวร์การประมวลผลที่จะส่งข้อมูลแบบกราฟิก

ในฐานะที่เป็นเซ็นเซอร์ เรามีเซ็นเซอร์ความดัน 4 ตัวสำหรับ Arduino ที่ปรับความต้านทานตามแรงที่ใช้กับพวกมัน ดังนั้นจุดมุ่งหมายคือการใช้ประโยชน์จากสัญญาณที่ส่งโดยเซ็นเซอร์ (เมื่อผู้โดยสารนั่ง) เพื่อเปลี่ยนหน้าจอกราฟิกในการประมวลผล

จากนั้น เราสร้างส่วนกราฟิกที่เราคำนึงถึงการออกแบบกราฟิกของ Ferrocarrils de la Generalitat de Catalunya เพื่อเลียนแบบความเป็นจริงในวิธีที่ดีที่สุด

ในการประมวลผลมีการเขียนโค้ดที่เชื่อมต่อโดยตรงกับซอฟต์แวร์ Arduino ด้วยวิธีนี้ทุกครั้งที่มีคนนั่งบนที่นั่งจะเปลี่ยนสีทำให้ผู้ใช้ที่ชานชาลารถไฟทราบที่นั่งว่างของรถไฟแบบเรียลไทม์.

ที่นี่คุณสามารถดูการเข้ารหัส

อาร์ดูโน่:

หม้อ int = A0; // เชื่อมต่อพินกลางของหม้อกับพินพินนี้ 2 = A1; int pot3 = A2; int pot4 = A3; int lectura1;// ตัวแปรสำหรับเก็บค่า pot;

int lectura2;int lectura3; int lectura4;

การตั้งค่าเป็นโมฆะ () {// เริ่มต้นการสื่อสารแบบอนุกรมที่อัตรารับส่งข้อมูล 9600 Serial.begin (9600); }

วงเป็นโมฆะ () { สตริง s = ""; // // Llegir sensor1 lectura1 = analogRead (หม้อ); // lectura ค่าอนาล็อกถ้า (lectura1 > 10) { s = "1"; ล่าช้า (100); } อื่น ๆ { s = "0"; ล่าช้า (100); } Serial.println(s);

}

กำลังประมวลผล:

นำเข้าการประมวลผล.ซีเรียล.*; // ไลบรารีนี้จัดการสตริงการพูดคุยแบบอนุกรม val=""; รูปภาพ s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; อนุกรม myPort; // สร้างวัตถุจาก Serial class

void setup()// นี้ทำงานเพียงครั้งเดียว { fullScreen(); background(0);// ตั้งค่าสีพื้นหลังเป็นสีดำ myPort = ซีเรียลใหม่ (นี่คือ "COM5", 9600); // กำหนดพารามิเตอร์ให้กับวัตถุของคลาสซีเรียล ใส่ com ที่ Arduino ของคุณเชื่อมต่ออยู่และอัตราบอด

s0000 = loadImage ("0000.jpg"); s0001=loadImage("0001.jpg"); s0010=loadImage("00110.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 (ความกว้างของจอแสดงผล, ความสูงของจอแสดงผล); s0110.resize (ความกว้างของจอแสดงผล, ความสูงของจอแสดงผล); s0111.resize (ความกว้างของจอแสดงผล, ความสูงของจอแสดงผล); 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);} วาดเป็นโมฆะ () { if (val!=null) {

ถ้า (val.equals ("0001")) { ภาพ (s0001, 0, 0); } else if (val.equals("00110")) { 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); } อื่น ๆ { ภาพ (s0000, 0, 0); } } }

ถือเป็นโมฆะ serialEvent(Serial myPort)// เมื่อใดก็ตามที่เหตุการณ์ซีเรียลเกิดขึ้น มันจะทำงาน { val = myPort.readStringUntil('\n'); // ตรวจสอบให้แน่ใจว่าข้อมูลของเราไม่ว่างเปล่าก่อนที่จะดำเนินการต่อหาก (val != null) { // ตัดแต่งช่องว่างและการจัดรูปแบบอักขระ (เช่น carriage return) val = trim (val); println(วาล); } }

ขั้นตอนที่ 5: วงจร

วงจร
วงจร

หลังจากการเขียนโปรแกรมทั้งหมด ก็ถึงเวลาเชื่อมต่อเซ็นเซอร์ทั้งหมดกับบอร์ด Arduino UNO

เซ็นเซอร์วางอยู่บนที่นั่ง 4 ตัว (ซึ่งต่อมาจะคลุมด้วยผ้า) และเชื่อมเข้ากับสายเคเบิลที่ต่อไปยังเมนบอร์ดของ Arduino UNO โดยตรง สัญญาณที่ได้รับบนบอร์ดจะถูกส่งไปยังคอมพิวเตอร์ที่เชื่อมต่อผ่าน USB ที่ส่งข้อมูลไปยังการประมวลผลแบบเรียลไทม์เปลี่ยนสีของที่นั่ง

คุณสามารถดูสคีมาของการเชื่อมต่อได้

ขั้นตอนที่ 6: การทดสอบต้นแบบ

เมื่อรหัสถูกอัปโหลดไปยังบอร์ด Arduino และเปิดการประมวลผลและโปรแกรม Arduino เซ็นเซอร์จะถูกทดสอบ บนหน้าจอ คุณจะเห็นการเปลี่ยนแปลงในที่นั่งอันเนื่องมาจากการเปลี่ยนภาพบนจอแสดงผลที่แจ้งเกี่ยวกับที่นั่งว่างและจำนวนที่นั่งว่าง

ขั้นตอนที่ 7: การจำลองจริง

จำลองจริง
จำลองจริง
จำลองจริง
จำลองจริง
จำลองจริง
จำลองจริง
จำลองจริง
จำลองจริง

แอปพลิเคชั่นจริงจะพยายามติดตั้งบนรถไฟและแพลตฟอร์มของเครือข่าย FGC เพื่อให้บริการนักเดินทาง

ขั้นตอนที่ 8: สนุก

เพลิดเพลิน!
เพลิดเพลิน!
เพลิดเพลิน!
เพลิดเพลิน!

ในที่สุดคุณก็ได้สร้าง Force Sensor Train (ต้นแบบ) ที่ช่วยให้ผู้ใช้ที่ชานชาลารถไฟทราบว่าที่นั่งใดพร้อมให้บริการแบบเรียลไทม์

ยินดีต้อนรับสู่อนาคต!

โครงการที่ทำโดย Marc Godayol & Federico Domenech

แนะนำ: