E-Paper Device (EPD) based MiniNote module, powered by mbed on LPC1114FBD48. Shared in public domain with enclosure in 3D step format, hardware interface compatible with microBUS interface. Anyone can contribute on this project.
Table of Contents
This document briefs overall firmware design for demo and its low level API.
The E-Badge can operate in host and device modes.
In host mode, the microcontroller inside E-Badge manages all operations, resources and off-board peripherals. Consider it as a regular micro with EPD display. You can find similiar designs in most embedded systems, like a thermometer, visitor counter...
In device mode, it shares its display buffer and non-volitile memory to external hosts to display bitmap content. It receives ASCII or bitmap content, and display according to the command from host via UART.
NVMEM is 32KB I2C FeRAM. Since OED EPD takes 3096B as one screen.
We defines 8 screens for 32KB FeRAM with 1000*8 = 8000B free space for parameters and configuration storage.
Our demo firmware works in device mode. And we will offer other designs later on.
Host Command Set (Draft, under developement)¶
Since Firmata and RPCoverSerial are not update for block data exchange. I defined a simple STX/ETX + HEX format command set, which comes AVRlib, written by Pascal Stang, but all other binary fields are encoded by HEX.
(PS: I am not very confident since the original version accesses low level ring buffer)
STX(0x02) | STATUS (0x00) | TYPE(0x00) | LEN(HEX) | CMD(ASC) | PARAMS(HEX) | ETX(0x03)
STATUS & TYPE:
- 0x00 at this momement
- 0x20: Data transfer
- 0x21: Ident device to host
- 0x22: Download bitmap from host to frame buffer
- 0x23: Upload/Read bitmap from frame buffer to host
- 0x24: Save bitmap from frame buffer to NVMEM
- 0x25: Read bitmap from NVMEM to frame buffer
- 0x26: Paint EPD with frame buffer
- 0x27: Clean EPD display
- 0x28: Start slide operation
- 0x29: Stop slide operation
- 0x30: Init NVMEM to default
- 0x31: Load NVMEM to host
- 0x32: Write NVMEM from host
- 0x33: Init CFG to default
- 0x34: Load CFG
- 0x35: Write CFG
- 0x36: Print characters (ASCII for English only)
- LPC1114FBD48/30X, up to LPC1115FBD48
- 32KB ROM (up to 64KB)
- 8KB RAM
- GPIO + UART + SPI + I2C + ADC + PWM + Timer
- CP2102 USB/UART converter with LDO
- FM24LC256, I2C bus 32KB FeRAM
- 2.1 EPD from OED, 172x72, 2bpp
- mikroBUS shield via SlimStack connector
- native keypad for ISP and user operation
Low Level API¶
- mbed API for on board resources access
- NVMEM driver and management util
- EPD driver
- Font (ASCII)
- Graphic operation
- host command parser for STX/ETX format with modified CRC algorithm
- Command line python utilities over PySerial
- Bitmap converter
- Font manager for CKJ
- QRCode generator
- Line Art