Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Kontrol Penuh TV Anda Menggunakan Alexa dan Arduino IoT Cloud

Komponen dan persediaan

Arduino Nano 33 IoT
× 1
Resistor 330 ohm
× 1
Penerima IR (generik)
mis. VS1838B
× 1
Pemancar IR (generik)
× 1
Kabel jumper (generik)
× 1
Breadboard (generik)
× 1

Aplikasi dan layanan online

Editor Web Arduino
Arduino IoT Cloud
Keahlian Arduino Resmi Amazon Alexa Arduino

Tentang proyek ini

Catatan:Tutorial ini mungkin sudah usang, silakan buka di sini untuk versi yang lebih baru.

Pengantar:Arduino IoT Cloud

Arduino IoT Cloud adalah platform yang memungkinkan siapa saja untuk membangun objek terhubung IoT dengan mudah. Untuk mengontrol TV kami menggunakan Alexa, kami juga akan menggunakan Keterampilan Resmi Arduino Alexa.

Jika Anda baru mengenal Arduino IoT Cloud, kami sarankan untuk terlebih dahulu melihat proyek pengantar ini, yang akan memberi Anda gambaran umum dan memandu Anda melalui proses penyiapan salah satu papan yang didukung, IoT Cloud Things dan Properti dan membantu Anda.

Bagian 1:Cara Mengontrol Perangkat TV

Cara termudah untuk mengontrol segala jenis televisi, adalah bertindak seolah-olah kita adalah pengontrol inframerah jarak jauhnya sendiri. Untuk melakukannya, kita harus mendengarkan untuk sinyal yang akan dikirim oleh remote, ambil data dan tiru dengan papan Arduino kami. Setelah sirkuit dirakit, kami akan mengunggah sketsa ini ke papan kami. Ini akan menerjemahkan ledakan sinyal IR yang dihasilkan oleh penekanan tombol jarak jauh ke dalam array bilangan bulat yang tidak ditandatangani. Mari arahkan remote ke IR Receiver Arduino kami membuat dan menekan tombol berikut:

  • DAYA/SIGA
  • SALURAN DARI 1 SAMPAI 9
  • NAIK VOLUME
  • TURUNKAN VOLUME
  • BUNGKUS
  • SALURKAN
  • SALURAN KE BAWAH

Kita akan melihat nilai yang masuk melalui Serial Monitor , dilaporkan sebagai rawData . Mari kita catat mereka ke dalam file teks untuk saat ini, dan tetapkan setiap daftar nama arraynya sendiri (chan1 , chan2 dan seterusnya). Nilai berikut hanya untuk referensi, dan dihasilkan oleh remote TV Samsung.

CHANNEL 1unsigned int chan1[67] ={4450.4500, 550.1700, 500.1700, 550.1700, 550.550, 550.600, 500.600, 550.550, 550.600, 500.1700, 550.1700, 550 ,1700, 500,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 500,1700, 550,1700, 550 ,1700, 500,1700, 550,1700, 500};CHANNEL 2unsigned int chan2[67] ={4500,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,550, 550,600, 500,600, 550,600, 500 ,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,600, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,550, 550,650, 450,1700, 550,600, 500 ,1700, 550,1700, 500,1700, 550,1700, 550,1700, 500};CHANNEL 3unsigned int chan3[67] ={450,4500, 500,1700, 550,1700, 550,1700, 500,600, 550,550 , 550,600, 500,600, 550,550, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 550,550, 550,550, 550,600, 550,550 ,1700, 500 ,600, 550,550, 550,1700, 550,1650, 550,1700, 550,1700, 500,1700, 600};CHANNEL 4unsigned int chan4[67] ={4450,4450, 550,1700, 550,1700, 500 ,1700, 550,600, 500,600, 550,550, 600,550, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600 , 550.600, 500.1700, 550.1700, 550.1700, 500.600, 550.1700, 500.1700, 550.1700, 550.1700, 500}; CHANNEL 5unsigned int chan5[67] ={4500,4500, 500,1700, 550,1700, 550,1700, 550,550, 550,550, 550,550, 600,550, 550,550, 550,1700, 550,1650, 550,1700, 550,550, 550,600 , 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,1700, 500,600, 550,550, 550,600, 550,550, 550,550, 550,1700, 550,1700, 500,600, 550,1700, 500,1700, 550,1700 , 550.1700, 500}; CHANNEL 6unsigned int chan6[67] ={450.4500, 550.1650, 550.1700, 550.1700, 500.600, 550.550, 550.600, 500.600, 500.600, 550.1700, 500.1700, 550.1700, 550.550, 600.550 , 500,600, 550,550, 600,550, 550,550, 550,1700, 500,600, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,600, 550,1700, 500,600, 550,1650, 600,1650, 550,1700 , 550.1650, 600}; CHANNEL 7unsigned int chan7[67] ={4500,4500, 550,1700, 500,1700, 550,1750, 500,550, 550,600, 500,650, 500,550, 550,550, 550,1750, 500,1700, 500,1700, 550,650, 450,650 , 500,550, 550,600, 500,650, 500,550, 550,600, 500,1700, 550,1750, 500,600, 500,550, 550,600, 500,650, 500,1750, 450,1700, 550,600, 500,650, 500,1700, 500,1700, 550,1750 , 500.1700, 500}; CHANNEL 8unsigned int chan8[67] ={4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600 , 500,600, 550,550, 550,600, 500,1700, 550,600, 500,1700, 550,1700, 500,600, 550,550, 550,650, 450,600, 550,550, 550,1700, 550,550, 550,600, 500,1700, 550,1700, 5501700 , 500.1700, 550}; CHANNEL 9unsigned int chan9[67] ={4450,4500, 550,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 500,600, 550,550 , 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 550,550, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,1700, 550,1700, 500,1700 , 550.1700, 550}; VOLUME UPunsigned int volUp[67] ={4500,4500, 550,1700, 500,1750, 500,1700, 550,600, 500,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,650, 450,600 , 550,600, 500,650, 450,650, 500,1700, 500,1750, 500,1750, 500,550, 550,600, 500,650, 500,550, 550,600, 500,650, 500,600, 500,600, 500,1700, 550,1750, 450,1750, 500,1700 , 550.1700, 500}; VOLUME DOWNunsigned int volDown[67] ={4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 550,550, 550,600, 500,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600 , 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,600, 500,1700, 550,600, 500,600, 500,600, 550,550, 550,600, 500,650, 500,1700, 500,650, 500,1700, 500,1750, 500,1700 , 550.1700, 500}; CHANNEL UPunsigned int chanUp[67] ={4500,4450, 550,1700, 550,1650, 550,1700, 550,550, 550,600, 550,550, 550,550, 600,550, 550,1650, 550,1700, 550,1650, 600,550, 550,550 , 550,600, 500,600, 550,550, 550,550, 550,1700, 550,550, 600,550, 550,1650, 550,600, 550,550, 550,550, 550,1700, 550,550, 550,1700, 550,1700, 550,550, 550,1650, 600,1650 , 550.1700, 550}; CHANNEL DOWNunsigned int chanDown[67] ={4500,4450, 600,1650, 550,1700, 550,1650, 550,600, 550,550, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600 , 550,550, 550,550, 550,550, 600,550, 550,550, 550,600, 500,600, 550,1650, 600,550, 550,550, 550,550, 600,1650, 550,1700, 500,1700, 600,1650, 550,550, 600,1650, 550,1700 , 500.1700, 550}; 

