Go to file
noah metz 7db4244cb2 Reorganized, and cleaned up code with new names 2023-12-14 18:28:01 -07:00
LICENSE Initial commit 2023-12-12 20:56:11 -07:00
README.md Added project description to readme 2023-12-14 17:36:21 -07:00
connection.txt Added summarized notes.txt 2023-12-14 17:30:57 -07:00
notes.txt Reorganized, and cleaned up code with new names 2023-12-14 18:28:01 -07:00
v5_field_control.ino Reorganized, and cleaned up code with new names 2023-12-14 18:28:01 -07:00

README.md

Summary

Arduino field control for vex V5. fc contains a project that just uses the arduino serial library, and fc_wifi adds the AsyncMQTT library to connect to wifi & mqtt to get data(instead of just serial).

Setup

Connect Arduino TX2 & RX2 to DI & RO of the Max485.

Connect Arduino D23(or whatever read_line is set to) to RE/DE.

Power Max485 with 5V and GND connected to the Arduino.

Flash the code onto the Arduino, connect A&B of the smart cable connected to the controller(aka the black and red wires respectively) to the Max485.

Viewing the USB serial of the Arduino, send 0xAB-like hex sequences to update the configured state.

Info

Known States:

  • 0xC9 : paused
  • 0xE1 : driver competition
  • 0xD1 : auton competition
  • 0x61 : driver skills
  • 0x51 : auton skills

From this the flags are thus:

  • 0: ? - always 1
  • 1-3: ? - always 0
  • 4-5: mode - 0 for paused, 1 for auton, 2 for driver,
  • 6: ? - always 1
  • 7: 0 for skills - 1 for competition

The field control sequence(aka when the controller sends 0xA7) can be responded to with either a 0x02 ACK packet to acknowledge that the current values are correct, or a 0x53 packet to send new values. However, a 0x02 must be sent at least every 20 packets else the controller will restart the connect sequence.

All of the protocol reversing has been done with 1 brain & 1 controller, so any unique fields are constant and will need to be updated.

connection.txt has my notes from reversing the protocol, and notes.txt is my summarized reminder of how the protocol works at a high level.