Key takeaways from the project were:
Keep the design and ideas as simple as possible from the get-go. The idea is to meet all the requirements first and then add more features to the project.
Start rapid prototyping early to ensure mechanism works. You can test moving parts by moving it manually or power with servo/dc motor with simple commands.
Start early as integration takes a long time.
When leaving each session, be aligned on who will be doing what, and set ambitious internal deadlines. Things take longer than you think.
Think through the ways you will be mounting your components - it can be very hard to keep track of everything mentally and you will want the mounts to be removable for debugging. 3D-printed frames would be a great option if you have the time
Remember to commit frequently, especially at each significant milestone of the project. Frequent commits are crucial for troubleshooting when integration issues arise in the hardware/software combination.
Before diving into software implementation, write pseudo-codes. This step helps in refining the design of your functions. Make sure to document the input and output types, along with the functionalities of each function.
Always keep your schematics and diagrams (like FSMs) up-to-date with any modifications. This ensures that your documentation accurately reflects the current state of the project.
When working with PIC32, particularly for setting values on pins, use the Latch Register instead of directly manipulating with PORTAbits.xxx = xxx. The latter approach is not robust and can lead to undesirable behavior.
Paint the housing before assembling it to avoid paint from potentially damaging electrical components.