This is an individual assignment.
You will build a text-entry device that only uses discrete inputs (switches). The device will show characters you type on its screen. At a minimum, the device has to cover the lower-case alphabet and the space character, so you can type complete phrases such as "hello world".
The reading for this week included examples of various text entry techniques: multi-tap, T9, five-key (direction pad), or chording. Choose one of these techniques (or another one you found for your reading response, or have been inspired to build since) and create a working text entry device. This will involve the following steps:
- Design a key layout: you may want to use momentary switches, or construct your own switches using wire and copper tape.
- Solder the IDD HAT. Instructions here.
- Wire switches to your microcontroller.
- Write Java code for the Pico Pro (using the Android Studio IDE) to read and interpret switch states. This may require taking into account debouncing, timing (for timeouts in multi-tap) or the states of multiple switches (e.g., for chording).
- We are providing you with the SimplePicoPro library which makes it easier to write code for this assignment. Please read the documentation: Programming with the SimplePicoPro Library (this is an evolving document).
- A template to get you started is here: https://github.com/bjo3rn/idd17-project-template
- Output characters to an attached display (or to another computer via Serial communication).
- Some techniques such as five-key input will also require you to write display logic on the device or another computer (e.g., to show the user which key is currently selected). Multi-tap and T9 can also benefit from intermediate feedback to help users disambiguate between multiple options or show them the current interpretation of the input so far.
- Design an enclosure or mounting board to hold your circuit and switch layout so it can be robustly operated without falling apart.
We suggest you first breadboard your circuit, then figure out how to mount the switches and how the user actuates them.
Turn in instructions
Please submit a writeup with images and links to a video.
Write 1-3 paragraphs about your implementation:
- URL to your GitHub repo (see below).
- What text entry technique you chose and why.
- How you implemented character recognition (i.e., how your code works)
- How you constructed the physical device
- Include images. At a minimum:
- A photo of the final device you constructed.
- Include a wiring diagram - we using recommend using Fritzing. Use the Raspberry Pi part as a stand-in for the Pico Pro. Alternatively, you can submit a hand-drawn diagram.
- Reflection: what you learned from this assignment (also let us know if this was too easy or too hard)
- Record a short video of you typing the phrase "hello world" or "device design". Make sure your video shows both your actions and the text appearing on screen at the same time. You can either link to a Youtube/vimeo/... video or you can upload a source file directly to bCourses - but please keep your file size < 50 mb.
Link to your code
We'll use GitHub repositories for your code this semester.
First complete the Set up GitHub account assignment.
NEW: Once you have accepted your invitation to join the "idd-fall17" organization, use the following URL to create a repository and submit your homework using github classroom: https://classroom.github.com/a/0_ienRLN . Click on "Accept this assignment" - this will create a new repository named "hw2-username" (with your username) and copy the idd-template into it. You can then check out this repository in Android Studio using File Menu->New->Project from Version Control->Github. Enter the URL of your hw2 repository, e.g. https://github.com/idd-fall17/hw2-bjo3rn . You can then commit your changes with VCS menu -> Commit Changes...
OLD instructions in case the above doesn't work:
- Create a repository with the name hw2_username_title where username is your github username and title is a short mnemonic to help us remember which project the code refers to (e.g., "hw2_bjo3rn_multitap").
- When your assignment is complete, transfer ownership of your repository to the idd-fall17 organization: https://help.github.com/articles/transferring-a-repository-owned-by-your-personal-account/
- Don't update the repository after the submission deadline if you do not want to incur a late project penalty.
- We suggest that you add as the technical information (circuit diagram, description of functionality, photos) as documentation to the github project (e.g. as the README.MD file) so you have all this information in a single place (You only have to put this information in one place - either on bCourses or on github). Since these repositories are public, it's up to you to send us reflections and any other personal thoughts you want to keep private using the bCourses submission interface.
Q: Can I use more than 10 total switches?
Q: Can I use different switches than the ones provided by course staff?
Q: Where Can I pick up supplies?
A: We will bring them to class on Wednesday.
Q: What voltage should I use?
A: Use 3.3V supply, NOT 5V.
Q: How should I wire up my switches?
A: Use pull-up resistors, NOT pull-down.