Tiny Yolo2 icon Tiny Yolo2 Real-time TinyYolo object detection for ARC Camera Device: tracks 20 classes, populates camera variables, triggers tracking scripts, 30+ FPS in HD. Try it →
New Zealand
Asked

EZ-B V3 Set Digital Triggers Low-Level Relay On Co

I’m using an EZ-B v3 over Bluetooth with ARC on Windows to switch two LED strips via a common 2channel 5V optoisolated relay module (Songle SRD05VDCSLC type, LOWtrigger inputs). The relay board is powered from a separate 5V buck (shared ground to the EZ-B), and the inputs are wired D0->IN1 and D1->IN2. In ARC I added the Set Digital skill twice (one for each channel) so I can manually toggle them. With a meter, ON on Set Digital gives ~4.8V at the signal pin and the relay stays off (as expected for LOWtrigger), and OFF drops to 0V and the relay energizes. So far so good. The issue is that the moment ARC connects to the EZ-B v3 over Bluetooth, both relays click on briefly for a split second before my init scripts run. After that they behave normally. I assume the inputs float or go LOW during the handshake/reset. I tried different ports (D0/D1 vs D12/D13), adding 10k pullups on IN1/IN2 to 5V, powering the relay board a second or two after connection via a MOSFET on D2, and an ARC Connection Control init script:

# Project -> Connection -> Init
WaitForConnection(0)
Set(D0, ON)
Set(D1, ON)

Even when delaying the relay board’s 5V until after WaitForConnection, I still get one blip on connect. I’d prefer to keep the wiring simple and use Set Digital rather than add an inverter stage unless that’s the only robust fix. Is there a way in ARC to guarantee specific EZ-B v3 digital ports default HIGH before any transient on connect, or a recommended wiring pattern with EZ-B v3 and the Set Digital skill to prevent LOWtrigger relays from momentarily activating at connection time?



Related Hardware (view all EZB hardware)
EZ-B V3 by EZ-Robot
EZ-B v3 Bluetooth robot controller supported by Synthiam ARC - features, specs and legacy connection tutorial
Bluetooth
Servos 24
Camera
Audio
UART
I2C
ADC 8
Digital 24

Related Robot Skills (view all robot skills)
Manage EZ-B hardware settings: edit Bluetooth name and apply updates to restore altered configurations.
Set Digital by Synthiam
Toggle a digital I/O port between TTL low (0V) and high (3.3V/5V) in ARC; select board and port, simple on/off control-signal only.

ARC Pro

Upgrade to ARC Pro

Your robot can be more than a simple automated machine with the power of ARC Pro!

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

What you’re seeing is a very common behavior with LOW-trigger relay boards: during Bluetooth connection / EZ-B initialization, the digital pins can briefly be in an undefined state before ARC finishes applying your project settings. Because the relay board is active-low, even a short low pulse is enough to click the relay.

Short answer

There isn’t a reliable way in ARC to guarantee an EZ-B v3 digital port is already HIGH before the board’s startup/connection transient. If a relay is active on LOW, the safest fix is to make sure the relay input is held HIGH by hardware until ARC explicitly drives it low.


Why this happens

With the EZ-B v3 over Bluetooth, the connection handshake can briefly reset or reinitialize the I/O state. During that moment:

  • the pin may float
  • the port may default low briefly
  • your script may not yet be running
  • the relay module sees a valid LOW-trigger

So even though your scripts set D0/D1 high afterward, the relay has already seen the pulse.


1) Add strong pull-up resistors on each relay input

You tried 10k pullups, but for noisy/slow startup conditions, that may not be strong enough.

Try:

  • 4.7k pull-up from IN1 to 5V
  • 4.7k pull-up from IN2 to 5V

This helps hold the inputs high more firmly during the connect transient.


2) Use a transistor or inverter stage

If you want the most robust solution, the best hardware pattern is:

  • EZ-B output drives a transistor/MOSFET stage
  • relay input is held high by default
  • the transistor actively pulls it low only when commanded

This prevents the relay from responding to the EZ-B’s startup behavior.

If you want, I can sketch a simple 1-transistor or MOSFET wiring for each channel.


3) Power the relay module only after ARC is stable

You already tried delaying relay power, which is a good test. If the relay still clicks, that suggests the input may be getting into a state that the module interprets during power-up or the EZ-B port is transitioning as the board comes online.

A more reliable version of this is:

  • keep relay input pulled high
  • switch relay module VCC with a transistor/MOSFET
  • enable power only after ARC is connected and your init script has run

But even then, some modules will still behave unpredictably if inputs are not firmly biased.


ARC-side best practice

Use your init script to immediately set the ports high, but understand it cannot prevent the first transient.

For example, in ARC JavaScript, you’d want the equivalent of:

print("Setting relay ports safe...");
Digital.set(d0, true);
Digital.set(d1, true);

If you’re using a Connection skill init script, keep it as short as possible so the "safe" state is applied quickly.


Best practical recommendation

For LOW-trigger relays, the most reliable options are:

  1. 4.7k pull-ups on each relay input
  2. If still problematic, add a transistor/MOSFET buffer
  3. If you want zero chance of startup clicks, avoid driving active-low relays directly from the EZ-B output during boot/connection

One other thing to check

You mentioned using:

Set(D0, ON)
Set(D1, ON)

In ARC, make sure you’re using the proper Digital command or the skill’s control command, not assuming the port is already configured as output by the time the relay sees it. Also, if you’re using the Set Digital skill, confirm its board/port settings through the skill’s kebab menu so each instance is explicitly tied to the correct EZ-B and port.


My recommendation for your exact setup

Given your goal of keeping wiring simple:

  • try 4.7k pull-ups on IN1 and IN2
  • add a small RC delay if needed
  • if the blip still happens, use a single transistor inverter/buffer per channel

That’s usually the point where the problem disappears entirely.


Useful ARC references

If you want, I can give you a very simple wiring diagram for a transistor-based relay buffer that works cleanly with the EZ-B v3 and LOW-trigger relay boards.

I am a customer support AI and still learning. Please verify important answers in our support documentation. For advanced AI features, use the AI Script Agent built into ARC.