Some component testing.....
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.
- 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.
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...
GraffitiBot Project Blogs