You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/id/4-manufacturing/lessons/2-check-fruit-from-device/pi-camera.md

7.8 KiB

Menangkap Gambar - Raspberry Pi

Dalam bagian pelajaran ini, Anda akan menambahkan sensor kamera ke Raspberry Pi dan membaca gambar darinya.

Perangkat Keras

Raspberry Pi membutuhkan kamera.

Kamera yang akan Anda gunakan adalah Raspberry Pi Camera Module. Kamera ini dirancang untuk bekerja dengan Raspberry Pi dan terhubung melalui konektor khusus di Pi.

💁 Kamera ini menggunakan Camera Serial Interface, sebuah protokol dari Mobile Industry Processor Interface Alliance, yang dikenal sebagai MIPI-CSI. Ini adalah protokol khusus untuk mengirimkan gambar.

Menghubungkan Kamera

Kamera dapat dihubungkan ke Raspberry Pi menggunakan kabel pita.

Tugas - Menghubungkan Kamera

Kamera Raspberry Pi

  1. Matikan daya Pi.

  2. Hubungkan kabel pita yang disertakan dengan kamera ke kamera. Untuk melakukannya, tarik perlahan klip plastik hitam di penahan sehingga keluar sedikit, lalu geser kabel ke dalam soket, dengan sisi biru menghadap jauh dari lensa, dan strip pin logam menghadap ke lensa. Setelah kabel masuk sepenuhnya, dorong klip plastik hitam kembali ke tempatnya.

    Anda dapat menemukan animasi yang menunjukkan cara membuka klip dan memasukkan kabel di dokumentasi Memulai dengan Modul Kamera Raspberry Pi.

    Kabel pita dimasukkan ke modul kamera

  3. Lepaskan Grove Base Hat dari Pi.

  4. Lewatkan kabel pita melalui slot kamera di Grove Base Hat. Pastikan sisi biru kabel menghadap ke port analog yang diberi label A0, A1, dll.

    Kabel pita melewati Grove Base Hat

  5. Masukkan kabel pita ke port kamera di Pi. Sekali lagi, tarik klip plastik hitam ke atas, masukkan kabel, lalu dorong klip kembali ke tempatnya. Sisi biru kabel harus menghadap ke port USB dan ethernet.

    Kabel pita terhubung ke soket kamera di Pi

  6. Pasang kembali Grove Base Hat.

Memprogram Kamera

Raspberry Pi sekarang dapat diprogram untuk menggunakan kamera menggunakan pustaka Python PiCamera.

Tugas - Mengaktifkan Mode Kamera Legacy

Sayangnya, dengan dirilisnya Raspberry Pi OS Bullseye, perangkat lunak kamera yang disertakan dengan OS berubah, sehingga secara default PiCamera tidak lagi berfungsi. Ada pengganti yang sedang dikembangkan, bernama PiCamera2, tetapi ini belum siap untuk digunakan.

Untuk saat ini, Anda dapat mengatur Pi ke mode kamera legacy agar PiCamera dapat berfungsi. Soket kamera juga dinonaktifkan secara default, tetapi mengaktifkan perangkat lunak kamera legacy secara otomatis mengaktifkan soket.

  1. Nyalakan Pi dan tunggu hingga selesai booting.

  2. Luncurkan VS Code, baik langsung di Pi, atau sambungkan melalui ekstensi Remote SSH.

  3. Jalankan perintah berikut dari terminal Anda:

    sudo raspi-config nonint do_legacy 0
    sudo reboot
    

    Perintah ini akan mengubah pengaturan untuk mengaktifkan perangkat lunak kamera legacy, lalu me-reboot Pi agar pengaturan tersebut berlaku.

  4. Tunggu Pi untuk reboot, lalu luncurkan kembali VS Code.

Tugas - Memprogram Kamera

Program perangkat.

  1. Dari terminal, buat folder baru di direktori home pengguna pi bernama fruit-quality-detector. Buat file di folder ini bernama app.py.

  2. Buka folder ini di VS Code.

  3. Untuk berinteraksi dengan kamera, Anda dapat menggunakan pustaka Python PiCamera. Instal paket Pip untuk ini dengan perintah berikut:

    pip3 install picamera
    
  4. Tambahkan kode berikut ke file app.py Anda:

    import io
    import time
    from picamera import PiCamera
    

    Kode ini mengimpor beberapa pustaka yang diperlukan, termasuk pustaka PiCamera.

  5. Tambahkan kode berikut di bawah ini untuk menginisialisasi kamera:

    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.rotation = 0
    
    time.sleep(2)
    

    Kode ini membuat objek PiCamera, mengatur resolusi ke 640x480. Meskipun resolusi yang lebih tinggi didukung (hingga 3280x2464), pengklasifikasi gambar bekerja pada gambar yang jauh lebih kecil (227x227) sehingga tidak perlu menangkap dan mengirim gambar yang lebih besar.

    Baris camera.rotation = 0 mengatur rotasi gambar. Kabel pita masuk ke bagian bawah kamera, tetapi jika kamera Anda diputar agar lebih mudah mengarah ke objek yang ingin Anda klasifikasikan, maka Anda dapat mengubah baris ini ke jumlah derajat rotasi.

    Kamera menggantung di atas kaleng minuman

    Misalnya, jika Anda menggantung kabel pita di atas sesuatu sehingga berada di bagian atas kamera, maka atur rotasi menjadi 180:

    camera.rotation = 180
    

    Kamera membutuhkan beberapa detik untuk memulai, oleh karena itu baris time.sleep(2).

  6. Tambahkan kode berikut di bawah ini untuk menangkap gambar sebagai data biner:

    image = io.BytesIO()
    camera.capture(image, 'jpeg')
    image.seek(0)
    

    Kode ini membuat objek BytesIO untuk menyimpan data biner. Gambar dibaca dari kamera sebagai file JPEG dan disimpan di objek ini. Objek ini memiliki indikator posisi untuk mengetahui di mana posisinya dalam data sehingga lebih banyak data dapat ditulis di akhir jika diperlukan, jadi baris image.seek(0) memindahkan posisi ini kembali ke awal sehingga semua data dapat dibaca nanti.

  7. Di bawah ini, tambahkan kode berikut untuk menyimpan gambar ke file:

    with open('image.jpg', 'wb') as image_file:
        image_file.write(image.read())
    

    Kode ini membuka file bernama image.jpg untuk ditulis, lalu membaca semua data dari objek BytesIO dan menulisnya ke file.

    💁 Anda dapat menangkap gambar langsung ke file alih-alih objek BytesIO dengan memberikan nama file ke panggilan camera.capture. Alasan menggunakan objek BytesIO adalah agar nanti dalam pelajaran ini Anda dapat mengirim gambar ke pengklasifikasi gambar Anda.

  8. Arahkan kamera ke sesuatu dan jalankan kode ini.

  9. Gambar akan ditangkap dan disimpan sebagai image.jpg di folder saat ini. Anda akan melihat file ini di penjelajah VS Code. Pilih file untuk melihat gambar. Jika perlu rotasi, perbarui baris camera.rotation = 0 sesuai kebutuhan dan ambil gambar lagi.

💁 Anda dapat menemukan kode ini di folder code-camera/pi.

😀 Program kamera Anda berhasil!


Penafian:
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI Co-op Translator. Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.