Daftar Isi:

LED Terkendali Google Home: 8 Langkah
LED Terkendali Google Home: 8 Langkah

Video: LED Terkendali Google Home: 8 Langkah

Video: LED Terkendali Google Home: 8 Langkah
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
LED Terkendali Google Home
LED Terkendali Google Home
LED Terkendali Google Home
LED Terkendali Google Home

Akhir-akhir ini, saya memiliki banyak waktu luang, jadi saya mengerjakan banyak proyek.

Proyek ini akan memungkinkan Anda untuk mengontrol LED RGB melalui Google Home menggunakan Raspberry Pi. Sekarang ada 3 bagian dari proyek, menyiapkan Raspberry Pi, menyiapkan Google Home dengan perintah khusus menggunakan IFTTT, dan kemudian membuat sirkuit untuk lampu. Saya membuat sirkuitnya sendiri, tapi saya yakin Anda bisa mendapatkan sesuatu dari Adafruit yang melakukan apa yang dibutuhkan.

Bahan untuk Bagian Raspberry Pi

  • Raspberry Pi - apa pun akan berfungsi, tetapi saya menggunakan Nol
  • Dongle Nirkabel - jika Pi tidak memiliki Wifi bawaan
  • Beranda Google - Opsional jika Anda memiliki Asisten Google di ponsel Anda

Bahan untuk Bagian Sirkuit- Jangan biarkan ini menghalangi Anda… Ini cukup sederhana

  • Protoboard
  • Kabel
  • Jalur LED
  • Catu Daya 12V - Apa pun di atas 2 Amps seharusnya baik-baik saja
  • DC Barrel Jack - Ukuran yang sama dengan catu daya Anda
  • Transistor Daya NPN BJT (x3) - Saya menggunakan TIP31C
  • Header Pin Pria & Wanita - Opsional, tetapi sangat disarankan

Langkah 1: Mengunduh Express untuk Pi

Mengunduh Express untuk Pi
Mengunduh Express untuk Pi

Saya tidak akan membahas terlalu detail tentang pengaturan Pi karena ada begitu banyak tutorial di luar sana untuk mengaturnya.

Apa yang perlu Anda lakukan yang tidak saya bahas…

  • Flashing Raspberry Pi dengan Raspbian terbaru
  • Siapkan kartu jaringan sehingga Anda dapat mengakses internet dari Pi
  • Setel IP statis pada Raspberry Pi

Sekarang di sinilah kesenangan dimulai! Kita perlu menginstal nodeJS, npm, express, dan express-generator.

sudo apt-get update

sudo apt-get install nodejs npm

Setelah itu diinstal, jalankan yang berikut ini

npm install express express-generator

Express memungkinkan Anda membuat server web yang sangat mendasar untuk digunakan Raspberry Pi Anda. Generator ekspres hanya secara otomatis menghasilkan file untuk server ekspres.

Buat direktori dan cd ke dalam direktori. Saya memberi nama piWebpage milik saya. Sekarang jalankan yang berikut (terlihat pada gambar juga)

halaman web mkdir pi

cd piWebpage express --view=ejs webApp

Ini akan menghasilkan folder bernama webApp dengan semua file ekspres di dalamnya. Jika Anda berencana untuk berbuat lebih banyak dengan halaman web ini nanti dan Anda menyukai PUG, ganti --view=ejs dengan --view=pug. Kami tidak akan menyentuh halaman web, jadi untuk aplikasi ini, tidak masalah apa yang kami gunakan.

Langkah 2: Pengaturan Server Pi

Pindah ke direktori webApp baru.

cd webApp

instal npm

npm install akan memakan waktu karena menginstal semua dependensi untuk express.

Rekatkan setColor.py ke dalam folder webApp. File ini memiliki beberapa preset di dalamnya untuk warna dasar. Jangan ragu untuk menambahkan lebih banyak sesuka Anda. Rentangnya adalah 0 hingga 255 di mana 255 adalah warna penuh. Pada titik tertentu, saya mungkin akan menambahkan kemampuan untuk meredupkan lampu, tetapi untuk saat ini, kecerahannya penuh.

Pindah ke rute

rute cd

Sekarang ganti index.js dengan file terlampir. Ini akan menambahkan beberapa baris untuk menerima perintah POST yang akan dikirim oleh Google Home. Dari POST itu, kita akan mendapatkan warna yang dipilih dan memberi tahu Pi untuk menjalankan skrip python setColor untuk menyesuaikan lampu.

Satu hal terakhir… Kembali ke folder webApp.

cd ~/piWebpage/webApp

Menggunakan editor favorit Anda, tempel dan simpan kode di bawah ini ke webApp.js Anda. Di mana saja baik-baik saja selama sebelum "module.exports = app;"

// Setup driver hardware LEDconst {exec} = require('child_process'); exec('sudo pigpiod', (err, stdout, stderr)=>{ if(err){ console.log('Error loading LED Driver'); return; }else console.log('LED Driver Berhasil Dimuat'); });

Seperti komentar mengatakan, pigpiod adalah driver perangkat keras untuk sinyal PWM yang akan kita gunakan untuk menyesuaikan warna LED. Saya percaya itu sudah terpasang di Raspbian, tetapi jika tidak…

sudo apt-get install pigpiod

Sekarang untuk ujian yang sebenarnya! Memulai server!

DEBUG=aplikasi web:* npm mulai

Langkah 3: Pengaturan IFTTT (Pemicu)

Pengaturan IFTTT (Pemicu)
Pengaturan IFTTT (Pemicu)
Pengaturan IFTTT (Pemicu)
Pengaturan IFTTT (Pemicu)

IFTTT dapat melakukan banyak hal, dan saya sangat merekomendasikan untuk melihat-lihat beberapa aplikasi.

Pertama, Anda harus membuat akun. Gunakan akun Google yang sama yang terkait dengan Beranda Google Anda, jika tidak, akun tersebut tidak akan disinkronkan bersama. Setelah selesai dan masuk, klik kanan atas halaman IFTTT yang menampilkan nama dan avatar Anda. Kemudian klik Applet Baru dari dropdown.

Jika Anda penasaran, IFTTT adalah singkatan dari IF This Then That jika Anda tidak memperhatikan layar yang muncul. Jadi yang kami inginkan adalah Jika Google Assistant, maka Webhook sebagai opsi kami.

Lanjutkan dengan mengklik +ini yang akan memuat bilah pencarian. Dalam pencarian, ketik Google Assistant dan klik ikon di bawah pencarian.

Di Pilih Pemicu, pilih opsi ke-3 yang disebut Ucapkan frasa dengan bahan teks. Sekarang ini memungkinkan Anda untuk memiliki 3 perintah yang akan melakukan tindakan yang sama. Anda menambahkan $ ke dalam frase di mana Anda akan menyebutkan warna. Misalnya, jika saya secara alami akan mengatakan Hai Google, Set LEDs Blue (senatural berteriak pada perangkat), maka saya akan mengetik di bidang Set LEDs $. Lakukan itu untuk semua 3 bidang dengan versi perintah yang berbeda.

3 yang saya gunakan adalah

LED $

Setel LED $

Setel warna LED $

Bidang terakhir adalah apa yang Anda ingin Google Home Anda balas setelah mengucapkan perintah Anda. Itu bisa apa saja yang Anda inginkan, tetapi saya menggunakan Pengaturan warna ke $. $ berarti dia akan mengulangi warna itu kembali.

Klik Buat Pemicu

Langkah 4: Pengaturan IFTTT (Tindakan)

Pengaturan IFTTT (Tindakan)
Pengaturan IFTTT (Tindakan)
Pengaturan IFTTT (Tindakan)
Pengaturan IFTTT (Tindakan)

Setelah mengklik Buat Pemicu, Anda akan memuat kembali ke tampilan jika ini maka itu, tetapi ini telah diganti dengan logo Asisten Google. Lanjutkan dengan mengklik + itu

Hal yang sama seperti sebelumnya di mana ia membawa Anda ke bilah pencarian. Ketik Webhook dan klik ikon webhook di bawah bilah pencarian. Di bawah Pilih Tindakan untuk Webhook, hanya ada satu opsi, jadi klik Buat permintaan web.

Di sinilah hal-hal menjadi sedikit rumit. Karena Google bukan komputer lain di rumah Anda, Anda memerlukan alamat IP eksternal. Ini akan memerlukan beberapa penerusan port, tetapi kami akan membahasnya nanti. Untuk mendapatkan alamat IP eksternal Anda, buka

Di bidang URL, ketik https://xxx.xxx.xxx.xxx:3000/{{TextField}} (dengan x sebagai alamat IP eksternal Anda). Jika Anda penasaran, TextField akan memiliki warna yang Anda pilih saat Anda membuat perintah. Alasan kami menggunakan 3000 adalah karena itu adalah port tempat server Raspberry Pi Express berjalan. (Anda dapat mengubah port dalam kode, tetapi kami hanya menggunakan pengaturan default untuk Express)

Untuk Metode, pilih POSTING.

Untuk Jenis Konten, pilih teks/polos.

Untuk Isi, ketik {{TextField}}

Bagi Anda yang mengetahui cara kerja perintah POST, Anda akan berpikir bahwa jika Anda mengurai properti body dari permintaan, Anda akan mendapatkan warna. Untuk beberapa alasan, tidak ada yang dimasukkan ke dalam bidang isi permintaan, jadi saya sebenarnya menguraikan URL untuk warnanya. Semoga segera diperbaiki, karena itu akan menyederhanakan kode saya di rute index.js. Tapi saya ngelantur.

Terakhir, klik Create Action lalu Finish di halaman berikutnya. (Saya mematikan notifikasi, tapi itu preferensi)

Langkah 5: Penerusan Port

Penerusan Pelabuhan
Penerusan Pelabuhan
Penerusan Pelabuhan
Penerusan Pelabuhan

Di sinilah segalanya menjadi sulit untuk dijelaskan karena semua router berbeda…

Sekarang kami memiliki Google yang mengirim perintah ke rumah kami menggunakan port 3000, tetapi tidak tahu perangkat mana di LAN yang harus dituju. Untuk mengatasinya, kita perlu meneruskan port 3000 ke alamat IP lokal Raspberry Pi Anda.

Masuk ke router Anda menggunakan 10.0.0.1 atau 192.168.1.1 (Saya juga melihatnya di mana digit terakhir adalah 254) dan temukan penerusan port. Dalam penerusan port, mirip dengan gambar, Anda akan memberi nama perangkat baru (IFTTT) dan meneruskan port (3000) ke alamat IP Pi (dalam kasus saya 10.0.0.11).

Simpan pengaturan baru Anda, reboot router Anda, dan periksa untuk memastikan server Raspberry Pi Anda masih berjalan. Jika tidak berjalan, mulai lagi.

Kembali ke situs web yang berguna https://canyouseeme.org/. Di bawah alamat IP Anda, ada port checker. Dengan asumsi penerusan port Anda benar, ketik 3000 dan tekan check port. Itu harus kembali dengan Sukses.

Langkah 6: Memeriksa Pekerjaan Anda Sejauh Ini

Memeriksa Pekerjaan Anda Sejauh Ini
Memeriksa Pekerjaan Anda Sejauh Ini
Memeriksa Pekerjaan Anda Sejauh Ini
Memeriksa Pekerjaan Anda Sejauh Ini

Sekarang… saat yang Anda tunggu-tunggu… Beri tahu Google sebuah perintah seperti LED biru (jika Anda mengikuti contoh saya).

Dengan asumsi semua berjalan dengan benar, Anda akan mendapatkan output yang terlihat pada gambar. Kami belum memiliki sirkuit, jadi yang akan Anda lihat hanyalah teks di layar. Biasanya ada penundaan satu atau dua detik sebelum diproses dari Google dan muncul di Pi.

(Lewati ke langkah berikutnya jika hasilnya mirip dengan gambar)

Sekarang ada beberapa hal yang harus diperhatikan jika tidak berhasil…

Dalam gambar, ada garis yang mengatakan

POST /warna/biru 200 250.458 ms - 2

200 adalah bagian penting. Jika Anda tidak melihat angka 200, berarti ada POST buruk yang berarti server Anda tidak tahu apa yang harus dilakukan dengan data tersebut. Kembali ke Langkah 2 dan periksa file index.js Anda.

Di gambar juga

stdout: biru

stderr:

Ini adalah output dari file python yang menjalankan LED. Jika Anda melihat kesalahan di sana, mungkin Anda belum menginstal driver pada Langkah 2.

