Mark-World - Tech Projects To Amuse The Curious
This page gathers together robotic related subsystems that seem good choices for reuse and sharing.  All of these came from assorted robots I have made and will likely be used again later  in future robots here on Mark-World and Beyond!

RoboClaw With Modified Serial Driver

An RoboClaw 7-amp dual motor controller with wheel encoder support is a key element to movement of the bot.

Software done by Mark-World includes modifications of a USB based driver to support the RoboClaw packet based serial mode (one-byte checksum protocol).

The mark-world base_control ROS node is then using the serial packet driver in stead of USB which can be a source of grief for many robot developers.  
RoboClaw is used on FiddlerBot and Robo Madge-Ellen

This subsystem offers 6 classic HC-SR04 sonar mounted with custom 3D printed supports.

The unit has an onboard Raspberry Pi Pico processor and talks to a host over a 3.3V serial line that uses a simple checksum protocol for data integrity.
The sonars are arranged to give full coverage of half of  180 degrees.
Proximity Sensor Module

An 8-sensor proximity subsystem that uses an Arduino Nano to  scan the sensors is used.

This sketch initializes and monitors the 8  1-meter time of flight (TOF) sensors where each sensor is an ST Microcomputer VL53L0X little sensor used for each sensor.

The 8 sensors are attached to the 3D printed hub and the arduino is on the bottom. 

Source code in ProxSensors on mjstn github 

7 Channel Line sensing Serial Subsystem

The line sensor board uses an Arm M0 processor that drives the IR detector units and takes analog readings of each detector.   A main use would be for a line sensor under a robot.

A host talks to this board using a serial port protocol that allows different formats and adjustment of detect parameters all from the host.

The onboard Arm M0 is an STM32F031 with GPIO lines that have enough current capability to safely drive the IR leds so it' s a fine match for the ADC

TFT Color Display Driver
A 1.8" color display that uses the ST7735 controller is handy for small bots. The display is driven using 4 GPIO lines for SPI bit-bang.

A low level driver has been modified to work well in C on Gcc Esp-32 dev environment. 

A set of higher level graphics calls to draw graphs and checkboxes were also formed.

This is running now on a 3.3v based system called EspressoBot here on Mark-World so check it out.

My goal is to have code posted in Nov2017. 

Look for 1.8" TFT display ST7735R breakout board on AdaFruit or look for ST7735 units on Ebay.
I2C Expander With ADC/DAC/Relay

Here is a versatile system expander board that sits on the I2C bus of a host processor for a robot or IOT device.


I hope to have a separate page to document this but in the mean time here is a summary of it's capabilities.


  • 4-input ADS1115 16-bit ADC to a JST jack or other 0.1" jack.  The range is a full 0 to 3.3V
  • Two MCP4725 12-bit DACs that can remember their settings once set even if power is turned off and on.
  • A jack and mounting to hold a common 1.3" OLED display that piggybacks on top of this board.
  • 4-Pin I2C jack that is meant to go out the back to plug into a host I2C expansion jack if that works for you.
  • An I2C expander jack for either the input to host or output to more devices. This jack can hold a JST jack
  • An 8-bit PCF8574 IO expander wired in a flexible way to supply choices of the next items listed
  • A green and a yellow LED on upper bits of 8-bit port
  • Two switches that can read low if pushed
  • Up to 6 high voltage relays driven from ULN2003
  • Separate jack with ESD protection for several other optional direct access to the PCF8574.
Solar Compass & Accel/Gyro Subsystem

This board features 24 solar sensors and a pole to yield about 7 degree accuracy of the position of the sun. An Arm M0 processor scans the  IR detector.  

A host talks to this board using a serial port protocol

The Arm M0 is an STM32F070 with built in ADC.  The M0 also has an LSM6DS3 Accel/Gyro. The Accel is important to know the tilt of the compass. There is also a LIS3MDL magnometer monitored by the M0.
Motor Controller with Serial and BLE
Multi Sonar Range Subsystem

This Esp32 based motor controller subsystem is made up of our Esp32 Dev board that then controls an off the shelf H-Bridge style motor controller.  You can then pick your level of power the motors.   We demonstrate this motor control system on our DroidBot which uses the ArduMoto H-Bridge controller but most any PWM motor driver is fine.

The new motor controller Esp32 software accepts serial packet inputs with checksums to set speeds, read wheel encoders or set config parameters for the onboard PID control loop for the motors.

This controller can be operated as a Bluetooth LE GATT server using our EspBot Android App for manual human control or as BLE operated subsystem for wireless interface.
Robotic Subsystems