CrcConnect Module Details
This page presents the CrcConnect module that allows controlling a CrcDuino board using a remote controller.
Introduction
The CrcConnect is a device that allows to send commands to a CrcDuino using a remote controller. The CrcConnect serves as a data relay; it takes information from a controller (using a wire), and sends this information to a CrcDuino wirelessly using a pair of Xbee Modules.
It was designed to offer flexibility of use. The CrcConnect module can be velcroed directly to a remote controller for maximum movement ease. It can also be in the driverâs pocket and linked to the remote controller using a longer wire. It can connected to an additional power bank to extend battery life.
The Xbee modules used communicate over the 900Mhz frequency band. It has more range and is less crowded than the 2.4Mhz band typically used by hobby robotics systems. The 2.4Mhz band is used by Wifi and Bluetooth systems, so the CrcConnect system is much less prone to interferences than other robot remote control systems.
Compatible remote controller
The beauty behind CrcConnect is that it allows a robot to be controlled using off-the-shelf, popular gaming console remote controller. This way, each team can use whatever controller itâs the most comfortable with.
Compatible remote controllers:
PlayStation 3 wireless (Sony Official)
Havit HV-G69 wired PS3 knockoff
PlayStation 4 (Sony Official)
Logitech F130
XBox One (Microsoft Official)
Wired Xbox 360
Un-compatible remote controllers
Wireless Xbox 360
Most knockoff brand Wireless PlayStation 3
When using a wireless controller, it must be connected to the CrcConnect using:
A USB-A to Mini-B wire (for PlayStation 3 controllers), like this 6â long one.
A USB-A to Micro-B wire (for PlayStation 4 controllers), like this 6â long one.
A USB-A to USB-C wire (for Xbox One controllers), like this 6â long one.
The Logitech F130 and HAVIT controllers do not support analog gestures of the triggers, in contrary to Xbox and PlayStation controllers.
On an Xbox or PlayStation controller, the value of GACHETTE_L and GACHETTTE_R will range from -128 (trigger unpressed) to 127 (trigger fully pressed).
On the F130 and HAVIT, GACHETTE_L and GACHETTE_R can only take the value -128 (trigger not pressed) or 127 (trigger fully pressed).
When using a Havit Controller, make sure to press the âANALOGâ button on the remote controller to light up the red LED between the joysticks. Else, the value of the joystick can only be {-128, 0, 127}, instead of [-128, 127].
Storage Mode
Like almost every electronic gadget, there is a very small current that leaks from the battery of the CrcConnect when itâs not in use, even when powered off using the power button. This undesired battery drainage can be avoided by putting the CrcConnect in Storage Mode. We recommend to put the CrcConnect in Storage Mode when you know it wonât be used for 2+ weeks. This will extend the CrcConnect battery life! Storage mode physically disconnects the battery from the control board, effectively cutting any possible leakage current.
Storage mode is enabled when the jumper is removed from the board, or when it is plugged into the left and center pins.
Jumper removed; CrcConnect wonât work
Jumper in storage mode; CrcConnect wonât work
Storage mode is disabled when the jumper is plugged into the center and right pins.
Jumper OK; CrcConnect will work
Pairing with a CrcDuino board
Pairing a CrcDuino with a CrcConnect is as easy as 1-2-3! Each CrcConnect is identified with a number and comes with a dedicated Xbee Module that is identified with the same number.
Simply plug the Xbee module into the CrcDuino, then power up the CrcConnect and CrcDuino.
Â
A characteristic victory sound will be heard from the CrcDuino when a successful connection as been established with a CrcConnect. If the connection is lost, the CrcDuino sights in despair âŠ
Â
Swapping the Xbee Module from the old CrcConnect to the new CrcConnect with integrated remote control
Â
Ports & buttons
The CrcConnect has 2 ports a one button on its side. From left to right:
A Micro-USB port to charge the CrcConnect internal battery;
A power button;
A USB-A port in which the cable coming from the remote controller is plugged into.
Status LEDs
The CrcConnect has 4 LEDs that allows to learn about the state of the CrcConnect and the CrcDuino:
Robot LED
Indicates the voltage of the power supplied to the CrcDuino to which the CrcConnect is connected to, witha refresh rate of 10s. This therefore feedbacks the charge level of the 12V battery on the robot.
Robot LED Color | We good? | Recommendation | Power Supply voltage |
---|---|---|---|
Solid Green |
| Great power management, keep up the good work! | >= 12.5V |
Solid Orange |
| Maybe charge the battery? | [12V ; 12.5V[ |
Solid Red |
| Yeah, you should charge the battery NOW! | [11V ; 12V[ |
Blinking Red |
| Were you even paying attention? Go on and you might affect your robot batteries ability to hold up charge | < 11V |
CrcConnect LED
Indicates the voltage of the internal CrcConnect battery. This therefore feedbacks the charge level of the 5V battery inside of it.
CrcConnect LED Color | We good? | Recommendation | Internal battery voltage |
---|---|---|---|
Solid Green |
| Great power management, keep up the good work! | >= 3.8V |
Solid Orange |
| Maybe charge the battery? | [3.7V ; 3.8V[ |
Solid Red |
| Yeah, you should charge the battery NOW! | [3.6V ; 3.7V[ |
Blinking Red |
| Were you even paying attention? Go on and you might affect your CrcConnect battery ability to hold up charge | [3.5V ; 3.6V[ |
OFF |
| The CrcConnect will automatically shutdown to prevent battery damages. | < 3.5V |
Communication LED
Indicates the connection quality between the CrcConnect and its paired CrcDuino. Is also used to indicate a successful link between a remote controller and the CrcConnect.
Typical interference causes include and are not limited to: too much metal around the CrcDuino, robot frame electrically connected to the battery negative pole (lose wire, faulty wire isolation), etc.
Communication LED Color | We good? | Recommendation | Meaning |
---|---|---|---|
Solid Green |
| Whatever youâre doing, keep up doing it! | Great connection with the CrcDuino. Wired to a remote controller. |
Solid Orange |
| Get closer to the robot. Reduce possible interference. | Meehh connection with the CrcDuino. Wired to a remote controller. |
Solid Red |
| Get closer to the robot. Reduce possible interference. | Bad connection with the CrcDuino. Wired to a remote controller. |
Blinking Red |
| Get closer to the robot. Reduce possible interferences. Have you tried turning everything off and on again? Are the CrcDuino & CrcConnect powered up? Appropriate Xbee module correctly inserted in the CrcDuino socket? CrcDuino running a program using CrcLib Release 1.1 and up? | Connected to the CrcDuino and wired to a remote controller, but data is not correctly sent/received |
OFF |
| No connection with a CrcDuino, or no wired to a compatible remote controller |
Charge LED
This LED, on the backside of the CrcConnect, is lit when it's charging, and OFF when not charging.
Power management
The CrcConnect module can be recharged throught the Micro-USB port. It can even be recharged when in use!
No need to worry about recharging the remote controller itself. The remote controller, when connected to a CrcConnect module, is powered by the CrcConnect internal battery pack.
Auto-shutdown function
Auto-shutdown functions have been programmed into the CrcConnect to avoid permanent internal damage.
Voltage shutdown
If the internal battery voltage falls beneath a certain threshold, the CrcConnect wonât power up or will shutdown immediately after being powered up.
Temperature shutdown
If the internal temperature gets so hot that it might lead to permanently damage the internal battery, the three main status LED will flash Orange 5 times and the CrcConnect will automatically shutdown right after.
Button and joystick mapping
The remote controller buttons and joysticks state can be retrieved using CrcLib::ReadDigitalChannel() and CrcLib::ReadAnalogChannel() using the appropriate nomenclature.
The following pictures show the physical mapping of the different members of the enum classes for typical remote controller arrangements.
Â
Still not sure? Upload the following code into your CrcDuino and open up a Serial Monitor at 2000000 baud to witness the state of the different buttons of the remote controller on your computer screen.
//CrcConnect Remote Controller Test Sketch
//Valid using CrcLib_1-1-0_Release
#include <CrcLib.h>
//------------------------------------------------------------
void setup() {
// put your setup code here, to run once:
CrcLib::Initialize();
Serial.begin(2000000);
}
void loop() {
// put your main code here, to run repeatedly:
CrcLib::Update();
Serial.println();
if (CrcLib::IsCommValid())
{
CrcLib::PrintControllerState();
}
else
{
Serial.print("No remote controller successfully communicates with the CrcDuino");
}
}