Isi kandungan:

ESP-12 Infra Red Blaster: 7 Langkah
ESP-12 Infra Red Blaster: 7 Langkah

Video: ESP-12 Infra Red Blaster: 7 Langkah

Video: ESP-12 Infra Red Blaster: 7 Langkah
Video: how to make Motion detection light on off PIR sensor project #howto 2024, Julai
Anonim
ESP-12 Infra Red Blaster
ESP-12 Infra Red Blaster

Blaster kawalan jauh Infra Red menggunakan esp8266

Menghantar kod kawalan jauh yang diterima dari Web yang menyokong pelbagai peranti output.

Dibina di laman web sederhana terutamanya untuk ujian.

Penggunaan biasa adalah melalui mesej POST yang boleh datang dari laman web atau dari kawalan suara IFTTT / Alexa.

Menyokong pengesan pengaktifan Amazon Echo / Dot untuk membisukan / menyenyapkan sebaik sahaja kata aktif diucapkan.

Perintah sama ada perintah tunggal atau urutan. Urutan boleh disimpan sebagai makro bernama yang kemudian dapat digunakan sebagai perintah atau dalam urutan lain.

Sejarah dan senarai makro terkini boleh didapati melalui antara muka web

Menyokong muat naik OTA firmware baru dan menggunakan perpustakaan WifiManager untuk penyediaan wifi awal

Langkah 1: Perkakasan

Perkakasan
Perkakasan
Perkakasan
Perkakasan

