İçindekiler:

ESP-12 Kızılötesi Püskürtücü: 7 Adım
ESP-12 Kızılötesi Püskürtücü: 7 Adım

Video: ESP-12 Kızılötesi Püskürtücü: 7 Adım

Video: ESP-12 Kızılötesi Püskürtücü: 7 Adım
Video: Bildiri Oturumu-1 2024, Kasım
Anonim
ESP-12 Kızılötesi Püskürtücü
ESP-12 Kızılötesi Püskürtücü

esp8266 kullanan Kızılötesi uzaktan kumandalı blaster

Birden çok çıkış cihazını destekleyen Web'den alınan uzaktan kumanda kodlarını iletir.

Temelde test için basit bir web sayfası oluşturulmuştur.

Normal kullanım, web sayfalarından veya IFTTT / Alexa ses kontrolünden gelebilecek POST mesajları aracılığıyladır.

Etkinleştirme sözcüğü söylendiği anda sesi kapatmak/sessizleştirmek için bir Amazon Yankı/Nokta etkinleştirme dedektörünü destekler.

Komutlar ya tekli komutlar ya da dizilerdir. Diziler, daha sonra komutlar olarak veya diğer dizilerde kullanılabilen adlandırılmış makrolar olarak saklanabilir.

Yakın tarih ve makroların listesi web arayüzü üzerinden elde edilebilir

Yeni bellenimin OTA'ya yüklenmesini destekler ve ilk wifi kurulumu için WifiManager kitaplığını kullanır

Adım 1: Donanım

Donanım
Donanım
Donanım
Donanım

