This is my first Arduino project and I am looking any help from component suggestions to best (or better) practices to feasibility to libraries, methods, and such.
The device essentially prints a table look up on a segmented display based on position of a rotary encoder. The user interface will consist of a single button, a rotary encoder, and an 8 char, dimmable, display. The data set to display will be up to 300, 8 chars messages. The data set is to be user updated. It can use a serial port communications for now, but the intention is to use NFC.
Use case:
- User uploads table of 300 8 character messages to the Arduino from their NFC enabled smart phone (or for now, via serial port).
- Device shuts off after timeout.
- User activates device by turning the knob.
- User sets or “zeros” the Arduino device by turning the knob to the desired position and then pressing the button in a certain way to lock the position in as position zero.
- User selects a knob position.
- The corresponding message is displayed - corresponding as in encoder position 3 from zero relates to the third row or message.
- User adjusts the brightness coefficient that the auto-dimming display uses via some combination of button presses and/or knob turning.
- Device shuts off after timeout.
Communications. The encoder and the display will be separated, and perhaps the NFC component as well, from the Arduino but 1-10 cm. While the encoder is not too big of a deal, I do not want 60+ wires running through a very confined space to the display. i2C? 1-wire? SPI?
A writable NFC tag could hold the data set and not require the device to turn on in order to update the data, but could the “firmware” be updated via the passive tag? Could I use the writable tag as external storage and never copy the table to the Arduino?
Anyone with NFC experience that can recommend methods and components?
Encoder. The encoder axle has a resolution and spline count of 120. For 300 positions, the rotary encoder must be multi-turn. The encoder position will have a “field set” zero. If the spline lines up in between an encoder pulse it might mess things up. What’s wrong with having a 1000 pulse per revolution encoder and then programing a change in position requires 6-10 pulses?
Memory. How much memory does 300 8 digit messages take? what about 300 8 alpha numeric messages?
Being a multi-turn encoder, I do not think I can find an absolute position encoder (?) so I will need to count the position changes, but the count needs to survive a power down (low-power requirements). While the table will not be updated 100,000, the count will be. I could do some write leveling on the EEPROM or does the the flash memory survive the power cycle? If so, what is the value of EEPROM?
Display. 8 char display or an 8 digit display. It seems like a big jump from 7 segments to 14 segments. But the alpha char could be more user friendly even if not required.
I am looking at segmented LEDs because I think they are more power efficient (?), because I think I can use PWM to control the brightness (even if they are multiplexed?), and because I think I can use the LEDs to sense the ambient light. If I use an e-Ink display, then I will be on to a dedicated light sensor and a back light. http://www.nexternal.com/eink/6-x-14-starburst-p20.aspx
For my first build, the size is not terribly important, but it needs to be on the small side. Any suggestions on display and corresponding components & library?
Power. The device is going to be pretty dang small and there is no room for an AAA or 9v batt. There is one cr2032 and rehabs I can modify the chassis to have two cr2032. Can I run off of 3v or do I need 5v for the Arduinos that can do the above?
Any ideas on powering up from the encoder?
Misc. Ballpark numbers on how many hours this would take an mid-range/skilled (not me, a newb) person? The guess can exclude the NFC bit and rely on a wired serial connection only for the data set updating.
Which Arduino should I get? low power is nice, but I need:
- enough surviving mem for the data set (unless the NFC tag can store it)
- enough PWM pins if it is to be used on the display lighting
- enough SPI pins if that is used on the encoder, NFC, and display + serial port
- I want to use a USB connection for development, but that could be a separate device.
Thank you for your brilliant insights!
br, tom