Menggunakan komponen berikut

  • Modul ESP-12F
  • Pengatur 3.3V (pengatur mini buck MP2307)
  • Suis MOSFET (AO3400)
  • Pemancar Infra Merah (3mm)
  • Perintang Bergantung Cahaya GL2258 (Pengesan aktiviti Alexa pilihan)
  • Perintang
  • Kapasitor pemutusan (20uF)
  • Soket wanita USB (lebih baik solder mesra dengan lengan
  • Jalur soket IC 3 pin untuk pengesan Alexa
  • Bahagian mekanikal (boleh dicetak 3D)

Boleh dipasang ke dalam kotak projek ESP-12F

  • Pasang pengatur ke penyambung USB dan masukkan ke dalam kotak
  • Buat pemacu IR ke sekeping kecil papan vero (3 wayar, + 5V, input pintu 0V)
  • Sambungkan pemacu IR ke USB + 5V, 0V
  • Masukkan soket IC 3 pin ke dalam kotak projek jika menggunakan pengesan Alexa. Sambungkan ke + 3.3V, 0V dan wayar untuk input
  • Buat ESP-12F dengan 2.2K dari GPIO15 hingga GND, EN hingga Vdd, 4K7 GPIO13 hingga Vdd, input Alexa ke GPIO13, pemacu IR ke GPIO14, 0V dan Vdd hingga 3.3V
  • Buat pengesan Alexa dan penyangga sokongan jika diperlukan.

Perhatikan bahawa lebih mudah untuk memprogramkan ESP-12F terlebih dahulu jika anda mempunyai beberapa kemudahan pengaturcaraan bersiri atau kemudahan papan roti sementara seperti ini untuk menyambung ke port bersiri.

Pengaturcaraan seterusnya boleh dilakukan dengan menggunakan kemas kini OTA terbina dalam.

Langkah 2: Perisian

Ir Blaster menggunakan lakaran Arduino yang terdapat di github

Ini perlu disesuaikan agar sesuai dengan keadaan setempat dan kemudian disusun dalam persekitaran Arduino esp8266.

Perpustakaan berikut diperlukan, kebanyakannya standard atau boleh ditambah. Dua yang terakhir dimasukkan ke dalam git.

  • ESP8266WiFi
  • Pelayan ESP8266Web
  • FS.h
  • Pelayan DNSS
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (termasuk dalam Git)
  • BitMessages (termasuk dalam Git)

Item dalam lakaran yang akan diubah termasuk

  • Kod kebenaran untuk akses web AP_AUTHID
  • Kata laluan pengurus Wfi WM_PASSWORD
  • firmware_TAword password OTA firmware
  • Peranti IR / kod butang baru (lihat kemudian)

Sebaik sahaja ini selesai, ia mesti dimuat naik terlebih dahulu menggunakan muat naik bersiri konvensional.

Oleh kerana SPIFFS digunakan maka memori harus disiapkan dengan memasang dan menggunakan alat muat naik Sketch Data arduino ESP8266. Ini akan memuat naik folder data sebagai kandungan SPIFFS awal

Apabila peranti tidak dapat menyambung ke rangkaian tempatan (seperti yang akan berlaku pertama kali) maka pengurus Wifi akan membuat titik akses (192.168.4.1). Sambungkan ke rangkaian ini dari telefon atau tablet kemudian semak ke 192.168.4.1 Anda akan mendapat antara muka web untuk menyambung ke wifi tempatan. Akses seterusnya akan menggunakan ini. Sekiranya rangkaian tempatan berubah maka ia akan beralih kembali ke mod konfigurasi ini.

Kemas kini seterusnya boleh dilakukan dengan menyusun binary eksport di persekitaran Arduino dan kemudian mengakses antara muka OTA di ip / firmware.

Langkah 3: Tambahkan Kod Peranti / Butang

Catatan: Bahagian ini telah berubah dari kaedah sebelumnya di mana konfigurasi yang sebelumnya disusun ke dalam kod. Sekarang menggunakan fail yang dimuat dari sistem pemfailan SPIFFs. Ini menjadikannya lebih mudah untuk memuat naik definisi baru.

Definisi butang dimasukkan dalam fail buttonnames.txt. Ini adalah senarai nama global di semua remote yang digunakan kerana banyak nama cenderung biasa. Seperti yang dibekalkan ini mengandungi perincian untuk remote yang saya gunakan. Penyertaan baru boleh ditambah. Terdapat ruang untuk 160 nama tetapi ini dapat ditingkatkan dengan menyesuaikan pemalar dalam bitMessages.h dan mengumpul semula. Nama-nama yang didefinisikan di sini adalah nama yang akan digunakan semasa menghantar perintah.

Setiap alat jarak jauh ditentukan dalam fail bernama dev_remotename. Ini terdiri daripada bahagian konfigurasi di bahagian atas dan kemudian tabel pemetaan dari nama butang ke kod yang merupakan tali hex yang berisi bit yang akan dikirim. Hanya nama butang yang diperlukan perlu ditentukan.

Bahagian konfigurasi pada awal file perangkat berisi parameter yang akan digunakan ketika mengirim kod. Entri pertama adalah nama devicen yang digunakan semasa menghantar perintah. Parameter lain dijelaskan dalam readme di laman web kod.

Sebilangan besar alat kawalan jauh tergolong dalam salah satu daripada 3 kategori protokol (nec, rc5 dan rc6). nec mungkin yang paling biasa dan mempunyai struktur tajuk sederhana dan masa bit. Terdapat sedikit varian ini yang hanya berbeza pada masa nadi header. rc5 dan rc6 adalah protokol yang ditentukan oleh Philips tetapi juga digunakan oleh beberapa pengeluar lain. Mereka sedikit lebih rumit dan rc6 khususnya mempunyai keperluan waktu khas untuk salah satu bit.

Untuk menangkap kod untuk alat kawalan jauh baru, saya menggunakan penerima IR (TSOP) yang biasa digunakan dengan pemalam penerima jauh. Ini melakukan penyahkodan asas dan memberikan output tahap logik. Mereka biasanya dilengkapi dengan bicu 3.5mm dengan sambungan + 5V, GND, DATA. Saya mengorbankan satu, memendekkan petunjuk dan meletakkannya melalui penyangga 3.3V terbalik untuk memberi makan pin GPIO pada Raspberry Pi.

Saya kemudian menggunakan alat python rxir.py (dalam folder alat git) untuk menangkap kod. Untuk menjadikannya lebih mudah digunakan untuk menangkap sebilangan besar butang maka alat ini menggunakan fail definisi teks untuk menentukan butang pada alat kawalan jauh dan hanya nama-nama butang dalam kumpulan pada alat kawalan jauh. Sebagai contoh, seseorang mungkin mempunyai alat kawalan jauh Sony baru dan satu menyediakan 3 fail teks yang disebut sonytv-kursor, sonytv-number, sonytv-playcontrols masing-masing dengan nama butang yang sesuai. Alat akan meminta peranti (sonytv), bahagian (kursor) dan protokol mana yang akan digunakan (nec, nec1, rc5, rc6). Ini kemudian akan meminta secara berurutan untuk setiap butang tekan dan tuliskan hasilnya ke fail sonytv-ircodes. Bahagian boleh diulang jika diperlukan untuk memeriksa tangkapan yang baik. Bit dari fail.ircodes boleh diedit ke dalam jadual BitDevices.

Langkah 4: Kawalan Web dan Makro

Kawalan web asas adalah satu get tunggal atau json post yang mungkin mengandungi urutan.

Get to / ir mempunyai 6 parameter

  • auth - mengandungi kod kebenaran
  • peranti - nama peranti jauh
  • parameter - nama butang
  • bit - kiraan bit pilihan
  • ulangi - kiraan ulangan pilihan
  • tunggu - kelewatan dalam beberapa saat sebelum arahan seterusnya dapat dilaksanakan.

Peranti ini juga boleh menjadi 'null' untuk mendapatkan kelewatan, 'makro' untuk menggunakan makro yang disebut oleh parameter, atau 'deteksi' untuk menggunakan fitur pengesanan Alexa (lihat nanti).

Pos ke / irjson terdiri daripada struktur json seperti

{

"auth": "1234", "perintah": [{"device": "yamahaAV", "parameter": "hdmi4", "waiting": "5000", "bit": "0", "repeat": "1"}, {"device": "yamahaAV", "parameter": "bisu", "tunggu": "100", "bit": "0", "ulangi": "1"}]

}

Urutannya boleh panjang dan peranti mungkin menjadi rujukan makro.

Struktur yang sama boleh digunakan untuk menentukan makro. Cukup sertakan makro: "nama makron", di tingkat atas mis. selepas author. Kandungan sebenar disimpan dalam fail bernama macroname.txt

Makro boleh dihapuskan dengan mendefinisikannya tanpa "perintah".

Perintah web lain

  • / terkini (menyenaraikan aktiviti terkini)
  • / semak (menunjukkan status asas)
  • / (memuatkan borang web untuk mengirim perintah secara manual)
  • / edit (memuatkan borang web untuk melihat senarai fail dan menghapus / memuat naik fail)
  • / edit? file = nama fail (lihat kandungan fail tertentu)
  • / muat semula (memuatkan semula nama butang dan fail peranti. Gunakan setelah menukar semua ini)

Langkah 5: Kawalan Suara Alexa Menggunakan IFTTT

Cara termudah untuk menggunakan ir Blaster dengan Alexa adalah dengan menggunakan IFTTT sebagai pintu masuk.

Port pertama meneruskan port yang digunakan untuk blaster anda di penghala anda sehingga dapat diakses dari internet. Adalah baik untuk menggunakan perkhidmatan dns seperti freedns untuk memberi nama router luaran anda dan menjadikannya lebih mudah untuk dikendalikan sekiranya ip ini berubah.

Sediakan akaun IFTTT dan aktifkan saluran Maker Webhooks dan saluran Alexa. Anda perlu log masuk ke laman Amazon apabila anda melakukan ini untuk membolehkan akses IFTT.

Buat pemicu IF menggunakan saluran IFTTT Alexa, pilih tindakan berdasarkan frasa dan masukkan frasa yang anda mahukan (Cth. Volume atas).

Buat tindakan dengan memilih saluran webhook Maker. Masuk ke medan URL seperti

myip: port / irjson? plain = {"auth": "1234", "comm…

Tindakan ini akan dikirimkan ke ir blaster di mana ia akan berusaha untuk menjalankan volume makro. Satu boleh menjadi peranti / butang khusus di sini jika mahu tetapi saya merasa lebih baik untuk menentukan dan menggunakan makro kerana urutan tindakan dapat diubah dengan mudah hanya dengan mentakrifkan semula makro.

Applet IFTTT yang berasingan diperlukan untuk setiap arahan.

Langkah 6: Kemahiran Suara Asli Alexa

Daripada IFTTT seseorang dapat membina kemahiran khusus dalam pengembangan Alexa. Ini memusatkan semua pemprosesan di satu tempat dan bermaksud anda tidak perlu membuat tindakan terpisah untuk setiap butang.

Anda perlu mendaftar sebagai pembangun Amazon Alexa dan anda perlu mendaftar dengan perkhidmatan lambda konsol AWS Amazon. Anda juga perlu melihat tutorial untuk memahami prosesnya sedikit.

Di sisi pembangun Alexa, anda perlu membuat kemahiran khusus baru, masukkan kata pemicu dan membuat senarai kata perintah seperti jumlah naik, panduan, dll.

Alexa kemudian menghantar frasa ke program yang berjalan di perkhidmatan lamda yang menafsirkan frasa dan membuat panggilan URL ke Ir blaster untuk bertindak.

Saya telah memasukkan skema niat Alexa dan fungsi lambda konsol yang saya gunakan di git. URL perlu diubah suai untuk merujuk ip yang sesuai dan mempunyai kebenaran yang betul. Untuk mempermudahnya, fungsi lambda memanggil makro yang mempunyai spasi versi frasa huruf kecil yang dilucutkan. Ia juga cuba membuang kata kunci pencetus yang kadang-kadang boleh disertakan. Cth. blaster VOLUME up akan memanggil makro yang disebut volumeup sekiranya kata pemicu itu blaster.

Langkah 7: Alexa Activate Detector

Walaupun pengecaman suara Echo / Dot bagus, kadang-kadang boleh menjadi bingung jika suara dimainkan dari mengatakan TV kecuali anda dekat dan bercakap dengan kuat.

Untuk memperbaikinya, saya menambahkan pengesan pengaktifan ke Dot saya. Sebaik sahaja kata kunci (Alexa dikatakan), cincin LED menyala. Pengesan memasukkannya ke dalam blaster di mana ia akan menggunakan makro alexaon untuk mematikan TV, sama pada akhir memproses perintah lampu padam dan makro alexaoff mengembalikan suaranya.

Perintah 'mengesan' juga boleh digunakan untuk menghidupkan dan mematikan ini. Jadi sebagai contoh saya menggunakan makro turnon awal untuk membolehkan pengesanan dan makro turnoff untuk melumpuhkannya. Ini juga boleh digunakan dalam makro tindakan untuk menyokong coomand bisu dan tidak bersuara yang sebenarnya akan menjadi masalah.

Pengesan fizikal adalah perintang bergantung cahaya yang disokong oleh litar. Saya memasang tambang di Dot dengan pendakap dicetak 3D

Disyorkan: