Off-board connections are kept to a minimum (see pinout). These provide:
- Serial port for programming and configuration.
- Spy-Bi-Wire for debug.
An FRAM-based microcontroller was chosen for its low power consumption and low-cost-per-unit. It also a has a free Eclipse-based IDE.
It is vital that the microcontroller records samples at an accurate time interval. This adds fidelity to sample timestamps calculated by the decoder. The RC oscillator in the microcontroller is too unstable. This justifies a 32.768 kHz watch crystal, which also reduces power consumption.
The load switch splits cuplTag into 2 power domains:
- VDD (always-on) powers the microcontroller and its LFXO.
- VMEM (switched) powers the NFC EEPROM and humidity sensor.
The cuplTag spends most of its time in sleep mode. It wakes up for a few milliseconds each minute. Current consumption in sleep mode dominates the average, so it must be minimised. The microcontroller is designed to draw ~1.5 µA in sleep. By contrast, the NFC EEPROM has a very high current, including 10 µA of leakage through its I2C pins. The load switch fixes this; VMEM is only powered on when the microcontroller is active. Functionality is not compromised: a phone can read or write the EEPROM at all times (it is powered from the field).
The EEPROM has two interfaces:
- The microcontroller writes a cupl URL (and reads configuration messages) via I2C.
- A phone reads the cupl URL (and writes configuration messages) over NFC.
|EEPROM size in bytes||1024||Includes configuration registers|
|Useable bytes||888||Maximum length of the cupl URL|
|Preamble 16B-blocks||up to 7||For domain name, protocol, status, serial etc.|
|Circular buffer 16B-blocks||48||For storing environmental sensor samples|
|Temperature + Humidity||Temperature only|
|Circular buffer samples||192||384|
|Log duration |
@ 1 sample / 10 minutes
|1 day 8 hours||2 days 16 hours|
@ 1 sample / 60 minutes
|8 days||16 days|