İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu proje, istasyonda bulunan kişilerin hangi koltukların boş olduğunu bilmesini sağlayan bir trenin bir ölçekte uygulanmasına dayanmaktadır. Prototipi gerçekleştirmek için grafik kısmı için Processing ile birlikte Arduino UNO yazılımı kullanılmaktadır.
Bu konsept, trenin tüm koltuklarını maksimuma çıkaracak, tüm vagonların kullanımını sağlayacak, daha sonra doğru veri toplama ve çalışmalar yapma imkanı ile birlikte toplu taşıma dünyasında devrim yaratmayı mümkün kılacaktır. üzerinde.
Adım 1: 3D Model Tasarlayın
Öncelikle tren modelleri hakkında kapsamlı bir araştırma yaptık. Toplanan tüm bilgilerle, FGC'de (Ferrocarrils de la Generalitat de Catalunya) kullanılan GTW treni (Stadler Rail tarafından üretilmiştir) seçilmiştir.
Daha sonra, sonraki 3B baskı için model olan 3B yazılım PTC Creo ile tasarlandı.
2. Adım: 3B Modeli ve Kaplamaları Yazdırma
Tren tasarlandıktan sonra 3D baskıya geçiliyor. Parça basıldıktan sonra pürüzsüz bir yüzey elde etmek için cilalanmalıdır.
Bu proje mevcut tren modelleri ile de yapılabilir.
Basıldıktan sonra, son yüzeyler verilir.
Adım 3: Bileşenler
Bu projenin geliştirilmesi için aşağıdaki bileşenlere ihtiyaç vardır:
- FSR 0.04-4.5LBS (Basınç sensörü).
- 1.1K ohm dirençler
Adım 4: Kodlama (Arduino ve İşleme)
Artık sensörlerin bilgileri grafiksel olarak iletecek Processing yazılımına bir işaret göndermesini sağlayacak Arduino kodunu yazmanın zamanı geldi.
Sensörler olarak, arduino için direncini kendilerine uygulanan kuvvete göre değiştiren 4 basınç sensörümüz var. Yani amaç, Processing'deki grafik ekranları değiştirmek için sensörler tarafından (yolcular oturduğunda) gönderilen sinyalden yararlanmaktır.
Ardından, gerçeği mümkün olan en iyi şekilde taklit etmek için Ferrocarrils de la Generalitat de Catalunya'nın grafik tasarımını dikkate aldığımız grafik bölümünü oluşturuyoruz.
İşleme sırasında doğrudan arduino yazılımına bağlı bir kod yazılmıştır, bu şekilde biri koltuğa her oturduğunda renk değiştirir, tren platformundaki kullanıcının trenin koltuk müsaitliğini gerçek zamanlı olarak bilmesini sağlar..
Burada kodlamayı görebilirsiniz
ARDUINO:
int pot = A0; // Potun orta pinini bu pinint'e bağlayın pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1;// pot değerlerini saklamak için değişken;
int lectura2;int lectura3; int lectura4;
void setup(){ //seri iletişimi 9600 baud hızında başlat Serial.begin(9600); }
void loop() { String s = ""; // //Llegir sensor1 lectura1 = analogRead(pot); // lectura analog değeri if (lectura1 > 10) { s = "1"; gecikme(100); } başka { s = "0"; gecikme(100); } Seri.println(ler);
}
İŞLEME:
işleme.serisini içe aktar.*; // bu kitaplık seri konuşmayı yönetir String val=""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Seri myPort; // Serial sınıftan nesne oluştur
void setup()// bu sadece bir kez çalışır{ fullScreen(); background(0);// arka plan rengini siyah olarak ayarlama myPort = new Serial(this, "COM5", 9600);// seri sınıfının nesnesine parametreler vererek, arduino'nuzun bağlı olduğu com'u ve baud hızını girin
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)// seri olay gerçekleştiğinde çalışır{ val = myPort.readStringUntil('\n'); //devam etmeden önce verilerimizin boş olmadığından emin olun if (val != null) { //boşlukları kırpın ve karakterleri biçimlendirin (satır başı gibi) val = trim(val); println(val); } }
Adım 5: Devre
Tüm programlamalardan sonra, tüm sensörleri Arduino UNO kartına bağlamanın zamanı geldi.
Sensörler 4 koltuğa (daha sonra bir bezle kaplanacak) yerleştirilir ve doğrudan Arduino UNO'nun anakartına giden kablolara kaynaklanır. Kartta alınan sinyal, koltuk rengini değiştirerek bilgileri gerçek zamanlı olarak İşleme'ye gönderen USB üzerinden bağlı bir bilgisayara gönderilir.
Bağlantıların bir şemasını görebilirsiniz.
Adım 6: Prototip Testi
Kod arduino kartına yüklendikten ve işleme ve arduino programı açıldıktan sonra sensörler test edilir. Ekranda, dolu ve boş koltuklar hakkında bilgi veren ekrandaki görüntülerin değişmesi nedeniyle koltuklardaki değişiklikleri göreceksiniz.
Adım 7: Gerçek Mock-up
Gerçek uygulama, onu yolculara hizmet etmek için FGC ağının trenlerine ve platformlarına kurmaya çalışacaktı.
Adım 8: KEYFİNİ ÇIKARIN
Sonunda, tren platformundaki kullanıcının gerçek zamanlı olarak hangi koltuğun müsait olduğunu bilmesini sağlayan bir Kuvvet Sensörü Treni (prototip) yaptınız.
GELECEĞE HOŞGELDİNİZ!
Marc Godayol & Federico Domenech tarafından yapılan proje