Software apps and online services
Hand tools and fabrication machines
It seems like the major phone manufacturers are moving away from built in IR blasters so I'm looking for a way to future-proof my "dumb" devices that don't currently integrate with my IoT infrastructure. I have a mesh-networked smart home, but I need to find a physical remote to turn on my TV? There has to be a better way.
I recently built an IR blaster that controls stand alone air conditioners in my house and another previous project was a connected HVAC vent with an android connected webapp. Essentially, all I need to do is combine these two things into a web-connected IR blaster with a webapp frontend so I can press buttons on my phone and have IR signals sent to my media centers. These can be deployed in every room and controlled anywhere from a single interface, so the applications for this are extreamly broad.Rapid Prototyping
I grabbed some unused hardware and wired up everything I'd need to get connected to my WiFi, accept HTTP connections and send IR signals.
This worked just fine in that I could request a specific URL on the IP assigned to the ESP8266 and have the Arduino output a "Power" signal to the IR LED. I just needed to find out where to host the webapp, have that send the URLs to the IR blaster and then have those requests parsed into specific IR codes. This was very tedious to do using AT commands with the ESP8266, and there was something causing a 1-2 second delay between sending the request and the LED blinking.
I went ahead with the NodeMCU ESP8266 dev board because it has onboard power regulation, USB to serial interface, and plenty of I/O pins in this small package (it's also breadboard friendly). It turns out there is already an ESP8266 WebServer library that accepts GET requests that I was able to adapt for sending IR codes and the regular IRremote library works out of the box.
The ESP8266 on the NodeMCU isn't powerful enough to host the webapp itself, so I'll run it on an underutilized C.H.I.P. $9 computer that is already running to my home network. Another limitation is that the ESP8266 is that it's a 3.3v board, so the IR LEDs driven directly from an I/O pin were very dim and had to be right next to the appliance it was sending a signal to. I instead used the I/O pin to drive an npn transistor to switch the 5v supply voltage on/off.REST...ish
On the Arduino side, I trimmed down the webserver to just accept a GET request, parse the URL, send a 200 OK, and then disconnect. Based off the URL, the Arduino would send the IR code that was mapped to the button pressed.Universal Remonster
Everything is working flawlessly with zero delay. I discovered that the IR LEDs I'm using have a very narrow angle, so I have to be careful that they are pointed correctly. Some industrial velcro lets me mount it under a shelf, out of sight, and makes sure it stays pointed at the IR receivers on the other end. I added some thick gauge wire to the LED leads so they can be fine tuned.
Having resistors for the IR LEDs caused them to be almost unusable, so the transistor is powering them with an unregulated 5v. This allows me to bounce IR off walls and mount the blaster across the room, but will definitely have an effect on longevity. I'm hoping that since they are used very infrequently and the IR signals are super short pulses (lower duty cycle than most dim PWM signals) I won't need to replace the LEDs for some time. I made sure to order some wide angle and higher output IR LEDs for version 2, so when these finally die, I'll replace them along with an inline resistor.3 Month Update and Future Features
I use this every day and it has worked flawlessly. I've even added a second device in our family room to control our window AC unit and another TV.
Plans for the future:
- Migrate the web UI to a cloud service
- Integrate with Amazon Echo for voice commands (Done)
- Next hardware iteration will also have a DHT22 temperature sensor and I'm researching ways to transmit RF for my ceiling fans
- Add an IR receiver for a learning feature so that you can "teach" the IR blaster commands from existing remotes
- Integrate with my home automation/security to turn off appliances when not in use
This small connected IR blaster is slowly filling the gap between my smart home and legacy appliances.