- Komponen Diperlukan
- Hal yang Perlu Diingat tentang Modul Kamera OV7670
- Diagram Sirkuit
- Pemrograman Arduino UNO
- Cara Menggunakan Serial Port Reader untuk membaca Gambar
- Di bawah ini adalah Gambar Contoh yang Diambil dari OV7670
- Tindakan pencegahan saat menggunakan OV7670
Kamera selalu mendominasi industri elektronik karena memiliki banyak aplikasi seperti sistem pemantauan pengunjung, sistem pengawasan, sistem kehadiran, dll. Kamera yang kita gunakan saat ini pintar dan memiliki banyak fitur yang tidak ada di kamera sebelumnya. Sementara kamera digital saat ini tidak hanya menangkap gambar tetapi juga menangkap deskripsi tingkat tinggi dari pemandangan dan menganalisis apa yang mereka lihat. Ini digunakan secara luas dalam Robotika, Kecerdasan Buatan, Pembelajaran Mesin, dll. Bingkai yang ditangkap diproses menggunakan Kecerdasan Buatan dan Pembelajaran Mesin, dan kemudian digunakan dalam banyak aplikasi seperti deteksi pelat nomor, deteksi objek, deteksi gerakan, pengenalan wajah, dll.
Dalam tutorial ini kita akan menghubungkan modul kamera yang paling banyak digunakan OV7670 dengan Arduino UNO. Modul kamera OV7670 dapat dihubungkan dengan Arduino Mega dengan konfigurasi pin, kode dan langkah yang sama. Modul kamera sulit untuk dihubungkan karena memiliki banyak pin dan kabel yang campur aduk untuk dijalankan. Selain itu, kabel menjadi sangat penting saat menggunakan modul kamera karena pilihan kabel dan panjang kabel dapat secara signifikan memengaruhi kualitas gambar dan dapat menimbulkan noise.
Kami telah melakukan banyak proyek pada Kamera dengan berbagai jenis Mikrokontroler dan Perangkat IoT seperti:
- Sistem Pemantauan Pengunjung dengan Raspberry Pi dan Pi Camera
- Sistem Keamanan Rumah Raspberry Pi berbasis IOT dengan Peringatan Email
- Kamera Pengintai Raspberry Pi dengan Motion Capture
The Camera OV7670 bekerja pada 3.3V, sehingga menjadi sangat penting untuk menghindari Arduino yang memberikan 5V output pada output pin GPIO mereka. OV7670 adalah kamera FIFO. Namun dalam tutorial ini, gambar atau bingkai akan diambil tanpa FIFO. Tutorial ini akan memiliki langkah-langkah sederhana dan pemrograman yang disederhanakan untuk menghubungkan OV7670 dengan Arduino UNO.
Komponen Diperlukan
- Arduino UNO
- Modul Kamera OV7670
- Resistor (10k, 4,7k)
- Pelompat
Software yang dibutuhkan:
- IDE Arduino
- Serial Port Reader (Untuk menganalisis Gambar Output)
Hal yang Perlu Diingat tentang Modul Kamera OV7670
Modul Kamera OV7670 adalah Modul kamera FIFO yang tersedia dari Produsen yang berbeda dengan Konfigurasi pin yang berbeda. TheOV7670 menyediakan gambar 8-bit full frame, berjendela dalam berbagai format. Array gambar mampu beroperasi hingga 30 frame per detik (fps) dalam VGA. OV7670 termasuk
- Image Sensor Array (sekitar 656 x 488 piksel)
- Penghasil Waktu
- Prosesor Sinyal Analog
- Pengonversi A / D
- Generator Pola Tes
- Prosesor Sinyal Digital (DSP)
- Image Scaler
- Port Video Digital
- Output Kontrol Lampu Kilat LED dan Strobo
Sensor gambar OV7670 dikontrol menggunakan Serial Camera Control Bus (SCCB) yang merupakan antarmuka I2C (SIOC, SIOD) dengan frekuensi clock maksimum 400KHz.
Kamera dilengkapi dengan sinyal jabat tangan seperti:
- VSYNC: Output Sinkronisasi Vertikal - Rendah selama bingkai
- HREF: Referensi Horizontal - Tinggi selama piksel aktif baris
- PCLK: Pixel Clock Output - Jam berjalan gratis. Data valid di tepi naik
Selain itu, ia memiliki beberapa sinyal lagi seperti
- D0-D7: Output Digital Komponen Video YUV / RGB 8-bit
- PWDN: Pilihan Mode Power Down - Mode Normal dan Mode Power Down
- XCLK: Input Jam Sistem
- Atur Ulang: Atur Ulang Sinyal
OV7670 memiliki clock dari osilator 24MHz. Ini memberikan output Pixel Clock (PCLK) sebesar 24MHz. FIFO menyediakan memori buffer bingkai video sebesar 3Mbps. Generator pola pengujian memiliki pola batang warna 8-bar, derai batang warna fade-to-grey. Sekarang mari kita mulai memprogram Arduino UNO untuk menguji Kamera OV7670 dan mengambil bingkai menggunakan pembaca port serial.
Diagram Sirkuit
Pemrograman Arduino UNO
Pemrograman dimulai dengan menyertakan pustaka wajib yang diperlukan untuk OV7670. Sejak OV7670 berjalan pada antarmuka I2C, itu termasukSetelah ini, register perlu dimodifikasi untuk OV7670. Program ini dibagi menjadi beberapa fungsi kecil untuk pemahaman yang lebih baik.
The Setup () terdiri dari semua setup awal diperlukan untuk hanya menangkap gambar. Fungsi pertama adalah arduinoUnoInut () yang digunakan untuk menginisialisasi arduino uno. Awalnya ini menonaktifkan semua interupsi global dan mengatur konfigurasi antarmuka komunikasi seperti jam PWM, pemilihan pin interupsi, pemilihan presclaer, menambahkan paritas dan stop bit.
ArduinoUnoInut ();
Setelah mengkonfigurasi Arduino, kamera harus dikonfigurasi. Untuk menginisialisasi kamera, kami hanya memiliki opsi untuk mengubah nilai register. Nilai register perlu diubah dari default ke custom. Tambahkan juga penundaan yang diperlukan tergantung pada frekuensi mikrokontroler yang kita gunakan. Karena, mikrokontroler lambat memiliki waktu pemrosesan yang lebih sedikit sehingga menambah lebih banyak penundaan antara bingkai pengambilan.
void camInit (void) { writeReg (0x12, 0x80); _delay_ms (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // PCLK tidak mengaktifkan HBLANK. }
Kamera diatur untuk mengambil gambar QVGA sehingga resolusinya harus dipilih. Fungsi ini mengkonfigurasi register untuk mengambil gambar QVGA.
setResolution ();
Dalam tutorial ini, gambar diambil dalam monokrom, jadi nilai register diatur untuk menghasilkan gambar monokrom. Fungsi mengatur nilai register dari daftar register yang telah ditentukan sebelumnya dalam program.
setColor ();
Fungsi di bawah ini adalah fungsi tulis ke register yang menulis nilai hex untuk mendaftar. Jika Anda mendapatkan gambar yang diacak maka cobalah untuk mengubah istilah kedua yaitu 10 menjadi 9/11/12. Tetapi sebagian besar waktu nilai ini berfungsi dengan baik sehingga tidak perlu mengubahnya.
writeReg (0x11, 10);
Fungsi ini digunakan untuk mendapatkan ukuran resolusi gambar. Dalam proyek ini kami mengambil gambar dalam ukuran 320 x 240 piksel.
captureImg (320, 240);
Selain itu, kode juga memiliki konfigurasi I2C yang dibagi menjadi beberapa bagian. Sekadar mendapatkan data dari kamera, konfigurasi I2C memiliki fungsi Start, Read, Write, Set Address yang penting untuk digunakan saat menggunakan protokol I2C.
Anda dapat menemukan kode lengkap dengan video demonstrasi di akhir tutorial ini. Cukup Unggah kode dan buka Pembaca Port Serial dan ambil bingkainya.
Cara Menggunakan Serial Port Reader untuk membaca Gambar
Serial Port Reader adalah GUI sederhana, unduh dari sini. Ini menangkap encode base64 dan mendekodekannya untuk membentuk gambar. Cukup ikuti langkah-langkah sederhana ini untuk menggunakan Serial Port ReaderLangkah 1: Hubungkan Arduino Anda ke Port USB mana pun di PC Anda
Langkah 2: Klik "Check" untuk menemukan Port COM Arduino Anda
Langkah 3: Terakhir klik tombol "Start" untuk mulai membaca secara serial.
Langkah 4: Anda juga dapat menyimpan gambar ini hanya dengan mengklik "Simpan Gambar".
Di bawah ini adalah Gambar Contoh yang Diambil dari OV7670
Tindakan pencegahan saat menggunakan OV7670
- Coba gunakan kabel atau jumper sependek mungkin
- Hindari kontak yang longgar ke semua pin di Arduino atau OV7670
- Berhati-hatilah saat menghubungkan kabel dalam jumlah besar yang dapat menyebabkan korsleting
- Jika UNO memberikan output 5V ke GPIO, gunakan Level Shifter.
- Gunakan Input 3.3V untuk OV7670 karena tegangan yang melebihi ini dapat merusak modul OV7670.
Proyek ini dibuat untuk memberikan gambaran umum tentang penggunaan modul kamera dengan Arduino. Karena Arduino memiliki lebih sedikit memori, sehingga pemrosesan mungkin tidak seperti yang diharapkan. Anda dapat menggunakan pengontrol berbeda yang memiliki lebih banyak memori untuk diproses.