/Remote

ESP8266 - Universalremote

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Remote

ESP8266 - Universal Remote

Sorry but complete documentation is only in Italian.

Short english documentation

Universal Remote is an ESP Application written in c++ using ArduinoIDE. The purpose is to simulate an IR (infrared) and RF remote. To use this application you need:

  • ESP 12E (best a DevKit)
  • RF315/433Mhz module, trasmitter and receiver
  • YS-IRTM a Serial IRDA receiver and trasmitter

Using the web gui you can configure Named Remote device (IRDA or RF) and for each of them any number of Key Codes. A button on web gui can be used to detect from original remote the key code. The Remotes and Keys configuration are saved on the ESP Flash.

To send specific key code you need to call:

  • http://<esp-12e-IP\>/sendKey/\<remoteDeviceName\>/\<keyName\>

To configure new Remotes and relative keys you have to access to the exposed web app @ http://<esp-12e-IP>

The WebApp needs the the jvavascript file devicesFunc.js to be present on the ESP Flash. To transfer this file in ESP Flash you can use the Arduino Plugin Sketch Data Uploader

Prima versione stabile 0.5


Descrizione

Implementazione di un telecomando universale usando il modulo ESP-12E collegato a un trasmettitore/ricevitore RF 315/433 MHz e Infrarossi Seriale tipo YS-IRTM. Ciò dovrebbe consentire di comandare un gran numero di dispositivi, sia che usino RF 315Mhz e 433Mhz, sia infrarossi (IR). In caso di dispositivi IR non devono esserci ostacoli tra il trasmettitore IR e il dispositivo da comandare.

La pagina web di configurazione consente di definire diversi telecomandi (devices) di tipo IR o RF433. Per ciascun telecomando sarà possibile definire i tasti (keys) inserendo manualmente i relativi codici o usando la rilevazione automatica: puntare il telecomando originario verso il ricevitore sull'ESP-12E e premere il tasto da rilevare.

La configurazione viene salvata in modo permanentemente nella memoria flash dell'ESP-12E.

Configurati telecomandi e i relativi tasti il dispositivo è in grado di inviare il codice corretto al dispositivo semplicemente usando l'url:

http://<ip_esp-12e>/sendKey/<nomedispositivo>/<nometasto>

Implementazione

Il programma è stato svilupato usando l'IDE Arduino configurato per ESP-12E. Vengono usate le seguenti librerie:

  • rc-switch (2.6.2)
  • ESP8266WiFi (1.0)
  • ESP8266WebServer (1.0)
  • ESP8266mDNS
  • DNSServer (1.1.0)

Viene inoltre usata la libreria FS (SPIFFS) per gestire la memoria Flash del dispositivo come se fosse una memoria di massa. Quest'ultima viene usata sia sia per salvare le configurazioni dei telecomandi sia per memorizzare un file contenente alcune funzioni javascript necessarie al funzionamento delle pagine di configurazione.

Tutte le precedenti librerie vanno installare sull'IDE di Arduino prima di compilare il progetto.

Modulo RF315/433Mhz

Allo scopo sono stati usati i moduli MX-05V e MX-FS-03V, rispettivamente un ricevitore e un trasmettitore RF314/433Mth facilmente reperibili su Amazon o su Ebay. Il ricevitore è stato collegato al PIN D2 dell'ESP-12E mentre il trasmettitore è stato collegato al PIN D1. Vengono pilotati tramite la libreria rc-switch che dovrebbe essere in grado di gestire trasmettitori/ricevitori RF che operano a frequeze di 315 e 433MHz. La libreria supporta i seguenti chipset:

  • SC5262 / SC5272
  • HX2262 / HX2272
  • PT2262 / PT2272
  • EV1527 / RT1527 / FP1527 / HS1527
  • Intertechno outlets
Modulo YS-IRTM

Si tratta di una schedina di fabbricazione cinese che include sia un ricevitore che un trasmettitore IR (infrarossi). Questa andrebbe collegata a un'interfaccia UART (seriale). Tuttavia per evitare di impegnare i PIN seriali dell'ESP-12E è stata usata la libreria SoftwareSerial che permette di usare due GPIO per inviare o ricevere segnali di tipo seriale. Nello specifico il PIN D5 è stato usato come RXD e va collegato al PIN IR-TXD del modulo, il PIN D6 è stato invece usato come trasmettitore TXD e va collegato al PIN IR-RXD del modulo. Il circuito di ricezione IR del modulo è sempre attivo e decodifica ogni segnale Infrarosso autotomaticamente inviando sulla seriale il relativo codice come coppie di numeri esadecimali.

JavaScript

Le pagine Web servite dall'ESP-12E fanno largo uso di alcune funzioni Javascript memorizzate in un file scritto nella memoria Flash dell'ESP. Nello specifico le pagine di configurazione (setup) usano i framework per Bootsrtap e JQuery, serviti come riferimenti esterni permanenti. È necessario pertanto che il dispositvo dal quale si sta configurando l'ESP-12E sia connesso a Internet.

Tutte le funzioni javascript scritte ad hoc sono state raccolte nel file devicesFunc.js presente nella directory data del progetto. Tale file va trasferito nella memoria flash dell'ESP-12E, per tale operazione è possibile usare il plugin Sketch Data Uploader dell'ambiente Arduino.

Funzionamento

Per il corretto funzionamento della pagina di configurazione dei telecomandi è necessario che l'ESP-12E venga prima connesso alla rete Wi-Fi casalinga come client Wi-Fi.

Modalità provvisoria

Al primo avvio, oppure quando l'ESP-12E non riesce a connettersi alla rete Wi-Fi configurata, entra in modalità di configurazione provvisoria. In questa modalità l'ESP-12E funziona come punto di accesso senza fili (access point) rendendo disponibile una rete Wi-Fi isolata il cui SSID è esp8266_remote e password administrator. In questa modalità è attivo anche un servizio DHCP per assegnare indirizzi IP, e un DNS server minimale che risolve qualsiasi nome web nell'indirizzo IP dell'ESP-12E.

In modalitò provvisoria i dispositivi Wi-Fi (PC, tablet, cellulare) connessi alla rete esp8266_remote, riceveranno una configurazione IP, potranno accedere alla pagina di configurazione aprendo una pagina web qualunque in un browser. La pagina web di configurazione minimale dell'ESP-12E consente di impostare l'SSID e la password della rete Wi-Fi principale a cui connettere l'ESP-12E per il funzionamento normale.

Per facilitare l'individuazione della rete Wi-Fi, l'ESP-12E esegue una scansione visualizzando in un controllo web di tipo select/option tutti gli SSID rilevati. Al momento non è possibile inserire manualmente un SSID, pertanto non sono supportate reti Wi-Fi che non espongono il loro SSID (cioè nascoste). Non è inoltre supportata la configurazione manuale dell'indirizzo IP e degli altri parametri Internet, pertanto è necessario che la rete Wi-Fi a cui l'ESP-12E si dovrà connettere disponga di un server DHCP che rilasci tali parametri automaticamente.

Funzionamento normale

Solo in modalità client Wi-Fi l'ESP-12E servirà le pagine di configurazione complete. Tuttavia l'invio dei tasti precedentemente configurati rimane disponibile attravarso la pagina sendKey.