Close
0%
0%

Universal-Internet-Connected-Remote-Control

This IoT project that allows its users to send IR signals from any computer within a network.

Similar projects worth following
IoT project that allows its users to send IR signals from any computer within a network. For that purpose, an ESP8266-enabled development board is connected to an IR sender module, and the finished device hosts a website that allows users to send out codes. The device can be useful, for example, to remote-control several devices from within a network without having to replace the existing electronic equipment with connected items. project made by R.V.S Aditya
for more follow me on instagram and github

prototype
Schematic

document - 382.25 kB - 04/02/2021 at 08:08

Download

document - 22.10 kB - 04/02/2021 at 07:59

Download

  • 1 × 940nm IR LED
  • 1 × ESP8266 based development board
  • 1 × 68 Ohm resistor
  • 1 × NPN transistor
  • 1 × 330 Ohm resistor

View all 10 components

  • Arduino.ino

    HackAtech Industries04/02/2021 at 07:56 0 comments

    //code of Universal Internet Connected Remote Control
    // idea form maker.io
    //made by RVS Aditya From HackAtech Industries
    #include <IRremoteESP8266.h>
    #include <IRsend.h>
    #include <ESP8266WiFi.h>
    
    #define LED_PIN 5
    #define STORAGE_SIZE 5
    
    const char* ssid = "YOUR_NETWORK_NAME";
    const char* pass = "NETWORK_PASSWORD";
    
    WiFiServer server(80);
    IRsend sender(LED_PIN);
    
    long codes[STORAGE_SIZE] = {0x00123,0x02,0xAB,0x0F,0x0};
    bool stored[STORAGE_SIZE] = {true,false,false,false,false};
    int protocols[STORAGE_SIZE] = {0,1,1,0,1};
    
    // Function Prototypes
    int containsValidIndex(String);
    String findParameterValue(String, String);
    
    void setup()
    {
      Serial.begin(9600);
    
      while(!Serial)
    	delay(50);
    
      sender.begin();
    
      Serial.println("");
      Serial.print("Connecting to ");
      Serial.print(ssid);
    
      WiFi.begin(ssid, pass);
    
      while(WiFi.status() != WL_CONNECTED)
      {
    	Serial.print(".");
    	delay(500);
      }
    
      Serial.println("Done!");
    
      Serial.println("Starting server...");
      server.begin();
     
      Serial.print("Server started with address ");
      Serial.print("http://");
      Serial.print(WiFi.localIP());
      Serial.println("/");
    }
    
    void loop()
    {
      // Check for incoming connections
      WiFiClient c = server.available();
    
      if(c)
      {
    	while(!c.available())
      	delay(10);
    
    	// Read the first line of the HTTP request
    	// It contains something similar to the following line:
    	// METHOD /requested_url HTTP_VERSION
    	// for example:
    	// GET /send?value=0x0085&protocol=NEC HTTP/1.1
    	// However, for the sake of simplicity this device only accepts
    	// GET requests as they can be sent with any web browser.
    	// Updating values this way is not the 'correct' way according to
    	// the HTTP standard but it makes using the device easier.
        
    	String request = c.readStringUntil('\r');
    	c.flush();
     
    	int error = 0;
    
    	int value = request.indexOf("value=");
    	int protocol = request.indexOf("protocol=");
    	int index = request.indexOf("index=");
    	int snd = request.indexOf("/send");
    	int str = request.indexOf("/store");
    	int del = request.indexOf("/delete");
        
    	Serial.println(request);
    
    	// The following few if/else-statements parse the incoming request
    	// and then execute the action that the user requested.
    
    	// The user requested the send page and did not include /store or /delete in their request
    	if (snd != -1 && str == -1 && del == -1)
    	{
      	// The user requested the send page and included a value for the index
      	if(index != -1)
      	{
        	// Check if the supplied index is valid (i.e. at least zero and less than STORAGE_SIZE)
        	// And check if the values array contains an entry at the requested position
    
        	// First, get the value of the parameter as a string
        	String index_string = findParameterValue(request, "index");
       	 
        	// Next, convert it to an integer and check whether the value is valid
        	int i = containsValidIndex(index_string);
    
        	if(i > -1 && stored[i])
        	{
          	// The parameter was valid. Repeat the stored value!
          	// Make sure to verify the bit length for your remotes!
          	// I used 32 and 14 in this program, but yours might vary
          	if(protocols[i] == 0)
            	sender.sendNEC(codes[i], 32);
          	else
            	sender.sendRC5(codes[i], 14);
         	 
          	Serial.print("Repeat the value stored at position ");
          	Serial.println(i);
        	}
      	}
      	// The user supplied the wrong parameters for this request.
      	else
      	{
        	error = 1;
        	Serial.print("Unknown request: ");
        	Serial.println(request);
      	}
    	}
    	// The user requested the /store page and the request didn't include
    	// the /send or /delete page
    	else if(str != -1 && snd == -1 && del == -1)
    	{
      	// The user supplied the wrong parameters for this request.
      	// (Either of the three parameters is missing)
      	if(index == -1 || protocol == -1 || value == -1)
      	{
        	error = 1;
        	Serial.print("BAD REQUEST. Missing field: ");
        	Serial.println(request);
      	}
      	else
      	{
        	String p = findParameterValue(request, "protocol");
        	String v = findParameterValue(request, "value");
        	int i = containsValidIndex(findParameterValue(request, "index"));
    
        	// Check if the supplied index is valid
        	if(i > -1)
    ...
    Read more »

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates