İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu eğitimde Magicbit dev kullanarak Akıllı çöp kovası yapmayı öğreneceğiz. Arduino IDE ile kurulu. Hadi başlayalım.
Gereçler
- sihirli bit
- USB-A - Mikro USB Kablosu
- Ultrasonik Sensör - HC-SR04 (Genel)
- SG90 Mikro servo motor
1. Adım: Öykü
Projeye geçmeden önce Akıllı çöp kovasının ne olduğuna bakalım. Her evde bir veya daha fazla çöp kutusu vardır. Birçok kez örttün. Çünkü bu evinizde koku yapacaktır. Yani çöp kutusuna biraz çöp atmak istediğinizde onu açmalısınız. Ama çöpü atmak için çöp kutusunun yanına gittiğinizde otomatik olarak kapağı açılıyorsa, o zaman nasıl göründüğünü. Çılgın aa…. bu yüzden akıllı çöp kutusu.
Adım 2: Teori ve Metodoloji
Teori çok basit. Çöp kutusuna yaklaştığınızda sizi algılayacaktır. Çöp kutusuyla aranızdaki mesafe belirli bir mesafeden daha azsa, çöp kutusunun kapağı otomatik olarak açılır. Bu iki nesneyi tamamlamak için HC-SRO4 ultrasonik sensör ve küçük servo motorlar kullanıyoruz. Her türlü dijital servo motor alabilirsiniz.
Adım 3: Donanım Kurulumu
Bu proje için temel olarak üç donanım bileşeni kullandık. Bunlar Magicbit, servo motor ve ultrasonik sensördür. Tüm bu parçalar arasındaki bağlantı yukarıdaki şekilde gösterilmiştir.
Güçlendirme için ultrasonik sensör 3.3 v kullandı. Bu nedenle, ultrasonik sensörü Magicbit'e bağlamak için Magicbit kartının sağ alt portunu kullandık. Ancak servo motor düzgün çalışması için 5V kullanılır, bu nedenle servo motoru Magicbit'e bağlamak için sol alt bağlantı noktasını kullandık. Bu durumda Magic bit servo konnektör modülünü kullanıyoruz. Ancak bu modüle sahip değilseniz, magicbit'te 5V'yi 5V'a, Gnd'yi Gnd'ye ve sinyal pinini 26 pin'e bağlamak için üç jumper kablosu kullanabilirsiniz.
Şimdi projemizin mekanik tarafına bakalım. Kapağı açmak için çok basit bir kol mekanizması kullanıyoruz. Bir tarafı servo el klipsini servoya bağladık. Ardından klipsteki köşe deliğini ve çöp kutusu kapağını güçlü metal tel kullanarak bağladık. Metal tel servo klipse ve çöp kutusu kapağına göre dönebilir. En iyi görüntü ve videoyu inceleyerek bunu çok kolay bir şekilde oluşturabilirsiniz.
Adım 4: Yazılım Kurulumu
Yazılım kısmı da çok kolay. Arduino IDE koduna ve bu kodun nasıl çalıştığına bakalım.
Servo sürmek için ESP32 servo kütüphanesini kullanıyoruz. Bu kütüphane, Arduino IDE'deki sihirli bit yönetim kurulu yöneticisine neredeyse dahildir. Ultrasonik sensörle başa çıkmak için newPing kütüphanesini kullanıyoruz. Bu, aşağıdaki bağlantıdan indirilebilir.
bitbucket.org/teckel12/arduino-new-ping/d…
Zip dosyasını indirin ve araçlar> kitaplığı dahil et> Arduino'da Zip kitaplığı ekleyin. şimdi yeni pin kitaplığının indirilen zip dosyasını seçin. kodda önce servo ve ultrasonik sensör kütüphanelerini ilan ediyoruz. Döngü işlevinde her zaman çöp kutusundan en yakın ön nesneye olan mesafeyi kontrol ederiz. Bu 200'den büyükse kütüphanenin mesafe çıkışı 0'dır. Mesafe 60cm'den az olduğunda, servo döndürerek kapağı açmak için for döngüsü yürütür. Mesafe 60 cm'den büyükse, kapak aşağı inecektir. Boole değişkenini kullanarak her zaman kapağın durumunu kontrol ederiz. Kapak aşağıdaysa, yalnızca açılır. Ayrıca tam tersi. Şimdi doğru COM portunu ve kartını magcibit olarak seçin, Ardından kodu yükleyin. Artık akıllı çöp kutunuz kullanıma hazır.
Adım 5: Arduino Kodu
#Dahil etmek
#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // servo kitaplığını dahil et int uzaklığı; Servo RadarServo; geçersiz kurulum() { Serial.begin(115200); RadarServo.attach(26); // Servo motora bağlı gecikmenin hangi pinde olduğunu tanımlar(3000); } void loop() { // servo motoru 15 dereceden 165 dereceye döndürür for(int i=0;i<=180;i++){ RadarServo.write(i); gecikme(50); Distance = sonar.ping_cm();// Ultrasonik sensör tarafından her derece için ölçülen mesafeyi hesaplamak için bir fonksiyon çağırır for(int j=0;j0){ break; } Seri.print(i); // Geçerli dereceyi Seri Bağlantı Noktasına gönderir Serial.print(", "); // Serial.print(j); // Geçerli dereceyi Seri Bağlantı Noktasına gönderir Serial.print("*"); Seri.baskı(1); // Uzaklık değerini Seri Bağlantı Noktasına gönderir Serial.print("/"); // Serial.print(mesafe); // Uzaklık değerini Seri Bağlantı Noktasına gönderir Serial.print("."); // İndeksleme için İşleme IDE'sinde daha sonra ihtiyaç duyulan önceki değerin hemen yanına ekleme karakteri gönderir } } // Önceki satırları 165 ila 15 derece arasında tekrarlar for(int i=180;i>=0;i--){ RadarServo.write(i); gecikme(50); mesafe = sonar.ping_cm(); for(int j=75;j>=0;j-=25){ if(i==180 && (j==75 ||j==50 ||j==25)){ devam; } Seri.print(i); // Geçerli dereceyi Seri Bağlantı Noktasına gönderir Serial.print(", "); // Serial.print(j); // Geçerli dereceyi Seri Bağlantı Noktasına gönderir Serial.print("*"); Seri.baskı(-1); // Uzaklık değerini Seri Bağlantı Noktasına gönderir Serial.print("/"); // Serial.print(mesafe); // Uzaklık değerini Seri Bağlantı Noktasına gönderir Serial.print("."); // İndeksleme için İşleme IDE'sinde daha sonra ihtiyaç duyulan önceki değerin hemen yanına ekleme karakteri gönderir } } }