I made my space heater wifi-enabled with just a Photon and 3 wires

Out of all the cool stuff I’ve made using Photons, this is my personal fave because of how ridiculously simple it turned out to be. I thought I was at least going to need a relay, or some transistors, or some power regulators, but nope, just a Photon, 3 wires, and the space heater’s own IR remote.


I got this space heater on sale for $60, to keep in the work shed in these cold Canadian winters. It came with a little infrared remote, which was neat, but not really useful. But as I already had a Particle Photon sitting out there connected to an outdoor weather sensor, I figured there might be a way to put that little remote to use.

And it turns out, it runs on a little 3.3v coin cell battery - the same as my Photon! And after a bit of multimeter testing, I found that the button connected to the IC that drives the IR LED is normally 3.3v, and the button grounds the IC pin. And when pressed, it draws about 12uA of current - well below the sink threshold of the Photon’s digital pins. So I simply replaced the battery connectors on the remote with the 3.3v and GND from my Photon, and soldered a wire to the IC button pin (by drilling a hole in one half of the button trace), and connected that to digital pin 2 of the photon. Then using code we just write that pin LOW when we want to simulate pressing a button, and HIGH when we want to release the button.

And then, using the Blynk Android app, a button widget set to Virtual pin 4 (since I’m using the other 4 for weather stuff), I simply add this code along with the Blynk library:

{ //BLYNK Button press
  if (param.asInt() == 1)
        digitalWrite(D2, LOW); //Press IR remote button when Blynk button pressed
  if (param.asInt() == 0)
        digitalWrite(D2, HIGH); //Release IR remote button when Blynk button released

That second digitalWrite HIGH might not be the best way to do this - it’s asking the Photon to send 3.3v out into the IR remote, while the IR remote is also sending 3.3v out into the Photon. What I really want to do is just ask the Photon to stop grounding the pin, which I might be able to do by switching pinmode back and forth between output and input. But it seems to work just fine the way it is so I left it.

And then it’s just a matter of duct taping the thing to the side of the space heater. And now I can preheat the room for a minute before I go in. And yes it really is as responsive as the gif makes it look - I would have expected 200-300ms lag, since I’m going from smartphone>router>Blynk servers>router>Photon, but it’s almost instantaneous.


Thanks for sharing!