Membuat Tabung POV Menakjubkan dengan Arduino Due – Panduan Langkah demi Langkah
Komponen dan Perlengkapan
Berikut adalah daftar komponen yang diperlukan untuk membangun tabung POV (Persistence of Vision) ini:
- Arduino Due – 1 unit
- Modul Bluetooth HC-06 – 1 unit
- Stripe LED RGB LPD8806 1 m (60 LED/m, 30 IC/m) – 1 unit
- Regulator Linier dengan Output Disesuaikan – 1 unit
- Op-Amp Dual Texas Instruments – 1 unit
- Resistor 20k ohm – 3 buah
- Resistor 220 ohm – 1 buah
- Resistor 1k ohm – 2 buah
- Transistor NPN Umum – 1 buah
- Kapasitor 1000 µF – 1 buah
- Kapasitor 100 nF – 1 buah
- Kapasitor 1 µF – 1 buah
- Resistor 240 ohm – 1 buah
- Resistor Trimmer 1k ohm – 1 buah
- Penerima dan Pemancar IR (generik) – masing-masing 1 buah
- Breadboard – 1 buah
- Tabung Styrofoam (Ø 20 cm, Tinggi 10 cm) – 2 buah
- Motor Listrik 12V XDRIVE 545-1 – 1 unit
- Gigi Mahkota 60 T 8 MM – 1 buah
- Gigi Mahkota 12 T 3.2 MM – 1 buah
- Rantai Gigi 80 T, 6 x 200 MM – 1 buah
- Batut Berulir M8, 125 mm – 3 buah
- Batut Berulir M8, 330 mm (digunakan sebagai poros) – 1 buah
- Cincin Kontak ASL9017 – 1 buah
- Tape Perekat (hitam, 48 mm) – 1 buah
- Cakki Plywood (Ø 150 mm, Tebal 10 mm) – 2 buah
- Cakki Aluminium (Ø 200 mm, Tebal 2.5 mm) – 2 buah
Alat dan Mesin yang Diperlukan
- Paku las (soldering iron)
- Gergaji corak (scroll saw)
- Pemacu borak (bench drill)
- Sumber daya laboratorium
- Laptop dengan Windows 10
Aplikasi dan Layanan Online
- Microchip Studio – untuk pengembangan perangkat lunak Arduino
- Arduino IDE – alternatif untuk Atmel Studio IDE
- Cygwin – menyediakan fungsionalitas serupa Linux pada Windows, digunakan untuk program kontrol PC
- Microsoft Visual Studio 2015 – untuk antarmuka pengguna grafis
Tentang Proyek
Pendahuluan
Ini adalah proyek Arduino pertama saya. Karya ini terinspirasi dari beberapa proyek pembuat yang menciptakan Tampilan Persistensi Visi (POV).
Persistensi visi (POV) adalah ilusi optika di mana beberapa gambar diskrit bergabung menjadi satu gambar dalam pikiran manusia, dan dipercaya sebagai penjelasan untuk persepsi gerakan dalam bioskop dan film animasi.
Proyek [2,3,4] menerapkan tampilan bola POV menggunakan LED diskrit dan register geser diskrit. Sebaliknya, perangkat saya menggunakan tabung yang berputar dan stipe LED RGB siap pakai sebagai Tampilan POV.
Fitur utama Tabung POV saya adalah:
- Tampilan POV (Persistence of Vision)
- Menampilkan gambar GIF animasi pada tabung yang berputar
- Gambar GIF disimpan dalam RAM atau Flash Arduino
- Komunikasi dengan PC melalui Bluetooth
Ringkasan Teknis
- Diameter tabung: 200 mm
- Tinggi tabung: 200 mm
- Bahan tabung: Styrofoam
- Berat tabung: 420 g
- 4 Stipe LED RGB berbasis LPD8806
- Ukuran layar 151 x 40 piksel
- Berdasarkan Arduino Due
- Termasuk modul Bluetooth HC-06
- Dikontrol melalui Bluetooth dari PC
Konstruksi Mekanikal
Konstruksi mekanikal ditunjukkan dalam gambar di bawah ini. Perangkat terdiri dari chassis dan rotor. Chassis terdiri dari dua cakki plywood lingkaran yang dihubungkan melalui tiga batut berulir. Jarak antara cakki adalah 120 mm. Di tengah terdapat dua bantalan bola dan poros. Poros juga menggunakan batut berulir. Poros dikembalikan oleh motor listrik melalui dua gigi mahkota dan rantai gigi. Kecepatan putaran hingga 1300 RPM (22 Hz).
Rotor terdiri dari dua tabung styrofoam dan dua cakki aluminium lingkaran. Tabung styrofoam ditempel pada cakki bawah. Cakki atas dapat dilepas dan digunakan untuk memasang rotor pada poros.
Elektronika terletak di bagian atas rotor. Meliputi:
- Papan Arduino Due
- Shield buatan sendiri untuk papan Arduino Due
- Papan Sumber Daya (PS)
- Modul Bluetooth HC-06
Sumber daya (7,5V) disalurkan ke papan sumber daya melalui kontak geser dan cincin kontak.
Empat stipe LED dengan total 40 LED RGB digunakan. Mereka dihubungkan dengan kabel ke Shield Arduino. Empat stipe LED ditempatkan seperti yang ditunjukkan dalam gambar. Dengan menggunakan empat stipe LED yang digeser, jarak di sumbu Y antara LED dibagi 4. Jarak di sumbu X ditangani oleh perangkat lunak. Perangkat lunak memperbarui semua 40 LED 151 kali per putaran. Grid dalam gambar sesuai dengan piksel yang terlihat.
Rangkaian Elektronik
Rangkaian elektronik ditunjukkan dalam skematik PDF yang dilampirkan. Terdapat papan sumber daya dengan regulator tegangan LM317. Tegangan masukan 7,5 Volt dan tegangan keluaran 4,6 Volt. Regulator tegangan menyuplai papan Arduino Due dan stipe LED.
Terdapat juga shield buatan sendiri untuk Arduino. Berisi kabel konektor ke stipe LED dan rangkaian untuk penerima IR. Penerima IR digunakan untuk mendeteksi posisi rotor. Terhubung ke input timer/interrupt Arduino.
Ada empat stipe LED bernama STRIP0 hingga STRIP3. Setiap stipe memiliki 5 driver LED LPD8806 dan 10 LED RGB. STRIP0 terhubung ke USART0 dan STRIP1 terhubung ke USART1. Keduanya beroperasi dalam mode SPI. STRIP2 dan STRIP3 terhubung secara seri dan dikendalikan oleh antarmuka SPI Arduino.
Untuk komunikasi dengan PC, modul Bluetooth HC-06 terhubung ke USART3. Modul Bluetooth disuplai oleh 3,3 Volt yang disediakan papan Arduino.
Perangkat Lunak Arduino
Perangkat lunak Arduino terdiri dari program utama (mpc.ino) dan pustaka berikut:
- bt – Driver perangkat lunak untuk modul Bluetooth
- LDP8806 – Driver perangkat lunak untuk stipe LED
- MemoryFree – Fungsi untuk mendeteksi memori RAM tersedia
- mpcgif – Pemutaran file GIF yang berada di memori RAM atau Flash
- pictures – Gambar GIF internal yang disimpan di Flash
- trace – Fungsi untuk debug perangkat lunak
Keluaran periodik gambar ke stipe LED dilakukan melalui interrupt. Terdapat dua frame buffer yang bergantig. Setiap frame buffer menampung satu gambar dengan 40 x 151 piksel. Setiap piksel adalah indeks palet warna satu byte. Sementara satu frame buffer dikeluarkan ke stipe LED melalui interrupt dan DMA, frame buffer lainnya disiapkan oleh program utama. Pergantian frame buffer dilakukan oleh rutinitas interrupt frame.
Terdapat satu interrupt frame per putaran yang dipicu oleh sensor IR. Rutinitas interrupt frame mengukur (melalui timer hardware) kecepatan evolusi dan memprogram interrupt kolom periodik (satu per kolom, yaitu 150 interrupt per putaran) dengan timer hardware. Rutinitas interrupt kolom mengeluarkan kolom saat ini ke stipe LED. Untuk alasan kinerja, keluaran dilakukan melalui tiga saluran DMA yang beroperasi sepenuhnya secara paralel.
Kode sumber Arduino lengkap tersedia di GitHub.
Program Kontrol PC
Program Kontrol PC (pccp) adalah alat baris perintah yang ditulis dalam C++. Berjalan di bawah Cygwin dan berkomunikasi dengan Arduino melalui Bluetooth. pccp memungkinkan mengontrol Tabung POV dengan perintah karakter tunggal berikut:
- 0-7 – isi layar dengan warna (hitam, merah, kuning, hijau, cyan, biru, ungu, putih)
- t – gambar kurva segitiga (sebagai gambar uji)
- s – aktifkan atau nonaktifkan rotasi gambar yang ditampilkan
- r – gambar satu baris tunggal
- c – gambar satu kolom tunggal
- y – putar gambar GIF internal yang disimpan di memori Flash
- f – unduh file GIF eksternal dari PC melalui BT
- x – putar file GIF eksternal yang diunduh
pccp juga menyediakan antarmuka ke antarmuka pengguna grafis. Selain itu, menampilkan kecepatan putaran saat ini (dalam Hz dan µs) dan nilai hitung frame.
Kode sumber lengkap tersedia di GitHub.
Antarmuka Pengguna Grafis
Antarmuka pengguna grafis adalah Aplikasi Universal Windows. Memungkinkan memilih file GIF yang akan ditampilkan oleh Tabung POV. Aplikasi ini diadaptasi dari aplikasi FilePicker dari "Microsoft Windows Universal Samples".
Kode sumber lengkap tersedia di GitHub.
Referensi
- https://en.wikipedia.org/wiki/Persistence_of_vision
- RGB LED GLOBE - POV - 40 x 200
- POV Globe Display RGB
- POV Globe Display RGB - Deskripsi Proyek (bahasa Jerman)
- https://github.com/Microsoft/Windows-universal-samples
Kode
Kode sumber Arduino untuk Tabung POV
https://github.com/hanoba/povc-arduino
Program Kontrol PC untuk Tabung POV
Ini adalah program baris perintah C++ yang berjalan di bawah Cygwin: https://github.com/hanoba/povc-pccp
Antarmuka Pengguna Grafis untuk Tabung POV
Ini adalah Aplikasi Universal Windows: https://github.com/hanoba/povc-win-app
Skematik
Ini adalah skematiknya.