Terakhir, jika tidak ada yang muncul sama sekali… IFTTT Anda mungkin tidak diatur dengan benar atau gagal terhubung ke server. Kembali ke halaman IFTTT, dan di bilah navigasi atas, klik Aktivitas. Di sana, Anda dapat melihat setiap kali aplikasi Anda berjalan, dan jika ada kesalahan, Anda dapat melihat apa itu. Saya membuat perintah Google dengan server Pi mati dan mendapatkan kesalahan pada gambar.

Langkah 7: Membangun Sirkuit

Membangun Sirkuit
Membangun Sirkuit
Membangun Sirkuit
Membangun Sirkuit
Membangun Sirkuit
Membangun Sirkuit

Alasan mengapa kita perlu melakukan ini adalah karena Raspberry Pi tidak memiliki daya yang cukup… Jadi solusinya adalah… LEBIH BANYAK DAYA (Tim tool man Taylor menggerutu di kejauhan). AKA catu daya lain (12V 2A)

Bahan untuk Bagian Sirkuit

  • Protoboard
  • Kabel
  • Strip LED RGB
  • Catu Daya 12V - Apa pun di atas 2 Amps seharusnya baik-baik saja
  • DC Barrel Jack - Ukuran yang sama dengan catu daya Anda
  • Transistor Daya NPN BJT (x3) - Saya menggunakan TIP31C
  • Header Pin Pria & Wanita

Menggunakan gambar praktis yang saya curi dari jalinan dengan GPIO Pi Zero, Anda dapat melihat GPIO17, GPIO18, dan GPIO 27 semuanya bersebelahan dengan GND. Kami akan menggunakan persegi 4 pin (Pin 11, 12, 13, 14).

Pertama, saya akan merekomendasikan menyolder header pria ke strip LED Anda seperti yang terlihat pada gambar (bukan karya terbaik saya). Ini memungkinkan pemutusan yang mudah jika Anda perlu. Saya menggunakan header perempuan untuk koneksi strip LED ke protoboard saya dan header laki-laki dari protoboard ke Raspberry Pi. (Selalu gunakan koneksi perempuan untuk sumber daya/sinyal). Anda tidak perlu memindahkan semua pin Pi di samping satu sama lain seperti yang saya lakukan… Saya hanya ingin itu terlihat bersih, tapi itu banyak pekerjaan.

Penjelasan Sirkuit

Bagi Anda yang tidak terbiasa dengan transistor, transistor pada dasarnya adalah saklar digital. Pin GPIO dari Pi memicu tiga sakelar (merah, hijau, dan biru). Melihat secara khusus MERAH dalam diagram rangkaian, ketika GPIO_17 menyala, sakelar "menutup" yang menghubungkan MERAH ke GND menyebabkan lampu merah menyala. Saat GPIO_17 mati, maka saklar terbuka dan dengan demikian lampu mati.

Basis - GPIO

Kolektor - Warna (MERAH, HIJAU, BIRU)

Emitter - Ground (dari Power Supply dan Pi)

Pastikan untuk menghubungkan ground Pi ke ground catu daya. Lampu akan tetap bekerja, tetapi akan tampak sangat redup sampai tanah terhubung.

Saya memiliki perangkat yang mencari transistor ke-4 di protoboard saya. Ini adalah L7805CV yang digunakan untuk mengubah 12V ke 5V sehingga saya dapat memberi daya pada Pi di sirkuit yang sama. Itu berhasil tetapi terus memanas, jadi saya menghapus koneksinya.

Langkah 8: Ujilah

Setelah selesai dengan sirkuit, mulai ulang Pi Anda sebelum membuat koneksi apa pun. Ini karena pin mungkin masih aktif dari pengujian server. Atau, Anda dapat mematikan server dan layanan pigpiod.

Colokkan LED dan jumper dari protoboard ke Pi. Periksa kembali semua koneksi sebelum memberikan daya. Jika Anda salah memasangnya, Anda mungkin menggoreng Pi Anda (tanpa tekanan).

Daftar periksa

  • Periksa kabel
  • Kekuatan Pi
  • Sirkuit Daya
  • Mulai Server (DEBUG=webapp:* npm start saat berada di direktori ~/piWebpage/webApp)
  • Beri tahu Google untuk melakukan penawaran Anda!

SELAMAT Anda tidak meledakkan apa pun, dan sekarang Anda dapat mengontrol LED dari Google Home.

Tinggalkan komentar jika Anda mengalami masalah, dan saya akan melakukan yang terbaik untuk menghubungi Anda kembali!

Direkomendasikan: