This semester, we architected solutions to simplify the hardware and software interfaces for the Raspberry Pi Car used in Introduction to Engineering Design.

Dr. Jim Feher teaches Introduction to Engineering Design, one of the first laboratory classes many Electrical and Systems Engineering majors take at Washington University. In this class, students are taught how to collect, filter, and analyze data and then use that data as feedback for control models. These theories are then applied to the design of an autonomous system such as the Raspberry Pi car. However, most students in this class currently spend much more time debugging their systems than they do designing it, often to the point where they fail to achieve some of the course objectives.
Given these issues, our goal for this project is to design user-friendly, modular hardware and software that students can easily understand and interact with. We believe that this will allow future students to focus more of their time on applying their knowledge about control theory to real-life systems, which undoubtedly will help prepare them better for future classes and their careers as engineers. We also hope that the modularized hardware and software will provide students the possibility to use their imagination to come up with new projects with different sensors, not limited to the Raspberry Pi car.
Hardware Solution
To simplify the current wiring of the current car design, we created a clip-on Pi expansion board. Our design also provide other designated features, such as power isolation, low battery indicator, A/D converter, MUX for limited GPIO pins, PWM, etc.
Software Solution
To overcome the current threading issues, we used the Robotic Operating System (ROS) framework. We wrote nodes for each of the sensors and the actuator, and we designed the communication protocol to facilitate the transfer of data across this network.
Special Thanks
We would like to thank Dr. Wang and Dr. Feher for their guidance and advice throughout the semester. We would also like to extend our gratitude to Zach Vernon and Alex Acevedo for their collaboration and troubleshooting help.