MiniFRC Control System Guide


Written by Jacob Williams and Kaiz Akhtar

This guide exists to inform MiniFRC teams about the two available robot controls systems. Obviously, being members of the Alfredo team, we’re bound to be biased towards our own control system, but we’ll do our best to create an objective analysis of the two common systems in this post. For the first three years of MiniFRC, the control system used by most robots was the Arduino system consisting of an Arduino Uno, an Adafruit Motor Shield v1, and a BT06 Bluetooth chip. Alfredo Electronics has developed a second control system, called the NoU system, consisting of an ESP32 and an Alfredo NoU2.

In the Arduino system, the Arduino acts as the brain of the robot, receiving Bluetooth commands from the BT06 chip and sending commands to the motor shield. This system has proven to be both cheap and reliable, and thanks to the wide network of support for the Arduino Uno. We’re also introducing the Chip0, a tiny chip just for making a robust connection between the Adafruit motor shield v1 and the BT06 in an effort to help reduce robot disconnections caused by a loose wire connection with the Bluetooth chip.

There are a few notable drawbacks with the Arduino system. The Adafruit motor shield v1 has four motor ports, usually allowing for up to two non-drivetrain motors, which can be limiting when designing some robots. A more technical issue is that, because of a timer conflict between the Uno’s SoftwareSerial library (used to communicate with the BT06 Bluetooth chip) and Servo library, attempting to control a servo wirelessly makes the servo motor constantly twitch. There are existing solutions to fix this, but they are either inconvenient or don’t completely fix the problem.

To combat these issues, Alfredo Electronics developed a new robot controls system called the NoU. The NoU system uses an ESP32 and an Alfredo NoU2. The ESP32 replaces the role of the Arduino and BT06, thanks to its built-in Bluetooth module, and can be programmed with the regular Arduino IDE. The NoU2 replaces the role of the motor shield and offers a plethora of improvements including 6 motor ports, support for up to 4 servos, a smaller/lighter package, and better power management. By the way, expect a post on here soon going into more depth about the NoU2’s power management.