Relay not working

I've connected:

+ve of solenoid to PWR of 12v PSU
NO to GND of 12v PSU
-ve of solenoid to C

The relay board is running off 5V psu.

The light on the board shows power but when I turn on the relay on and off it doesn't make a click noise and the solenoid doesn't do anything.

Here’s my code

#define RELAY_ON 1
#define RELAY_OFF 0

#define Relay_1  2  // Arduino Digital I/O pin number
#define Relay_2  3
#define Relay_3  4
#define Relay_4  5
#define Relay_5  6  
#define Relay_6  7

#include "Arduino.h"
#if !defined(SERIAL_PORT_MONITOR)
  #error "Arduino version not supported. Please update your IDE to the latest version."
#endif

#if defined(SERIAL_PORT_USBVIRTUAL)
  // Shield Jumper on HW (for Leonardo and Due)
  #define port SERIAL_PORT_HARDWARE
  #define pcSerial SERIAL_PORT_USBVIRTUAL
#else
  // Shield Jumper on SW (using pins 12/13 or 8/9 as RX/TX)
  #include "SoftwareSerial.h"
  SoftwareSerial port(12, 13);
  #define pcSerial SERIAL_PORT_MONITOR
#endif

#include "EasyVR.h"

EasyVR easyvr(port);

//Groups and Commands
enum Groups
{
  GROUP_0  = 0,
  GROUP_1  = 1,
};

enum Group0 
{
  G0_THRUSTERS_ON = 0,
};

enum Group1 
{
  G1_FORWARD_ONE = 0,
  G1_FORWARD_THREE = 1,
  G1_FORWARD_FIVE = 2,
  G1_BACKWARDS_ONE = 3,
  G1_BACKWARDS_THREE = 4,
  G1_BACKWORDS_FIVE = 5,
};


int8_t group, idx;

void setup()
{
  // setup PC serial port
  Serial.begin(9600);        // initialize serial
  
  
 
  pinMode(Relay_1, OUTPUT);   
  pinMode(Relay_2, OUTPUT);  
  pinMode(Relay_3, OUTPUT);  
  pinMode(Relay_4, OUTPUT);    
  pinMode(Relay_5, OUTPUT);   
  pinMode(Relay_6, OUTPUT);  
  delay(2000); //Check that all relays are active at Reset
  

  // bridge mode?
  int mode = easyvr.bridgeRequested(pcSerial);
  switch (mode)
  {
  case EasyVR::BRIDGE_NONE:
    // setup EasyVR serial port
    port.begin(9600);
    // run normally
    pcSerial.println(F("---"));
    pcSerial.println(F("Bridge not started!"));
    break;
    
  case EasyVR::BRIDGE_NORMAL:
    // setup EasyVR serial port (low speed)
    port.begin(9600);
    // soft-connect the two serial ports (PC and EasyVR)
    easyvr.bridgeLoop(pcSerial);
    // resume normally if aborted
    pcSerial.println(F("---"));
    pcSerial.println(F("Bridge connection aborted!"));
    break;
    
  case EasyVR::BRIDGE_BOOT:
    // setup EasyVR serial port (high speed)
    port.begin(115200);
    // soft-connect the two serial ports (PC and EasyVR)
    easyvr.bridgeLoop(pcSerial);
    // resume normally if aborted
    pcSerial.println(F("---"));
    pcSerial.println(F("Bridge connection aborted!"));
    break;
  }

  while (!easyvr.detect())
  {
    Serial.println("EasyVR not detected!");
    delay(1000);
  }

  easyvr.setPinOutput(EasyVR::IO1, LOW);
  Serial.println("EasyVR detected!");
  easyvr.setTimeout(5);
  easyvr.setLanguage(0);

  group = EasyVR::TRIGGER; //<-- start group (customize)
}

void action();

void loop()
{
  easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

  Serial.print("Say a command in Group ");
  Serial.println(group);
  easyvr.recognizeCommand(group);

  do
  {
    // can do some processing while waiting for a spoken command
  }
  while (!easyvr.hasFinished());
  
  easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

  idx = easyvr.getWord();
  if (idx >= 0)
  {
    // built-in trigger (ROBOT)
    // group = GROUP_X; <-- jump to another group X
    return;
  }
  idx = easyvr.getCommand();
  if (idx >= 0)
  {
    // print debug message
    uint8_t train = 0;
    char name[32];
    Serial.print("Command: ");
    Serial.print(idx);
    if (easyvr.dumpCommand(group, idx, name, train))
    {
      Serial.print(" = ");
      Serial.println(name);
    }
    else
      Serial.println();
    easyvr.playSound(0, EasyVR::VOL_FULL);
    // perform some action
    action();
  }
  else // errors or timeout
  {
    if (easyvr.isTimeout())
      Serial.println("Timed out, try again...");
    int16_t err = easyvr.getError();
    if (err >= 0)
    {
      Serial.print("Error ");
      Serial.println(err, HEX);
    }
  }
}

void action()
{
    switch (group)
    {
    case GROUP_0:
      switch (idx)
      {
      case G0_THRUSTERS_ON:
        group = GROUP_1;
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    case GROUP_1:
      switch (idx)
      {
      case G1_FORWARD_ONE:
         Serial.println("Forward One");
          digitalWrite(Relay_1, RELAY_ON);// set the Relay ON
          delay(1000);
          digitalWrite(Relay_1, RELAY_OFF);// set the Relay ON
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_FORWARD_THREE:
          Serial.println("Forward Three");
          digitalWrite(Relay_2, RELAY_ON);// set the Relay ON
          delay(3000);
          digitalWrite(Relay_2, RELAY_OFF);// set the Relay ON
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_FORWARD_FIVE:
          Serial.println("Forward Five");
          digitalWrite(Relay_3, RELAY_ON);// set the Relay ON
          delay(5000);
          digitalWrite(Relay_3, RELAY_OFF);// set the Relay ON
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_BACKWARDS_ONE:
          Serial.println("Back One");
          digitalWrite(Relay_4, RELAY_ON);// set the Relay ON
          delay(1000);
          digitalWrite(Relay_4, RELAY_OFF);// set the Relay ON
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_BACKWARDS_THREE:
          Serial.println("Back Three");
          digitalWrite(Relay_5, RELAY_ON);// set the Relay ON
          delay(3000);
          digitalWrite(Relay_5, RELAY_OFF);// set the Relay ON     
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_BACKWORDS_FIVE:
          Serial.println("Back Five");
          digitalWrite(Relay_6, RELAY_ON);// set the Relay ON
          delay(5000);
          digitalWrite(Relay_6, RELAY_OFF);// set the Relay ON
        // write your action code here
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    }
}

Which relay board?

Whether your relay board has opto-isolation or not, you'll need to use a separate power supply for it. Therefore, you may need 3 power supplies, unless the 12V supply is also powering the Arduino. In any case, do not use the Arduno's 5V to power the relay board.

Example: