Spisu treści:

ESP-12 Infra Red Blaster: 7 kroków
ESP-12 Infra Red Blaster: 7 kroków

Wideo: ESP-12 Infra Red Blaster: 7 kroków

Wideo: ESP-12 Infra Red Blaster: 7 kroków
Wideo: DIY CC1101 tool - RF jammer, replay attack, sniffer - cheap & easy tool for radio pen testing 2024, Listopad
Anonim
ESP-12 Infra Red Blaster
ESP-12 Infra Red Blaster

Blaster zdalnego sterowania na podczerwień za pomocą esp8266

Przesyła kody zdalnego sterowania otrzymane z sieci Web obsługując wiele urządzeń wyjściowych.

Wbudowana prosta strona internetowa głównie do testowania.

Normalne użycie to wiadomości POST, które mogą pochodzić ze stron internetowych lub z kontroli głosowej IFTTT / Alexa.

Obsługuje wykrywacz aktywacji Amazon Echo/Dot, który wycisza/wycisza natychmiast po wypowiedzeniu słowa aktywacji.

Polecenia to pojedyncze polecenia lub sekwencje. Sekwencje mogą być przechowywane jako nazwane makra, które mogą być następnie używane jako polecenia lub w innych sekwencjach.

Najnowszą historię i listę makr można uzyskać za pośrednictwem interfejsu internetowego

Obsługuje przesyłanie nowego oprogramowania układowego OTA i wykorzystuje bibliotekę WifiManager do początkowej konfiguracji Wi-Fi

Krok 1: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

Wykorzystuje następujące komponenty

  • Moduł ESP-12F
  • Regulator 3.3V (miniregulator MP2307)
  • Przełączniki MOSFET (AO3400)
  • Nadajnik podczerwieni (3mm)
  • Rezystor świetlny GL2258 (opcjonalny detektor aktywności Alexa)
  • Rezystory
  • Kondensator odsprzęgający (20uF)
  • Gniazdo USB żeńskie (najlepiej przyjazne dla lutowania z tuleją)
  • 3-pinowa listwa zasilająca IC do detektora Alexa
  • Części mechaniczne (można wydrukować w 3D)

Możliwość montażu w pudełku projektowym ESP-12F

  • Podłącz regulator do złącza USB i włóż do pudełka
  • Uzupełnij sterownik IR na małym kawałku płytki vero (3 przewody, wejście bramki +5V, 0V)
  • Podłącz sterownik IR do USB +5V, 0V
  • Włóż 3-pinowe gniazdo IC do pudełka projektowego, jeśli używasz detektora Alexa. Podłącz do +3,3 V, 0 V i przewód do wejścia
  • Uzupełnij ESP-12F z 2.2K z GPIO15 do GND, EN do Vdd, 4K7 GPIO13 do Vdd, wejście Alexa do GPIO13, sterownik IR do GPIO14, 0V i Vdd do 3.3V
  • Uzupełnij detektor Alexa i w razie potrzeby bufor pomocniczy.

Zauważ, że może być łatwiej najpierw zaprogramować ESP-12F, jeśli masz jakiś rodzaj funkcji programowania szeregowego lub tymczasowego narzędzia do łączenia się z portami szeregowymi.

Późniejsze programowanie można wykonać za pomocą wbudowanej aktualizacji OTA.

Krok 2: Oprogramowanie

ir Blaster używa szkicu Arduino dostępnego na github

Należy to dostosować do lokalnych warunków, a następnie skompilować w środowisku Arduino esp8266.

Potrzebne są następujące biblioteki, większość z nich jest standardowa lub można ją dodać. Ostatnie dwa są zawarte w git.

  • ESP8266WiFi
  • ESP8266Serwer WWW
  • FS.h
  • Serwer DNS
  • ESP8266mDNS
  • ESP8266HTTPUpdateServer
  • ArduinoJson
  • BitTx (zawarty w Git)
  • BitMessages (zawarte w Git)

Elementy w szkicu, które mają zostać zmienione, obejmują

  • Kod autoryzacji dostępu do sieci AP_AUTHID
  • Hasło menedżera Wifi WM_PASSWORD
  • firmware OTA hasło update_password
  • Nowe urządzenia IR / kody przycisków (patrz dalej)

Po wykonaniu tej czynności należy najpierw przesłać go przy użyciu konwencjonalnego przesyłania szeregowego.

Ponieważ używany jest SPIFFS, pamięć należy przygotować poprzez zainstalowanie i użycie narzędzia do przesyłania danych szkicu arduino ESP8266. Spowoduje to przesłanie folderu danych jako początkowej zawartości SPIFFS

Gdy urządzenie nie może połączyć się z siecią lokalną (co stanie się za pierwszym razem), menedżer Wifi utworzy punkt dostępu (192.168.4.1). Połącz się z tą siecią z telefonu lub tabletu, a następnie przejdź do 192.168.4.1 Otrzymasz interfejs sieciowy do łączenia się z lokalnym Wi-Fi. Użyją tego kolejne dostępy. Jeśli sieć lokalna zmieni się, przełączy się z powrotem do tego trybu konfiguracji.

Kolejną aktualizację można wykonać poprzez kompilację binarnego eksportu w środowisku Arduino, a następnie dostęp do interfejsu OTA na ip/firmware.

Krok 3: Dodaj kody urządzeń/przycisków

Uwaga: Ta sekcja zmieniła się w stosunku do poprzedniej metody, w której konfiguracja została wcześniej skompilowana do kodu. Teraz używa plików, które są ładowane z systemu plików SPIFFs. Ułatwia to przesyłanie nowych definicji.

Definicje przycisków są zawarte w pliku buttonnames.txt. Jest to globalna lista nazw wszystkich używanych pilotów, ponieważ wiele nazw jest wspólnych. W dostarczonej wersji zawiera szczegółowe informacje na temat pilotów, których używam. Można dodawać nowe wpisy. Jest miejsce na łącznie 160 nazw, ale można je zwiększyć, dostosowując stałe w bitMessages.hi rekompilując. Zdefiniowane tutaj nazwy są nazwami, które mają być używane podczas wysyłania poleceń.

Każde zdalne urządzenie jest zdefiniowane w pliku o nazwie dev_remotename. Składa się z sekcji konfiguracji u góry, a następnie tabeli mapowania z nazw przycisków na kody, które są ciągami szesnastkowym zawierającymi bity do wysłania. Należy zdefiniować tylko wymagane nazwy przycisków.

Sekcja config na początku pliku urządzenia zawiera parametry, które mają być użyte podczas wysyłania kodu. Pierwszy wpis to nazwa urządzenia, która jest używana podczas wysyłania polecenia. Pozostałe parametry są opisane w pliku readme na stronie kodu.

Większość pilotów należy do jednej z 3 kategorii protokołów (nec, rc5 i rc6). nec jest prawdopodobnie najbardziej powszechny i ma prostą strukturę nagłówka i taktowanie bitowe. Istnieje niewielki wariant tego, który różni się tylko taktowaniem impulsów nagłówka. rc5 i rc6 to protokoły zdefiniowane przez firmę Philips, ale używane również przez niektórych innych producentów. Są one nieco bardziej skomplikowane, aw szczególności rc6 ma specjalne wymagania czasowe dla jednego z bitów.

Do przechwytywania kodów dla nowego pilota używam odbiornika IR (TSOP) powszechnie używanego z podłączanymi odbiornikami zdalnymi. To wykonuje podstawowe dekodowanie i daje wyjście na poziomie logicznym. Zwykle są wyposażone w gniazdo 3,5 mm z połączeniami +5V, GND, DATA. Poświęciłem jeden, skróciłem przewód i przepuściłem go przez bufor odwracający 3,3 V, aby zasilić pin GPIO w Raspberry Pi.

Następnie używam narzędzia Pythona rxir.py (w folderze narzędzi git) do przechwytywania kodów. Aby ułatwić przechwytywanie dużej liczby przycisków, narzędzie używa pliku definicji tekstu do zdefiniowania przycisków na pilocie i jest tylko nazwami przycisków w grupie na pilocie. Na przykład można mieć nowego pilota Sony i skonfigurować 3 pliki tekstowe o nazwach sonytv-cursor, sonytv-numbers, sonytv-playcontrols, każdy z odpowiednimi nazwami przycisków. Narzędzie wyświetli monit o podanie urządzenia (sonytv), sekcji (kursor) i jakiego protokołu użyć (nec, nec1, rc5, rc6). Następnie wyświetli monit o kolejne naciśnięcie przycisku i zapisze wyniki do pliku sonytv-ircodes. Sekcje można powtarzać, jeśli jest to wymagane, aby sprawdzić, czy przechwytywanie jest dobre. Bity z pliku.ircodes można edytować w tabelach BitDevices.

Krok 4: Kontrola sieci i makra

Podstawową kontrolką sieciową jest pojedynczy get lub post json, który może zawierać sekwencję.

Dostanie się do /ir ma 6 parametrów

  • auth - zawierający kod autoryzacyjny
  • urządzenie - nazwa zdalnego urządzenia
  • parametr - nazwa przycisku
  • bity - opcjonalna liczba bitów
  • repeat - opcjonalna liczba powtórzeń
  • wait - opóźnienie w milisekundach przed wykonaniem kolejnego polecenia.

Urządzenie może być również „null”, aby uzyskać tylko opóźnienie, „makro”, aby użyć makra, do którego odwołuje się parametr, lub „detect”, aby użyć funkcji wykrywania Alexa (patrz dalej).

Post do /irjson składa się ze struktury json, takiej jak

{

"auth":"1234", "polecenia": [{ "device":"yamahaAV", "parameter":"hdmi4", "wait":"5000", "bits":"0", "repeat":"1"}, { "device":"yamahaAV", "parameter":"wycisz", "wait":"100", "bits":"0", "repeat":"1"}]

}

Sekwencja może mieć dowolną długość, a urządzenia mogą być odnośnikami do makr.

Ta sama struktura może służyć do definiowania makr. Wystarczy wpisać makro:"macroname" na najwyższym poziomie, np. po autoryzacji Rzeczywista zawartość jest przechowywana w pliku nazwanym macroname.txt

Makra można usuwać, definiując je bez „polecenia”.

Inne polecenia sieciowe

  • /recent (wyświetla ostatnią aktywność)
  • /check (pokazuje stan podstawowy)
  • / (ładuje formularz internetowy do ręcznego wysyłania poleceń)
  • /edit (ładuje formularz internetowy, aby wyświetlić listę plików i usunąć/ przesłać pliki)
  • /edit?file=filename (wyświetl zawartość określonego pliku)
  • /reload (ponownie ładuje nazwy przycisków i pliki urządzeń. Użyj po zmianie któregokolwiek z nich)

Krok 5: Sterowanie głosowe Alexa za pomocą IFTTT

Najprostszym sposobem użycia ir Blaster z Alexą jest użycie IFTTT jako bramy.

Najpierw przekieruj port używany do blastera w routerze, aby był dostępny z Internetu. Dobrze jest użyć usługi dns, takiej jak freedns, aby nadać routerom nazwę zewnętrznego adresu IP i ułatwić obsługę, jeśli ten adres IP się zmieni.

Skonfiguruj konto IFTTT i włącz kanał Maker Webhooks i kanał Alexa. Będziesz musiał zalogować się do witryny Amazon, gdy to zrobisz, aby włączyć dostęp IFTT.

Utwórz wyzwalacz IF za pomocą kanału IFTTT Alexa, wybierz akcję w oparciu o frazę i wprowadź żądaną frazę (np. zwiększanie głośności).

Utwórz akcję, wybierając kanał webhooków Kreatora. Wpisz w pole adresu URL coś takiego

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

Ta akcja zostanie wysłana do ir blastera, gdzie spróbuje wykonać makro zwiększanie głośności. W razie potrzeby można tu być konkretnym urządzeniem/przyciskiem, ale uważam, że lepiej jest definiować i używać makr, ponieważ wtedy kolejność akcji można łatwo zmienić, po prostu przedefiniowując makro.

Dla każdego polecenia potrzebny jest oddzielny aplet IFTTT.

Krok 6: Natywna umiejętność głosowa Alexa

Zamiast IFTTT można zbudować niestandardową umiejętność w rozwoju Alexy. Scentralizuje to całe przetwarzanie w jednym miejscu i oznacza, że nie musisz tworzyć oddzielnych akcji dla każdego przycisku.

Musisz zarejestrować się jako programista Amazon Alexa i musisz zarejestrować się w usłudze lambda konsoli Amazon AWS. Będziesz także musiał zajrzeć do samouczków, aby trochę zrozumieć proces.

Po stronie programisty Alexa musisz stworzyć nową niestandardową umiejętność, wprowadzić jej słowo wyzwalające i utworzyć listę słów poleceń, takich jak zwiększanie głośności, przewodnik itp.

Alexa następnie wysyła frazę do programu działającego w usłudze lambda, który interpretuje frazę i wykonuje wywołanie URL do Ir Blaster w celu wykonania jej działania.

Dołączyłem schemat intencji Alexa i funkcję lambda konsoli, której używam w git. Adres URL będzie musiał zostać zmodyfikowany, aby odwoływał się do odpowiedniego adresu IP i miał odpowiednią autoryzację. Aby uprościć, funkcje lambda wywołują makro, które ma pozbawioną spacji wersję wyrażenia małymi literami. Próbuje również usunąć słowo kluczowe wyzwalacza, które czasami może być uwzględnione. Np. blaster VOLUME up wywoła makro o nazwie volumeup, jeśli słowem wyzwalającym było blaster.

Krok 7: Alexa Aktywuj wykrywacz

Chociaż rozpoznawanie głosu Echo / Dot jest dobre, czasami może się mylić, jeśli dźwięk jest odtwarzany z telewizora, chyba że zbliżysz się i zaczniesz głośno mówić.

Aby to poprawić, dodałem do mojego Dot detektor aktywacji. Jak tylko słowo kluczowe (wypowiedziane jest Alexa) pierścień diod LED zapala się. Detektor podaje to do blastera, gdzie użyje makra alexaon do wyciszenia telewizora, podobnie po zakończeniu przetwarzania polecenia światła gasną, a makro alexaoff przywraca dźwięk.

Do włączania i wyłączania tej funkcji można również użyć polecenia „wykryj”. Na przykład używam początkowego makra włączania, aby włączyć wykrywanie i makra wyłączania, aby je wyłączyć. Można to również wykorzystać w makrooperacjach do obsługi prawdziwych poleceń wyciszania i wyłączania wyciszenia, które w innym przypadku byłyby problematyczne.

Detektor fizyczny to rezystor zależny od światła, który obsługuje obwód. Ja montuję swój na Dot za pomocą wspornika wydrukowanego w 3D

Zalecana: