Ultrasonik sensörler kulağımızın algılayamayacağı frekansta ses dalgaları gönderir ve yansıyan ses dalgalarının geri dönüş süresini hesaplayarak mesafe bilgisi üretir. Biz programcılar ölçülen mesafeyi ve mesafedeki değişimleri anlamlandırarak projeler geliştiriyoruz. Araçların ön ve arka kısmında bulunan park sensörleri, ultrasonik sensörlerin günlük hayatta en yaygın olarak kullanıldığı yerlerdir. Bu yöntemle doğada yolunu bulan canlıyı biliyor musunuz? Yarasalar kör oldukları için çıkardıkları seslerin yansımaları sayesinde yollarını bulurlar.
Birçoğumuz para biriktirmeyi severiz. Azar azar biriktirdiğimiz paranın ihtiyaç duyulduğunda işe yaraması çok güzel bir duygu. Bu projemizde kendinize çok keyifli ve sevimli bir kumbara yapacaksınız. Kumbarayı yaparken servo motor ve ultrasonik mesafe sensörünü kullanacaksınız.
Ayrıntılar ve Algoritma
Bu projede HC-SR04 ultrasonik mesafe sensörü ve SG90 servo motor kullanılacaktır. Kullanıcı kumbaranın haznesine para koyarken mesafe sensörü yakınlığı algılayacak ve PicoBricks'e sinyal gönderecektir. PicoBricks servo motoru çalıştırıp kolu kaldıracak, parayı kumbaraya bırakacak ve ardından kol tekrar aşağı inecek.
Bileşenler
1X PicoBrick
1X HC-SR04 Ultrasonik Sensör
1X Servo Motorlu
Atlama Kabloları
Kolay Bağlantı Kabloları
Bağlantı şeması
Picobricks modüllerini kablolama olmadan kodlayabilir ve çalıştırabilirsiniz. Modülleri panodan ayırarak kullanacaksanız modül bağlantılarını grove kablolarla yapmalısınız.
Projenin İnşaat Aşamaları
Projenin orijinal dosyalarına ve yapım aşamalarına tıklayarak ulaşabilirsiniz. Burada. Bu linkteki projeden farklı olarak HC-SR04 ultrasonik mesafe sensörünü kullanacağız. HC-SR04 ultrasonik mesafe sensörüne göre güncellenmiş 3 boyutlu çizim dosyalarını adresinden indirebilirsiniz. bu bağlantı ve 3D baskıya sahip olun.
1: Servo motorun plastik aparatını kumbara koluna 2 adet vida ile sabitleyiniz.
2: Kumbara kolunun ikinci kısmını M3 vida ve somun ile haznenin bulunduğu ilk kısma sabitleyin.
3: Servo motor kablosunu geçirip yuvasına yerleştirin.
4: Servo motoru ve yuvasını kumbaranın gövdesine yerleştirin. Burada sıcak tutkal kullanabilirsiniz.
5: Ultrasonik mesafe sensörünü kumbara gövdesine yerleştirin ve sıcak tutkalla sabitleyin.
6: Kumbara kolunu servo motora takın ve M3 vidalarla üst kapağa sabitleyin.
7: Kumbara kolunu M2 vidayla gövdeye sabitleyin.
8: Servo motor ve ultrasonik mesafe sensörünün kablolarını takın ve güç kablolarını bağlayın.
9: Devre şemasına göre servo motor ve ultrasonik mesafe sensörünün kablolarını picoya bağlayın.
10: Pico’nun USB kablosunu takıp kabloları tekrar birleştirip alt kapağı takın. Hepsi bu.
PicoBricks'in MicroBlock Kodları
Projenin Microblocks kodlarına görseli Microblocks Run sekmesine sürükleyerek veya butonuna tıklayarak ulaşabilirsiniz. düğme.
PicoBricks'in MicroPython Kodları
makineden içe aktarma Pimi, PWM
kullanım süresini içe aktar
#kütüphaneleri tanımla
servo = PWM(Pin(21, Pin.OUT))
tetikleyici = Pin(15, Pin.OUT)
echo = Pin(14, Pin.IN)
#giriş ve çıkış pinlerini tanımlayın
servo.freq(50)
servo.duty_u16(6750)
def getDistance():
tetikleyici.düşük()
utime.sleep_us(2)
tetikleyici.yüksek()
utime.sleep_us(5)
tetikleyici.düşük()
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
geçen süre = sinyal açık - sinyal kapalı
mesafe = (geçen süre * 0,0343) / 2
print("Nesneye olan uzaklık ", uzaklık, "cm")
dönüş mesafesi
#mesafeyi hesapla
Doğruyken:
utime.sleep(0,01)
if int(getDistance()) <= 5: # mesafe değişkeni 5'ten küçükse
servo.duty_u16(4010)
utime.sleep(0.3) # bekle
servo.duty_u16(6750)
PicoBricks'in Arduino C Kodları
#include
#define trigPin 15
#define echoPin 14
//kütüphaneleri tanımlıyoruz
Servo servo;
geçersiz kurulum() {
Seri.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
//giriş ve çıkış pinlerini tanımlıyoruz
servo.attach(21); //servo pinini tanımlıyoruz
}
geçersiz döngü () {
uzun süre, mesafe;
digitalWrite(trigPin, DÜŞÜK);
gecikmeMicroseconds(2);
digitalWrite(trigPin, YÜKSEK);
gecikmeMicroseconds(10);
digitalWrite(trigPin, DÜŞÜK);
süre = darbeIn(echoPin, YÜKSEK);
mesafe = (süre / 2) / 29,1;
//mesafeyi hesapla
if (mesafe < 5) { //mesafe değişkeni 5'ten küçükse
Seri.print(mesafe);
Seri.println("cm");
servo.write(179);
}
else if (mesafe > 5) { // mesafe değişkeni 5'ten büyükse
Seri.print(mesafe);
Seri.println("cm");
servo.write(100);
}
}
GitHub Proje Sayfası