Our final design far exceeded our initial expectations. Initially, we only planned on creating a single machine with card reader. However, after further investigation, we were able to figure out how the two wire interface worked, which allowed us to network several chips together. This then required implementing a network protocol of sorts to govern the communication between machines. This proved to be somewhat troublesome, as the protocol required the operation of a complex state machine.
In addition to the TWI, we were also able to implement the PC interface for the server and printer for the client. Both were less challenging than expected, though each required thourough understanding of each system's intracacies. For example, the serial connection for the printer was not the same as the standard connection provided in lab. Instead, the two data lines are reversed. We also needed to locate a serial port of the opposite gender. The PC interface was not as complete as we had hoped, since we also would have liked to implement a feature to allow the operator to change information on the entire system. Such functions would include resetting all the machines, polling for data, and changing the questions on the entire system. This would have allowed the entire system to be even more expandable and more robust. We had also aquired a text-to-speech module, but didn't have time to research and implement it.
The majority of the code for this project was done from scratch. However, some pieces were taken from past projects and modified in order to save time. Code for the serial port, pushbuttons, and timer interrupts were tweaked to work in our context. Menu code from the security system was also used as a basis for our PC interface. The video code we used could probably be reused by future generations who need text-only capabilities.Ethics
"to accept responsibility in making engineering decisions consistent with the
safety, health and welfare of the public, and to disclose promptly factors that
might endanger the public or the environment"
--Our design was made with usability in mind. It is relatively safe to use and poses little danger to the welfare of others
"to avoid real or perceived conflicts of interest whenever possible, and to disclose them to affected parties when they do exist"
--Our design was made in the best interest of a fair election or poll.
"to be honest and realistic in stating claims or estimates based on available data"
--We don't promise the moon, nor do we try to deliver it. Our design does what we describe.
"to reject bribery in all its forms"
--We took no bribes to bias the machine for any particular cause or organization. Data integrity from our perspective is safe.
"to maintain and improve our technical competence and to undertake technological tasks for others only if qualified by training or experience, or after full disclosure of pertinent limitations"
--We were able to learn a few new things in doing this design, knowledge that may be useful in the future.
"to seek, accept, and offer honest criticism of technical work, to acknowledge and correct errors, and to credit properly the contributions of others"
--The professor and teaching assistants were of great help when we got stuck on problems.
"to treat fairly all persons regardless of such factors as race, religion, gender, disability, age, or national origin"
--A card reader does not (and can not) discriminate.
"to avoid injuring others, their property, reputation, or employment by false or malicious action"
--Our design does not include devices that could cause harm with malicious intent. It's a simple polling machine that tallys up ballot responses.
"to assist colleagues and co-workers in their professional development and to support them in following this code of ethics"
--We've helped out other groups on several occasions when they had issues with hardware or software.