J2B - LPC1343 Based Universal Man-Machine Interface (MMI) Module [110274]
Let's Stop Reinventing the Wheel!
Let's Stop Reinventing the Wheel!
The type of displays usually used in amateur projects generally have either 2 lines of 16 characters (2×16), or 4 lines of 20 characters (4×20). There are rarely more than four buttons, but rotary encoders are increasingly being seen. For circuits using a 2×16 LCD, the buttons are often below the display; for the 4×20 displays, they are more likely to be mounted to the side. The position of the buttons depends on the application and the user; a right-handed person tends to position them differently from a left-handed person. A universal solution must take all this into account and allow a free choice of the LCD and the position of the buttons.
Even though I’d originally had the idea for this circuit several years ago, I started actually building it quite recently, when for the umpteenth time I needed to add an MMI to a circuit that didn’t have enough I/Os free; so I needed an additional port extender. Since NXP brought out their 32-bit ARM Cortex-M3 and M0 microcontrollers, cheaper than port extension devices, an ingenious and inexpensive solution is now possible. Particularly interesting for amateurs, this is the LPC1343, currently the easiest microcontroller to program. No need for a programmer or an RS-232/USB adaptor — this microcontroller is presented quite simply as a USB stick onto which all you have to do is copy the software (only works under Windows; using Linux or MAC OS, you have to use a serial link or a special programmer).
Using a microcontroller like this as a port extender, we get USB, I²C, and SPI ports or a UART for communicating with the application. If we note that in most applications managing the display and the keyboard takes up easily 80 % of the software, we can likewise envisage having the whole application run by the microcontroller – especially when we have the computational power of a 32-bit processor available. So, instead of adding a port extender to an application, we can add an application to a port extender. Since the microcontroller is only available in an SMD package, I decided to use only SMD parts throughout (with the exception of the connectors and keyswitches). In the relatively confined space, cluttered with connectors, this allowed other functions to be added, like powering by rechargeable batteries or primary cells, and a charger for Lipo batteries. This means that the board is also suitable for mobile applications. And to round everything off nicely, the board dimensions are suitable for a standard, cheap case, for a neat, robust finish for your project.
- Suitable for 2×16, 4×16, and 4×20 LCD displays using a standard 14- or 16-pin connector (the latter if backlight is included), software-controlled backlight
- 5×6 matrix keypad for a maximum of 12 keyswitches or nine rotary encoders with built-in push-button (equivalent to 27 pushbuttons!) or a mixed configuration
- Buzzer
- One LED
- Power via USB, external 5 V supply, primary cells (0.9–4.5 V) or Lipo rechargeable battery
- 5 V and 3.3 V regulators, software on/off control possible
- Lipo battery charger, plus software measurement of battery level
- 32-bit, 48-pin LPC1343 microcontroller with 32 KB Flash memory, 8 KB RAM and numerous peripherals like USB, I²C, SPI, MLI, UART, and counters
- Compatible with the free LPCXpresso and CooCox IDEs
- Compatible with the LPC-Link and CooCox programmers/debuggers
- Extension connectors: almost all the microcontroller pins are available on a connector or a pad
- Splittable! Certain unused parts can be cut off; detachable mini 4-key pad or a maximum of 3 rotary encoders
- Dimensions adapted to Type 26160000 case from Bopla;
- Open source software and hardware.
Discussie (0 opmerking(en))