Reflections

Jeremy

1. What did I learn?

I learned many different important skills from this project which will help me in future design instances. I have developed a solid proficiency in C based embedded systems design as well as how to integrate numerous different modules to achieve the desired outcome. I have also greatly developed my skills of design and how to plan and execute the construction of a system.

2. What is the biggest problem I faced and how did I adapt to it?

The biggest problem which I faced when working on this project was the physical design. In other words, the mechanical portion ended up being the most challenging aspect as we had to build a physical system which would properly execute the purpose of the written code. The most challenging part of the physical design was coming up with an acceptable way to dispense the pet food in controlled amounts. Our initial design of the food portion included a funnel to store the food with pipe connected to the bottom and metal piece which would control the flow. It ended up that no matter what we did, we could not get the food to stop jamming at the junction between the pipe and the funnel so we had to scrap that design fairly late in the project. Having only limited time to come up with a completely new design was challenging but we ended up creating a fairly effective mechanism to control the food flow. The biggest part of overcoming the challenge was accepting that our initial design was not going to function like we wanted no matter what we did to it. So the hardest part of that was biting the bullet and starting from almost scratch on that portion of the design, but it worked out in the end for the most part.

3. What did I learn from the problem and how will it impact how I design in the future?

From this problem, I learned that if something doesn’t start looking better with the more time put in, you have to learn to accept that it may never work how you want and you should just start over. It’s extremely difficult to abandon something you spent so much time on but in the end it can be for the best. I also learned that you must allow solid items like food enough space to travel though areas in order to prevent any potential jamming.

Thomas

1. What did I learn?

Throughout this project I learned and reinforced many different concepts relating to both C programming and programming for embedded systems. The main software element I learned was the real time clock, learning how to configure it to keep track of the time. I also learned a great deal of the design process that goes into projects of this scope. Instead of being given a task to follow like for the labs, we came up with the task and had to plan it ourselves. This has given me a better insight into how to plan accordingly for all aspects of a problem, rather than jumping right in immediately.

2. What is the biggest problem I faced and how did I adapt to it?

The biggest problem I face during this project was using the real time clock. I was successfully able to use it to set and keep track of the real time. However, my problems arose when trying to use its associated interrupts. After setting up alarms for certain times throughout the day, the interrupts would not trigger when the real time was met. This caused some trouble as the real time interrupts were to be used to start the feeding process. To adapt to this problem, I wrote a protothread that would act as an interrupt. This thread would always be running and would set an alarm for the next meal time that was supposed to occur based on the hour and minutes values in their corresponding arrays. The thread would then check the current time of the system with the alarm. If these times were the same, a variable named dispense, initially set to 0, would be set to 1. This would allow the interrupt responsible for the food dispensing process to begin. After the food was dispensed, dispense would be set to 0 and the protothread would set the next alarm and resume checking it against the current time.

3. What did I learn from the problem and how will it impact how I design in the future?

 From this problem, I learned that if something is not behaving like it should, then there might be a work around that can be implemented to achieve similar functionality. When the real time interrupt did not work as I had anticipated, I was able to find to achieve the functionality I had wanted with a protothread. For future designs, however, I will make sure to do more research on the elements I am planning on using to make sure they will behave as intended. This would reduce the probability that a work around would have to be used.