Daftar Isi:

LED POVstick Dengan Bluetooth Hemat Energi: 10 Langkah (dengan Gambar)
LED POVstick Dengan Bluetooth Hemat Energi: 10 Langkah (dengan Gambar)

Video: LED POVstick Dengan Bluetooth Hemat Energi: 10 Langkah (dengan Gambar)

Video: LED POVstick Dengan Bluetooth Hemat Energi: 10 Langkah (dengan Gambar)
Video: Orang kesetrum 2024, November
Anonim
LED POVstick Dengan Bluetooth Hemat Energi
LED POVstick Dengan Bluetooth Hemat Energi

Instruksi ini menunjukkan kepada Anda cara membuat tongkat lightwriter dengan LED RGB yang dapat dikontrol melalui BLE dari ponsel Anda!

Sekarang musim gelap dimulai dan Anda perlu mengambil gambar eksposur panjang: Dengan tongkat ini Anda dapat menulis tanda tangan Anda ke dalam gambar, atau kutipan motivasi, atau pernyataan cinta, kode QR, alamat web, atau banyak lagi. hal lain…

Ini mencakup beberapa topik pengembangan:

  • membangun perangkat keras
  • memprogram chipset Cypress BLE dengan C
  • buat aplikasi Anda sendiri untuk mengontrolnya.

Langkah 1: Perangkat Keras untuk BLE-LED-Stick

Perangkat Keras untuk BLE-LED-Stick
Perangkat Keras untuk BLE-LED-Stick
Perangkat Keras untuk BLE-LED-Stick
Perangkat Keras untuk BLE-LED-Stick
Perangkat Keras untuk BLE-LED-Stick
Perangkat Keras untuk BLE-LED-Stick
Perangkat Keras untuk BLE-LED-Stick
Perangkat Keras untuk BLE-LED-Stick

Untuk tongkat Anda membutuhkan yang berikut:

  • Modul BLE cemara (CY8C4247LQI-BL583)
  • a WS2812b RGB-LED-Strip (64LED dari 144Led per strip meter)
  • baterai Li-Ion dengan dudukan yang sesuai (18650)
  • tombol tekan
  • sepotong papan tempat memotong roti

Perangkat keras tongkat itu sendiri cukup sederhana.

Modul Cypress BLE dipasang pada sepotong papan tempat memotong roti dan LED, tombol dan catu daya hanya terhubung ke papan tempat memotong roti ini.

Semuanya dipasang, direkatkan atau disekrup ke sepotong kecil strip kayu, yang sebagian dimasukkan ke dalam tabung poliakril bening. Tapi ini bukan suatu keharusan. Saya ingin memasang semuanya di dalam tabung, tetapi saya tidak menemukan yang cocok untuk modul BLE dan baterai yang cukup besar, dibandingkan dengan LED. Untuk bidikan pertama, Anda tidak memerlukan tabung akrilik.

Langkah 2: Perakitan Elektronik

Perakitan Elektronik
Perakitan Elektronik
Perakitan Elektronik
Perakitan Elektronik

Langkah ini menunjukkan kepada Anda bagaimana modul BLE dipasang dan pin mana yang digunakan untuk tujuan apa.

Seperti dalam beberapa Instructables saya, saya menggunakan Cypress BLE Development Kit. Panduan Memulai Cepat CY8CKIT-042-BLE

Jika Anda ingin mengoperasikan modul sendiri, Anda hanya perlu menghubungkan sumber daya dan pin yang digunakan.

Untuk proyek kami, kami hanya menggunakan pin 3.5 untuk menggerakkan LED-Strip. Tapi tentu saja Anda bisa mengubahnya dengan PSoC Creator.

Seperti yang Anda lihat pada gambar PCB, saya menambahkan pinhead di semua sudut chip tetapi saya melewatkan pin VREF.

Dengan cara ini modul dipasang dengan benar dan tidak mungkin untuk salah menyambungkan modul.

Langkah 3: Bagaimana Cara Menghasilkan Font?

Bagaimana Cara Menghasilkan Font?
Bagaimana Cara Menghasilkan Font?

Yah, saya pikir ini adalah salah satu masalah paling menarik yang saya pecahkan selama proyek ini.

Tentu saja seseorang dapat mendesain font baru dan menulisnya dalam array, tetapi itu benar-benar pekerjaan yang berat!

Jadi apa yang saya lakukan?

Saya tahu bahwa saya memerlukan semacam konversi ASCII ke hex-bitmap. Dan saya beruntung, karena saya bukan yang pertama dengan masalah ini!:-)

Perangkat lunak "GLCD Font Generator" melakukan hal yang benar:

Karena saya ingin mendapatkan hasil maksimal dari LED-stick, saya mengimpor font dalam ukuran yang agak besar (~32piksel). Jika Anda hanya menggunakan huruf kapital, Anda tidak perlu peduli dengan ascender, yang akan meningkatkan ukuran font yang terlihat beberapa piksel lagi. Tapi saya memilih untuk menggunakan huruf kapital dan huruf kecil. (https://en.wikipedia.org/wiki/Ascender_%28typography%29)

Setelah Anda mengimpor font ke generator GLCD Font, Anda dapat memilih untuk mengekspornya dalam format yang berbeda.

Saya mencoba mengekspornya langsung ke header yang bagus, tetapi tidak sempurna. Ekspor yang dihasilkan adalah larik short (16bit) dengan nilai byte-hex untuk kolom untuk setiap karakter dari karakter 128-ascii pertama. Tidak seperti yang saya inginkan atau butuhkan…

Jadi saya mengimpor array ke dalam lembar kerja kalk kantor terbuka. Kemudian saya menghapus "0x" pada tiga dari empat nilai dan menggabungkannya menjadi satu nilai panjang 32bit. Saya juga memperbaiki endianess yang salah dari masing-masing byte.

Array yang dihasilkan adalah array N*M dengan nilai 32bit. M adalah karakter masing-masing dan N adalah kolom yang membentuk tampilan surat ini. Dalam draft pertama ini semua karakter memiliki jumlah kolom yang sama, artinya semua huruf sama lebarnya, seperti pada font Courier yang terkenal. Karakter kecil seperti "i" atau "t" terlihat seperti tersesat di luar angkasa.

Oleh karena itu saya menambahkan parameter baru di awal setiap karakter untuk mengetahui, berapa banyak kolom yang dimiliki karakter ini atau seberapa lebar karakter ini. Ini menghemat memori dan membuat teks terlihat lebih baik!

Langkah 4: Perangkat Lunak Kontrol BLE

Perangkat Lunak Kontrol BLE
Perangkat Lunak Kontrol BLE

Prinsip perangkat lunak BLE sangat mudah:

  • Pada awalnya itu hanya tidak apa-apa.
  • Melalui BLE Anda dapat mengatur berbagai animasi atau teks yang akan ditampilkan.
  • Setelah Anda menekan tombol, kolom individual dari animasi atau teks akan ditampilkan.
  • Setelah teks ditampilkan, itu terus menunggu lagi.

Cukup impor proyek cypress ke PSoC-Creator Anda dan modifikasi jika Anda mau.

PSoC-4 tidak memiliki banyak RAM dan flash untuk dapat menyimpan gambar RGB lengkap dari font. Oleh karena itu saya membutuhkan cara untuk menghasilkan konten LED secara dinamis dari teks. Itu cukup mudah, tidak ada yang istimewa sejauh ini. Dari teks dengan banyak huruf, algoritme mengambil satu huruf dan mengubahnya menjadi larik bitmap hitam-putih. Kemudian dibutuhkan setiap kolom bitmap satu huruf ini dan alih-alih putih, ia menulis warna RGB saat ini ke array LED. Dengan cara ini Anda dapat menghasilkan teks satu warna atau dengan fungsi tambahan mengubah warna setelah setiap kolom, setiap huruf atau bahkan setelah setiap piksel.

Sebuah "huruf" dapat disimpan dalam satu byte-variabel sementara bitmap hitam dan putih perlu disimpan dalam beberapa jenis array.

Struktur datanya seperti ini:

String: newtext = "Halo";

Font: uint32 karakter = { FirstCharacter_ColumnCount, FirstCharacter_FirstColumn, FirstCharacter_SecondColumn, … SecondCharacter_ColumnCount, SecondCharacter_FirstColumn, … … LastCharacter_ColumnCount, … LastCharacter_LastColumn }; Warna: uint32 rgbcolor = 0xHHBBGGRR; // Kecerahan, Biru, Hijau, Merah masing-masing sebagai nilai 8bit

Untuk mengonversi string untuk tampilan, kami melakukan hal berikut:

getCharacter(): H (8bit)

getColumn(int i): kolom (32bit) (saya mulai dengan kolom pertama, berjalan sampai yang terakhir.) if(bit dalam kolom adalah 1) LED di Strip diatur ke warna. LED-Strip Array adalah 64 LED dengan warna 32bit masing-masing!

Dan jika kolom ini ditampilkan, kami melanjutkan dengan yang berikutnya.

Hal ini mudah.

Langkah 5: Tes Pertama

Tes Pertama
Tes Pertama
Tes Pertama
Tes Pertama
Tes Pertama
Tes Pertama

Sekarang setelah perangkat lunak berjalan, kami siap untuk pengujian pertama.

Cara termudah untuk menguji fungsi yang disematkan adalah dengan aplikasi uji energi rendah Bluetooth. Seperti Aplikasi Nordik atau Cypress.

Nordik: nRF Connect untuk Seluler

Cypress: CySmart

Mulai Pov-Stick dan amati bagaimana demo-string akan ditampilkan. Setelah ini selesai saatnya untuk memulai aplikasi. Cari perangkat Povstick dan klik sambungkan.

Setelah koneksi dibuat, aplikasi secara otomatis menemukan semua layanan dan karakteristik yang ditentukan.

Cari layanan pertama (harus dimulai dengan 0000ccce…). Klik untuk membukanya dan menampilkan karakteristik pertama (dimulai dengan 0000ccc1). Kemudian tekan tombol tulis (atau unggah) dan tulis 01 untuk karakteristik ini.

Setelah Anda menekan kirim, POVstick akan memulai animasi Color-Knight-rider alias Larson Scanner dengan warna yang berubah.

Selamat Anda mengirimkan nilai pertama Anda melalui BLE!

Langkah 6: Pilih Animasi

Pilih Animasi
Pilih Animasi
Pilih Animasi
Pilih Animasi
Pilih Animasi
Pilih Animasi
Pilih Animasi
Pilih Animasi

Dalam perangkat lunak kami mendefinisikan enum "e_Animation" dengan nilai-nilai berikut:

typedef enum { Knightrider = 0, ColorKnightRider, Rainbowswirl, Valueswirl, WS_CandyCane, WS_CandyCane_2, WS_CandyCane_3, WS_Twinkle, WS_Icicle, WS_ColorWheel, RGB_Control, TextAnimation, Animation_Max } e_Animation;

Ini adalah nilai yang valid untuk karakteristik ccc1. Jika Anda ingin melihat CandyCane-Animation Anda harus menulis 4, 5 atau 6 untuk karakteristik ini. Mereka berbeda dalam warna.

Dua animasi khusus adalah RGB_Control dan TextAnimation. Jika Anda memilih untuk mengaktifkan ini, tongkat itu jelas tidak akan menunjukkan apa-apa pada awalnya. Tetapi ia menawarkan Anda opsi tambahan untuk mengontrol tongkat dengan layanan lain.

Langkah 7: Kontrol RGB

Kontrol RGB
Kontrol RGB
Kontrol RGB
Kontrol RGB
Kontrol RGB
Kontrol RGB
Kontrol RGB
Kontrol RGB

Kontrol RGB dapat dengan mudah diuji dengan Aplikasi CySmart karena saya menggunakan UUID yang sama untuk karakteristik ini seperti pada Demo Cypress.

Mulai aplikasi CySmart dan sambungkan ke Povstick. Pertama, Anda harus menulis "0x0A" ke karakteristik ccc1.

0x0A adalah nilai hex untuk 10, yang merupakan animasi RGB-Control di enum.

Kemudian Anda dapat beralih ke Panel Kontrol RGB-LED di Aplikasi CySmart. Mungkin Anda harus memulai ulang aplikasi untuk membuka layar ini. Kemudian Anda dapat mengontrol warna semua LED dengan diagram RGB ini.

Tentu saja Anda juga bisa menuliskan nilai-nilainya langsung ke dalam karakteristiknya.

Langkah 8: Layanan Text_Animation dan Layanan Penyimpanan Persisten

Layanan Text_Animation dan Layanan Penyimpanan Persisten
Layanan Text_Animation dan Layanan Penyimpanan Persisten

Layanan ini tidak begitu mudah untuk diuji.

Secara teknis Anda juga dapat menggunakan aplikasi nordic untuk ini, tetapi Anda perlu mengetahui nilai apa yang harus ditulis ke karakteristik mana.

Jadi jika Anda ingin menguji ini, Anda harus melihat proyek PSoC, yang karakteristiknya memiliki UUID yang mana.

Yang penting adalah karakteristik "Set-Speed". Dengan karakteristik ini Anda dapat mengontrol seberapa cepat animasinya.

Dengan karakteristik "Set_Animation" dari PersistentStorageService, Anda dapat mengontrol font dan warna string teks. Nilai yang valid ditentukan dalam "povanimation.h", dua font "mono" dan "serif" serta satu warna dan warna pelangi. Nilai 0 dan 1 menampilkan teks dengan warna tetap, dapat dikontrol melalui karakteristik RGB_Control. Nilai 2 dan 3 mengubah warna untuk setiap kolom dan memberikan string pelangi yang bagus.

"Write_Text_Service" agak berbeda. Anda dapat menulis string baru ke perangkat dengan menulis karakter individual ke karakteristik "Set_Character". Pada setiap penulisan, Anda akan mendapatkan pemberitahuan kembali tentang panjang string saat ini.

Untuk memulai string baru, tulis "true" ke "Clear_String".

Ini bukan implementasi terbaik, tetapi berfungsi untuk string apa pun hingga 250 karakter tanpa mengubah ukuran MTU.

Tampilan string baru dengan start saat tombol pada Povstick ditekan.

Langkah 9: Mulai Aplikasi Android

Ini adalah langkah penting, tetapi jauh di luar cakupan instruksi ini. Maaf untuk itu!

Mungkin saya mungkin mengunggah aplikasi uji saya ke play store, tetapi belum selesai atau dirilis.

Langkah 10: Tulis Pesan dalam Gambar

Tulis Pesan di Gambar
Tulis Pesan di Gambar
Tulis Pesan di Gambar
Tulis Pesan di Gambar
Tulis Pesan di Gambar
Tulis Pesan di Gambar

Nah, inilah mengapa saya membuat povstick ini sejak awal: Untuk menulis pesan dalam gambar.

Anda membutuhkan tripod, kamera dengan fungsi long-exposure dan beberapa lokasi yang bagus.

Siapkan kamera dan sesuaikan waktu pencahayaan hingga 10 detik untuk pengujian pertama.

Picu pelepasan dan mulailah menelusuri gambar, memulai tampilan teks pada stik.

Et Voila, inilah kami!

Dengan kombinasi kecerahan LED, apertur, dan waktu pencahayaan yang tepat, Anda bahkan dapat mengambil gambar saat fajar.

Tiga gambar dalam langkah ini menunjukkan spektrum kemungkinan yang lengkap.

Yang pertama, LED terlalu terang dan menciptakan cahaya ajaib. Tapi itulah mengapa pantulan di tanah terlihat dan latar belakangnya cukup bagus.

Gambar kedua diekspos untuk LED, tetapi itu membuat latar belakang benar-benar hitam.

Dan yang ketiga menunjukkan LED yang agak redup sesaat setelah matahari terbenam. LED seterang pada gambar lainnya, tetapi lingkungannya sangat terang sehingga saya harus menggunakan aperture rendah dan ISO rendah agar LED tampak agak gelap.

Make it Glow Contest 2018
Make it Glow Contest 2018
Make it Glow Contest 2018
Make it Glow Contest 2018

Juara II Make it Glow Contest 2018

Direkomendasikan: