Daftar Isi:

Meja Kopi LED Interaktif Arduino: 6 Langkah (dengan Gambar)
Meja Kopi LED Interaktif Arduino: 6 Langkah (dengan Gambar)

Video: Meja Kopi LED Interaktif Arduino: 6 Langkah (dengan Gambar)

Video: Meja Kopi LED Interaktif Arduino: 6 Langkah (dengan Gambar)
Video: DIY Interactive LED Coffee Table - Arduino Project 2024, Juli
Anonim
Image
Image
Meja Kopi LED Interaktif Arduino
Meja Kopi LED Interaktif Arduino

Saya membuat meja kopi interaktif yang menyalakan lampu led di bawah objek, ketika objek diletakkan di atas meja. Hanya led yang berada di bawah objek tersebut yang akan menyala. Ini dilakukan dengan menggunakan sensor jarak secara efektif, dan ketika sensor jarak merasakan bahwa suatu objek cukup dekat, itu akan menerangi sebuah simpul di bawah objek itu. Itu juga menggunakan Arduino untuk memasang animasi yang tidak memerlukan sensor jarak, tetapi menambahkan efek yang sangat keren yang saya suka.

Sensor jarak terdiri dari fotodioda dan pemancar IR. Pemancar menggunakan cahaya inframerah (yang tidak dapat dilihat oleh mata manusia) untuk memancarkan cahaya dari meja, dan fotodioda menerima cahaya inframerah yang dipantulkan dari suatu objek. Semakin banyak cahaya yang dipantulkan (semakin dekat objek), semakin fluktuatif tegangan yang berasal dari fotodioda. Ini digunakan sebagai indikator untuk memberi tahu simpul mana yang menyala. Node adalah kumpulan led ws2812b dan sensor jarak.

Video terlampir membahas seluruh proses pembuatan, sementara saya menguraikan lebih banyak detail di bawah ini.

Perlengkapan

  1. Lampu LED ws2812b -
  2. Catu Daya 5V -
  3. Arduino apa saja yang saya gunakan 2560 -
  4. fotodioda
  5. Pemancar IR
  6. Resistor 10 Ohm
  7. Resistor 1 MOhm
  8. 47 pF kapasitor
  9. Multiplexer CD4051B
  10. Register Geser SN74HC595
  11. ULN2803A Darlington Array
  12. Substrat apa pun yang digunakan sebagai papan besar untuk led, saya menggunakan papan komposit kertas dari home depot

Langkah 1: Buat Papan dan Masukkan LED

Buat Papan dan Masukkan LED
Buat Papan dan Masukkan LED
Buat Papan dan Masukkan LED
Buat Papan dan Masukkan LED
Buat Papan dan Masukkan LED
Buat Papan dan Masukkan LED
Buat Papan dan Masukkan LED
Buat Papan dan Masukkan LED

Hal pertama yang saya lakukan adalah membuat papan yang akan berisi led yang akan kita masukkan ke dalam meja kopi. Saya menggunakan selembar papan komposit kertas dari depot rumah dan memotongnya ke dimensi yang tepat untuk meja kopi yang saya miliki. Setelah memotong papan sesuai ukuran, saya mengebor semua lubang ke mana arahnya. Papan itu sendiri memiliki 8 baris dan 12 kolom led ws2812b yang terpisah 3 inci, dan dipasang dalam pola serpentine. Saya menggunakan lem panas untuk mengamankannya.

Saya juga harus mengebor lubang di tengah apa yang akan menjadi simpul: 4 led ws2812b yang membentuk persegi, 2 dioda foto dan 2 pemancar IR di kotak yang lebih kecil di tengahnya. 4 lubang di tengah node ini akan menjadi tempat untuk fotodioda dan pemancar ir (masing-masing 2). Saya menggantinya untuk memastikan eksposur maksimal, dan menempatkannya sekitar 1 inci terpisah di tengah setiap node. Saya tidak perlu merekatkan ini ke tempatnya, saya hanya menekuk ujungnya di sisi lain untuk memastikan mereka tidak keluar dari sisi lain. Saya juga memastikan untuk menekuk ujung positif dan negatif ke arah tertentu, sehingga mereka berorientasi dengan benar di sirkuit. Semua lead positif berada di sisi kiri belakang papan, sedangkan semua lead negatif berada di sisi kanan papan.

