Cricket Receiver


The Cricket Receiver [schematic] is based on a Microchip PIC18F14K50 USB micro controller.
Other major parts include:
Quasar QAM-RX4 433MHz AM radio receiver
Microchip MCP6282 dual low-power opamp, which amplifies the signal received from the
Prowave 400SR16 40kHz ultrasonic transducer

External connections

USB device port
I2C slave port
ICSP connector


The firmware of the Cricket Receiver is written in C and build upon Microchip's open-source USB Framework. As a USB device, the Cricket Receiver implements the Communications Device Class (CDC). As a I2C slave device, it implements a simple read-only device with a 3-byte address space.

Used as a “smart sensor” in a I2C network, the Cricket Receiver is connected to a I2C master, which polls the device for new sensor readings by reading one byte from the slave address (80 decimal by default). If the byte is non-zero, it has new data, and the value represents the ID of the Cricket Beacon which was seen. The subsequent two bytes are the LSB and MSB of the 16-bit time-difference-of-arrival between the radio and ultrasound signal received from the beacon, measured in microseconds.

Used as a USB peripheral device, the Cricket Receiver implements a subset of the MIT Cricket command protocol (the commands related to Listener mode) as specified in the Cricket User Manual.
The extra command “AD” is added for setting the I2C slave address, e.g. “P AD 40” would set the I2C slave address to 40 (decimal). The slave address is stored in non-volatile memory, without having to issue a “P SV” (save) command.