Yeni Raspberry Pi Kamera Modülü 3, olağanüstü görüntü kalitesi ve standart (75 derece) ve geniş (120 derece) lensler arasında bir seçim sunar. Hepsinden iyisi, artık otomatik odaklamamız var. Picamera2 ile fotoğraf çekme kolaydır, ancak bazen sadece bir düğmeye basıp bir resim çekmek ve çekimde görünmek isteriz!
Bu projede Blue Dot, bir Python modülü ve Android uygulamasını kullanarak Bluetooth kontrollü bir kamera tetikleyicisi oluşturacağız. Blue Dot’un kullanımı kolay kütüphanesi ve Picamera2’nin ayrıntılı yapısı sayesinde az miktarda kodla 1080p fotoğraflar çekeceğiz.
Bu Proje İçin İhtiyacınız Olacak
- Ahududu Pi 3 veya 4
- Ahududu Pi Kamera
- Android cihaz
Raspberry Pi Kamera Modülünün Kurulumu
1. kamera bağlantı noktasını aç plastik kilidi yavaşça yukarı kaldırarak.
2. Şerit konektörü, mavi sekme USB / Ethernet bağlantı noktalarına bakacak şekilde takın. Raspberry Pi Zero kullanıcılarının bir adaptör kullanması ve kamerayı kartın sağ tarafındaki bağlantı noktasına bağlaması gerekecek.
3. Konektördeki kilidi kapatın ve yerinde olduğundan emin olmak için çok nazik bir şekilde çekin.
4. Raspberry Pi’yi masaüstüne açın. Bir terminal açın ve en son Picamera güncellemelerini yükleyin.
sudo apt update && sudo apt upgrade -y
5. Terminalden kameranızın düzgün çalışıp çalışmadığını kontrol edin. Libcamera komutu, kameramızın bağlı olduğunu ve beklendiği gibi çalıştığını hızlı bir şekilde kontrol etmek için kullanışlıdır.
libcamera-hello
Blue Dot’u Yükleme
Blue Dot, Martin O’Hanlon tarafından yaratılmıştır ve bir Raspberry Pi’yi uzaktan kontrol etmek için gerçekten basit bir yol sağlar. “Mavi Nokta” adı, Android cihazının ekranına hakim olan büyük, mavi noktayı temsil eder. Fotoğraf çekmek için kamerayı tetiklemek üzere büyük, mavi bir düğme olarak Blue Dot kullanacağız.
1. Android cihazınızda Google Play Store’u açın ve Blue Dot’u arayın. Alternatif olarak Bu bağlantıyı takip et.
2. Blue Dot’u Android cihazınıza kurun.
3. Raspberry Pi’nizde, bir terminal açın ve Blue Dot’un Python kitaplığını kurun.
sudo pip3 install bluedot
4. Bluetooth menüsüne gidin, sağ tıklayın ve “Keşfedilebilir Yap” öğesini seçin.
5. Android cihazınızda Ayarlar >> Bağlı cihazlar’a gidin ve Yeni Cihaz Eşleştir’i seçin.
6. “Raspberrypi”yi seçin ve eşleştirme talimatlarını takip edin. Raspberry Pi’nizin farklı bir ana bilgisayar adı varsa, “raspberrypi” görünmez, ana bilgisayar adınızı arayın.
Android cihazımız ve Raspberry Pi artık bağlıyken, Blue Dot’un iki cihaz arasında iletişim kurabildiğini kontrol etmek için hızlı bir Python betiği yazacağız.
1. Tonny’yi açProgramlama altındaki ana menüde bulunur.
2. Yeni bir dosya oluşturun ve Blue Dot Python kitaplığını içe aktarın.
from bluedot import BlueDot
3. Bir nesne oluşturun, bd, kütüphane ile çalışmak için kullanacağımız.
sudo pip3 install bluedot
4. Kullanıcının mavi düğmeye basmasını bekleyin. Python’un bu satırı bir engelleyicidir. Kullanıcı etkileşime girene kadar bekleyecektir. Bu olduğunda, kod bir sonraki satıra geçer.
bd.wait_for_press()
5. Python kabuğuna bir mesaj yazdırın.
print("You pressed the blue dot!")
6. Kodu bd-test.py olarak kaydedin ve Çalıştır’a tıklayın. Kod, Android cihazımızdan bir bağlantı için bekleyecektir.
7. Android cihazınızda Blue Dot’u açın.
8. Raspberry Pi’nizin ana bilgisayar adını seçin. Tipik olarak bu “raspberrypi” dir.
9. Python kodunu harekete geçirmek için Mavi Noktaya tıklayın. Python kabuğunda bir mesaj görmelisiniz.
Komple Test Kodu Listesi
from bluedot import BlueDot
bd = BlueDot()
bd.wait_for_press()
print("You pressed the blue dot!")
Mavi Nokta ile Kamera Tetikleyici Oluşturma
Bu projenin amacı, Blue Dot ile bir kamera tetikleyici oluşturmaktır. Düğmeye basıldığında, Raspberry Pi’de fotoğraf çekmeyi sağlayan bir işlev başlatılır.
1. Yeni bir dosya oluşturun ve Blue Dot Python kitaplığını içe aktarın.
from bluedot import BlueDot
2. Picamera2 ve libcamera’yı içe aktarın. Önizleme sınıfı, bir çekimi kadrajlamak için yararlı olan önizleme pencereleri oluşturmak için kullanılır. Libcamera’nın kontroller sınıfı, yeni Kamera Modülü 3 ile otomatik odaklama kullanmamızı sağlar.
from picamera2 import Picamera2, Preview
from libcamera import controls
3. Duraklatma işlevini sinyalden ve ardından zaman kitaplığından içe aktarın. Duraklat, kodun çıkmasını durdurmak için kullanılacaktır. Önizleme penceresi oluşturulduktan sonra zaman kodu geciktirecek ve bize bir çekimi çerçevelemek için zaman verecektir.
from signal import pause
import time
4. Bir nesne oluşturun, bd, kütüphane ile çalışmak için kullanacağımız.
bd = BlueDot()
5. Bir nesne oluşturun, picam2, bu, Picamera2 kitaplığını kolayca kullanmamızı sağlayacaktır.
picam2 = Picamera2()
6. Resim çekmek için kullanılacak bir fonksiyon tanımlayın, take_picture(). İşlevler, adlarını çağırarak çalışır, bu, işlevin içindeki tüm adımlardan geçmesini tetikler.
7. Kameranın fotoğraf çekmesi için bir yapılandırma oluşturun. Bu, görüntü boyutunu 1080p olarak ayarlarken önizleme pencereleri 720p olur.
camera_config = picam2.create_still_configuration(main="size": (1920, 1080), lores="size": (1280, 720), display="lores")
8. Picamera2’yi yeni yapılandırmayı kullanacak şekilde ayarlayın.
picam2.configure(camera_config)
9. 720p çözünürlüklü bir önizleme penceresi başlatın. Konumu X ve Y koordinatlarını kullanarak belirliyoruz, aksi takdirde varsayılan olarak 0,0 olur. İhtiyaçlarınızı karşılamak için bunu değiştirin.
picam2.start_preview(Preview.QTGL, x=100, y=200, width=1280, height=720)
10. Önizleme penceresini göster.
picam2.start(show_preview=True)
11. Sürekli otomatik odaklama kullanmak için kamerayı ayarlayın. Bunun yalnızca Kamera Modülü 3 ile çalıştığını unutmayın.
picam2.set_controls("AfMode": controls.AfModeEnum.Continuous)
12. Görüntüyü picam1.jpg adlı bir dosyaya çekmeden önce iki saniye duraklayın.
time.sleep(2)
picam2.capture_file("picam1.jpg")
13. Önizleme penceresini kapatın ve ardından Picamera2’yi durdurun.
picam2.stop_preview()
picam2.stop()
14. Fonksiyon dışında, resim_çek işlevini çalıştırarak kullanıcı girişine tepki vermek için Blue Dot’un “When_pressed” işlevini kullanın.
bd.when_pressed = take_picture
15. Kodun çıkmasını önlemek için duraklat’ı kullanın.
pause()
16. Kodu bluedot_camera.py olarak kaydedin ve Çalıştır’a tıklayın kodu başlatmak için. Kodun Android cihazının bağlanmasını beklediğini göreceksiniz.
17. Android cihazınızda, Blue Dot’u açın.
18. Raspberry Pi’nizin ana bilgisayar adını seçin. Tipik olarak bu “raspberrypi” dir.
19. Mavi Noktaya tıklayın kamerayı tetiklemek için Önizleme penceresinin göründüğünü göreceksiniz ve ardından iki saniye sonra mikro SD karta bir görüntü kaydedilecek. Art arda basıldığında yeni bir görüntü oluşturulur, ancak dosya adı aynı olduğu için her seferinde üzerine yazılır.
Eksiksiz Kod Listesi
from bluedot import BlueDot
from picamera2 import Picamera2, Preview
from libcamera import controls
from signal import pause
import time
bd = BlueDot()
picam2 = Picamera2()
def take_picture():
camera_config = picam2.create_still_configuration(main="size": (1920, 1080), lores="size": (1280, 720), display="lores")
picam2.configure(camera_config)
picam2.start_preview(Preview.QTGL, x=100, y=200, width=1280, height=720)
picam2.start(show_preview=True)
picam2.set_controls("AfMode": controls.AfModeEnum.Continuous)
time.sleep(2)
picam2.capture_file("picam1.jpg")
picam2.stop_preview()
picam2.stop()
bd.when_pressed = take_picture
pause()