I2C 4 relay shield review

I just got a 4 channel relay shield from, and thought I’d write up a quick review. Just to note, they haven’t given me anything for this, I purchased it on my own.

So basically, it’s a 8-channel I2C GPIO expander, with 4 of the ports connected to relays, and 4 of them broken out for general usage. Costs 34.95, also bought a power supply for 8$, with shipping and insurance of 10.25 and 1.64, the total came out to be 54.84. The board shown on the website is Rev B., while I got a Rev C. board. Main changes seem to be some shrinking of the board around the relay outputs.

The board came nicely packed, and includes a Photon with it. Also a really nice looking ~6ft long usb cable. Simple to unwrap, plugin the Photon, connect the power supply to the board, and claim the photon. Just to try it out, I used the provided library on the Web IDE (NCD4 Relay), and was easily able to switch the relays on and off, and view the status of the GPIO. It doesn’t seem like it’s possible to switch the extra pins from Inputs to Outputs using the NCD4Relay lib, but using the 8Relay lib, then you can, and I was easily able to switch the extra pins on and off using that one.

The board itself seems well designed and manufactured. The header for the Photon uses the Swiss style (round) female header, which is nice. In addition, there is an extra row of pins on either side of the Photon for implementing a shield on top if you wanted. There are three jumpers (included) for switching the address of the GPIO expander chip, if necessary. Some minor nitpicky things about the board:

  • The text for the extra GPIO screw terminals is basically covered up by the screw terminals, which makes it somewhat inconvenient to figure out which is which, especially because there are only two grounds for the four pins (at positions 2 and 5 out of 6)
  • The expander chip that’s used has the capability to provide an interrupt to the MCU, but it’s not connected. I realize that they don’t want to take up more pins on the Photon then necessary, but a solder jumper pad would be nice to have if I did want to take advantage of the interrupt.
  • The text under the relay LEDs is super small, esp. considering that there is a fair bit of room there to print bigger text.

Other than those things though, I really like this board! Considering that it includes a Photon, you’re basically getting a 4-relay board, and 4 extra GPIOs for only 15$. I’d quite recommend it. Here are some pictures of the board


@IOTrav might want to take a look at this.


Thank you very much for your input on the controller. We cannot make a better product without feedback from actual users. I will definitely share this with our team and we will keep your thoughts in mind for future revisions.

The screw terminals installed on the board are not the original ones the board was designed for. However in order to sell these products as cost effective as possible we have to source parts at a lower cost whenever possible and we were able to save allot of money using these terminals rather than the original ones. We will of course move the labeling in the next revision.

As for the marking for the LED labels I certainly agree on that and we will make those bigger in the future on boards that will allow it(space wise).

I will also bring up your recommendation for the interrupt pin. I think a jumper or solder jumper pads would be a great idea!

One last thing I would like to add is we will be discontinuing the free Photon module with the board soon. As early as the end of this week. This was sort of a promotion to get our products into users hands. We are working out the details on pricing now.

Thanks again @mumblepins and thank you @kennethlimcp for pointing this post out to me!


Hey @IOTrav, thanks for the reply! Since I have you here, I’m wondering if you could tell me what’s the connector series you guys are using for the I2C cable. I really like it and would like to use it elsewhere in my project. Thanks!

1 Like

Hi @mumblepins

You can take a look at what DigiKey has available here on that connector:
With that information I think you will be able to find everything you need. If not please let me know.

Thanks again!

1 Like

Hi, would you guys continue to sell Photons or we would have to get it from other shops?

1 Like

Hi @gusgonnet ,

Yes we will continue selling the modules, but they will no longer be included in the cost of the controller.

Thank you,


I connected the Control Everything 8 channel relay to Electron, but I couldn’t figure how to control the relays. I used the provided library on the Web IDE (NCD8 Relay), then changed the spark function to particle function.

Please is there anything else I need to do to be able to control the relays? I’m new to Particle and this is my first particle device, any help will be appreciated.

@Donwhale, are you using the cloudcontrol.ino example that comes with the NCD8 library? How were you expecting to control the relays? Since this example uses Particle.function() you will need to create a function call to use it. From what I can see, there are several commands you can use:

- turnonallrelays
- turnoffallrelays
- setBankStatus: value, where value is between 0 and 255
- relaynum action, where relay number is 1 to 8,  action is "on", "off", "toggle" or "momentary"

You may want to read the Particle.function() docs to understand how to call the function. You can also install and use the Particle CLI or use the Oak Serial Terminal or Digistump Dashboard to more easily send commands. :grinning:

1 Like

@Donwhale I have several of their relay modules, the easiest way to use them is with an app that they have called Mobicle. It can be accessed from there web page and works with cell phones or windows / ios computers.

You can call functions with arguments and setup buttons. They have a Youtube video that shows you how to use the relays with mobicle.

Edit: They may not work with the Tinker app, because of the io expansion chip that they used to save pins.

Thanks @peekay123 and @carbuthn. I actually tried to use mobicle. The ControlRelay function showed in the app but the argument isn’t working. I was able to use the Mobicle app with the Blink LED library, but I couldn’t achieve it with the CloudControl Library. Is there anything I’m doing wrong? Do I need to make any changes to the stock CloudControl Library?

I’ve used the Tinker app with the Tinker Library, I will also try to use it with CloudControl.

I will also read up more about Particle Function.

@Donwhale, how are you writing the command to send in Movicle?

@peekay123, I selected the ControlRelay Function, then in “argument”, I put “turnonallrelays” or “turnoffallrelays” but nothing happens.

@Donwhale I just hooked my 8 relay electron board to a Photon. Loaded NCD8RELAY as a use example.

Went to, selected the Photon that I am using, selected controlRelay under functions, type 1on, hit send and relay 1 turned on.

turnonallrelays works, 2toggle works and 5momentary work.

If you use setBankStatus:255 it is case sensitive.

Maybe try a clean build, make sure that the correct device is selected. It should work, if not leave message on’s forum and they should be able to help.

One other thing, what are you powering the relay board with? It must be powered with 12 vdc, the 12 vdc will power the Photon, but Photon and the usb will not power the relays.

1 Like

Thanks @peekay123 and @carbuthn. I got it working. It was the Electron that wasn’t sitting well into the Relay socket. I really appreciate your time and effort.

1 Like

hi there - I have a question on the Relay Shield.

I’m using a phobot shield currently and can only control (2) 12vdc motors for forward/reverse control but may have a need to control up to 4 such motors.

can the Relay Shield do this kind of function? I plan to control up to 4 such motors for a window blind project and would control each of the 4 separately.

thanks in advance

You could use two L293D drivers to control four motors up to 36 volts.

thanks for the quick reply!

am looking at the L293D chip examples online trying to find something simple to start with for my project. I’m pretty new at this so it’s a lot of trial and errors.

seems like I should have enough pins available on the photon to control the four motors I may need. I’m also using one pin for a hall effect switch to calibrate the top position.

I appreciate all the help!

1 Like