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

Deteksi Warna Arduino

Komponen dan persediaan

Arduino Nano R3
× 1
Modul Sensor Warna Pengenalan Warna
× 1
Adafruit LCD Standar - 16x2 Putih di Atas Biru
× 1
Breadboard (generik)
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Proyek

Ini adalah tutorial sederhana, di mana kita akan mengeksplorasi cara membaca warna menggunakan Arduino dan sensor seperti TCS 3200. Idenya adalah mendeteksi warna objek, dan menampilkannya di LCD. Proyek ini merupakan komponen dari proyek yang lebih besar yang akan menjadi Lengan Robot yang memilih tindakan yang tepat berdasarkan warna objek. Diagram blok di atas menunjukkan komponen utama.

Video di bawah ini menunjukkan pengerjaan proyek akhir:

Langkah 1:BoM

Tautan dan harga di bawah ini hanya untuk referensi.

  • Arduino Nano (US$8.00)
  • Modul Sensor Warna TCS3200 (US$9.00)
  • IIC/I2C/TWI 1602 Modul LCD Lampu Latar Biru Serial (US$ 8.00)
  • Breadboard (US$ 2,00)
  • Kabel

Langkah 2:Sensor Warna TSC 3200

Seperti yang dijelaskan pada Datasheet-nya, TCS3200 adalah konverter cahaya-ke-frekuensi warna yang dapat diprogram yang menggabungkan fotodioda silikon yang dapat dikonfigurasi dan konverter arus-ke-frekuensi pada sirkuit terpadu CMOS monolitik tunggal.

Outputnya adalah gelombang persegi (50% duty cycle) dengan frekuensi berbanding lurus dengan intensitas cahaya (iradiansi). Frekuensi output skala penuh dapat diskalakan dengan salah satu dari tiga nilai preset melalui dua pin input kontrol (S0 dan S1). Input digital dan output digital memungkinkan antarmuka langsung ke mikrokontroler atau sirkuit logika lainnya.

Output enable (OE) menempatkan output dalam status impedansi tinggi untuk berbagi beberapa unit saluran input mikrokontroler. Di TCS3200, konverter cahaya-ke-frekuensi membaca array fotodioda 8 x 8.

  • Enam belas fotodioda memiliki filter biru
  • 16 fotodioda memiliki filter hijau
  • 16 fotodioda memiliki filter merah
  • 16 fotodioda jernih tanpa filter.

Pin S2 dan S3 digunakan untuk memilih grup fotodioda (merah, hijau, biru, bening) yang aktif. Fotodioda berukuran 110 m x 110 m dan berada di pusat 134 m.

OE (Aktifkan) harus terhubung ke GND (RENDAH).

Sensor dienkapsulasi dan harus diberi daya antara 2,7 dan 5,5 VDC. Kami akan menggunakan output Arduino 5V untuk menyalakan sensor. Untuk menggunakan sensor dengan benar, kami akan memasang cincin karet kecil untuk mengisolasi sensor dari cahaya lateral. Saya menggunakan lem panas untuk memperbaikinya.

Langkah 3:Menghubungkan HW

Hubungkan Sensor TSC3200 seperti di bawah ini:

  • S0 ==> Nano pin D4
  • S1 ==> Nano pin D5
  • S2 ==> Nano pin D6
  • S3 ==> Nano pin D7
  • OUT ==> Nano Pin D8
  • ID ==> GND
  • VCC ==> +5V
  • GND ==> GND

Hubungkan Layar Serial 2/16 LCD I2C:

  • SDA ==> Nano Pin A4
  • SCL ==> Nano Pin A5

Instal Arduino Nano di BreadBoard. Hubungkan output Nano 5V dan GND di kedua rel daya.

Langkah 4:Kode Arduino

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

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

Selanjutnya yang harus dilakukan adalah memilih warna yang akan dibaca oleh photodiode (Merah, Hijau, atau Biru), kita menggunakan pin kontrol S2 dan S3 untuk itu. Karena fotodioda dihubungkan secara paralel, pengaturan S2 dan S3 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, RENDAH); merah =pulseIn(pin keluar, RENDAH); // Membaca komponen MERAH dari digitalWrite(s2, HIGH); digitalWrite(s3, TINGGI); grn =pulseIn(pin keluar, RENDAH); // Membaca komponen HIJAU warna digitalWrite(s2, LOW); digitalWrite(s3, TINGGI); blu =pulseIn(pin keluar, RENDAH); // Membaca komponen warna BIRU 

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

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

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

void getColor(){ readRGB(); if (merah> 8 &&merah <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="WHITE"; lain jika (merah> 80 &&merah <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="HITAM"; lain jika (merah> 12 &&merah <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; lain jika (merah> 50 &&merah <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="HIJAU"; lain jika (merah> 10 &&merah <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="KUNING"; lain jika (merah> 65 &&merah <125 &&grn> 65 &&grn <115 &&blu> 32 &&blu <65) color ="BLUE"; warna lain ="NO_COLOR";} 

Seperti yang Anda lihat di atas, saya telah menetapkan 6 warna:putih, hitam, merah, hijau, kuning, dan biru. Saat cahaya sekitar padam, parameternya cenderung lebih tinggi.

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

Kode lengkapnya dapat ditemukan di GitHub saya.

Langkah 5:Kesimpulan

Seperti biasa, saya berharap proyek ini dapat membantu orang lain menemukan jalan mereka di dunia elektronik, robotika, dan IoT yang mengasyikkan!

Silakan kunjungi GitHub saya untuk file yang diperbarui:Detektor Warna

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

Saludos dari selatan dunia!

Sampai jumpa di tutorial saya berikutnya!

Terima kasih,

Marcelo

Kode

  • Cuplikan kode #2
  • Cuplikan kode #3
Cuplikan kode #2Teks biasa
 digitalWrite(s2, LOW); digitalWrite(s3, RENDAH); merah =pulseIn(pin keluar, RENDAH); // Membaca komponen MERAH dari digitalWrite(s2, HIGH); digitalWrite(s3, TINGGI); grn =pulseIn(pin keluar, RENDAH); // Membaca komponen HIJAU warna digitalWrite(s2, LOW); digitalWrite(s3, TINGGI); blu =pulseIn(pin keluar, RENDAH); // Membaca komponen warna BIRU
Cuplikan kode #3Teks biasa
void getColor(){ readRGB(); if (merah> 8 &&merah <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="WHITE"; lain jika (merah> 80 &&merah <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="HITAM"; lain jika (merah> 12 &&merah <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; lain jika (merah> 50 &&merah <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="HIJAU"; lain jika (merah> 10 &&merah <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="KUNING"; lain jika (merah> 65 &&merah <125 &&grn> 65 &&grn <115 &&blu> 32 &&blu <65) color ="BLUE"; warna lain ="NO_COLOR";}
Github
https://github.com/Mjrovai/Color-Detectorhttps://github.com/Mjrovai/Color-Detector

Skema

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

Proses manufaktur

  1. Membuat Monitor Ambilight Menggunakan Arduino
  2. Game Arduino Pong - Tampilan OLED
  3. Detektor Frekuensi Audio
  4. Klon Arduino Tamagotchi - Hewan Peliharaan Digital
  5. Manipulator Saklar Lampu Nirkabel
  6. Tech-TicTacToe
  7. Sensor Gerakan Pistol Air
  8. Penghitung Waktu Mundur Arduino
  9. Pencampur Warna RGB Arduino
  10. Bunga Matahari Arduino:Penari Matahari Elektronik