A Host Of Sensors And Arm 0 on a Serial port

This is a USB multi-function dongle that looks like a serial port to many host operating systems.  Then the serial port connects to an Arm 070 processor on the dongle using a simple serial protocol.    The Arm processor operates an Accelerometer/Gyro and Magnometer as well as analog or GPIO ports.

The board is 20mm x 37mm before the USB jack sticks out farther as shown.   The USB jack is intentially offset so that plugging this into an end slot of a Raspberry Pi set of USB jacks does not block the other USB on the other side.   Was just very hard to make this 5mm  narrower.

The idea here is to get a lot of very common robotic hardware IO to be accessable by simple connection to a serial port.   The CP2012 is common these days so it takes care of the USB to serial and then talks to the Arm STM32F070 M0 processor.

I have a custom 3D printed case for this dongle that looks like this:













The 3D accelerometer/gyro device is the LSM6DS3 and is controled from the onboard M0 spi bus.  This is a very popular and low cost accelerometer that in my studies has shown itself to be very low noise relative to a host of other devices.   With the onboard M0 my thoughts are the processor would take care of masaging the accel/gyro data as seen fit for what the host requires for the positioning system in use.

The Magnotometer is the LIS3MDLTR which is a 3D magnometer and is also on the SPI bus for fast, reliable access.

The use of the USB to serial CP2102 allows USB to work for situations like bootloader and also offloads a lot of USB firmware as well as frees up some pins on the M0.  The CP2102 also is key in that it supplies the processor and sensors with 3.3V from the USB 5 so I like it.
By not loading a resistor you can use this board as a basic RX,TX serial port to 3.3V too.

A ROS node has been written that at this time accesses two analog readings in order to implement an analog joystick or other set of signals to be published to ROS topic /cmd_vel or to /joy.  Since this ROS node may be of use for MANY other situations I have placed it on my github here   Note that this ROS node could be used for all sorts of other things but at this time it is a simple python ROS node so is easily convertable for other uses others dream up.

A tiny 6-pin jack supplies full ST-LINK connectivity so I can debug in my eclipse environment using openOCD and can also do firmware download with ST-Link tools.
It would be possible to place the board into firmware download over serial mode but for this a wire has to go to the BOOT0 line and a switch attached so that is not fully automated over USB at this time using lines of the CP2102 such as DTR and RTS.  Maybe some other PCB rev.

At this time a very simple onboard monitor that is accessable using console with it's own commands and return formats is onboard in the firmware.  Normally for such things I use a protocol with a checksum and so on but because USB is in use the 'physical link' is very sound so I have kept the protocol extremely simple with only a few basic checks since the serial chip is under 1cm and on the same board as the processor.

I am excited about this latest Mark-Toys board as the uses extend well beyond robotics and a simple serial protocol make it highly accessable for many uses.  There are commands to read  3D  accel,  gyro, magnometer or ADC values and commands to turn on repeated reports for these for debug as of Feb 2019.   

Mark-World - Tech Projects To Amuse The Curious
USB Multi-Port