Langkah 2: Pahami Sirkuit

Pahami Sirkuitnya
Pahami Sirkuitnya
Pahami Sirkuitnya
Pahami Sirkuitnya
Pahami Sirkuitnya
Pahami Sirkuitnya

Catatan: Semua gambar animasi tidak tepat untuk implementasinya (beberapa pin arduino berbeda, dan saya akan membuat beberapa, lebih lanjut tentang itu nanti). Hasil akhirnya sedikit berbeda karena kerumitan sirkuitnya, tetapi semua sirkuit animasi berfungsi sebagai dasar yang bagus untuk memahami cara membuat prototipe setiap bagian. Skema dan diagram sirkuit reguler adalah seperti pada PCB yang digunakan dalam proyek.

Kode PCB yang berisi proyek KiCad dan file gerber dapat ditemukan di sini: https://github.com/tmckay1/interactive_coffee_tabl…, jika Anda ingin memesan sendiri PCB dan membuat proyek serupa. Saya menggunakan NextPCB untuk membuat papan.

Pada dasarnya ada tiga sirkuit berbeda yang membentuk tabel ini. Yang pertama tidak akan kita bahas secara detail dan merupakan rangkaian sederhana yang memberi daya pada led ws2812b. Sinyal data PWM dikirim dari Arduino ke lampu led ws2812b dan mengontrol warna apa yang ditampilkan di mana. Kami menggunakan led ws2812b karena masing-masing dapat dialamatkan, jadi kami akan dapat mengontrol led mana yang dihidupkan, dan mana yang dimatikan. LED ws2812b ditenagai oleh sumber daya eksternal 5V, karena arduino saja tidak memiliki daya yang cukup untuk menyalakan semua lampu. Dalam diagram animasi terlampir mereka menggunakan resistor pullup 330 Ohm, namun saya tidak menggunakannya di build.

Sirkuit kedua menyalakan pemancar IR. Sirkuit ini menggunakan register geser untuk mengontrol array Darlington yang mengirimkan daya ke pemancar IR. Register geser adalah sirkuit terintegrasi yang mampu mengirim sinyal TINGGI dan RENDAH ke beberapa pin hanya dari sejumlah kecil pin. Dalam kasus kami, kami menggunakan register geser SN74HC595 yang dapat dikontrol dari 3 input, tetapi mengontrol hingga 8 output. Manfaat menggunakan ini dengan arduino adalah Anda dapat melakukan daisy chain hingga 8 register geser berturut-turut (arduino hanya dapat menangani hingga 8 register geser). Ini berarti Anda hanya membutuhkan 3 pin dari arduino untuk menghidupkan dan mematikan 64 emitter IR. Array Darlington memungkinkan Anda untuk menyalakan perangkat dari sumber eksternal jika sinyal input TINGGI, atau mematikan daya untuk perangkat itu jika sinyal input RENDAH. Jadi dalam contoh kami, kami menggunakan array Darlington ULN2803A, yang memungkinkan sumber daya eksternal 5V untuk menghidupkan dan mematikan hingga 8 pemancar IR. Kami menggunakan resistor 10 Ohm dengan pemancar IR secara seri untuk mendapatkan arus listrik maksimum dari pemancar IR.