Aşağıdaki bileşenleri kullanır

  • ESP-12F modülü
  • 3.3V regülatör (MP2307 mini buck regülatör)
  • MOSFET anahtarları (AO3400)
  • Kızılötesi yayıcı (3mm)
  • Işık Bağımlı Direnç GL2258 (Opsiyonel Alexa aktivite dedektörü)
  • dirençler
  • Dekuplaj kapasitörü (20uF)
  • USB dişi soket (tercihen kılıflı lehim dostu
  • Alexa dedektörü için 3 pinli IC soket şeridi
  • Mekanik parçalar (3D yazdırılabilir)

ESP-12F proje kutusuna monte edilebilir

  • Regülatörü USB konektörüne takın ve kutuya yerleştirin
  • Küçük bir vero kartı parçasına IR sürücüsü oluşturun (3 telli, +5V, 0V geçit girişi)
  • IR sürücüsünü USB +5V, 0V'a bağlayın
  • Alexa dedektörü kullanıyorsanız, 3 pinli IC soketini proje kutusuna takın. Giriş için +3.3V, 0V ve kabloya bağlayın
  • GPIO15'ten GND'ye, EN'den Vdd'ye, 4K7 GPIO13'ten Vdd'ye, GPIO13'e Alexa girişi, GPIO14'e IR sürücüsü, 0V ve Vdd'den 3.3V'a 2.2K ile ESP-12F'yi oluşturun
  • Alexa dedektörü oluşturun ve gerekirse arabelleği destekleyin.

Seri bağlantı noktalarına bağlanmak için bir tür seri programlama olanağınız veya bunun gibi geçici devre tahtası oluşturma olanağınız varsa, önce ESP-12F'yi programlamanın daha kolay olabileceğini unutmayın.

Daha sonraki programlama, yerleşik OTA güncellemesi kullanılarak yapılabilir.

2. Adım: Yazılım

Blaster, github'da bulunan bir Arduino taslağını kullanır.

Bunun yerel koşullara uyacak şekilde ayarlanması ve ardından bir esp8266 Arduino ortamında derlenmesi gerekir.

Aşağıdaki kitaplıklar gereklidir, çoğu standarttır veya eklenebilir. Son ikisi git'e dahil edilmiştir.

  • ESP8266WiFi
  • ESP8266WebSunucusu
  • FS.h
  • Dns sunucusu
  • ESP8266mDNS
  • ESP8266HTTPGüncellemeSunucusu
  • ArduinoJson
  • BitTx (Git'e dahildir)
  • BitMessages (Git'e dahildir)

Değiştirilecek çizimdeki öğeler şunları içerir:

  • Web erişimi için yetkilendirme kodu AP_AUTHID
  • Wfi yönetici şifresi WM_PASSWORD
  • üretici yazılımı OTA parolası update_password
  • Yeni IR cihazları / düğme kodları (ileriye bakın)

Bu yapıldıktan sonra, önce geleneksel seri yükleme kullanılarak yüklenmelidir.

SPIFFS kullanıldığından, arduino ESP8266 Sketch Data yükleme aracı yüklenip kullanılarak bellek hazırlanmalıdır. Bu, veri klasörünü ilk SPIFFS içeriği olarak yükleyecektir.

Cihaz yerel ağa bağlanamadığında (ilk seferde olacağı gibi), Wifi yöneticisi bir erişim noktası oluşturacaktır (192.168.4.1). Bir telefon veya tabletten bu ağa bağlanın ve ardından 192.168.4.1'e gidin. Yerel wifi'ye bağlanmak için bir web arayüzü alacaksınız. Sonraki erişimler bunu kullanacaktır. Yerel ağ değişirse, bu yapılandırma moduna geri dönecektir.

Sonraki güncelleme, Arduino ortamında bir dışa aktarma ikili dosyası derlenerek ve ardından ip/firmware'deki OTA arayüzüne erişilerek yapılabilir.

3. Adım: Cihaz / Düğme Kodları Ekle

Not: Bu bölüm, konfigürasyonun önceden koda derlendiği önceki yönteme göre değişmiştir. Artık SPIFF dosyalama sisteminden yüklenen dosyaları kullanıyor. Bu, yeni tanımların yüklenmesini çok daha kolay hale getirir.

Düğme tanımları buttonnames.txt dosyasına dahil edilmiştir. Pek çok isim ortak olma eğiliminde olduğundan, kullanılan tüm uzaktan kumandalardaki isimlerin global bir listesidir. Sağlandığı gibi bu, kullandığım uzaktan kumandaların ayrıntılarını içerir. Yeni girişler eklenebilir. Toplam 160 ad için yer vardır, ancak bu, bitMessages.h'deki sabitleri ayarlayarak ve yeniden derleyerek artırılabilir. Burada tanımlanan isimler komut gönderirken kullanılacak isimlerdir.

Her uzak aygıt, dev_remotename adlı bir dosyada tanımlanır. En üstte bir yapılandırma bölümünden ve ardından buton adlarından gönderilecek bitleri içeren onaltılık diziler olan kodlara kadar bir eşleme tablosundan oluşur. Yalnızca gerekli düğme adlarının tanımlanması gerekir.

Aygıt dosyasının başındaki yapılandırma bölümü, kod gönderirken kullanılacak parametreleri içerir. İlk giriş, bir komut gönderilirken kullanılan cihaz adıdır. Diğer parametreler kod sitesindeki benioku bölümünde açıklanmıştır.

Çoğu uzaktan kumanda, 3 protokol kategorisinden birine aittir (nec, rc5 ve rc6). nec muhtemelen en yaygın olanıdır ve basit bir başlık yapısına ve bit zamanlamasına sahiptir. Bunun sadece başlık darbesi zamanlamasında farklılık gösteren hafif bir çeşidi vardır. rc5 ve rc6, Philips tarafından tanımlanan ancak diğer bazı üreticiler tarafından da kullanılan protokollerdir. Biraz daha karmaşıktırlar ve özellikle rc6'nın bitlerden biri için özel bir zamanlama gereksinimi vardır.

Yeni bir uzaktan kumandanın kodlarını yakalamak için, takılabilir uzak alıcılarla yaygın olarak kullanılan bir IR alıcısı (TSOP) kullanıyorum. Bu, temel kod çözme işlemini yapar ve bir mantık düzeyi çıktısı verir. Normalde +5V, GND, DATA bağlantılarına sahip 3,5 mm jak ile gelirler. Birini feda ettim, ucu kısalttım ve bir Raspberry Pi'de bir GPIO pinini beslemek için onu ters çeviren bir 3.3V tampondan geçirdim.

Daha sonra kodları yakalamak için bir python aracı rxir.py (git araçları klasöründe) kullanıyorum. Çok sayıda düğmeyi yakalamayı kolaylaştırmak için araç, uzaktan kumandadaki düğmeleri tanımlamak için bir metin tanım dosyası kullanır ve yalnızca uzaktan kumandadaki bir gruptaki düğmelerin adlarıdır. Örneğin, biri yeni bir Sony uzaktan kumandaya sahip olabilir ve biri sonytv-cursor, sonytv-numbers, sonytv-playcontrols adlı her biri ilgili düğme adlarını içeren 3 metin dosyası kurar. Araç, cihaz (sonytv), bölüm (imleç) ve hangi protokolün kullanılacağı (nec, nec1, rc5, rc6). Ardından, her düğmeye basıldığında sırayla soracak ve sonuçları bir sonytv-ircodes dosyasına yazacaktır. Yakalamaların iyi olup olmadığını kontrol etmek için gerekirse bölümler tekrar edilebilir..ircodes dosyasındaki bitler, BitDevices tablolarında düzenlenebilir.

4. Adım: Web Kontrolü ve Makrolar

Temel web kontrolü, tek bir alma veya bir dizi içerebilen bir json gönderisidir.

get to /ir 6 parametreye sahiptir

  • auth - yetkilendirme kodunu içerir
  • cihaz - uzak cihazın adı
  • parametre - düğmenin adı
  • bitler - isteğe bağlı bir bit sayısı
  • tekrar - isteğe bağlı bir tekrar sayısı
  • bekle - bir sonraki komutun yürütülebilmesi için msaniye cinsinden bir gecikme.

Cihaz ayrıca yalnızca bir gecikme elde etmek için 'boş', parametre tarafından atıfta bulunulan makroyu kullanmak için 'makro' veya Alexa algılama özelliğini kullanmak için 'algılama' olabilir (ileriye bakın).

/irjson'a gönderilen gönderi, aşağıdaki gibi bir json yapısından oluşur:

{

"yetkilendirme":"1234", "komutlar": [{ "cihaz":"yamahaAV", "parametre":"hdmi4", "bekle":"5000", "bitler":"0", "tekrar":"1"}, { "cihaz":"yamahaAV", "parametre":"sessiz", "bekle":"100", "bitler":"0", "tekrar":"1"}]

}

Sıra herhangi bir uzunlukta olabilir ve cihazlar makro referansları olabilir.

Makroları tanımlamak için aynı yapı kullanılabilir. En üst seviyeye macro:"makroname" eklemeniz yeterlidir; yetkilendirmeden sonra. Gerçek içerikler macroname.txt adlı bir dosyada saklanır.

Makrolar "komut" olmadan tanımlanarak silinebilir.

Diğer web komutları

  • /recent (son etkinliği listeler)
  • /check (temel durumu gösterir)
  • / (komutları manuel olarak göndermek için bir web formu yükler)
  • /edit (dosya listesini görüntülemek ve dosyaları silmek/yüklemek için bir web formu yükler)
  • /edit?file=filename (belirli bir dosyanın içeriğini görüntüleyin)
  • /reload (düğme adlarını ve cihaz dosyalarını yeniden yükler. Bunlardan herhangi birini değiştirdikten sonra kullanın)

Adım 5: IFTTT Kullanarak Alexa Ses Kontrolü

Blaster'ı Alexa ile kullanmanın en basit yolu, ağ geçidi olarak IFTTT kullanmaktır.

İlk bağlantı noktası, yönlendiricinizdeki blasteriniz için kullanılan bağlantı noktasını iletin, böylece internetten erişilebilir. Yönlendiricilerinize harici ip adı vermek ve bu ip değişirse işlemeyi kolaylaştırmak için freedns gibi bir dns hizmeti kullanmak iyi olabilir.

Bir IFTTT hesabı oluşturun ve Maker Webhooks kanalını ve Alexa kanalını etkinleştirin. IFTT erişimini etkinleştirmek için bunu yaptığınızda Amazon sitesinde oturum açmanız gerekecektir.

IFTTT Alexa kanalını kullanarak bir IF tetikleyicisi oluşturun, bir ifadeye dayalı eylemi seçin ve istediğiniz ifadeyi girin (Örn. ses açma).

Maker webhooks kanalını seçerek eylemi oluşturun. URL alanına şunun gibi bir şey girin

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

Bu eylem, makro ses yükseltmeyi yürütmeye çalışacağı ir blaster'a gönderilecek. İstenirse burada belirli cihaz/düğmeler olabilir, ancak makroları tanımlamayı ve kullanmayı daha iyi buluyorum çünkü o zaman eylem dizisi sadece makroyu yeniden tanımlayarak kolayca değiştirilebilir.

Her komut için ayrı bir IFTTT uygulaması gereklidir.

Adım 6: Yerli Alexa Ses Becerisi

IFTTT yerine Alexa geliştirme içinde özel bir beceri oluşturulabilir. Bu, tüm işlemleri tek bir yerde merkezileştirir ve her düğme için ayrı eylemler oluşturmanız gerekmediği anlamına gelir.

Amazon Alexa geliştiricisi olarak kaydolmanız ve Amazon AWS konsol lambda hizmetine kaydolmanız gerekir. Süreci biraz anlamak için öğreticilere de bakmanız gerekecek.

Alexa geliştirici tarafında, yeni bir özel beceri oluşturmanız, tetikleyici kelimesini girmeniz ve ses açma, kılavuz vb. gibi bir komut kelime listesi oluşturmanız gerekir.

Alexa daha sonra ifadeyi lamda hizmetinde çalışan ve ifadeyi yorumlayan ve harekete geçirmek için Ir blaster'a bir URL çağrısı yapan bir programa gönderir.

Git'te kullandığım Alexa amaç şemasını ve konsol lambda işlevini ekledim. URL'nin uygun ip'ye referans verecek ve doğru yetkiye sahip olacak şekilde değiştirilmesi gerekecektir. Basit tutmak için lambda işlevleri, ifadenin boşluktan arındırılmış küçük harf versiyonuna sahip bir makroyu çağırır. Ayrıca bazen dahil edilebilecek olan tetikleyici anahtar sözcüğü kaldırmaya çalışır. Örneğin. blaster VOLUME up, tetikleyici sözcük blaster ise, ses artırma adlı bir makroyu çağırır.

Adım 7: Alexa Dedektörü Etkinleştir

Echo / Dot ses tanıma özelliği iyi olsa da, ses bir TV'den çalınıyorsa, yakınlaşmadığınız ve yüksek sesle konuşmadığınız sürece bazen kafanız karışabilir.

Bunu geliştirmek için Dot'uma bir etkinleştirme dedektörü ekledim. Anahtar kelime (Alexa söylenir) söylenmez LED'lerin halkası yanar. Dedektör bunu, TV'nin sesini kapatmak için alexaon makrosunu kullanacağı blaster'a besler, benzer şekilde bir komutu işlemenin sonunda ışıklar söner ve alexaoff makrosu sesi geri yükler.

Bunu açmak ve kapatmak için 'tespit' komutu da kullanılabilir. Örneğin, algılamayı etkinleştirmek için ilk dönüş makrosunu ve devre dışı bırakmak için dönüş makrosunu kullanıyorum. Bu, aksi takdirde sorunlu olabilecek gerçek bir sessize alma ve sesi açma komutunu desteklemek için eylem makroları içinde de kullanılabilir.

Fiziksel dedektör, devrenin desteklediği ışığa bağlı bir dirençtir. Madeni 3D baskılı bir braket ile Dot'a monte ediyorum

Önerilen: