Tarek’s Status Report for 2/8

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week, I continued to do research into my specific subsystem of the project: the microcontroller. This is the component that will take in gaze information from the Jetson and the user, and use it to control the UI LEDs and the piece-moving robot. As a stretch goal, it will also keep the state of the game and provide move validation.

This week I focused on choosing a microcontrolle boardr. Given our use case, I considered the following factors:

  • Ready to use out of the box: With all the output and input pins and ports it needs, minimizing the time between opening the box and testing code on it.
  • Ease of use: Should be easy to set up and use, widely available documentation, easy to code on using C/C++/Python.
  • Number of pins: Considering we will be interfacing with board LEDs, two stepper motors, an undefined piece pick-up mechanism, and potentially a keypad/keyboard for the opposing user to manually type in their moves. We need a lot of pins of several types.
  • USB with UART: The board will communicate with the Jetson via UART, it would be ideal to do this over UART using a built-in USB port.
  •  Enough power for all peripherals: The device should have enough power to control all peripherals it is connected to.
  • Price: Lenient, as this is a key element of the design, but should avoid boards over $85.

Given the readily available documentation and help criteria being critical for speed of development, I narrowed the choice down to three extremely popular microcontroller boards under $85: the Arduino Mega 2560, the Raspberry Pi 4 Model B, and the ESP32-DevKitC V4. I made the following table to assist me in making a decision.

Criteria Arduino Mega 2560 ESP32 DevkitC V4 Raspberry Pi 4
Ready to use out of the box – Preloaded bootloader
– All pins available without additional configuration
– Simple USB connection for programming and power
– Preloaded bootloader
– Simple USB connection for programming and power
– No external programmer required
– Requires installing an OS
– Takes longer to set up
– May need additional components (e.g. SD card)
Ease of use – Arduino IDE is easy to use
– Extensive documentation and examples
– Large community support
– Simple programming in C/C++
– Supports multiple frameworks (Arduino, ESP-IDF, MicroPython)
– Extensive documentation and examples
– Large community support
– More complex pin setup
– Runs a full OS, offering high-level programming (Python, C++, etc.)
– Tons of documentation and tutorials
– May feel complex for simpler tasks
Number of pins – 54 digital pins, 16 analog inputs
– SPI, I2C, and UART available
– More than enough for multiple peripherals
– ~36 GPIOs (specific numbers depend on variant)
– Multiple SPI/I2C/UART interfaces
– Limited by multiplexing certain functions
– GPIO pins available (26)
– Plenty of USB and peripheral options through the OS
– Requires GPIO expansion for many dedicated connections
USB with UART – Built-in USB for programming and serial communication
– USB-UART bridge ready to go out of the box
– Onboard USB-to-serial converter
– Simple UART communication via USB port
– Several USB ports available
– Multiple UARTs possible via GPIO or USB serial adapters
– Requires additional configuration for UART over GPIO
Enough power for all devices – Provides 5V power via onboard regulator
– Can power LEDs, drivers, and basic peripherals
– May require external power for high-current motors
– 3.3V logic
– Capable of driving multiple devices
– Proper external power supply needed for motors and heavy loads
– Powered via a 5V USB-C port
– More than enough current for onboard peripherals
– May need dedicated motor controllers for high-power motors
Price ~$45 ~$10 ~$40

I will finalize my decision this week, but given the speed of development, number of pins, and power capabilities, I am strongly leaning towards the Arduino as a worthy investment.

Other tasks I did this week included peer reviewing presentations, and starting to research how to control the chessboard UI LEDs. I have not made a formal decision on this but rather than connecting each row and column to the board, I may export this labor to a LED matrix chip like the MAX7219 which is typically used to control 7 segment displays. This way, only three connections to the board, instead of 16, are necessary.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

My progress is on schedule.

What deliverables do you hope to complete in the next week?

I will make a decision as to which microcontroller to use early next week, as well as picking an LED matrix control chip, and making a circuit schematic to go with it. After that, I will spend the rest of the week researching backup libraries in case we cannot do on-board gaze detection and have to have the user face a screen with a virtual chessboard instead. I will also start preparing to give the design presentation.

Leave a Reply

Your email address will not be published. Required fields are marked *