Rangkaian ketiga menggunakan multiplexer untuk menerima beberapa input dari fotodioda, dan mengirimkan output dalam sinyal data. Multiplexer adalah perangkat yang digunakan untuk mengambil beberapa input yang ingin Anda baca, dan hanya membutuhkan beberapa pin untuk membaca dari input tersebut. Itu juga dapat melakukan yang sebaliknya (demultiplex), tetapi kami tidak menggunakannya untuk aplikasi itu di sini. Jadi dalam kasus kami, kami menggunakan multiplexer CD4051B untuk menerima hingga 8 sinyal dari fotodioda, dan kami hanya membutuhkan 3 input untuk membaca dari sinyal tersebut. Selain itu, kami dapat melakukan daisy chain hingga 8 multiplexer (arduino hanya dapat menangani hingga 8 multiplekser). Ini berarti arduino dapat membaca dari 64 sinyal fotodioda hanya dari 3 pin digital. Fotodioda berorientasi bias terbalik, yang berarti bahwa alih-alih berorientasi pada arah normal dengan ujung positif terpasang ke sumber tegangan positif, kami menetapkan ujung negatif ke sumber tegangan positif. Ini secara efektif mengubah fotodioda menjadi resistor foto, yang berubah dalam resistansi tergantung pada jumlah cahaya yang diterimanya. Kami kemudian membuat pembagi tegangan untuk membaca tegangan yang bergantung pada berbagai resistansi fotodioda dengan menambahkan resistor 1 MOhm yang sangat resistan ke ground. Ini memungkinkan kita untuk menerima tegangan yang lebih tinggi dan lebih rendah ke arduino tergantung pada seberapa banyak cahaya IR yang diterima fotodioda.

Saya mengikuti sebagian besar desain ini dari orang lain yang melakukan ini di sini: https://www.instructables.com/Infrared-Proximity-S… Dalam desain itu mereka juga menambahkan kapasitor 47pF, seperti yang kami lakukan, di seberang resistor 1 MOhm digunakan untuk membuat pembagi tegangan dengan fotodioda. Alasan dia menambahkan itu karena dia memfluktuasi pemancar IR dan mematikan dengan sinyal PWM dan melakukan ini menarik penurunan tegangan kecil dari fotodioda ketika pemancar IR segera dihidupkan. Hal ini membuat dioda foto berubah resistansi bahkan ketika tidak menerima lebih banyak cahaya IR dari suatu objek karena pemancar IR berbagi sumber daya 5V yang sama dengan fotodioda. Kapasitor digunakan untuk memastikan tidak ada penurunan tegangan ketika pemancar IR dihidupkan dan dimatikan. Saya awalnya berencana untuk melakukan strategi yang sama, tetapi kehabisan waktu untuk mengujinya, jadi saya selalu membiarkan pemancar IR menyala. Saya ingin mengubah ini di masa mendatang, tetapi sampai saya mendesain ulang kode dan sirkuitnya, saat ini PCB dirancang agar lampu IR menyala setiap saat, dan saya tetap menyimpan kapasitor. Anda tidak perlu kapasitor jika Anda menggunakan desain PCB ini, tetapi saya akan memperkenalkan versi lain dari PCB yang menerima input tambahan ke register geser yang memungkinkan Anda untuk memodulasi pemancar IR dan mematikan. Ini akan sangat menghemat konsumsi daya.

Anda dapat memeriksa diagram animasi yang dilampirkan untuk pengaturan prototipe untuk pengujian pada arduino Anda. Ada juga skema berwarna yang lebih rinci untuk setiap sirkuit yang menguraikan pengaturan dan orientasi perangkat elektronik. Dalam skema PCB terlampir, kami memiliki 4 rangkaian total, 2 rangkaian digunakan untuk menyalakan pemancar IR, dan 2 rangkaian untuk membaca dari fotodioda. Mereka berorientasi pada PCB 2 kelompok yang bersebelahan dengan kelompok yang terdiri dari 1 rangkaian emitor IR dan 1 rangkaian fotodioda, sehingga 2 kolom 8 node dapat dimasukkan ke dalam satu PCB. Kami juga membuat rantai daisy kedua sirkuit bersama-sama, sehingga tiga pin dari arduino dapat mengontrol dua register geser, dan 3 pin tambahan dapat mengontrol dua multiplekser di papan. Ada header output tambahan untuk dapat melakukan daisy chain ke PCB tambahan.

