Some component testing.....


Electronic Interfaces

This blog describes the interface for all of the GraffitiBot sensors and actuators.

The GraffitiBot beast includes 18 sensors, 10 motors, a mSD card, an LCD, a Bluetooth radio, a capacitive keypad, and 2 Cortex M4 MCUs. The capacitive keypad actually boosts the number of sensors to 30.


The STMicroelectronics Sensor Tile has a whole suite of 14 sensors plus an MCU and radio all on a tiny card 13.6 x 13.7 mm:

  • It has a high performance LSM6DSM MEMS motion sensor which includes 3 orthogonal accelerometers and 3 orthogonal angular rate sensors (3D gyroscope) all squeezed into a 2.5 x 3 x 0.86 mm package.
  • It has a high performance LSM303AGR compass module which includes 3 orthogonal magnetometers and 3 orthogonal accelerometers in a tiny 2 x 2 x 1 mm package. The data from this chip has 16 bit resolution.
  • It has an even smaller LPS22HB pressure and temperature sensor in a 2 x 2 x 0.76 mm package. The pressure has 24 bit resolution and the temperature has 16 bit resolution.
  • It has an MP34DT05-A micrphone in a 3 x 4 x 1 mm package.
  • It has a BlueNRG-MS Bluetooth 4.1 module.
  • And it has an STM32L4 Cortex M4F MCU to read all these sensors and peripherals.
  • The Sensor Tile plugs onto a carrier module that adds a USB connector and a micro SD card connector all on a card only 31 x 17 mm.
  • The carrier module in turn plugs onto an arduino compatible shield, which in turn plugs onto an STM32F411RE MCU.

The TE Connectivity sensors include:

  • an FX1901 compression load cell. I have designed a signal conditioning card for this sensor that outputs an analog voltage proportional to the force applied.
  • a contactless magnetic angle sensor that includes 2 anisotropic magneto resistance Wheatstone bridges. I have designed a signal conditioning circuit board for these sensors that outputs an analog voltage from each bridge.
  • a NB-PTCO-187 platinum thin film temperature sensor which has a thermal time constant of 0.2 s. I have purchased a signal conditioning module based on a Maxim MAX31865. This chip converts the RTD signal to digital with a 15 bit A/D.


There are 8 aquarium pumps which each have a motor. I have designed a PCB with a port expander and 8 large FETs to drive these pumps.

There is a main DC drive motor for the GraffitiBot that will be driven by a motor controller based on a Texas Instruments DRV8830 H-bridge motor driver.

There is a steering motor which may be controlled by a servo driver module – this may change but a PWM controller based on an NXP PCA9685 is on order.

There is also an SPI LCD in the GraffitiBot


The MCU needs to talk to 41 devices which ends up to be a large number of interfaces for an MCU to handle. The sensor tile shield leaves just enough pins to connect the LCD and the analog sensors. There are not enough pins to control the motors or read the temperature sensor so I have had to try and control all the motors and read the RTD through the I2C interface. There aren't any pins left for control switches, so I had to add an I2C keypad.

I have started design of a PCB to connect all of the sensors, motors and peripherals to the MCU but I'm still struggling to find pins. Although I'm using I2C for most of the interfaces, it often requires an extra pin to tell the MCU its status. It is going to take some time to dive into the detailed handshaking requirements of every peripheral and devise ways to implement adequate interfaces.

Here is where my pin mapping stands right now....the conflicts are tentatively resolved...

At least I have designed and ordered the other 3 PCBs that the project needs.

At last count the system will have at least 13 PCBs.

Most of the electronic components are either received or on order.

I have some of the mechanical parts on order or in stock, but have not started designing all the 3D printed parts that will be needed.

I have been focusing on hardware to try and get it all on order, but I haven't looked at firmware and there is a significant risk that there are firmware constraints that will present issues for my hardware choices. However, to have any chance of completing this project, I will have to take some risks.

Time will need to be carefully managed as my day job is about to go ballistic in the busy sense and there will be several international trips involved. I had to interrupt the last PCB design just to try and stay up with the blogging requirements...




Relevant Links

Sixth Sense Design Challenge: About This Challenge

Sixth Sense Design Challenge: Technical Documents

Sixth Sense Design Challenge


GraffitiBot Project Blogs

Sixth Sense GraffitiBot - blog 1

Sixth Sense - Kit Unboxing and Other Parts - GraffitiBot blog 2

Sixth Sense - Sensor Circuits - GraffitiBot blog 3

Sixth Sense - Interfaces - GraffitiBot blog 4

Sixth Sense GraffitiBot - System Interconnect - blog 5

Sixth Sense GraffitiBot - Wheels & Motors - blog 6

Sixth Sense GraffitiBot - ST Sensor Tile App - blog 7 

Sixth Sense - Load Cell PCB - GraffitiBot blog 8

Sixth Sense - Magnetic Angle Sensor - GraffitiBot - Blog 9

Sixth Sense - LCD Interface - GraffitiBot - blog 10 

Sixth Sense - Pump Controller - GraffitiBot Blog 11

Sixth Sense Main Drive Motor - GraffitiBot - blog 12

Sixth Sense Motor Controller Mods - GraffitiBot blog 13

Sixth Sense - RTD - GraffitiBot Blog 14

Sixth Sense Mechanical Design - GraffitiBot Blog 15

Sixth Sense GraffitiBot Motor Wiring - Blog 16

Sixthe Sense GarffitiBot - First Dry Run - Blog17

Sixth Sense GraffitiBot Hydraulics - Blog 18

Sixth Sense GraffitiBot Printing Graffiti - Blog 19 

Sixth Sense GraffitiBot - Summary - Blog 20