Isi kandungan:

LED Rumah yang Dikendalikan Google: 8 Langkah
LED Rumah yang Dikendalikan Google: 8 Langkah

Video: LED Rumah yang Dikendalikan Google: 8 Langkah

Video: LED Rumah yang Dikendalikan Google: 8 Langkah
Video: Cara Menghidupkan dan Mematikan Lampu Dengan Google Assisten 2024, November
Anonim
LED Dikawal Google
LED Dikawal Google
LED Dikawal Google
LED Dikawal Google

Akhir-akhir ini, saya mempunyai banyak masa lapang, jadi saya telah mengusahakan banyak projek.

Projek ini akan membolehkan anda mengawal LED RGB melalui Google Home menggunakan Raspberry Pi. Sekarang ada 3 bahagian projek, menyiapkan Raspberry Pi, menyiapkan Google Home dengan perintah khusus menggunakan IFTTT, dan kemudian membuat litar untuk lampu. Saya membuat litar sendiri, tetapi saya yakin anda boleh mendapatkan sesuatu dari Adafruit yang melakukan apa yang diperlukan.

Bahan untuk Bahagian Raspberry Pi

  • Raspberry Pi - mana-mana akan berfungsi, tetapi saya menggunakan Zero
  • Wireless Dongle - jika Pi tidak mempunyai Wifi
  • Laman Utama Google - Pilihan jika anda mempunyai Pembantu Google di telefon anda

Bahan untuk Bahagian Litar- Jangan biarkan ini menghalangi anda … Cukup mudah

  • Papan Protob
  • Kawat
  • Jalur LED
  • Bekalan Kuasa 12V - Apa-apa di atas 2 Amps mestilah baik
  • Jack Barrel DC - Saiz yang sama dengan bekalan kuasa anda
  • Transistor Kuasa NPN BJT (x3) - Saya menggunakan TIP31C
  • Header Pin Lelaki & Wanita - Pilihan, tetapi sangat digalakkan

Langkah 1: Memuat turun Express untuk Pi

Memuat turun Express untuk Pi
Memuat turun Express untuk Pi

Saya tidak akan terlalu terperinci mengenai penyediaan Pi kerana terdapat banyak tutorial di luar sana untuk menyiapkannya.

Apa yang perlu anda lakukan yang tidak saya lindungi …

  • Flashing Raspberry Pi dengan Raspbian terbaru
  • Sediakan kad rangkaian supaya anda dapat mengakses internet dari Pi
  • Tetapkan IP statik pada Raspberry Pi

Di sinilah bermulanya keseronokan! Kita perlu memasang penjana nodeJS, npm, express, dan express.

sudo apt-get kemas kini

sudo apt-get install nodejs npm

Setelah dipasang, jalankan yang berikut

npm pasang penjana ekspres ekspres

Express membolehkan anda membuat pelayan web yang sangat asas untuk digunakan oleh Raspberry Pi anda. Penjana ekspres hanya menghasilkan fail secara automatik untuk pelayan ekspres.

Buat direktori dan cd ke dalam direktori. Saya menamakan piWebpage saya. Sekarang jalankan yang berikut (dilihat dalam gambar juga)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Ini akan menghasilkan folder bernama webApp dengan semua fail ekspres di dalamnya. Sekiranya anda merancang untuk melakukan lebih banyak perkara dengan halaman web ini kemudian dan anda suka PUG, ganti --view = ejs dengan --view = pug. Kami tidak akan menyentuh laman web, jadi untuk aplikasi ini, tidak masalah apa yang kami gunakan.

Langkah 2: Persediaan Pelayan Pi

Pindah ke direktori webApp baru.

cd webApp

pasang npm

Pemasangan npm akan memakan masa kerana memasang semua kebergantungan untuk ekspres.

Tampal setColor.py ke dalam folder webApp. Fail ini mempunyai beberapa pratetap di dalamnya untuk warna asas. Jangan ragu untuk menambah lebih banyak yang anda mahu. Julatnya adalah 0 hingga 255 di mana 255 berwarna penuh. Pada satu ketika, saya mungkin akan menambahkan kemampuan untuk meredupkan lampu, tetapi buat masa ini, lampu ini terang sepenuhnya.

Bergerak ke laluan

laluan cd

Sekarang ganti index.js dengan fail yang dilampirkan. Ini akan menambah beberapa baris untuk menerima arahan POST yang akan dihantar oleh Google Home. Dari POST itu, kita akan memilih warna dan memberitahu Pi untuk menjalankan skrip setColor python untuk menyesuaikan lampu.

Satu perkara terakhir… Kembali ke folder webApp.

cd ~ / piWebpage / webApp

Dengan menggunakan editor kegemaran anda, tampal dan simpan kod di bawah ke dalam webApp.js anda. Mana-mana sahaja yang baik selagi sebelumnya "module.exports = app;"

// Siapkan pemacu perkakasan LEDconst {exec} = memerlukan ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Error loading LED Driver'); return;} else console.log ('Pemandu LED Berjaya Dimuat'); });

Seperti komen mengatakan, pigpiod adalah pemacu perkakasan untuk isyarat PWM yang akan kita gunakan untuk menyesuaikan warna LED. Saya percaya ia sudah terpasang di Raspbian, tetapi jika tidak…

sudo apt-get install pigpiod

Sekarang untuk ujian sebenar! Memulakan pelayan!

DEBUG = webapp: * npm bermula

Langkah 3: Persediaan IFTTT (Pencetus)

Persediaan IFTTT (Pencetus)
Persediaan IFTTT (Pencetus)
Persediaan IFTTT (Pencetus)
Persediaan IFTTT (Pencetus)

IFTTT boleh melakukan banyak perkara, dan saya sangat mengesyorkan melihat beberapa aplikasi.

Pertama, anda perlu membuat akaun. Gunakan akaun Google yang sama yang dikaitkan dengan Laman Utama Google anda, jika tidak, akaun tersebut tidak akan diselaraskan bersama. Setelah selesai dan log masuk, klik kanan atas halaman IFTTT di mana ia menunjukkan nama dan avatar anda. Kemudian klik Applet Baru dari menu lungsur.

Sekiranya anda ingin tahu, IFTTT bermaksud IF This Then Itupun jika anda tidak perasan dengan skrin yang muncul. Jadi yang kami mahukan ialah Jika Pembantu Google, maka Webhook sebagai pilihan kami.

Teruskan dengan mengklik + ini yang akan memuatkan bar carian. Dalam carian, ketik Google Assistant dan klik ikon di bawah carian.

Dalam Pilih Pencetus, pilih pilihan ke-3 yang disebut Ucapkan frasa dengan bahan teks. Sekarang ini membolehkan anda mempunyai 3 perintah yang akan melakukan tindakan yang sama. Anda menambahkan $ ke dalam frasa di mana anda akan menyebut warnanya. Sebagai contoh, jika saya secara semula jadi mengatakan Hai Google, Tetapkan LED Biru (semudah berteriak pada peranti), maka saya akan menaip ke medan Tetapkan LED $. Lakukan itu untuk ketiga-tiga bidang dengan versi perintah yang berbeza.

3 yang saya gunakan adalah

LED $

Tetapkan LED $

Tetapkan warna LED $

Bidang terakhir adalah apa yang anda mahukan Google Home anda membalas setelah menyatakan perintah anda. Ini boleh menjadi apa sahaja yang anda mahukan, tetapi saya menggunakan warna Tetapan hingga $. $ Bermaksud dia akan mengulangi warnanya kembali.

Klik Buat Pencetus

Langkah 4: Persediaan IFTTT (Tindakan)

Persediaan IFTTT (Tindakan)
Persediaan IFTTT (Tindakan)
Persediaan IFTTT (Tindakan)
Persediaan IFTTT (Tindakan)

Setelah mengklik Buat Pencetus, anda akan memuat kembali ke paparan jika ini maka itu, tetapi ini telah diganti dengan logo Pembantu Google. Teruskan dengan mengklik + itu

Perkara yang sama seperti sebelumnya yang membawa anda ke bar carian. Ketik Webhooks dan klik ikon webhook di bawah bar carian. Di bawah Pilih Tindakan untuk Webhooks, hanya ada satu pilihan, jadi klik Buat permintaan web.

Di sinilah keadaan menjadi sukar. Oleh kerana Google bukan komputer lain di rumah anda, anda memerlukan alamat IP luaran anda. Ini memerlukan beberapa pemajuan port, tetapi kami akan menyinggungnya kemudian. Untuk mendapatkan alamat IP luaran anda, pergi ke

Di medan URL, ketik https://xxx.xxx.xxx.xxx:3000/{{TextField}} (dengan x adalah alamat IP luaran anda). Sekiranya anda ingin tahu, TextField akan mempunyai warna yang anda pilih semasa anda membuat perintah. Sebab kami menggunakan 3000 adalah kerana itulah port yang sedang dijalankan oleh pelayan Raspberry Pi Express. (Anda boleh menukar port dalam kod, tetapi kami hanya menggunakan tetapan lalai untuk Express)

Untuk Kaedah, pilih POST.

Untuk Jenis Kandungan, pilih teks / dataran.

Untuk Badan, taipkan {{TextField}}

Bagi anda yang tahu bagaimana perintah POST berfungsi, anda akan berfikir bahawa jika anda menguraikan isi badan permintaan anda akan mendapat warna. Untuk sebab tertentu, tidak ada yang dimasukkan ke dalam bidang permintaan, jadi saya sebenarnya menguraikan URL untuk warnanya. Harap segera diperbaiki, kerana itu akan mempermudah kod saya di laluan index.js. Tetapi saya menyimpang.

Terakhir, klik Buat Tindakan dan kemudian Selesai di halaman seterusnya. (Saya mematikan pemberitahuan, tetapi itu pilihan)

Langkah 5: Pemajuan Pelabuhan

Penghantaran Pelabuhan
Penghantaran Pelabuhan
Penghantaran Pelabuhan
Penghantaran Pelabuhan

Di sinilah keadaan sukar dijelaskan kerana semua router berbeza …

Sekarang kami mempunyai Google untuk menghantar perintah ke rumah kami menggunakan port 3000, tetapi ia tidak tahu peranti mana yang perlu dilayari di LAN. Untuk mengatasinya, kita perlu meneruskan port 3000 ke alamat IP tempatan Raspberry Pi anda.

Masuk ke penghala anda menggunakan 10.0.0.1 atau 192.168.1.1 (Saya juga melihatnya di mana digit terakhir adalah 254) dan cari pemajuan port. Dalam pemajuan port, seperti gambar, anda akan menamakan peranti baru (IFTTT) dan meneruskan port (3000) ke alamat IP Pi (dalam kes saya 10.0.0.11).

Simpan tetapan baru anda, reboot penghala anda, dan periksa untuk memastikan pelayan Raspberry Pi anda masih berjalan. Sekiranya tidak berjalan, mulakannya semula.

Kembali ke laman web yang berguna https://canyouseeme.org/. Di bawah alamat IP anda, ia mempunyai pemeriksa port. Dengan andaian pemajuan port anda betul, ketik 3000 dan tekan check port. Ia mesti kembali dengan Kejayaan.

Langkah 6: Memeriksa Kerja Anda Sejauh Ini

Memeriksa Kerja Anda Sejauh Ini
Memeriksa Kerja Anda Sejauh Ini
Memeriksa Kerja Anda Sejauh Ini
Memeriksa Kerja Anda Sejauh Ini

Sekarang … saat yang anda nantikan … Beritahu Google arahan seperti LED biru (jika anda mengikuti contoh saya).

Dengan andaian semuanya berjalan dengan betul, anda akan mendapat output yang dilihat dalam gambar. Kami belum mempunyai litar, jadi yang akan anda lihat hanyalah teks di skrin. Biasanya terdapat kelewatan kedua atau 2 sebelum diproses dari Google dan muncul di Pi.

(Langkau ke langkah seterusnya jika ini sama dengan gambar)

Sekarang ada beberapa perkara yang perlu diperhatikan jika ia tidak berfungsi …

Dalam gambar, ada garis yang mengatakan

POST / warna / biru 200 250.458 ms - 2

200 adalah bahagian penting. Sekiranya anda tidak melihat 200, maka terdapat POST yang buruk yang bermaksud pelayan anda tidak tahu apa yang harus dilakukan dengan data tersebut. Kembali ke Langkah 2 dan periksa fail index.js anda.

Juga dalam gambar

stdout: biru

stderr:

Ini adalah output dari fail python yang menjalankan LED. Sekiranya anda melihat ralat di sana, mungkin pemandu anda tidak dipasang pada Langkah 2.

Terakhir, jika tidak ada yang muncul sama sekali … IFTTT anda mungkin tidak disiapkan dengan betul atau gagal menyambung ke pelayan. Kembali ke halaman IFTTT, dan di bar navigasi atas, klik Aktiviti. Di sana, anda dapat melihat setiap kali aplikasi anda berjalan, dan jika ada ralat, anda dapat melihatnya. Saya membuat perintah Google dengan pelayan Pi dimatikan dan mendapat kesalahan dalam gambar.

Langkah 7: Membina Litar

Membina Litar
Membina Litar
Membina Litar
Membina Litar
Membina Litar
Membina Litar

Sebab mengapa kita perlu melakukan ini adalah kerana Raspberry Pi tidak mempunyai kuasa yang cukup … Jadi penyelesaiannya adalah … LEBIH KUASA (Tim alat Taylor menggerutu di kejauhan). AKA bekalan kuasa lain (12V 2A)

Bahan untuk Bahagian Litar

  • Papan Protob
  • Kawat
  • Jalur LED RGB
  • Bekalan Kuasa 12V - Apa-apa di atas 2 Amps mestilah baik
  • Jack Barrel DC - Saiz sama dengan bekalan kuasa anda
  • Transistor Kuasa NPN BJT (x3) - Saya menggunakan TIP31C
  • Header Pin Lelaki & Wanita

Dengan menggunakan gambar yang berguna yang saya curi dari jalinan dengan GPIO Pi Zero, anda dapat melihat GPIO17, GPIO18, dan GPIO 27 berada di sebelah satu sama lain dengan GND. Kami akan menggunakan petak 4 pin (Pin 11, 12, 13, 14).

Mula-mula, saya akan mengesyorkan memasangkan header lelaki ke jalur LED anda seperti yang dilihat dalam gambar (bukan karya terbaik saya). Ini memungkinkan untuk memutuskan sambungan dengan mudah sekiranya anda memerlukannya. Saya menggunakan header wanita untuk sambungan jalur LED ke protoboard saya dan header lelaki dari protoboard ke Raspberry Pi. (Sentiasa gunakan sambungan wanita untuk sumber kuasa / isyarat). Anda tidak perlu menggerakkan semua pin Pi di sebelah satu sama lain seperti yang saya lakukan … Saya hanya mahu ia kelihatan bersih, tetapi itu banyak kerja.

Penjelasan Litar

Bagi anda yang tidak biasa dengan transistor, transistor pada dasarnya adalah suis digital. Pin GPIO dari Pi memicu tiga suis (merah, hijau, dan biru). Secara khusus melihat RED dalam rajah litar, ketika GPIO_17 dihidupkan, suis "menutup" menghubungkan RED ke GND menyebabkan lampu merah menyala. Apabila GPIO_17 dimatikan, maka suis terbuka dan dengan itu lampu mati.

Pangkalan - GPIO

Pengumpul - Warna (MERAH, HIJAU, BIRU)

Emitter - Ground (dari kedua-dua Power Supply dan Pi)

Pastikan untuk menyambungkan tanah Pi ke tanah bekalan kuasa. Lampu akan tetap berfungsi, tetapi akan kelihatan sangat redup sehingga tanah disambungkan.

Saya mempunyai peranti transistor ke-4 di protoboard saya. Ini adalah L7805CV yang digunakan untuk menukar 12V ke 5V sehingga saya dapat menghidupkan Pi pada litar yang sama. Ia berfungsi tetapi tetap dipanaskan, jadi saya mengeluarkan sambungannya.

Langkah 8: Cubalah

Setelah selesai dengan litar, mulakan semula Pi anda sebelum membuat sambungan. Ini kerana pin mungkin masih aktif dari ujian pelayan. Sebagai alternatif, anda boleh membunuh pelayan dan khidmat babi.

Pasang LED dan pelompat dari protoboard ke Pi. Periksa semula semua sambungan sebelum memberikan kuasa. Sekiranya anda menyalahgunakan kabel, anda mungkin menggoreng Pi (tanpa tekanan).

Senarai semak

  • Periksa wayar
  • Kuasa Pi
  • Litar Kuasa
  • Start Server (DEBUG = webapp: * npm bermula semasa berada di direktori ~ / piWebpage / webApp)
  • Suruh Google membuat tawaran anda!

TAHNIAH anda tidak meletupkan apa-apa, dan kini anda dapat mengawal LED anda dari Google Home.

Tinggalkan komen sekiranya anda menghadapi masalah, dan saya akan berusaha sebaik mungkin untuk menghubungi anda!

Disyorkan: