This is a common pitfall with the Explorer HAT outputs, and one we really need to write a learning portal article about! ( poke @sandyjmacdonald )
Explorer HAT uses a ULN2003A Darlington Array to drive the Outputs. It sounds fancy, but it’s nothing but a set of transistor pairs- one transistor connected to another- that when the first is turned on, switches the second and finally your load.
These pairs are based around NPN transistors, so- in very basic terms- they take a high input signal, and connect their output pin to ground.
Because of this, the outputs don’t actually supply any current, they just sink it- give it some place to go. Imagine them like a switch positioned between your load and ground. This means that, unassisted, they could never switch on a relay, because they’re just pulling its input pin to ground.
The same applies to turning on LEDs, since they don’t supply current, it’s like connecting a LED to ground on both sides.
Page 12 of the datasheet ( http://www.ti.com/lit/ds/symlink/uln2003a.pdf ) includes a full functional diagram if you want to understand the gooey innards.
In order to switch your Relay, you will need to invert the outputs again. This can be done trivially with a pull up resistor. A pull-up, if you have not encountered one, will weakly drive a signal to your supply voltage. In the case of a relay, you might need to experiment and select a pull-up that’s weak enough (IE: a low enough resistance) to drive the relay on. This is a balancing act, since it also has to be a high enough resistance to not simply short your circuit when you turn the output on.
I’d suggest starting at 10k Ohms. Connect up your relay as normal, then place a 10k Ohm resistor between each output that you’re using, and +5V. If all goes well, your relays will turn on.
To turn them off, you set explorerhat.output.one.on() - this will connect the line, driven high by the 10k resistor, to ground. This should close your relay.
If this works, you can now swap your use of the NO (Normally Open) or the NC (Normally Closed) with its opposite on your relays, to ensure your logic is inverted back to where you want it.