{"id":27302252,"url":"https://github.com/nicx17/multiwave","last_synced_at":"2026-05-05T23:32:05.039Z","repository":{"id":265525948,"uuid":"895896683","full_name":"nicx17/MultiWave","owner":"nicx17","description":"A Wireless Multi cable tester project using Arduino Mega 2560","archived":false,"fork":false,"pushed_at":"2025-04-11T06:49:48.000Z","size":60,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T02:15:37.627Z","etag":null,"topics":["arduino","arduino-project","cpp","rf","tester","wireless"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nicx17.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-29T06:18:28.000Z","updated_at":"2025-04-11T06:49:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"d577908f-6a97-4e04-8f83-172a86a5e7cf","html_url":"https://github.com/nicx17/MultiWave","commit_stats":null,"previous_names":["nicx17/multiwave"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicx17%2FMultiWave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicx17%2FMultiWave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicx17%2FMultiWave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicx17%2FMultiWave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nicx17","download_url":"https://codeload.github.com/nicx17/MultiWave/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248505922,"owners_count":21115354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-project","cpp","rf","tester","wireless"],"created_at":"2025-04-12T02:15:40.093Z","updated_at":"2026-05-05T23:32:05.007Z","avatar_url":"https://github.com/nicx17.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MultiWave\nMulti-Cable Tester\n\n## Description\nThis is a Wirelessly communicating multi-Cable tester Project.\nIt comprises of 2 main parts encased in 2 different cases. The Receiver and the Transmitter. The receiver being the main processor.\n### Receiver\nThe receiver is the brain of the device. It is called the receiver because it mainly receives and processes the data from the transmitter.\nIt also sets pins/conductors of the cable either high or low.\nTo switch it on it has a rocker switch (pre voltage boosting).\nIts 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. \n\nThere are 3 ports connected to the Arduino. RJ45, RJ11 and BNC(FEMALE).  \n\nIt uses a 1.3-inch white OLED to display all the test status data and modes available.\nTo show the user which pin is currently being tested it has an 8 led array.\nIn 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.\nIt can test 3 types of cables RJ45, RJ11 and BNC. It uses nRF24l01+PA+LNA configured at medium power to communicate and Arduino mega as its main processor. \n\nIt 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.\nWiring 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 depending on the type of the cable and its standard of wiring (RJ45 T568A/T568B). Short Mode checks if any two pins/conductors in the cable are shorted to each other.\n\n### Transmitter\nThis is the transmitter part of the device. It is powered directly through its micro-USB port.\nThere 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 LOW power mode to communicate with the receiver box. \n\nIt 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.\n\nIt 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.\n\n## Working\n\nOnce 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. \n\nWhen the receiver is turned on the display on the receiver box displays the selected the test mode and port. \n\n```\nMODE: CONTINUITY TEST\n\nPORT: RJ45 T568B\n\n``` \n\nThe 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, Rj11 and BNC).\nNow to activate the test for the selected port the switch on the rotary encoder has to be pressed.\n\n```\nCONTINUITY MODE SELECTED\n\n``` \nOnce this is done the ardunio in the receiver box will set the pins in the selected port to either high or low in a particular pattern which will be indicated by the 8 LED array on the top. \nIf the continuity mode was selected for RJ45 port, pin1 would be set high and the remaining pins would be set low. It would look like this **HIGH LOW LOW LOW LOW LOW LOW LOW** . It will also store this state as a string: `10000000`.\nThe 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.\nThis will keep iterating and will and cycle the pin that is set high.\n\nAt 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 200ms.\n\nThe 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** \n\nThe 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.\n\nAfter the Transmitter creates the string `10000000` representing the pin states it will transmit this to the receiver arduino through the nRF24l01+PA+LNA module. When the receiver receives this string, it will compare it with the string it had stored on its pin states. \nIf the both the strings match then the value of a variable is incremented by one. 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\n```\n\nSENT: 10000000\nRECV: 10000000\nPIN 1 CONNECTED\nWIRCLR: White Orange\n``` \n\nAfter 600 ms it changes the order of the high pin and then compares and increments. When all the pins have been tested and if the value of the variable is \u003c=8 then the arduino will display the result of the test on the screen. \n\nIt would look like this \n```\nCONTINUITY TEST PASSED\nSENT: 00000001\nRECV: 00000001\nPIN 8 CONNECTED\nWIRCLR: Brown\n``` \nThis test will keep running until the user stops it or by changing the mode. \n\nThe 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.\n\nThe 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.\nWiring mode works in the same way as the continuity mode.\n\nManual 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.\n\nOther 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`).\n\n## Components\n\n#### Here is a list of all the components used in this project.\n\n1.\tArduino Mega 2560(Copy)\n2.\tMega2560 Pro ATMEGA2560(Copy)\n3.\tPrototype Shield V3.0 For Arduino Mega\n4.\tDotted PCB 24*10 (2) \n5.\tMulti-core wire\n6.\t220Ω Resistors (16)\n7.\t5mm Green DIP LED (8)\n8.\t5mm RED DIP LED (8)\n9.\t5mm BLUE DIP LED (3)\n10.\t3 x 7 cm Universal PCB Prototype Board Double-Side (2)\n11.\t2 x 8 cm Universal PCB Prototype Board Single-Sided\n12.\t1.3 Inch I2C OLED Display Module 4 pin- WHITE\n13.\t2.4GHz NRF24L01+PA+LNA SMA Wireless Transceiver \n14.\tTactile Push Button Switch 6x6x5 (3)\n15.\tRocker Switch-KDC-01\n16.\tM274 360 Degree Rotary Encoder Brick Sensor Module\n17.\tRJ11 Female Port (2)\n18.\tRJ45 Connector Breakout Module (2)\n19.\tBNC Female Jack (2) \n20.\tUSB-C Breakout – Horizontal Module\n21.\tTP4056 1A Li-Ion Battery Charging Board (2)\n22.\tXL6009 DC-DC Step-Up Converter LM2577 Booster Circuit Board\n23.\t18650 3.6V 2500mAh Li-ion Battery (2)\n24. PLA Generic black filament\n\n## Circuit Diagram\n### Circuit Diagram for the receiver box\n\n![Reciever_circuit_image](https://github.com/user-attachments/assets/87f6f35e-f5e3-4148-b5da-70c74523ed1f)\nView in [Circkit Designer](https://app.cirkitdesigner.com/project/7d886924-d269-467c-b663-24d51e59681c)\n\n\n### Circuit Diagram for the transmitter box\n\n![Transmitter_circuit_image](https://github.com/user-attachments/assets/252e9cfd-8a7b-4bef-9b90-e070491c98b2)\nView in [Circkit Designer](https://app.cirkitdesigner.com/project/dbc1c6d2-5d9e-4712-a71e-35fb16c95f0c)\n\n\n## License\n\n[GPL v3.0](https://choosealicense.com/licenses/gpl-3.0/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicx17%2Fmultiwave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicx17%2Fmultiwave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicx17%2Fmultiwave/lists"}