Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. My Project
  3. Controlling a ( or some) device(s) via IR

Controlling a ( or some) device(s) via IR

Scheduled Pinned Locked Moved My Project
2 Posts 2 Posters 2.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • CorvlC Offline
    CorvlC Offline
    Corvl
    wrote on last edited by Corvl
    #1

    Hello all,

    Having been a happy vera3 and a bridged lite owner I was still missing some options. I am so happy this arduino stuff came available. I recently build an actuator to controll my floorheating.

    The second device I would like to make is a device which at least switch off my mediabox via IR. It would be nice if it is possible to also controll some functions on my television ( Samsung) as well , like switching on.

    For this project I have ordered a Arduino nano and this IR shield http://www.ebay.de/itm/400602576265?_trksid=p2060778.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

    And offcourse a 2,4 Transceiver Module.

    Next week when I am home I will put this together on an Arduino UNO for testing.
    When it is working , it will be nice to also include a temp sensor on it , a humidity sensor, I read somewhere , someone is working on a air-quality sensor.

    But first the IR-bit.

    This is the sketch from the "build" area of this website:


       // Example sketch showing how to control ir devices
      // An IR LED must be connected to Arduino PWM pin 3.
       // An optional ir receiver can be connected to PWM pin 8. 
       // All receied ir signals will be sent to gateway device stored in VAR_1.
       // When binary light on is clicked - sketch will send volume up ir command
       // When binary light off is clicked - sketch will send volume down ir command
       
       #include <MySensor.h>
       #include <SPI.h>
       #include <IRLib.h>
       
       int RECV_PIN = 8;
       
       #define CHILD_1  3  // childId
       
       IRsend irsend;
       IRrecv irrecv(RECV_PIN);
       IRdecode decoder;
       //decode_results results;
       unsigned int Buffer[RAWBUF];
       MySensor gw;
       MyMessage msg(CHILD_1, V_VAR1);
       
       void setup()  
       {  
               irrecv.enableIRIn(); // Start the ir receiver
         decoder.UseExtnBuf(Buffer);
         gw.begin(incomingMessage);
       
         // Send the sketch version information to the gateway and Controller
         gw.sendSketchInfo("IR Sensor", "1.0");
       
         // Register a sensors to gw. Use binary light for test purposes.
         gw.present(CHILD_1, S_LIGHT);
       }
       
       
       void loop() 
       {
         gw.process();
         if (irrecv.GetResults(&decoder)) {
           irrecv.resume(); 
           decoder.decode();
           decoder.DumpResults();
               
           char buffer[10];
           sprintf(buffer, "%08lx", decoder.value);
           // Send ir result to gw
           gw.send(msg.set(buffer));
         }
       }
    
    
    
       void incomingMessage(const MyMessage &message) {
         // We only expect one type of message from controller. But we better check anyway.
         if (message.type==V_LIGHT) {
            int incomingRelayStatus = message.getInt();
            if (incomingRelayStatus == 1) {
             irsend.send(NEC, 0x1EE17887, 32); // Vol up yamaha ysp-900
            } else {
             irsend.send(NEC, 0x1EE1F807, 32); // Vol down yamaha ysp-900
            }
            // Start receiving ir again...
           irrecv.enableIRIn(); 
         }
       }
           
       // Dumps out the decode_results structure.
       // Call this after IRrecv::decode()
       // void * to work around compiler issue
       //void dump(void *v) {
       //  decode_results *results = (decode_results *)v
       /*void dump(decode_results *results) {
         int count = results->rawlen;
         if (results->decode_type == UNKNOWN) {
           Serial.print("Unknown encoding: ");
         } 
         else if (results->decode_type == NEC) {
           Serial.print("Decoded NEC: ");
         } 
         else if (results->decode_type == SONY) {
           Serial.print("Decoded SONY: ");
         } 
         else if (results->decode_type == RC5) {
           Serial.print("Decoded RC5: ");
         } 
         else if (results->decode_type == RC6) {
           Serial.print("Decoded RC6: ");
         }
         else if (results->decode_type == PANASONIC) {	
           Serial.print("Decoded PANASONIC - Address: ");
           Serial.print(results->panasonicAddress,HEX);
    Serial.print(" Value: ");
         }
                else if (results->decode_type == JVC) {
            Serial.print("Decoded JVC: ");
         }
         Serial.print(results->value, HEX);
         Serial.print(" (");
         Serial.print(results->bits, DEC);
         Serial.println(" bits)");
         Serial.print("Raw (");
         Serial.print(count, DEC);
         Serial.print("): ");
       
         for (int i = 0; i < count; i++) {
           if ((i % 2) == 1) {
             Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
           } 
           else {
      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
    }
    Serial.print(" ");
         }
         Serial.println("");
       }
       */
    

    But how does it work??

    If I understand correctly , when I point my ( original) IR-transmitter of the mediabox to the IR reciever ( which is connected to pin 8 , the signal will be stored somewhere on VAR_1 , I expect I can see this somewhere on the GUI of my vera3

    This IR-code has to be copy-paste in the sketch.
    Here:


     if (incomingRelayStatus == 1) {
      irsend.send(NEC, *0x1EE17887, 32*); // standby
     } else {
      irsend.send(NEC, *0x1EE1F807, 32*); // switch on
    

    How am I doing so far??

    Cor

    1 Reply Last reply
    0
    • Dan S.D Offline
      Dan S.D Offline
      Dan S.
      Hero Member
      wrote on last edited by
      #2

      Check out comments here:
      http://forum.mysensors.org/topic/124/ir-remote-control/1

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      20

      Online

      11.7k

      Users

      11.2k

      Topics

      113.1k

      Posts


      Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • MySensors
      • OpenHardware.io
      • Categories
      • Recent
      • Tags
      • Popular