Buat Stripe LED Cerdas Animasi yang Dikontrol Alexa dengan Arduino
Komponen dan Perlengkapan
Arduino UNO
Arduino Nano juga dapat digunakan. Arduino Mega mungkin berguna untuk menggerakkan lebih banyak piksel LED.
×
1
Raspberry Pi 3 Model B
×
1
Stripe NeoPixel
Stripe LED WS8212 mana pun dapat digunakan.
×
1
Aplikasi dan Layanan Online
Arduino IDE
Amazon Web Services AWS Lambda
Amazon Alexa Alexa Skills Kit
Amazon Web Services AWS IoT
Tentang Proyek Ini
Mengapa Stripe LED
Saya selalu terpesona dengan stripe LED RGB addressable. Efek warna dan kemampuan animasi yang tak terbatas selalu memikat kreativitas saya sehingga beberapa tahun lalu saya memutuskan untuk mengembangkan perpustakaan untuk papan Arduino yang disebut ALA (Arduino Light Animations). Alexa sekarang memberi saya kemampuan untuk mengontrol pencahayaan dan efek ruangan dengan suaraku dan itu keren!
Ringkasan Proyek
Berikut adalah komponen yang diperlukan untuk proyek ini.
Amazon Alexa: Keterampilan Alexa khusus (Light Strip) mendefinisikan model interaksi suara dan menerjemahkan perintah (intents) yang dikeluarkan ke fungsi Lambda.
Amazon Lambda: Skrip Python yang menerima pesan dari Alexa dan mengirim pembaruan ke layanan IoT.
Amazon IoT: Layanan IoT menyimpan 'thing shadow' yang merupakan representasi dari status stripe RGB. Setiap kali shadow diperbarui, klien MQTT yang berlangganan (Raspberry PI) akan diberi tahu.
Raspberry PI: PC kecil ini menjalankan klien MQTT untuk menerima pesan dari layanan Amazon IoT. Di sisi lain, itu akan menyediakan daya dan mengirim perintah ke papan Arduino melalui port USB.
Arduino: Mikrokontroler ini akan menjalankan perpustakaan ALA untuk menggerakkan stripe LED menerima perintah dari Raspberry PI melalui port serial USB. Anda dapat menggunakan papan Arduino Uno, Nano, atau Mega.
WS8212 Stripe LED RGB: Ini adalah stripe LED addressable sehingga setiap LED dapat dikontrol secara individu. Ini memungkinkan animasi cahaya yang indah dan berwarna.
Tidak ada yang sangat menantang dalam proyek ini, tetapi ada banyak bagian yang saling terhubung. Saya menyarankan Anda untuk mengikuti struktur yang disarankan untuk membangun proyek Anda pada dasar yang kokoh sebelum melangkah ke langkah berikutnya. Untuk membuat semuanya sesederhana mungkin, saya telah membagi proyek ini menjadi dua sub-proyek.
Bagian pertama proyek ini dijelaskan dalam proyek Web-Controlled LED Animations with Raspberry Pi and Arduino Hackster.io saya dan akan memandu Anda melalui langkah-langkah yang diperlukan untuk menghubungkan Raspberry PI, papan Arduino, dan stripe WS8212 LED. Di akhir fase ini, Anda akan mampu mengontrol animasi LED dari ponsel pintar atau PC menggunakan browser web.
Bagian kedua proyek yang dijelaskan di sini akan menambahkan kontrol suara ke implementasi sebelumnya menggunakan Amazon Alexa. Ada beberapa langkah yang harus dilakukan untuk menyiapkan seluruh rantai dengan benar, jadi sabar dan ikuti instruksi dengan cermat..
Amazon IoT
Apakah Anda telah menyelesaikan bagian perangkat keras? Saatnya pergi ke cloud! Kami akan menggunakan platform AWS IoT untuk mengelola 'thing' kami dari internet.
Kami akan menggunakan "Device Shadow", yang merupakan salinan dari status suatu thing, beserta perubahan yang diinginkan. Raspberry PI akan berlangganan ke feed notifikasi yang menerbitkan perubahan ("delta") ke Shadow ini. Periksa tautan ini untuk info lebih lanjut tentang platform dan API AWS IoT.
Buat IoT Thing
Masuk ke AWS Console. Jika Anda belum melakukannya, Anda perlu membuat akun gratis.
Pastikan Anda masuk ke zona US East (N. Virginia) atau EU (Ireland) di pojok kanan atas.
Cari 'IoT' dan pilih layanan AWS IoT. Klik tombol Get Started (jika ada) untuk menutup tutorial pengantar.
Pertama kita perlu membuat kebijakan keamanan untuk 'thing' kami. Pergi ke menu Secure > Policies lalu klik tombol Create a Policy dan masukkan info berikut:
Nama: LightStripPolicy
Aksi: *
Sumber daya: *
Efek - Izinkan: dicentang
Klik 'Create'
Sekarang kita dapat membuat IoT Thing.
Pilih menu Manage > Things dan buat AWS IoT Thing baru dengan menekan tombol Register a Thing (atau tombol Create di pojok kanan atas) lalu pada Create a single thing.
Ketik 'LS01' di bidang Nama. Biarkan bidang lainnya default dan klik Next.
Klik tombol Create certificate di bagian One-click certificate creation.
Unduh 3 sertifikat untuk perangkat Anda dan Root CA. Untuk Root CA Anda mungkin perlu klik kanan lalu simpan.
Setelah mengunduh sertifikat, klik tombol Activate.
Klik tombol Attach a Policy, dan pilih LightStripPolicy yang telah Anda buat sebelumnya lalu klik Register Thing.
Sebelum melangkah lebih jauh Anda perlu mencatat AWS IoT Endpoint. Klik menu Settings di pojok kiri bawah halaman web AWS IoT, buka dan catat Endpoint.
Konfigurasikan Raspberry PI untuk mendengarkan 'Thing'
Pertama kita perlu menginstal AWS IoT Device SDK for Python dengan perintah berikut pada baris perintah Raspberry PI:
sudo pip3 install AWSIoTPythonSDK
Sekarang unduh repositori LightStrip dari GitHub dan ekstrak.
mkdir cd /home/pi/LightStrip wget https://github.com/bportaluri/LightStrip/archive/master.zip unzip master.zip
Salin empat sertifikat yang Anda unduh saat membuat IoT Thing ke folder /home/pi/LightStrip/LightStrip-master/pi.
Edit skrip lightstripcfg.py. Anda dapat menggunakan editor teks apa pun. Berikut perintah untuk editor nano.
cd /home/pi/LightStrip/LightStrip-master/pi nano lightstripcfg.py
Sekarang edit pengaturan agar cocok dengan konfigurasi Anda.
AWSIOT: Masukkan AWS IoT Endpoint yang telah Anda catat sebelumnya.
ROOT_CA: nama file sertifikat root CA
CERTIFICATE: nama file sertifikat
PRIVATE_KEY: nama file kunci pribadi
DEVICE_NAME: biarkan tidak berubah sebagai "LS01"
Tutup editor nano dan simpan file dengan menekan 'Ctrl+X' lalu 'Y'.
Jalankan skrip lightstrip.py sebagai berikut.
sudo python3 lightstrip.py
Skrip akan mencantumkan port USB yang terhubung. Arduino harus terhubung ke /dev/ttyACM0 jadi jalankan skrip dengan meneruskan port seperti ini.
sudo python3 lightstrip.py /dev/ttyACM0
Klien uji akan terhubung ke layanan Amazon Thing Shadow dan berlangganan perubahan dari perangkat shadow LS01. Setelah koneksi berhasil, skrip klien akan memperbarui statusnya ke shadow perangkat LS01 dan menerima pesan pengakuan seperti ini.
Untuk memverifikasi semuanya berjalan dengan benar, kembali ke konsol AWS IoT dan pilih menu Manage > Things lalu buka perangkat LS01. Pilih menu Shadow dan Anda akan melihat status shadow perangkat.
Klik tautan Edit di bagian Shadow Document dan tempel dokumen JSON berikut di kotak Shadow state.
{ "desired": { "animation": "101" } }
Ini adalah apa yang harus Anda lihat.
Ketika mengklik tautan Save, pesan 'delta' akan dikirim ke klien MQTT di Raspberry PI yang akan menyala stripe LED.
Dokumen JSON berikut akan mengubah warna menjadi biru.
{ "desired": { "color": "0066CC" } }
Pada titik ini kita dapat mengontrol stripe LED kami dari layanan ASW IoT jadi Anda harus bangga pada diri Anda.
Fungsi AWS Lambda
AWS Lambda memungkinkan untuk menjalankan kode di cloud tanpa menyediakan atau mengelola server. Ini adalah jembatan sempurna antara Alexa Skills Kit yang akan mengaktifkan kontrol suara di langkah terakhir proyek ini.
Masuk ke AWS Console. Dari daftar layanan, pilih Lambda.
Pastikan Anda masuk ke zona yang sama yang Anda gunakan di langkah sebelumnya: US East (N. Virginia) atau EU (Ireland) di pojok kanan atas.
Klik tombol Create Function. Klik Author from scratch dan konfigurasikan sebagai berikut:
Nama = LightStrip
Runtime = Python 3.6
Peran = Buat Peran Khusus. Ini akan meluncurkan tab baru. Cukup klik tombol "Allow" untuk membuat peran baru bernama lambda_basic_execution.
Peran yang ada: lambda_basic_execution
Klik tombol Create Function
Catat Lambda ARN ID di pojok kanan atas.
Klik kotak LightStrip untuk membuka bagian kode fungsi.
Tipe entri kode: Edit code inline
Runtime: Python 3.6
Handler: lambda_function.lambda_handler
Skrip lambda_function.py seharusnya sudah ditentukan. Tempelkan kode dari file LightStrip\lambda\lambda_function.py ke editor kode.
Buat file lain bernama ala_controller.py dan tempelkan kode dari file LightStrip\lambda\ala_controller.py ke editor kode.
Ini adalah tampilan keseluruhan yang seharusnya.
Selesai, klik tombol oranye Save di pojok kanan atas.
Keterampilan Alexa
Kami sekarang dapat membuat keterampilan khusus Light Strip untuk Alexa.
Pergi ke Amazon Developer Console dan masuk sesuai kebutuhan. Anda mungkin perlu mendaftarkan akun Anda terlebih dahulu.
Pergi ke Alexa > Alexa Skills Kit (Get Started).
Klik tombol Add a New Skill di pojok kanan atas dan masukkan data berikut di tab Skill Information:
Tipe Keterampilan: Custom Interaction Model
Bahasa: English (U.S.)
Nama: LightStrip
Nama Pemanggilan: light strip
Klik Save
Ini membuat keterampilan. Catat Skill ID.
Pilih menu Interaction Model lalu klik tombol Launch Skill Builder.
Klik tombol Code Editor dan tempelkan isi file LightStrip/alexaskill/lightstrip_skill.json ke dalam kotak teks.
Klik tombol Save Model dan Build Model. Akan memerlukan beberapa menit untuk membangun model jadi sabar. Klik tombol Skill Information untuk kembali ke halaman konfigurasi keterampilan.
Sekarang klik menu Configuration.
Di tipe Titik Akhir Layanan pilih AWS Lambda ARN lalu tempelkan ARN fungsi Lambda yang Anda catat di atas.
Biarkan semua nilai default dan klik tombol Save di bawah.
Hubungkan Keterampilan Alexa ke Fungsi Lambda
Kembali ke fungsi Lambda Anda. Di sisi kanan ada daftar pemicu yang telah ditentukan. Pilih Alexa Skills Kit dan itu akan ditambahkan ke fungsi Anda.
Konfigurasikan sebagai berikut:
Application Id = Skill ID yang Anda catat di atas
Klik Add
Klik Save
Anda Selesai
Proyek sekarang lengkap. Cobalah perintah suara berikut:
Open Light Strip
Turn on
Set brightness to 20 percent
Set brightness to 50 percent
Set color to red
Set color to turquoise
Turn off
Run an exciting animation
Run a relaxing animation
Keterampilan LightStrip memungkinkan interaksi suara yang lebih canggih juga
Saya: Alexa, buka Light Strip
Alexa: Selamat datang di LightStrip - Stripe LED akan bersinar dengan cahaya biru
Saya: Jalankan animasi
Alexa: Apakah Anda ingin animasi yang menenangkan atau menggembirakan?
Saya: Menenangkan
Alexa: OK - Stripe LED akan menampilkan animasi acak
Saya: Animasi berikutnya
Alexa: OK - Animasi acak lain akan ditampilkan
Untuk memahami model interaksi dengan lebih baik, berikut adalah diagram VUI lengkap dari keterampilan.
Peningkatan dan Perbaikan
Mulai AlaWeb secara otomatis saat boot
Peningkatan kecil untuk proyek ini adalah memulai skrip lightstrip.py secara otomatis saat boot sehingga Anda tidak perlu meluncurkannya secara manual setiap kali Anda menyala Raspberry PI atau jika ada yang salah dan Anda harus mereset. Ikuti instruksi ini.
Menambahkan dan menyesuaikan animasi
Keterampilan Light Strip sudah memiliki 20 variasi animasi yang didefinisikan. Namun, perpustakaan ALA memungkinkan untuk dengan mudah menyiapkan animasi Anda sendiri dengan memilih preset animasi, palet warna, dan kecepatan. Anda dapat menambahkan animasi Anda sendiri atau menyesuaikan yang ada dalam skrip ala_controller.py. Di sekitar baris 80 Anda akan melihat daftar pengaturan animasi yang dapat Anda modifikasi atau tingkatkan berdasarkan selera Anda.
Kode
LightStrip
Semua kode yang Anda butuhkan untuk proyek inihttps://github.com/bportaluri/LightStrip