Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Mendeteksi Warna Objek dengan Arduino Nano dan Sensor TCS3200

Komponen dan Perlengkapan

Berikut adalah daftar komponen yang dibutuhkan untuk membangun proyek deteksi warna ini:

Aplikasi dan Layanan Online

Arduino IDE digunakan untuk menulis dan mengunggah kode ke papan Arduino.

Tentang Proyek Ini

Ini adalah tutorial sederhana yang menjelaskan cara membaca warna menggunakan Arduino dan sensor seperti TCS3200. Ide utamanya adalah mendeteksi warna suatu objek dan menampilkannya pada layar LCD. Proyek ini merupakan bagian dari proyek yang lebih besar, yaitu Robot Arm yang akan memilih tindakan yang tepat berdasarkan warna objek. Diagram blok di atas menunjukkan komponen utama.

Video di bawah ini menunjukkan proyek akhir dalam operasi:

Langkah 1: Daftar Biaya Material (BoM)

Tautan dan harga di bawah ini hanya untuk referensi:

Langkah 2: Sensor Warna TCS3200

Menurut datasheet-nya, TCS3200 adalah pengubah cahaya-ke-frekuensi warna yang dapat diprogram, menggabungkan fotodioda silikon yang dapat dikonfigurasi dan pengubah arus-ke-frekuensi pada satu sirkuit terintegrasi CMOS monolitik.

Keluaran adalah gelombang persegi (siklus kerja 50%) dengan frekuensi yang sebanding langsung dengan intensitas cahaya (iradiansi). Frekuensi keluaran skala penuh dapat discale oleh salah satu dari tiga nilai preset melalui dua pin kontrol input (S0 dan S1). Input digital dan output digital memungkinkan antarmuka langsung dengan mikrokontroler atau sirkuit logika lainnya.

Output enable (OE) menempatkan output dalam keadaan impedansi tinggi untuk berbagi baris input mikrokontroler oleh multiple unit. Pada TCS3200, pengubah cahaya-ke-frekuensi membaca array fotodioda 8 x 8.

Pin S2 dan S3 digunakan untuk memilih grup fotodioda mana (merah, hijau, biru, bersih) yang aktif. Fotodioda berukuran 110 μm x 110 μm dan berada pada jarak 134 μm.

OE (Enable) harus dihubungkan ke GND (LOW).

Sensor dilindungi dan harus diberi daya antara 2,7 dan 5,5 VDC. Kami akan menggunakan output 5V Arduino untuk memberi daya pada sensor. Untuk menggunakan sensor dengan benar, kami akan memasang cincin getah kecil untuk mengisolasi sensor dari cahaya samping. Saya menggunakan lem pan untuk memasangnya.

Langkah 3: Menghubungkan Perangkat Keras

Hubungkan Sensor TCS3200 seperti di bawah ini:

Hubungkan Tampilan Serial LCD 2/16 I2C:

Pasang Arduino Nano pada Papan Pemancar. Hubungkan output 5V Nano dan GND pada kedua rel daya.

Langkah 4: Kode Arduino

Hal pertama yang harus didefinisikan adalah penskalaan frekuensi seperti yang ditentukan pada tabel di atas. Pin S0 dan S1 digunakan untuk itu. Penskalaan frekuensi output berguna untuk mengoptimalkan pembacaan sensor untuk berbagai penghitung frekuensi atau mikrokontroler. Kami akan mengatur S0 dan S1, keduanya ke HIGH (100%):

digitalWrite(s0,HIGH); digitalWrite(s1,HIGH);

Hal selanjutnya yang harus dilakukan adalah memilih warna yang akan dibaca oleh fotodioda (Merah, Hijau, atau Biru), kami menggunakan pin kontrol S2 dan S3 untuk itu. Karena fotodioda terhubung secara paralel, pengaturan S2 dan S3 ke LOW dan HIGH dalam kombinasi yang berbeda memungkinkan Anda untuk memilih fotodioda yang berbeda, seperti yang ditunjukkan pada tabel di atas.

digitalWrite(s2, LOW); digitalWrite(s3, LOW); red = pulseIn(outPin, LOW); // Membaca komponen MERAH dari warna
digitalWrite(s2, HIGH); digitalWrite(s3, HIGH); grn = pulseIn(outPin, LOW); // Membaca komponen HIJAU dari warna
digitalWrite(s2, LOW); digitalWrite(s3, HIGH); blu = pulseIn(outPin, LOW); // Membaca komponen BIRU dari warna

Pada kode akhir, kami akan membaca beberapa kali setiap komponen RGB dan mengambil rata-ratanya, sehingga kami dapat mengurangi kesalahan jika salah satu pembacaan buruk.

Setelah kami memiliki 3 komponen (RGB), kami harus menentukan warna apa itu. Caranya adalah dengan mengkalibrasi proyek sebelumnya. Anda dapat menggunakan kertas uji atau objek berwarna yang dikenal dan membaca 3 komponen yang dihasilkan.

Anda dapat memulai dengan milik saya, dengan mengubah parameter untuk tingkat cahaya Anda:

void getColor() { readRGB(); if (red > 8 && red < 18 && grn > 9 && grn < 19 && blu > 8 && blu < 16) color = "WHITE"; else if (red > 80 && red < 125 && grn > 90 && grn < 125 && blu > 80 && blu < 125) color = "BLACK"; else if (red > 12 && red < 30 && grn > 40 && grn < 70 && blu > 33 && blu < 70) color = "RED"; else if (red > 50 && red < 95 && grn > 35 && grn < 70 && blu > 45 && blu < 85) color = "GREEN"; else if (red > 10 && red < 20 && grn > 10 && grn < 25 && blu > 20 && blu < 38) color = "YELLOW"; else if (red > 65 && red < 125 && grn > 65 && grn < 115 && blu > 32 && blu < 65) color = "BLUE"; else color = "NO_COLOR"; }

Seperti yang Anda lihat di atas, saya telah menentukan 6 warna: putih, hitam, merah, hijau, kuning, dan biru. Seperti cahaya lingkungan menurun, parameter cenderung naik.

Di dalam loop(), saya menentukan pembacaan tampilan pada LCD setiap 1 detik.

Kode lengkap dapat ditemukan di GitHub saya.

Langkah 5: Kesimpulan

Seperti biasa, saya harap proyek ini dapat membantu orang lain menemukan jalan mereka dalam dunia elektronika, robotika, dan IoT yang menarik!

Silakan kunjungi GitHub saya untuk file yang diperbarui: Color Detector

Untuk proyek lainnya, silakan kunjungi blog saya: MJRoRobot.org

Salam dari selatan dunia!

Sampai jumpa di tutorial saya selanjutnya!

Terima kasih,

Marcelo

Kode

Cuplikan Kode #2Teks Biasa
digitalWrite(s2, LOW); digitalWrite(s3, LOW); red = pulseIn(outPin, LOW); // Membaca komponen MERAH dari warna digitalWrite(s2, HIGH); digitalWrite(s3, HIGH); grn = pulseIn(outPin, LOW); // Membaca komponen HIJAU dari warna digitalWrite(s2, LOW); digitalWrite(s3, HIGH); blu = pulseIn(outPin, LOW); // Membaca komponen BIRU dari warna
Cuplikan Kode #3Teks Biasa
void getColor() { readRGB(); if (red > 8 && red < 18 && grn > 9 && grn < 19 && blu > 8 && blu < 16) color = "WHITE"; else if (red > 80 && red < 125 && grn > 90 && grn < 125 && blu > 80 && blu < 125) color = "BLACK"; else if (red > 12 && red < 30 && grn > 40 && grn < 70 && blu > 33 && blu < 70) color = "RED"; else if (red > 50 && red < 95 && grn > 35 && grn < 70 && blu > 45 && blu < 85) color = "GREEN"; else if (red > 10 && red < 20 && grn > 10 && grn < 25 && blu > 20 && blu < 38) color = "YELLOW"; else if (red > 65 && red < 125 && grn > 65 && grn < 115 && blu > 32 && blu < 65) color = "BLUE"; else color = "NO_COLOR"; }
Github
https://github.com/Mjrovai/Color-Detector

Skematik

Hardware
https://github.com/Mjrovai/Color-Detector/blob/master/Color%20Detector.fzz

Proses manufaktur

  1. Buat Sistem Ambilight Monitor Menakjubkan dengan Arduino
  2. Membuat Game Pong Klasik pada Arduino UNO dengan Layar OLED – Tutorial Langkah demi Langkah
  3. Detektor Frekuensi Audio Arduino – Ukur Puncak Suara Terkeras dengan Modul Sensitivitas Tinggi
  4. Buat Tamagotchi Arduino Sendiri: Proyek DIY Hewan Peliharaan Digital
  5. Pengontrol Saklar Lampu Nirkabel Smart Berbasis Arduino
  6. Tic Tac Toe Arduino dengan Matriks LED MAX7219 dan Kotak Kardus
  7. Senapan Air Cerdas Tergerak Gerakan dengan Arduino Nano
  8. Membuat Timer Hitung Mundur Arduino yang Andalan dengan Layar 7-Segmen SparkFun
  9. Pencampur Warna LED RGB Arduino – Proyek DIY Untuk Pemula
  10. Matahari Buatan Arduino: Buat Bunga Matahari Pelacak Matahari