İçindekiler:

3D HAVA Fare - Arduino + İşleme: 5 Adım
3D HAVA Fare - Arduino + İşleme: 5 Adım

Video: 3D HAVA Fare - Arduino + İşleme: 5 Adım

Video: 3D HAVA Fare - Arduino + İşleme: 5 Adım
Video: Amazing arduino project 2024, Temmuz
Anonim
3D HAVA Fare | Arduino + İşleme
3D HAVA Fare | Arduino + İşleme

3D HAVA fare | Arduino + ProcessingEndüstriyel tasarım öğrencisiyim ve geçen yıl "RAW malzeme olarak teknoloji" adlı bir dersin parçası olarak bu projeyi son çalışmam olarak oluşturdum. Çoğu zaman tasarım ve mühendislik için bir CAD yazılımı olan SolidWorks ile çalışıyorum.. Ekrandaki katı bir gövdeyi döndürme, orta fare düğmesi kullanılarak yapılır. Daha sezgisel bir şey arıyordum. Bir nesnenin gerçek dönüşünün, fareyi 3 eksende havada hareket ettirerek yapıldığı 3B hava faresini bu şekilde yaptım - aynı şekilde, nesneyi elinizde tutarsanız döndürürdünüz. Arduino, birkaç sensör ve bir İşleme taslağı kullandım. NOTLAR:- Şu an itibariyle, SolidWork ile çalışacak gerçek bir eklenti olmadığı için bu sadece konseptin bir gösterimidir (ama tabii ki nasıl olduğunu biliyorsan bir tane yaz:)- Tüm donanım benim olmadığı için, gerçek 3D fare çoktan gitti ve tüm bunlardan bir anlam çıkarmaya çalışmak ve size vermek için bazı fotoğraflar ve bir video kullanıyorum. Kendiniz denemek ve inşa etmek istiyorsanız bir fikir… Keyfini çıkarın… (Bu benim ilk Eğitilebilir Kitabım) İşte bitmiş projenin bir video demosu

1. Adım: Donanım ve Malzeme

Donanım ve Malzemeler
Donanım ve Malzemeler
Donanım ve Malzemeler
Donanım ve Malzemeler
Donanım ve Malzemeler
Donanım ve Malzemeler
Donanım ve Malzemeler
Donanım ve Malzemeler

3 eksenli ivmeölçer + pusula sensörüne dayalı olduğu için en ucuz Instructable değil. İhtiyacınız olan şeyler:* Bir fare - kullanılmış olan daha iyidir (yalnızca kullanılmış ve daha ucuz olduğu için), herhangi bir fare yapmalıdır. Sensörleri ve bazı ekstra kabloları barındırmak için biraz alana ihtiyacınız var, bu yüzden ekstra ince / ekstra küçük fareler için gitmeyin.* Eğim Dengelemeli Pusula Modülü - HMC634 - Bu, SpurkFun'dan ~ için satın alınan 3 eksenli sensördür. 149$* Mantık Seviyesi Dönüştürücü - MUTLAKA! Arduino 5V ve 3 eksen sensörü 3.3V olduğundan, 5V'yi 3.3V'a dönüştürmek için bunlardan birine ihtiyacınız var. Büyük bir adı var, ancak SpurkFun'da yalnızca 1,95 $ maliyeti.* Büyük Optik Dedektör / Fototransistör - Bu, bu projede farenin çalışma yüzeyinden kaldırıldığını algılamak için kullanılan basit bir optik sensördür. SpurkFun'dan 2.25$'a satın aldıysanız, bunu seçtiğiniz farenin içine yerleştirmek için yeterli alanınız yoksa, bunu daha küçük ve daha ucuz bir şekilde kullanabilirsiniz. * Bir (1) LED - rengi boşverin, ultra parlak daha iyi çalışır.* 2 Direnç - Bir (1) x 100Ω ve Bir (1) x 100KΩ (Optik sensör için)* Arduino kartı - DA! Diecimila modelini kullandım. Daha yeni bir Duemilanove, SpurkFun'da yaklaşık 29,95 $ karşılığında mevcut (Ayrıca çalışması gerekir) + Arduino yazılımı yüklendi.* İşleme yazılımı yüklendi.* Projenin kaynak kodu (Endişelenme, bir saniye içinde indireceksin.) Artı: Biraz sıcak tutkal (bir şeyleri yerine sabitlemek için)Birkaç küçük vida. Yaklaşık 10cm 6mm (Çap) ahşap dübel. Bazı ekstra teller. Lehimleme demir. Plastiği kesmek için bir şey, bir kesme bıçağı ve bir dosya kullandım (şekillendirme için). ("Tamam, bu adım için benden nefret etmeyin, İngilizce benim 2. dilim, eğer bunu yanlış anladıysam, üzgünüm, ne yapmaya çalıştığımı bir saniye içinde anlayacaksınız. resimlerde göreceksiniz")

2. Adım: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik

Her şeyin birlikte lehimlenmesi gerekiyor…Bir bakıma…NOT: 3 eksenli sensör pahalı bir şey, her şeyi açmadan önce kabloları iki kez kontrol edin…Bu projede kullanılan tüm kablolama için ekteki şemalara bakın. Ekli kaynak kodu sadece benim yaptığım pin numaralarını kullanırsanız çalışabilir, ancak koddaki uygun numaraları değiştirdiğiniz sürece bağlanırken bunları değiştirmekten çekinmeyin. 3 eksenli sensörü mantık seviye dönüştürücüye bağlama:Sensör VCC -> Arduino 3V3Sensor GND -> Arduino GndSensor SDA -> Dönüştürücü TXI (Chan1) Dönüştürücü TXO (Chan1) -> Arduino ANALOG IN 4Sensor SCL -> Dönüştürücü TXI (Chan2) Dönüştürücü TXO (Chan2) -> Arduino ANALOG IN 5Converter GND (en az biri) -> Arduino GndConverter HV -> Arduino 5VConverter LV -> Arduino 3V3Arduino için optik sensör:Bakınız ekteki imageDigital in = ArduinoLED'deki Pin 11:GND bazılarına GND (optik sensörlerden birini kullandım)+ - Arduino PIN 13'e (Bu, bu pinin zaten yerleşik bir direnci olduğundan yapıldı, farklı bir tane kullanıyorsanız, LED'i yakmamak için bir direnç kullandığınızdan emin olun)

3. Adım: Fareyi Hazırlama

Fareyi Hazırlama
Fareyi Hazırlama
Fareyi Hazırlama
Fareyi Hazırlama
Fareyi Hazırlamak
Fareyi Hazırlamak

Sensörler, farenin muhafazası içinde yerlerini burada bulurlar. 3 eksenli sensörü sabitlemek için en iyi yeri bulun. Düz olduğundan emin olun ve yönüne dikkat edin (Sensörü ne zaman elinizde tutacağınızı bileceksiniz) İstediğiniz şekilde sabitleyebilirsiniz, 2 küçük vidayı kabul etmek için delinmiş 2 kısa ahşap dübel kullandım ve farenin ana kartına sıcak yapıştırılmıştır. Optik sensör için farenin altında dikdörtgen bir delik oluşturun, buradaki fikir sensörün her zaman tabloyu "görmesini" sağlamaktır. Fare kaldırıldığında ve sensör durumu "açık" olduğunda (görülecek tablo yok) fare 3D moduna geçer (İşleme çizimini çalıştırır) Ekstra kabloları (sensörlerden Arduino'ya) dışarı yönlendirmek için başka bir delik şekillendirin plastik kap. Mayın farenin sağ tarafında bulunuyordu. LED'in gösterileceği yere sabitleyin. Bu projede LED, 3D modu göstergesidir. Benimkini silikon fare tekerleğinin yanına yerleştiriyorum. Fare kaldırıldığında, tekerlek güzel bir mavi parıltıya sahipti.

Adım 4: Kaynak Kodu

Arduino'nun kodu öğretmenim Shachar Geiger tarafından yazılmıştır ve bu proje için benim tarafımdan değiştirilmiştir. 3D küp kodu Processing web sitesinde bulunan temel koddur. Biraz değiştirdim. Kodda, bu yığın sensörden gelen ham bilgiyi (tipik olarak -180'den 180 x 10'a) 0-255 getHeading();Serial.write ('x');x = (x'e dönüştürür. +1800) / 14;Serial.write(x);Serial.write('y');y = (y+1800) / 14;Serial.write(y);Serial.write('z');z= (z+1800) / 14;Serial.write(z); Sensörden ve Arduino'dan gelen bilgiler, her bir ayrı eksen için İşleme çizimine gider, ancak bir önceki eksen harfiyle (örn. X12 Y200 Z130 için), aşağıdaki kod harfi bırakır ve yalnızca COM'a gönderilecek değerleri bırakır. port while(port.available() == 0){}char okuma = 0;while (okuma != 'x') {while(port.available() == 0){}okuma = (char)port.read ();}X = port.read();while (okurken != 'y') {while(port.available() == 0){}reading = (char)port.read();}Y = port.read();while (okuma != 'z') {while(port.available() == 0){}reading = (char)port.read();}Z = port.read(); Bu kod parçası tüm negatif değerleri düşürür… if ((X != -1) && (Y != -1) && (Z != -1)){rotateZ(-(float)Y/25.0);rotateX((float)X/25.0);rotateY((float)Z/25.0);pX = X;pY = Y;pZ = Z;} else {rotateZ(-(float)pY/25.0);rotateX((kayan)pX /25.0);rotateY((float)pZ/25.0);} Ekli ZIP dosyası hem Arduino hem de İşleme kodunu içeriyordu

Adım 5: Video

İşte bu…Bu bir videodaki bitmiş proje. Küçük bir hata var (Videoda küpün bazen "atladığını" görebilirsiniz), Z ekseninden dolayıdır, başınıza gelmeyebilir…

Önerilen: