Multi-Cable Tester
This is a Wirelessly communicating multi-Cable tester Project. It comprises of 2 main parts encased in 2 different cases. The Receiver and the Transmitter. The receiver being the main processor.
The receiver is the brain of the device. It is called the receiver because it mainly receives and processes the data from the transmitter. It also sets the pin/conductor being tested high and leaves the remaining pins floating, so a shorted cable can never connect a high pin directly to a low one. To switch it on it has a rocker switch (pre voltage boosting). Its power source are two lithium-ion batteries connected to 2 separate TP4056 BMS modules. those are then connected in parallel to a dc voltage booster which booster (3.7v → 8v). To charge the batteries the inputs of the BMS modules is connected in parallel to a 6 pin USB-C breakout board configured to supply 15W max.
There are 3 ports connected to the Arduino. RJ45, RJ11 and BNC(FEMALE).
It uses a 1.3-inch white OLED to display all the test status data and modes available. To show the user which pin is currently being tested it has an 8 led array. In order to allow the user to select modes and ports it uses a rotary encoder and a tactile button. An additional tactile switch to reset the Arduino. It can test 3 types of cables RJ45, RJ11 and BNC. It uses nRF24l01+PA+LNA configured at LOW power to communicate and Arduino mega as its main processor.
It has 4 operational modes namely Continuity, Short and Wiring and Manual. As the names suggest each mode serves a purpose. Continuity mode tests continuity for each pin/conductor of the selected port. Wiring mode tests whether each pin in the connector on one side of the cable is connected to the proper pin in the connector on the other end of the cable. If a pin is connected to a different pin on the other end it shows which pin it is crossed to. The selected standard of wiring (RJ45 T568A/T568B) is used to show the colour of each conductor. Short Mode checks if any two pins/conductors in the cable are shorted to each other. Manual mode lets the user pick which pin is set high using the rotary encoder.
This is the transmitter part of the device. It is powered directly through its micro-USB port. There are 3 ports connected to the Arduino. RJ45, RJ11 and BNC(FEMALE) through which it detects the voltage levels set by the receiver. It Uses an Arduino Mega pro for processing, nRF24l01+PA+LNA configured in MIN power mode to communicate with the receiver box.
It has the same 8 LED array as the receiver to indicate the pin/conductor being tested. For port selection it has a tactile button. to indicate the port selected for testing it has a Led above each port.
It has 8 pull-down resistors to pull-down the voltage on any floating pins (pins/conductor in the port that aren’t connected to any voltage). It has the same rocker switch to turn it on.
The RJ11 and BNC ports are read through the same middle two inputs used by the RJ45 port, so only those two inputs are used when either of them is selected.
Once the transmitter is turned on the LED assigned to each port is initially turned off. The port can be selected by pressing the tactile button. This will cycle through each port and NoPortSelected state (RJ45, RJ11, BNC and NoPortSelected). The LED above each port indicating which port is selected. When no port is selected led assigned to each port will be off. When no port is selected the transmitter does not send anything, and the receiver will display NO DATA RECEIVED.
When the receiver is turned on the display on the receiver box displays the selected the test mode and port.
MODE: TEST CONTINUITY
PORT: RJ45 T568B
PRESS KNOB TO START
The mode can be changed by using the rotary encoder. It will cycle through the modes (Continuity, Short, wiring, Manual). The selected port can be changed by pressing the tactile button. This will cycle through the ports (RJ45 T568A, RJ45 T568B, BNC and RJ11). Now to activate the test for the selected port the switch on the rotary encoder has to be pressed.
Once this is done the ardunio in the receiver box will set the pins in the selected port high one at a time, which will be indicated by the 8 LED array on the top. The pin being tested is set high and the remaining pins are left floating, the pull-down resistors in the transmitter keep them low.
If the continuity mode was selected for RJ45 port, pin 8 would be set high and the remaining pins would be low. It would look like this HIGH LOW LOW LOW LOW LOW LOW LOW . It will also store this state as a string: 10000000.
The 8 LED array would represent this in the same way, the first led would be on and the remaining ones would be off. After approximately 600 ms the pin that was set high will change. Now it will be LOW HIGH LOW LOW LOW LOW LOW LOW The same will be represented by the LED array.
This will keep iterating and will and cycle the pin that is set high.
At the transmitter if the RJ45 port is selected then the arduino inside it is constantly checking the states of all the pins connected to the port. Once every 50ms.
The cable being tested has one end connected to the receiver and the other end to the transmitter. When the first pin is set high and all others low the transmitter will detect this and create a string representing the pin states. So, if the pin states are HIGH LOW LOW LOW LOW LOW LOW LOW
The string would be: 10000000 and after 600ms when the receiver changes the pin states it will be 01000000 The pin states at the transmitter will be represented by the 8 LED array on it. Provided the cable is not broken and is functional.
After the Transmitter creates the string 10000000 representing the pin states it will transmit this to the receiver arduino through the nRF24l01+PA+LNA module. Before comparing, the receiver throws away any strings it received before the pin was set high and waits for a new one, so the string it compares is always for the pin currently being tested. If nothing is received within 400 ms it displays NO DATA RECEIVED.
When the receiver receives this string, it will compare it with the string it had stored on its pin states.
If the pin being tested is high in both strings then the pin is connected, if not the pin is counted as failed. The string stored and received by the arduino is also displayed on the screen one below the other along with the state of the current pin being tested and the colour of the conductor, as shown below
CONTINUITY ...
SENT: 10000000
RECV: 10000000
PIN 8 CONNECTED
WIRCLR: Brown
After 600 ms it changes the order of the high pin and then compares again. When all the pins have been tested, if none of them failed the arduino will display PASS on the top line of the screen, otherwise it will display FAIL. The result stays on the top line while the next round of testing runs.
It would look like this
CONTINUITY PASS
SENT: 00000001
RECV: 00000001
PIN 1 CONNECTED
WIRCLR: White/Orange
This test will keep running until the user stops it by pressing the encoder switch, by changing the port or by changing the mode.
The mode can be changed by rotating the rotary encoder. This will automatically stop the test and change the mode which can then be activated by pressing the encoder switch.
The short and wiring mode also work similarly. The difference in the short mode is when the receiver arduino receives the string from the transmitter it adds all the numbers in the string 10000000 and checks if the sum is greater than one 01100000. If the sum is greater than one that means that the cable being tested has a short, and the display will show PIN 8 SHORTED. If the sum is zero the pin is shown as NOT CONNECTED, this does not fail the short test since the continuity mode is used for that.
Wiring mode works in the same way as the continuity mode, but it also checks that only the pin being tested is high in the received string. If a different pin is high then the wire is crossed and the display shows which pin it is connected to (PIN 8 -> PIN 6). If more than one pin is high it is shown as SHORTED.
Manual mode is a bit different. When it is selected the rotary encoder can be used to select which pin is set high. If the initial pin state is 10000000 and the user rotates the encoder clockwise by one indent then the resulting pin state will be 01000000. All other data (pin number, wire colour, SENT, RECV) will be displayed the same way as other modes including the pin stat representation by the 8 LED array. Manual mode works for all the ports. To leave manual mode press the encoder switch.
Other ports are tested in a similar way. The RJ11 port and BNC port consist of only 2 conductors so only the middle 2 characters of the string are used to represent that (00010000 and 00001000).
| File | Description |
|---|---|
| Receiver_v2.cpp | Code for the receiver box |
| Transmitter_v2.cpp | Code for the transmitter box |
| Receiver_v1.cpp | Original code for the receiver box (kept for reference) |
| Transmitter_v1.cpp | Original code for the transmitter box (kept for reference) |
| README_v1.md | Original README describing the v1 code |
Both boxes use the Arduino Mega or Mega 2560 board setting. v1 and v2 send the same string over the radio, so a v2 box will also work with a box still running v1.
To open the code in the Arduino IDE it has to be placed as a .ino file in a folder with the same name (for example Receiver_v2/Receiver_v2.ino).
- RF24 (Library Manager)
- ezButton (Library Manager)
- Adafruit GFX Library (Library Manager)
- Adafruit_SH1106 (not in the Library Manager, download it from GitHub and place it in the
Arduino/librariesfolder. The "Adafruit SH110X" library will not work)
- Arduino Mega 2560(Copy)
- Mega2560 Pro ATMEGA2560(Copy)
- Prototype Shield V3.0 For Arduino Mega
- Dotted PCB 24*10 (2)
- Multi-core wire
- 220Ω Resistors (16)
- 5mm Green DIP LED (8)
- 5mm RED DIP LED (8)
- 5mm BLUE DIP LED (3)
- 3 x 7 cm Universal PCB Prototype Board Double-Side (2)
- 2 x 8 cm Universal PCB Prototype Board Single-Sided
- 1.3 Inch I2C OLED Display Module 4 pin- WHITE
- 2.4GHz NRF24L01+PA+LNA SMA Wireless Transceiver
- Tactile Push Button Switch 6x6x5 (3)
- Rocker Switch-KDC-01
- M274 360 Degree Rotary Encoder Brick Sensor Module
- RJ11 Female Port (2)
- RJ45 Connector Breakout Module (2)
- BNC Female Jack (2)
- USB-C Breakout – Horizontal Module
- TP4056 1A Li-Ion Battery Charging Board (2)
- XL6009 DC-DC Step-Up Converter LM2577 Booster Circuit Board
- 18650 3.6V 2500mAh Li-ion Battery (2)
- PLA Generic black filament
View in Circkit Designer
View in Circkit Designer
| Name | GitHub Profile |
|---|---|
| Rishi | |
| Krishay | |
| Kevin | |
| Nikhil |