Bagian 2:Arduino IoT Cloud

Dari Arduino IoT Cloud utama halaman, kami akan membuat Hal new baru dan berikan nama yang bermakna. Sebut saja TVRemoteController . Kami kemudian akan memilih papan yang akan kami gunakan. Untuk tutorial ini kami menggunakan Arduino Nano 33 IoT, tetapi jika Anda memiliki papan lain yang kompatibel, itu juga akan baik-baik saja, hanya perlu diingat bahwa pinout dan perilaku perpustakaan IR mungkin berubah. Jika pada titik ini Anda tidak dapat melihat papan Anda, Anda mungkin telah melewatkan Memulai prosedur yang kami sebutkan di atas, jika ini masalahnya, kembalilah melalui proses itu.

Setelah selesai, kami akan menambahkan satu Properti ke Barang our kami , itu akan mewakili perangkat TV kita. Di bawah Rumah Pintar kategori, pilih "TV" sebagai Jenis Properti, atur sebagai "Baca &Tulis", dan di bawah "Perbarui" pilih "Bila nilainya berubah".

Ini dia Properti tampilan Hal kita akan terlihat seperti ini:

Bagian 3:Editor Web Arduino

Waktunya telah tiba untuk mengklik tombol "EDIT SKETCH", yang akan membawa kita ke Editor Web, tempat kita dapat menambahkan beberapa kode khusus ke Sketsa yang dibuat secara otomatis oleh IoT Cloud.

Hal pertama yang harus kita sertakan adalah perpustakaan IR Remote, oleh Ken Shirriff.

#include  

Kami kemudian harus menyiapkan satu larik dua dimensi untuk saluran kami, dan 6 larik untuk perintah yang kami butuhkan. Jika Anda ingat, di Bagian 1 kami menangkap beberapa data IR yang sekarang akan kami gunakan untuk mengisi array kami

const unsigned int chan[9][67] ={ {chan1}, {chan2}, {chan3}, {chan4}, {chan5}, {chan6}, {chan7}, {chan8}, {chan9}};const unsigned int volUp[67] ={...}; const unsigned int volDown[67] ={...};const unsigned int chanUp[67] ={...}; const unsigned int chanDown[67] ={...};const unsigned int onoff[67] ={...};const unsigned int mute[67] ={...}; 

Mari kita siapkan perpustakaan IR dan frekuensi yang diperlukan (untuk aplikasi semacam ini akan selalu 38KHz)

IRsend irsend;const int freq =38; 

Kami juga memerlukan fungsi untuk mengirimkan perintah IR dan mengedipkan LED bawaan (pada tahap ini sebagian besar untuk keperluan debugging). Nilai penundaan yang digunakan akan bergantung pada merek dan model televisi Anda, jadi jangan ragu untuk mengubahnya jika ada yang tidak berfungsi seperti yang diharapkan (perintah salah atau tidak ada perintah yang diterima).

