1 Inch Rover

A small robot for the 1 inch square competition. It will at least have 2 motors a sensor, hopefully more than 1.

Similar projects worth following
This is a simple little rover for the Square Inch project competition. See .

I am using Upverter to make the design so the design, BOM and gerber files are at :

Part selection was mostly based on what I had lying on my desk, were small and what I wanted to play with. So the cpu is a LPC810, an ARM cortex M0 in a DIP8 package. Motor control is two TI DRV8830 that are i2c controlled. Sensors will be Vishay VCNL4000 proximity sensors. I will have to get a i2c multiplexer, probably the TI TCA9546A.

I hope to mount the proximity sensors on PCB's mounted at right angles to the main board, held on by sol

Currently I can program the LPC810, debug it with SWD and have managed to get the DRV8830 motor controllers up and running.

The 810 has a i2c api in it's rom, which makes the controlling of i2c devices relatively easy. Programming is done by holding pin 5 low during startup, then pin 8 and 2 become RX and TX respectively. Then you can up load your code via serial.

Currently I have SWD, serial and i2c enabled. That means I have had to override the reset pin. As I have SWD debugging working I was planning to disable serial to get reset back, but that means I will have to have a 3 poll switch to switch the lines to the serial connection.

The code is currently hacked together and not suitable for publishing, when I re-work it to something decent I will published it.

A quick video overview.

  • 1 × LPC812M101JTB16 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 2 × TI DRV8830 Power Management ICs / Motion, Motor and Servo Control
  • 3 × VCNL4000 Sensors / Proximity
  • 1 × LM3668SD Power Management ICs / Switching Regulators and Controllers
  • 1 × BNO055 Integrated IMU with com and i2c interfaces.

  • Not going to make it :-(

    HappyFox12/22/2015 at 06:11 1 comment

    I am not going to make the deadline. :-(

    My wife went into surgery a last Monday and took longer than expected to recover. I got my parts on Tuesday. :-/

    I managed to get a board put together, but there is a issue with the power system. I don't have any time to diagnose the issue.

    I still intend to complete the rover. I may make it larger to use easier to solder parts. But first I have to diagnose the power system!

  • It is DONE! (The design at least)

    HappyFox11/30/2015 at 06:48 0 comments

    The completed design:You can check out the design here.

    The smaller board will be mounted on the front at 90 degrees to the main board. The IR range sensor will mount on this to allow it to look forward.

    The Required Fail:

    I had hoped to have the design done by November 23rd as I was going on a holiday for a week the next day.

    But I had made an error that I only discovered when I went to put the board in at OSHPark. I noticed I had no copper around the mounting holes for the motor mounts. I had made an error in creating the part.

    Of course this meant I had to take more space for the mounts and re-work large parts of the design. If you go to the Upverter page I have marked the version where I realized the error. You can click on it and the hit the "play" button to see the changes from that version.

    Simpler is better, to a point.

    During the design I had to lose more subsystems. Especially after I fixed my part error. The number of IR distance sensors were dropped to one. I also removed the reset pin so I could switch to a 4 pin programming header. You don't need reset for SWD programming, just SWIO, SWCLK, Vin and GND. I will have to yank the power to reset, but there is just not enough space for a 6 pin header.

    I was glad that I was able to retain the IMU. This means I will be able to use PID to steer based off the gyro. With a differential steering on a robot that is so asymmetrical it will be interesting to see how well PID handles it.

    The compass on the IMU will probably be of little use as it is mounted directly under a motor. But on a design this small you are going to be next to a motor or coil for the buck/boost converter. So I had little hope for the compass from the beginning.

    Next steps.

    I have already sent the design to OSHPark to be manufactured. Next I will order any parts I don't have and wait for the boards to show up.

  • Proximity sensors working!

    HappyFox11/09/2015 at 06:40 0 comments

    So some progress, parts showed up and I have them working on the bread board. I got the TCA9548A and VCNL4010 break out boards from Adafuit. These will be the basis of the robot sensor system.

    You can see the 3 VCNL4010's on the right there. Currently, I only have one working through the i2c multiplexer.

    The VCNL4010's are an ambient light and infrared proximity sensor all in one package. They sport a i2c interface for control and their infrared LED on board. They measure to 20 cm and have a interrupt line that can be configured to go off when the sensor measures under a certain threshold.

    My plan is to mount 3 4010's around the front and sides for collision avoidance. I will have to mount the PCBs at a right angle to the main board. I will use solder joints to mount them. This will lose me quite a bit of board, but it's the only way I can see to make it work.

    Unfortunately the 4010's only have one address. To make use of 3 of them I will have to use a i2c bus multiplexer in the form of TCA9546A. This is a 1 to 4 multiplexer that is very simple. It has a single configuration register that you set the bits for which i2c buses are on. I got the TCA9548A break out, which is very similar but with 8 buses instead of 4. I will use the TCA9546A on the final robot for space saving.

    The i2c bus on the breadboard has gotten a lot longer and more roundabout. This meant the wave forms got very rounded, I had to reduce the pull-up resistors to 2.2K to get the wave form back to something more normal.

    My current config of the LPC810 is using the reset pin as the SDA line. This is nice and it gives me a serial out and SWD debugging, but is annoying as I have to yank the battery to get into programming mode. For the final robot I had hoped to keep the reset pin and dump the serial connection at run time. But that mean switching two lines from i2c lines with pull-ups to the serial connection for programming. I have to also pull pin 5 to low at startup to enter the ROM based ISP.

    I was thinking that a 4pdt switch would work, but none were small enough. Then I stumbled across signal line multiplexers and they seemed the ticket. I ( relatively randomly) chose the 74CBTLV3257 from NXP. This looks like it should be small enough without affecting the i2c or serial signals.

    I am toying with adding a BNO055 IMU. This is an interesting chip that is a IMU with a cortex M0+ on board. The M0 does the sensor fusion for you. You just read off the final position. If I can get it to fit, I think I will use one. Since it will allow straight line driving from a tank drive robot. Adafruit has a breakout, which is convenient.

    So more parts to order, with more break outs. I have started the circuit board design, not much yet beyond the main IC's. I use Upverter as my tool of choice, so you will be able to follow along as I stumble along. :-D If you have any feedback on the design feel free to give feedback. The link to the project is here.

View all 3 project logs

View all instructions

Enjoy this project?



alpha_ninja wrote 12/21/2015 at 07:52 point

Please make sure to upload photographic or video proof of this project's PCB working by the next deadline (in about two days!)

  Are you sure? yes | no

Blecky wrote 12/07/2015 at 04:10 point

[verified: no design files missing]

  Are you sure? yes | no

Blecky wrote 12/07/2015 at 02:41 point

Just a friendly reminder to please upload your complete design documents by 23:59 UTC on Dec 8, 2015 to be in the running for #The Square Inch Project! (You seem to be missing your gerber files).

  Are you sure? yes | no

HappyFox wrote 12/07/2015 at 02:57 point

I have them on the upverter link. I checked that was cool here : 

Is there a better way to call it out so someone looking quickly will notice the upverter page for the design ? I have it in the link section and the build instructions. I'll call the link out in the description as well. Any better place ? 

  Are you sure? yes | no

Blecky wrote 12/07/2015 at 04:05 point

Just looking through the upverter site. You might like to include a direct link to the Gerber file generation page if you want to use it this way to make it easy to navigate (it's not immediately obvious from the main page) -

If you want to make it super easy though, you might like to download the required files and put them on github (not technically required, but the judges will love you for it :) )

  Are you sure? yes | no

alpha_ninja wrote 12/02/2015 at 00:43 point

This is your one-week reminder to upload design documents:

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates