RC Car Drone

Arber Nicaj - Manager
Arber performed various technical tasks throughout the project. He was fortunate enough to meet the sponsors in person and gain knowledge on the motor regarding definitions on saliency, how the different windings affect the BEMF and how the HFI algorithm works. He modified the HFI algorithm and taught the team how to use it. He also tested the differences between the HFI algorithm and instaSPIN algorithm to determine which one was best to use in different situations (smooth or rugged terrain). He was responsible for hardware connections between the Bluetooth module and the C2000 microcontroller. Once connected, he made sure the right pins were enabled in the Piccolo microcontroller so that the microcontroller could receive the data being transmitted and added the communication code to the instaSPIN algorithm so that it could receive data through Bluetooth. He assisted Matt in integrating the motor to the DRV8301 EVM and platform when the hardware was combined together.
Once the team suffered problems with the controlCARD, he performed various hardware modifications and tested to power the C2000 controlCARD independent of using the DRV8301 board as a docking station. This test included shorting two sets of pins in order to power the C2000 controlCARD with a USB connection to verify functionality. This test verified a new microcontroller was needed and allowed the team to utilize a different microcontroller in order to have a video demo. Other hardware failure tests focused on the DRV8301 board and BT module. Arber checked connector J1 to verify the correct power was being supplied by the control board. The examination allowed the team to find some power pins working incorrectly with one pin physically altered. A continuity test was performed to examine the issues of the BT module. Arber also researched different programming languages and code to interface the Bluetooth module and utilized Leo Estevez’s blog on REKAM1 to offer code suggestions to the team.

Michael Price - Webmaster
Michael was responsible for all of the Android programming in Java. Throughout the course of the project, he worked on the user interface, phone-to-board connection, and data logging. For the user interface, he developed both modes of operation: manual and drone. For the manual operation mode, he included a simple button-based interface with buttons positioned near where the user’s thumbs naturally rest when holding the phone. Each button was tied to a listener event that would send the appropriate byte to the microcontroller when called. For a more precise control scheme, Michael also developed an accelerometer based interface. This interface retained the buttons for forward and reverse but eliminated the need for the left and right turn buttons. Using sensor data from the phone, Michael converted the component of gravity acting on the y and z-planes of the device into the steering angle and throttle respectively. This design solution allowed for a user-friendly solution to precisely control steering without having to search for a button.
Michael also developed the Bluetooth interface code between the phone and the chip. This involved enabling Bluetooth, discovering and pairing a device, and establishing and maintaining a Bluetooth socket connection. Michael tested the Bluetooth chip using an oscilloscope to study the bit pattern to be read by the microcontroller. After establishing the format for the bytes sent over Bluetooth, he designed the bit pattern that contained function information. In order for easier testing, he chose the most significant bits to specify the function and the remaining six bits to specify the degree. The three functions were forward, reverse, and turn. The fourth function was reserved as an idle state to ensure that the car would not inadvertently begin moving no matter the state of the degree bits.
In order to operate as a drone, Michael added some functionality to support image capture and GPS location tracking. This required accessing the location services of the phone and displaying the coordinates in a textbox on the GUI. The picture functionality consists of a button to open the camera and a small image preview icon to display on the GUI itself.

Brandon Briegel - Document Wizard
Brandon in particular devoted extra time to proofreading many of the documents and reports written through the semester. This included setting up the team’s schedule to ensure deadlines were tracked and met in a timely fashion. Brandon also aided each team member with specific tasks throughout the semester. Towards the beginning of the project, he heavily researched BLDC motor and platform options and created a spreadsheet comparing the viable options for the final design. Next, Brandon worked closely with Jerrod to initially set-up and test the motor functions. After getting the motor spinning, code was written to test the motor and servo with pre-programmed functions. With both Brandon and Jerrod being familiar with C programming, they were an effective team for initial testing.
Another contribution was assisting Mike with the conceptual design of the Android phone interface. With Mike as lead developer, Brandon helped make a rough draft of the GUI layout in Java. Various functions and troubleshooting Java issues were also under some of Brandon’s responsibilities. Brandon ensured the team effectively communicated their progress to each other every week to prevent ambiguity and focused task work.

Matt Henry - Presentation Guru
Matt worked diligently on polishing the beginning and final layouts of our various slideshow presentations for maximum appeal. This included creating templates for the rest of the team to expand on in classroom presentations. In addition to preparing the presentations, he spent his efforts overseeing the hardware aspects of the project. Before ordering parts, Matt worked alongside Brandon in researching motor types and characteristics. They searched through motor distributor websites as well as the TI motor control datasheets to find the best match for the project. Once all the parts arrived, he was tasked with integrating all components onto the platform. This included securing the batteries, servo, motor, and control board. Securing the motor required creativity and resourcefulness. This was done by drilling a hole into the platform lowering the motor and holding it in place with twisted wire. Another critical step was creating and implementing the motor shaft adaptor allowing the motor to drive the car. This was important because without it, the car would be unable to move. After drawing a sketch, he worked with Greg Mulder in MSU’s Electrical Engineering workshop to select the material to use in creating this part. Next, Matt obtained and machined the Plexiglas mount which houses the DRV board and separates the microcontroller from other hardware components. This was done with assistance from MSU’s Mechanical Engineering Laboratory staff. Once all components were machined, he was responsible for connecting them effectively and efficiently onto the platform. Finally, Matt assisted in the testing of the final completed platform. This involved connecting the function generator to the servo and supplying power to the DRV. When problems arose he searched through the microcontroller datasheet to find the correct pin locations. He then tested node voltages to locate the source of the error.

Jerrod Kempf - Lab Overlord
As lab coordinator, Jerrod worked with Roxanne Peacock in order to place the various part orders throughout the semester. Regarding technical work, he focused primarily on the programming of the controlCARD regarding both the motor and servo control. To do this his first task was focused on understanding the capabilities and connections of the DRV8301 EVM. This involved checking various board specs as well as locating various GPIO/UART/ePWM pins for use in incorporating other components of the drone. This also allowed the team to make educated decisions on the various parts that were ordered regarding their technical specs. From here a preliminary GUI communication strategy regarding several discrete speeds / steering positions was devised and was implemented in software. This involved creating a scheme where after receiving a certain command over Bluetooth, logic was implemented to change the motor speed or servo position accordingly. His main focus for motor control was with the instaSPIN algorithm in order to initially get the motor operational for the team. After incorporating the servo for the system using the ePWM capability of the controlCARD, this had to be reworked since all ePWM capable pins were being used by the motor. To resolve this, GPIOs were used to change the PWM scheme created by an external MSP430 LaunchPad. Jerrod also helped mount the servo within the car and do the testing of the pulse width requirements to turn the front end appropriately.
