İçindekiler:

EV3 Kullanan Otomatik Kör Açıcı: 6 Adım
EV3 Kullanan Otomatik Kör Açıcı: 6 Adım

Video: EV3 Kullanan Otomatik Kör Açıcı: 6 Adım

Video: EV3 Kullanan Otomatik Kör Açıcı: 6 Adım
Video: Dilan Polat tan skandal @DilanPolat @iremderici @melekazad5518 @derindevletmafya 2024, Temmuz
Anonim
EV3 Kullanan Otomatik Kör Açıcı
EV3 Kullanan Otomatik Kör Açıcı
EV3 Kullanan Otomatik Kör Açıcı
EV3 Kullanan Otomatik Kör Açıcı

Yatak odamda sabah veya akşam sık sık açmayı veya kapatmayı unuttuğum bir stor perde takımım var. Açmayı ve kapamayı otomatikleştirmek istiyorum, ancak ne zaman değiştireceğimi geçersiz kılma ile.

Adım 1: Potansiyel Fikirler veya Çözümler

YouTube, Instructables ve Thingiverse gibi çeşitli sitelere baktıktan sonra, en yaygın çözümün bir step motor veya servo kullanarak panjurları saran ve açan makarayı motorize etmek olduğunu buldum. Çeşitli avantajları ve dezavantajları olan 2 ana seçenek buldum.

Fikir 1: Motor ve dişlinin makaranın içine yerleştirildiği makara yöntemi. Bu, düzgün ve zarif bir yöntem olmasının avantajlarına sahiptir, ancak jaluzide büyük değişiklik gerektirmesi, kordonun artık kullanılamaması ve uygulandığında bakım için montaja erişmenin çok zor olması gibi dezavantajları vardır.

Fikir 2: Motor ve dişlinin kabloya yerleştirildiği kablo yöntemi. Bu, daha basit olması ve montajın kolayca erişilebilir olması avantajına sahiptir. Ancak, çirkin ve hantal olabilmesinin yanı sıra uygulandığında pervaza takılması gerektiği dezavantajına sahiptir.

Kordonun manuel kullanımını engellemeyen çok daha basit bir çözüm olduğu için kordon yöntemini tercih ediyorum ve jaluzi herhangi bir büyük değişiklik gerektirmeyecek. Son sürümü bir ESP8266 ile yaptığımda, mümkün olduğunca gizli ve kompakt hale getirmeyi planlıyorum.

Adım 2: Montajı Yapmak

Montajın Yapılması
Montajın Yapılması
Montajın Yapılması
Montajın Yapılması

Bu projeyi, projenin işe yarayabileceğini göstermem gereken işlevselliğe sahip Lego mindstorms EV3'ümü kullanarak yaptım ve kesinlikle çok yardımcı olan yazılıma aşinayım. Kör, Lego dişlilerinin uyumsuz olduğu makarayı sürmek için bir bilyeli zincir kullandığından, en iyi çözümün, dışta doğru bilye aralığına sahip bir dişli tasarlamak olduğuna karar verdim - standart "çapraz şekilli" deliğe sahip. merkezi, daha sonra tasarımı 3B yazdıracağım yer. Bu noktada ayrıca bir kalibrasyon düğmesi yaptım ve pencereme bir ışık sensörü ile geçersiz kılma işlevi görecek bir düğme ekledim.

Adım 3: Kör Dişliyi Tasarlamak

Kör Dişliyi Tasarlamak
Kör Dişliyi Tasarlamak
Kör Dişliyi Tasarlamak
Kör Dişliyi Tasarlamak
Kör Dişliyi Tasarlamak
Kör Dişliyi Tasarlamak
Kör Dişliyi Tasarlamak
Kör Dişliyi Tasarlamak

Krankın nasıl daha ayrıntılı göründüğünü görmek için panjuru söktüm. Sökme işlemi sırasında, gerilmiş bir bobin tarafından yerinde tutulan 16 dişli küçük bir dişli buldum, aradığım parça buydu. Dişlinin bir kopyasını tasarladıktan sonra, gerekli Lego uyumlu delikleri ekledim, 3 ayrı parçayı yazdırdım ve son olarak süper yapıştırıcı ile birbirine yapıştırdım. Başlangıçta, 3D yazıcımın “x” deliğini yeterince açma çözünürlüğü olmadığı için Lego parçasını uyumlu hale getirmekle ilgili sorunlar yaşadım, ancak her iki tarafındaki dairesel deliklerle ilgili hiçbir sorunu yoktu. Bu yüzden "x"i dairesel bir delikle değiştirdim ve iyi yazdırdı. Ardından, küçük bir miktar testten sonra, körlüğün torku ve ağırlığını kaldırabileceğini görebildim. Tasarımlarımı aşağıdaki donanıma bağlayacağım veya Thingiverse'de şu adreste bulabilirsiniz:

Adım 4: Körleri Kodlamak

Körleri Kodlamak
Körleri Kodlamak

Belirli bir ışık seviyesine geldiğinde panjuru otomatik olarak açıp kapatan, ancak aynı zamanda bir geçersiz kılma düğmesi de olan, böylece istendiğinde perdeyi açıp kapatabilen bir kod istedim. GitHub'ımı buradaki kodun son sürümüyle bağladım:

Projenin kodunu tamamlamam birkaç günümü aldı, programın temel mantığı ışık sensörüyle doğru şekilde çalışıyordu, ancak anlık geçersiz kılma düğmesi düzgün çalışmıyordu. Basıldığında perdenin durumunu değiştirdi, ancak körün konumunda kalacağı anlamına gelen “kilitleme” işlevinden yoksundu - yani kör, onu hemen önceki haline geri döndürecekti. Bunu, aşağıda açıklayacağım ışık sensörü ve dokunma sensörünün değerlerini okuyan bir mantık VEYA kapısına bağlı bir "bekle" bloğu kullanarak düzelttim.

Kod, motorları ve panjuru kalibre ederek, panjur tamamen açıkken başlayıp alttaki dokunmatik sensöre çarpana kadar alçaltarak, dibe ulaşmak için kaç çeyrek dönüş gerektiğini sayarak başlar ve bu "RotationsNeeded" olarak kaydedilir. değişken. Ardından, körün konumunu izlemek için kullanılan “BlindOpen” değişkenine “false” yazar. Bu noktada kod 4 döngüye ayrılır.

Bu döngülerden biri, düğmenin durumunu sürekli olarak “ButtonPressed” adlı bir değişkene yayınlayan “Buttonstate” döngüsüdür. Bu, komut dosyasına birden fazla düğme bloğu yerleştirilmesi ihtiyacını ortadan kaldırır.

İkinci döngü, penceremin dışındaki ışık seviyesini kodda daha önce tanımlanan bir sabitle sürekli olarak karşılaştıran “Açık veya karanlık”tır. Sonuç bu sabitin altındaysa, döngü “ItIsLight” değişkenine “false”, değerin üzerindeyse “true” yazar.

Üçüncü döngü, temelde köre ne yapacağını söyleyen 3 seçenekten oluşan sayısal bir liste içerir, 0=kör aşağı, 1=kör yukarı, 2= kör doğru yerde olduğu için hiçbir şey yapma. Döngü, körün yapması gereken doğru görevi belirten “BlindShould” değişkenini okuyarak başlar, ardından bu görevi gerçekleştirir, “BlindOpen” değişkenini doğru seçeneğe dönüştürür ve ardından “BlindShould” değişkeni değişene kadar boşta kalır. tekrar eder. Perdeyi tamamen açmak veya kapatmak için "RotationsNeeded" değerini ve +/- %100 güç kullanır.

Dördüncü ve son döngü en karmaşık olanıdır, tüm verileri işleyen ve her bir permütasyonla ne yapılacağına karar veren “Karar Veren” döngüdür. Bunu, "düğmeye basıldı", "Işık seviyesi", "Kör açık" doğru veya yanlış soruların olduğu "yoldaki çatallar" mantığını kullanarak yapar. Tüm permütasyonlar, 0=kör aşağı, 1=kör yukarı veya 2= hiçbir şey yapma şeklinde kodlanmış bir yanıta sahiptir - bu değer, daha sonra önceki bir döngü tarafından işlenen “BlindShould” değişkenine yazılır. Bazı yanıtlar daha sonra komut dosyasını bitirmeden önce "ItIsLight" ve/veya "ButtonPressed" değişkeninin değişmesini bekler, bu yalnızca düğmeyle etkinleştirilen permütasyonlar için geçerlidir, aksi takdirde konumunu hemen düzeltmeye çalışır, yani kör geri döner orijinal durumuna. Bu süreç daha sonra, kolayca eklenebilen ve hata ayıklanabilen sağlam ve nispeten basit bir otomatik sistem oluşturmak için döngüye alınır. Vay canına.

Adım 5: Son Dokunuşlar

Son Dokunuşlar
Son Dokunuşlar

Daha sonra "pil" olarak bazı ahşap dübeller ve vidalar kullanarak EV3'üme 9V'luk bir güç kaynağı bağlamaya karar verdim, bu da ürünü pillere bağımlı hale getirdi ve pilleri birkaç günde bir değiştirmek zorunda kalmamı engelledi.

Adım 6: Projenin Değerlendirilmesi

Projenin genel olarak iyi gittiğini düşünüyorum, proje sırasında bulduğum tüm ilgili bilgileri alıp son versiyona uygulayabileceğim Otomatik panjur montajı için çalışan bir prototip ile bitirdim. Cihazı başarıyla kodladım ve daha sonra kodla ilgili şu ana kadar önemli bir sorunla karşılaşmadım. Cihazı görsel olarak daha çekici hale getirmek isterdim ama bir kez daha bu bir konsept kanıtı ve bir ESP8266 ile son sürümü yaptığımda iyi görünmesi için biraz çaba sarf edeceğim. Projeyi tekrar yaptığımda, gizlenmesi daha kolay olacağı için motoru panjurun içine oturacak şekilde tasarlayacağım. Öğrendiğim en büyük ders, mantıksal olarak hata ayıklamak ve uygulamadan önce kodumu düşünmek, belgelemek ve test etmektir.

Önerilen: