Cosgrove
Unknown Country
Asked
Hi Athena,
I'm using the PCA9685 robot skill in ARC with an EZB v4 controller, and the PCA9685 is connected to the EZB v4 via the I2C port. I'm not getting any response from the module. When selecting a port in the PCA9685 Skill, should I choose a Virtual port?
This is all within my ARC project, and the hardware is connected through the EZB v4 (I2C).
Related Hardware (view all EZB hardware)
EZ-B V4
by EZ-Robot
EZ-B v4/2 robot controller: dual Cortex ARM, Wi-Fi, audio/video, 24 servo/digital ports, I2C/UART, camera and Synthiam ARC control for custom robots
Wi-Fi / USB
Servos
24
Camera
Audio
UART
3
I2C
ADC
8
Digital
24
Related Robot Skill (view all robot skills)
PCA9685 Servo Driver
by Synthiam Inc
Drive 16 servos over EZB I2C with a PCA9685 PWM controller, using ARC servo commands and hardware-timed outputs.
Requires ARC
v2

Yes - for the PCA9685 servo Driver skill, you should be using virtual servo ports.
What to select
V0throughV15by defaultV16-V31V32-V47, etc.Important clarification
The I2C connection is between the EZB v4 and the PCA9685 board.
You do not select the PCA9685 as an I2C port inside the skill. Instead:
In the PCA9685 skill settings
Open the skill’s kebab/hamburger menu and check:
0x80in ARC’s 8-bit formatV0 - V15for one boardIf nothing responds, check these first
Initialized PCA9685 @ 0x80Best test
Try commanding a single servo on
V0first.Reference
https://synthiam.com/Support/Skills/Servo/PCA9685-Servo-Driver?id=23154
https://synthiam.com/Support/Hardware/PCA9685-Servo-Controller
If you want, I can help you verify the exact I2C address and skill configuration step by step.
DJ, I have tried to use the IC2 port in the EZB V4 for connection to the PCA9865 with no success - NOTE this is not using an ARDUINO. Using an Oscilloscope shows no clock signal on SCL (shows a steady 3.3v) and 0v on SDA. When doing the same tests on an Arduino NANO I get a pulse on both SDA and SCL from 3.3 to 0v repeated. It seems that the IC2 port does not get activated from ARC? One other thing, the message
appears on the skill screen when it's in your project regardless of any physical attachment to a PCA9685 board. This means you don't really know if its really "seeing" the board at 0x80 - i'm pretty sure it's not from the scope results. I had Google AI write some code to try to talk directly from a Python script in the ARC "Script" skill to the PCA9685 but no response either. Any one in the office or the community have a solution?
You’re right to question that
"Initialized PCA9685 @ 0x80"message - that line indicates the skill initialized its own configuration, not necessarily that it successfully detected a physical PCA9685 on the bus.A few important points here:
1) The EZB v4 does use its I2C bus through ARC
If the PCA9685 skill is installed and the EZB v4 is connected, ARC should be able to drive I2C traffic. If your scope shows:
then that suggests one of these:
2) The PCA9685 skill is a servo driver plugin, not a detector
That init message is essentially a startup/status message. It’s not a "board found" confirmation.
A real hardware verification test is better done by:
3) On EZB v4, I2C lines should only move when the bus is being accessed
If you want to verify whether ARC is generating I2C traffic, try a very small direct I2C test in the Script skill.
JavaScript test
Use the EZB v4 connection index that your controller is on, usually
0:If ARC accepted the command, but you still see no bus activity, then we need to confirm:
Even better: read a byte back
4) PCA9685 boards often need proper power and shared ground
This is the most common cause of "nothing happens":
Without shared ground, the signals can look wrong on a scope and the board won’t respond.
5) Your scope observation on the Arduino NANO is a useful comparison
Since the NANO produces activity, that suggests:
6) Next thing to check
Please tell me:
7) Helpful references
https://synthiam.com/Support/Skills/Servo/PCA9685-Servo-Driver?id=23154
https://synthiam.com/Support/Hardware/PCA9685-Servo-Controller
https://synthiam.com/Support/Skills/Communication/EZB-Connection?id=16041
If you want, I can help you build a minimal ARC test project that bypasses the PCA9685 skill entirely and directly confirms whether the EZB v4 is generating I2C traffic on SDA/SCL.
The ezrobot ezb v4 has an annoyance with the i2c port. And we are surprised you have not encountered this as to why you don’t see activity. The ezb v4 will disconnect if it cannot "talk" to an i2c device. You will notice it disconnect in the ARC log, and the connection button will change from "connected" to "disconnected" state.
Lastly, you can identify when this happens because the red led on the ezb stays illuminated and the ezb requires a reboot.
The way to resolve this is to ensure the i2c device is properly connected before applying power and connecting to the ezb v4.
This is a hardware limitation of the ezrobot ezb v4 and not Synthiam ARC or robot skills.
That behavior is consistent with an I2C wiring/handshake problem on the EZ-B v4. If the EZ-B sees the bus held in a bad state or cannot complete the I2C transaction, it can stall and the red LED staying on is a strong clue.
What to do
1) Power everything down first
This matters because I2C devices should be in a valid state before the EZ-B boots and ARC connects.
2) Verify the wiring
Make sure these are correct:
If SDA or SCL is swapped, the bus can appear dead or lock up.
3) Check power to the PCA9685
The PCA9685 board usually has:
These are not the same thing.
For testing, use a proper external servo supply on V+ and make sure GND is common with the EZ-B.
4) Test with only one I2C device
Remove any other I2C devices from the bus while testing the PCA9685. A shorted or miswired I2C device can hold the bus down and prevent any traffic.
5) Confirm the skill config
In the PCA9685 skill settings, open the kebab/menu and verify:
V0 - V15for the first board6) Understand the red LED symptom
If the EZ-B red LED stays on and ARC disconnects, that’s usually a sign the EZ-B is hung due to the I2C bus or another hardware issue on the bus. In that case:
A good isolation test
To determine whether the PCA9685 board is the cause or the EZ-B bus is the issue:
If the problem returns only when the PCA9685 is connected, then the board, wiring, pullups, or power arrangement is the likely cause.
One important note
The claim that "this is a hardware limitation of the EZ-B v4" is partly true in the sense that I2C bus faults can stall the EZ-B, but it’s not a reason to expect normal bus traffic to be absent. Under correct wiring and power, the PCA9685 should work with ARC through the EZ-B v4.
References
If you want, I can help you build a minimal direct I2C test in ARC JavaScript to verify whether the bus is alive before involving the PCA9685 skill.