void sendIR(const unsigned int buf[]) { digitalWrite(LED_BUILTIN, HIGH); irsend.sendRaw(buf, 67, freq); penundaan (300); digitalWrite(LED_BUILTIN, RENDAH);} 

Langkah terakhir adalah menyelesaikan panggilan balik yang dihasilkan onTvChange() dengan beberapa kode khusus untuk mengirim perintah IR saat properti TV diubah oleh perintah Alexa. Misalnya, jika volume diperbesar, kita harus menekan tombol Naikkan Volume, jika saluran diatur ke 7, kami harus mengirimkan urutan tombol saluran 7, dan seterusnya.

void onTvChange() { Serial.println("=================="); Serial.println("Beralih:"+String(tv.getSwitch())); Serial.println("Volume:"+String(tv.getVolume())); Serial.println("Saluran:"+String(tv.getChannel())); Serial.println("Bungkam:"+String(tv.getMute())); Serial.println("=================="); if (pertama){ prevSwitch =tv.getSwitch(); prevVolume =tv.getVolume(); prevChannel =tv.getChannel(); prevMute =tv.getMute(); pertama =salah; kembali; } // Volume diubah if (tv.getVolume()> prevVolume) { tv.setMute(false); prevMute =salah; for (int k =prevVolume + 1; k<=tv.getVolume(); k++) { sendIR(volUp); Serial.println("Volume yang diminta:"+String(tv.getVolume())+" Set:"+String(k)); } prevVolume =tv.getVolume(); } else if (tv.getVolume() =tv.getVolume(); k--) { sendIR(volDown); Serial.println("Volume diubah:"+String(tv.getVolume())+" Set:"+String(k)); } prevVolume =tv.getVolume(); } // Bisukan diubah if (tv.getMute() !=prevMute &&tv.getMute()) { prevMute =tv.getMute(); sendIR(bisu); Serial.println("Bungkam diubah:"+String(tv.getMute())); } else if (tv.getMute() !=prevMute &&!tv.getMute()) { prevMute =tv.getMute(); sendIR(bisu); Serial.println("Bungkam diubah:"+String(tv.getMute())); } // Saluran diubah if (tv.getChannel() !=prevChannel) { int newChannel =tv.getChannel(); if (newChannel> 0 &&newChannel <10) { sendIR(chan[newChannel-1]); } else if (newChannel> 9) { if (newChannel> prevChannel) { for (int ch =prevChannel; ch  newChannel; ch--) { sendIR(chanDown); Serial.println("Chan diminta:"+String(newChannel)+" Set:"+String(ch)); } } } prevChannel =saluran baru; Serial.println("Saluran diubah:"+String(tv.getChannel())); } // Hidup/Mati berubah if (tv.getSwitch() !=prevSwitch) { prevSwitch =tv.getSwitch(); if (tv.getSwitch()) { sendIR(chan[6]); } else { sendIR(onoff); } Serial.println("Switch berubah:"+String(tv.getSwitch())); } 

Bagian 4:Amazon Alexa

Kami sekarang membutuhkan aplikasi Amazon Alexa yang dapat diunduh dari Apple App Store atau Google Play Store. Setelah terinstal, login dengan akun Anda yang sudah ada atau buat yang baru.

Mari melalui langkah-langkah yang diperlukan untuk menginstal Skill Arduino Alexa dan mengkonfigurasinya untuk mengakses dan mengontrol TV kita. Kami akan mengikuti urutan gambar di bawah ini untuk melihat semua langkah yang diperlukan.

Kami selesai, sekarang saatnya untuk mengontrol suara TV kami menanyakan hal-hal seperti

  • ”Alexa, besarkan volume di TV.”
  • ”Alexa, bisukan TV" atau "Alexa, nyalakan TV".
  • ”Alexa, saluran berikutnya di TV.”

Bersenang-senang bermain dengan Alexa dan IoT Cloud. Jika Anda memiliki pertanyaan dan/atau membangun proyek ini, beri tahu kami di komentar di bawah.

Terima kasih,

Tim Arduino

Kode

Arduino

Skema


Proses manufaktur

  1. Aktifkan Kontrol Alexa ke Kipas Angin Anda
  2. Mesin ULTRASONIC LEVITATION Menggunakan ARDUINO
  3. Kontrol Jarak Jauh Universal menggunakan Arduino, 1Sheeld, dan Android
  4. Voltmeter DIY Menggunakan Arduino dan Smartphone
  5. Pemantau Detak Jantung Menggunakan IoT
  6. Menggunakan IoT untuk Mengontrol Lengan Robot dari Jarak Jauh
  7. IOT - Smart Jar Menggunakan ESP8266, Arduino dan Sensor Ultrasonik
  8. Ketahui Suhu Rumah Anda Dari Mana Saja dengan Arduino Cloud!
  9. Kontrol Arduino Rover menggunakan Firmata dan Pengontrol Xbox One
  10. Kontrol Humidifier Arduino