Berikut adalah beberapa sumber yang saya ikuti untuk membuat prototipe:

  • https://lastminuteengineers.com/74hc595-shift-regi…
  • https://techtutorialsx.com/2016/02/08/using-a-uln2…
  • https://tok.hakynda.com/article/detail/144/cd4051be…

Langkah 3: Solder Kabel ke Node

Solder Kabel ke Node
Solder Kabel ke Node
Solder Kabel ke Node
Solder Kabel ke Node
Solder Kabel ke Node
Solder Kabel ke Node
Solder Kabel ke Node
Solder Kabel ke Node

Sekarang setelah Anda memahami bagaimana rangkaian dibuat, lanjutkan dan solder kabel ke setiap simpul. Saya menyolder fotodioda secara paralel (kabel kuning dan abu-abu) dan pemancar ir secara seri (kabel oranye). Saya kemudian menyolder kabel kuning yang lebih panjang ke fotodioda secara paralel yang akan dipasang ke sumber daya 5V, dan kabel biru yang akan dipasang ke input fotodioda dari PCB. Saya menyolder kabel merah panjang ke sirkuit emitor IR yang akan digunakan untuk menghubungkan ke sumber daya 5V dan kabel hitam yang akan terhubung ke input emitor IR dari PCB. Saya benar-benar membuat kabel sedikit kehabisan waktu, jadi saya hanya bisa menghubungkan 5 node di setiap kolom pada akhirnya (bukan 7). Saya berencana untuk memperbaiki ini nanti.

Langkah 4: Solder Komponen PCB dan Pasang ke Papan

Solder Komponen PCB dan Pasang ke Papan
Solder Komponen PCB dan Pasang ke Papan
Solder Komponen PCB dan Pasang ke Papan
Solder Komponen PCB dan Pasang ke Papan
Solder Komponen PCB dan Pasang ke Papan
Solder Komponen PCB dan Pasang ke Papan

Catatan: PCB pada gambar terlampir adalah versi pertama yang saya buat yang tidak memiliki input dan output daya dan juga rantai daisy keluar untuk setiap sirkuit dalam. Desain PCB baru mengoreksi kesalahan ini.

Di sini Anda hanya perlu mengikuti skema PCB untuk menyolder komponen ke PCB dan kemudian setelah selesai, solder PCB ke papan. Saya menggunakan papan sirkuit eksternal untuk memasang sinyal daya 5V, yang saya distribusikan ke semua kabel kuning dan merah. Di belakang, saya tidak membutuhkan kabel merah dan kuning yang panjang dan dapat menghubungkan node satu sama lain (alih-alih menghubungkannya ke papan sirkuit eksternal umum). Ini akan benar-benar mengurangi jumlah kekacauan di bagian belakang papan.

Karena saya memiliki 8 baris led ws2812b dan 12 kolom, saya berakhir dengan 7 baris dan 11 kolom node (total 77 node). Idenya adalah menggunakan satu sisi PCB untuk satu kolom node dan sisi lainnya untuk kolom lainnya. Jadi karena saya memiliki 11 kolom, saya membutuhkan 6 PCB (yang terakhir hanya membutuhkan satu kelompok komponen). Karena saya membuat kabel terlalu pendek, saya hanya bisa menghubungkan 55 node, 11 kolom dan 5 baris. Anda dapat melihat pada gambar, saya membuat kesalahan dan menyolder kabel mentah ke papan, yang akan baik-baik saja jika kabelnya cukup tipis, tetapi dalam kasus saya mereka terlalu tebal. Ini berarti saya memiliki ujung kabel yang berjumbai sangat dekat satu sama lain untuk setiap input emitor IR dan input fotodioda, jadi ada banyak debug yang terjadi dari semua korslet kabel. Di masa depan saya akan menggunakan konektor untuk menghubungkan PCB ke kabel di papan untuk menghindari celana pendek dan membersihkan semuanya.

Karena Arduino hanya dapat membuat rantai daisy hingga 8 register geser dan multiplexer, saya membuat dua rantai terpisah, satu mengambil 8 kolom pertama dan lainnya mengambil 3 kolom yang tersisa. Saya kemudian memasang setiap rantai ke PCB lain yang hanya memiliki 2 multiplexer, sehingga saya dapat membaca setiap rantai sinyal data multiplexer dari dua multiplexer tersebut ke dalam arduino. Kedua multiplexer ini juga dirantai daisy. Itu berarti ada total 16 sinyal output dan 2 input analog yang digunakan di arduino: 1 sinyal output untuk mengontrol led ws2812b, 3 sinyal output untuk rantai pertama register geser, 3 sinyal output untuk rantai pertama multiplexer, 3 sinyal output untuk rantai kedua register geser, 3 sinyal output untuk rantai kedua multiplexer, 3 sinyal output untuk 2 multiplexer yang menggabungkan setiap sinyal data PCB, dan terakhir 2 input analog untuk setiap sinyal data dari 2 multiplexer agregat.

Langkah 5: Tinjau Kode

Catatan: Selain kode interaktif di bawah ini, saya menggunakan perpustakaan pihak ke-3 untuk menghasilkan animasi untuk led ws2812b. Anda dapat menemukannya di sini:

Anda dapat menemukan kode yang saya gunakan di sini:

Di bagian atas saya mendefinisikan pin arduino yang akan terhubung ke setiap bagian dari PCB. Dalam metode pengaturan, saya mengatur pin output untuk multiplexer, menyalakan pemancar IR, mengatur array baseVal yang melacak pembacaan cahaya sekitar untuk setiap fotodioda, dan menginisialisasi FastLED yang akan menulis ke led ws2812b. Dalam metode loop, kami mengatur ulang daftar led yang ditugaskan untuk berada di strip ws2812b. Kemudian kami membaca nilai dari fotodioda dalam rantai multiplekser, dan menyetel led ws2812b yang seharusnya menyala jika pembacaan dari fotodioda di simpul melebihi ambang batas tertentu yang ditentukan dari nilai dasar pembacaan cahaya sekitar. Kami kemudian merender LED jika ada perubahan pada node yang seharusnya menyala. Jika tidak, itu terus berulang sampai sesuatu berubah untuk mempercepat.

Kode mungkin dapat ditingkatkan dan saya ingin melakukan ini, tetapi ada penundaan sekitar 1-2 detik sejak lampu menyala setelah benda diletakkan di atas meja. Saya percaya masalah mendasar adalah FastLED membutuhkan waktu untuk membuat 96 led di atas meja dan kode harus mengulang dan membaca 77 input dari tabel. Saya mencoba kode ini dengan 8 led dan ternyata hampir instan, tetapi saya melihat ke sweet spot LED yang akan bekerja dengan kode ini dan hampir instan, serta meningkatkan kode.

Langkah 6: Nyalakan Arduino

Nyalakan Arduinonya!
Nyalakan Arduinonya!
Nyalakan Arduinonya!
Nyalakan Arduinonya!
Nyalakan Arduinonya!
Nyalakan Arduinonya!

Sekarang yang perlu Anda lakukan adalah menyalakan arduino dan melihat fungsi tabelnya! Menggunakan perpustakaan animasi yang disebutkan sebelumnya, Anda dapat memasang beberapa animasi keren yang dipimpin ws2812b, atau Anda dapat meletakkan kode meja kopi dan melihatnya menyala di setiap bagian. Jangan ragu untuk mengomentari pertanyaan atau pendapat apa pun, dan saya akan mencoba membalas Anda tepat waktu. Bersulang!

Direkomendasikan: