Restrictions

Bare Metal Requirement

You are encouraged to use the ATmega328P for your final project, however if you prefer to use a different microcontroller, you will need to get approval from the instructor. Your microcontroller must run bare metal C; using Arduino .ino style firmware will result in a 0.

There is one exception to this rule - the ESP32 Feather Wi-Fi module. This may be used as a module to bring Wi-Fi to your project, but should not be running any application code. An example use case: You want to connect an RC car to your smartphone to drive around. Though the car is driven by application code on the ATmega328P, it communicates with the Feather module to send and receive data from the smartphone.

External Libraries

All code must be original with the exception of the standard C library, the AVR libraries, libraries provided for the labs, and the FreeRTOS libraries. If you choose to include external libraries instead of writing your own (e.g. WiFi, SD card reader, LCD, etc.), you must demonstrate in the final report that you understand how the library works in depth (e.g. what is the communication protocol, how is data being transferred, structure of the library, etc.) in an appendix. Additional points will not be given for the use of libraries but points will be deducted if a library is used and is not explained in  the final report.

If you have any questions, please contact the teaching staff.

Batteries

If using batteries, you are only allowed to use NiMH or NiCd chemistries for your final project. This is due to current safety restrictions from UPenn EHRS

Submission Requirements