Fans, water pumps, etc. not working; don't know where the problem is

Excuse me, when I try to start the water pump or fan, only the indicator light turns on, but the fan and other components don’t actually work. I believe my code is correctly written, yet it still doesn’t function properly. Could anyone kindly help me figure this out?

"The indicator light being on means your code is perfectly fine—the MCU’s GPIO is pulled high, and the ULN2003A has successfully pulled the pin low. Stop changing the code, you’re going in the wrong direction. The issue lies with the relay or the power supply for the power section. Follow your troubleshooting steps:

  1. Listen first: When sending the command, is there a ‘click’ sound from the relay? If not, check the relay’s 5V supply.
  2. If there is a click: Look at your schematic; the terminal block (P1/P2) power is supplied by 5VR. Check if the isolation jumper caps for 5V and 5VR on the board are not inserted?
  3. Current issue: You’ve connected a fan and a water pump; both are inductive loads with high starting currents. If you’re powering directly via a computer USB, the current is likely insufficient, causing the voltage to drop too low to drive the motor. I suggest trying a separate power supply rated at 2A or higher."

Software is 100% fine. The LEDs are in parallel with the relay coils on the ULN2003A output, so if they light up, the logic is executing perfectly. Your problem is lack of power to the actual load. Those little submersible pumps draw a massive current spike when they start. If you’re powering this whole board off a standard USB port, it will brown out and fail to spin the motors, even if the relays close. Try hooking up a dedicated 5V/2A power supply to the board’s main power input and make sure the 5VR rail is actually energized.

I’ve fallen into this exact same trap before, OP! If the indicator light is on, it means the MCU’s GPIO output and the ULN2003 driver chip path are completely fine. Stop banging your head against the code. Follow this order to check, and you’ll locate the issue in 10 minutes:

  1. First, use a multimeter to measure the voltage across the relay coil. It should be around 4.8V when engaged. If the voltage is insufficient, either the +5V power supply has poor load capacity, or the ULN2003 has a cold solder joint;
  2. Here’s the catch! The relay contacts in your schematic use a 5VR independent power supply, not the main +5V! 90% of people forget to connect this; I got stuck on this for an afternoon last time;
  3. If 5VR has power, hook the fan straight up to the 5V power supply to test. If it spins, the relay is broken; if not, it’s the fan itself or the wiring is reversed. Check 5VR first—chances are that’s the problem!

Okay, thanks.

Okay, thanks

Okay, thanks.

Indicator LED on = ULN2003 output is low = relay coil is energized.Fault is NOT in code or GPIO. It is in the relay contact circuit or load power supply.Immediate check: Measure 5VR voltage (relay contact power). This is the most common failure point in this design.

  • If 5VR is missing: Connect 5VR to your 5V power supply.
  • If 5VR is present: Test fan/pump directly with 5V. Replace relay if load works.

Have you found the problem? What is it?