MobBob V2 - Smart Phone Controlled Robot

by cevinius, published

MobBob V2 - Smart Phone Controlled Robot by cevinius Aug 30, 2015



Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

35041Views 3963Downloads Found in Robotics


[Update 2015-10-06: The app has been updated on Google Play. It can now connect to most Bluetooth modules. This enables you to use almost any Arduino and Bluetooth boards for your build!]

This is an updated version of my MobBob robot.

MobBob is a smart phone controlled robot. By harnessing the power of your smart phone, MobBob is a walking, talking robot with voice recognition and computer vision that you can build for around $30. I will be continuing to extend his features over time. I want MobBob to be a companion robot that everyone can afford and have fun with.

You can see videos of MobBob in action here:

The main aims of the V2 update were to:

  • Support standard 9g servos (previously I was using Arcbotics servos)
  • Make everything easier to assemble (no more need for glue)
  • Make it easier to adapt/modify for other phones and other batteries. The new bracket system will make it easy to swap in new phone/battery holders. (The provided phone holder STL is sized for a Nexus 5.)

Note that the V2 parts are compatible with V1 parts. So if you are using Arcbotics servos, you can use the V1 legs with the V2 body.

Also, in my V2 build, I'm also using the smaller Bluno Beetle instead of the Bluno Nano, so the entire build is smaller and tidier. :)

MobBob V2 uses the same software as the original MobBob.

You can find the latest Arduino code here: https://github.com/cevinius/MobBob

You can download the latest version of the Android app from Google Play (it is free, ad-free, and without IAP):

You can find more detailed build and wiring instructions here:

If you have any queries, feel free to ask in the comments section or contact me at my YouTube channel!

Have fun! :D


The parts that you need to print:

  • 2 x Leg
  • 1 x FootLeft
  • 1 x FootRight
  • 1 x Base
  • 1 x ServoBrace
  • 1 x BatteryRack
  • 1 x PhoneHolder (Note the 2 versions are the same. One is rotated to make it easier to print on some printers.)

The non-3D printed parts you need are:

  • 4 x 9g servos
  • 1 x Bluno Beetle (see note below)
  • 1 x Eneloop Phone Battery Extender (see note below)
  • 1 x Nexus 5 (see note below)

(Note: I got the servos, Bluno and Battery for < $30.)

Bluno Beetle:

  • This is a small, Arduino compatible board with built-in Bluetooth LE. My app connects to the Bluno using its Bluetooth LE service. The app currently does not support other Bluetooth cards, but I will be extending the app to support this soon.

Eneloop Phone Battery Extender:

  • You can use other batteries that provide 5V with a steady current. If you use other batteries, you may need to adapt the battery rack for your battery's size.

Nexus 5:

  • You can use other Android Smart Phones with my app. However you may need to adapt the size of the phone holder for your phone. The app has been successfully tested with Nexus and Samsung phones, but should work on other Android phones.


  • Print all the required parts
  • Get all the non-3D printed parts
  • Assemble as per the photos (I'll be writing some more detailed instructions on my website soon!)
  • Install the Arduino code from the GitHub link in the description (You will need to update the Arduino pins in the code to match yours, and probably update the centering values for the servos.)
  • Install the Android app from the link in the description.
  • Have fun!

If you hit any problems, please post a question on my website (www.cevinius.com), here, or on my YouTube channel. A few people have built MobBobs now, so there are people around who can help.

I look forward to seeing your build!! :D

More from Robotics

view more

All Apps

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

Ahhhhh this is so rad!

Thanks very much!!

Hey there, are you planning on releasing the app source code? I have done a fair bit with OpenCV, Android voice services, TTS etc on my own projects, however I don't know how your controlling the Arduino side


Hi Simon,

You have very cool projects on your channel! :D

I'm not planning to release the app source code as it contains some parts that I cannot share. However, I'm happy to try to provide more information on how the communication works. The app uses different protocols for regular bluetooth and bluetooth LE. However, once the connection is set up, the app simply sends text commands to the Arduino board, and receives text responses back. There is detail about these commands/responses in the comments of the Arduino code. It is actually possible to send the codes to the Arduino directly using the USB cable, and I often do that during development (allowing me to test/control the robot directly from my laptop).

The best way to get more information on the Arduino side is probably straight from the Arduino code. You'll see it uses fairly straight forward serial communication. I know other people have written their own apps for MobBob, including native Android apps and App Inventor apps.

I would love to see what you build!

All the best,

Hi Kevin, completely understand, if you could just help me on one thing, how did you do the lip sync?

The lip synch isn't anything fancy. It's all random! It is a code-driven animation where the periods/rates of opening/closing are randomized to avoid obvious cycling/repetition. I wrote some code that tries to detect when the speech is complete, and stops the animation when the voice completes. :D

After some initial confusion getting a Bluno Beetle (and finding out it wasn't the Bluetooth version), I finally got it to work. Fun project you've done, thanks a bunch for the work you've put into it.

Thanks you very much for leaving this comment, and thank you for building MobBob. :D Hearing about people's builds makes the time put into the project worthwhile and puts a huge smile on my face! Thank you!!

My young son and I plan to make one of these but we are amateurs and have a few questions.
1) How do you center the servos?
2) Exactly how do you wire power from the mobile battery booster? Is it cutting the end off the USB wire, splitting it and connecting those ends to the Bluno Beetle?
3) When installing the software to the Bluno beetle, is that done with a direct connection to a computer via microUSB cable (I haven't received my Bluno just yet)?
4) Can the Beetle be powered by the micoUSB when operating Mobbob versus wires to the 5v and grnd holes?

Hi Sigmalyon,

Sorry about the slow reply. Here are some answers:

1) I usually write a small Arduino program to make a servo move through its range. It lets me test what the min/max values are, and also lets me attach the servo horn when the servo axel is at its centre position. You can adapt this program from the servo example that comes with the Arduino IDE. So, the key to centering is to make sure the servo horn will be at the centre when you tell servo (in code) to move to the centre.

2) Yes, I bought some cheap USB charger cables from a $2 store, I cut the wire, kept the end I wanted and then soldered the wires from there.

3) The software is loaded to the Bluno via a direct USB connection. It's what I do anyway!

4) The Beetle can be powered by microUSB if you prefer. However, make sure the Beetle is connected to the ground from the battery that you use for the servos. I prefer to power the Beetle using the pins so that the USB port is available for programming. Note, if you plug the battery into the USB port, you should still connect the servos to the battery directly. (i.e. Don't have the servos pull power from the Beetle's 5V pins.)

Hope that helps!

what battery do you used, could you give me the link? Thank you

The model number for the battery that I have is the "Panasonic Eneloop Mobile Booster QE-PL103".

I'm not sure if they still make this model anymore, but this one looks like it's the same size/shape... http://www.panasonic.com/au/consumer/household/batteries/portable-power-supply/qe-ql101ta-w.html

I bought mine when they were on sale for AUD $10 each, and have been very happy with the quality and performance.

Hello, I wanted to know if it is possibe to use arduino nano and Bluetooth module instead of the Bluno Beetle. Thank you

Hi ps14.

Yes, this is supported. Here's something I wrote back when I added support for this. (There is a demo video there as well.)

The current app has support for this.


Thanks a lot.
Now I have an interesting weekend project. :]

Is there any chance that you will release software for IOS?

Hi Matthew813,

This has been requested by a few people and it's in the works. But it's taking longer than planned as I've been too busy with work. I'll keep people posted here (and on my blog) as it develops.


If an RF24L01 is used for Blue-tooth with Arduino mini, what program do I need to write and where would the program be placed (in the main program)?

I don't know much about that board. I just googled that board, and it doesn't seem to be a bluetooth board... It seems like you would need to do a lot of work to get that to work as a BLE board?

For the Arduino side, maybe use my external bluetooth board code as a starting point. The code is in the same GitHub repo as the regular code, and there is a video demo here: http://www.cevinius.com/2015/10/05/mobbob-app-now-works-with-most-bluetooth-boards/

On the phone side, if you can get the board to emulate Bluetooth/BLE, you may be able to use the existing app. Otherwise, you will need to write something yourself.

Is there any way to use a cable (micro USB of the phone) instead of the Blue-tooth to talk to Arduino mini? Can I modify the App. to use the serial over USB?

In theory, it should be possible if the device supports USB OTG... However I don't know how to do it at the moment. I'm curious about this as well and will look into it. I think it will take a bit of work and messing around.

You could look into writing your own app in the mean time. The serial commands expected by the Arduino are pretty simple and are documented in the Arduino code.

All the best!

That is it, but I've seen them cheaper if you order from China.

That's not a Bluno, but some sort of an expansion board for it. (It actually looks like it could make wiring things up much easier!)

Look for the Bluno Beetle from its manufacturer DFRobot. They have their own website.

Does the battery extender thing depend on what phone you have?

Most will be fine.... but you need to check the current output. At least 1A and preferably more.

Battery extenders are usually some sort of high capacity battery with a 5V voltage regulator and a built in recharger. You can use other power sources if you like, but I find these kinds of batteries easy to use.

Also where could I find one?

I think try googling. The brand of my one is panasonic. If you get other ones, you will need to adapt the battery rack or some up with another way to strap the battery on.

It looks about the same judging by the look of it, but will the holder be able to carry the LG Optimus L90 without any tweaking?

I suggest looking up the dimensions online and comparing the Nexus 5's dimensions with your phone's. The fit is not super tight on the Nexus 5, but seems to hold it pretty well.

It looks like my phone is a little bit bigger by a few millimeters. Changing the size shouldn't mess up any parts for where everything goes, right?

You need to resize just the phone holder bit... Do not resize the entire phone holder as that will resize the plates at the back with the bolt holes. If that is modified, the holes won't line up for the bolts anymore.

hi cevinius, could you share the app source code? I believe it is very educational, specially the part of computer vision and voice recognition.

I doubt they would, people usually try to keep the source code private so people don't steal it. I don't blame them.

I doubt they would, people usually try to keep the source code private so people don't steal it. I don't blame them.

Awesome work!
But I'm actually sad that I cant build this cause I'm not having an Android phone, so will there be an iOS version in the future or is there a similar app for iOS?

Kind regards :

Thank you for the kind words.

I have been planning to release an iOS version of the app (without voice recognition initially). However, I've been too busy with work recently and haven't had time. I'll try to get it done soon, and will definitely post here and on my blog when it's ready.


You made me sooo happy with this words :D
Thanks for the fast reply and your great work!


Hai ,

Does anyone know sometimes how to connect a Bluetooth LE V1,1 nrf8001, to communicate with the mobbob app
I have a Bluetooth LE nRF8001 v1.1 and want to use it for mobbob

Kind regards

Hi Sembot, I don't have any experience with that board, but had a quick look at its docs just now...

The board does provide a UART style BTLE service/characteristics. I'm not sure if the service there works in the same way as the one in the Bluno and in the HM-10, but I'm guessing it does. If so, this board could be supported by the App in future. The App would need to be updated with the UUIDs for this board (and I wouldn't be able to test the updates since I don't have the board).

From the nrf8001 docs page, the Arduino code side looks like it would also need some updates. The nrf8001 seems to need more code than newer boards to do the serial communication.

So, it seems my Arduino code would need to be modified to work with that board, and also the current App won't be able to find/connect to that board.

You can update the Arduino code using my code as a starting point. The app update would need to be done by me (and I can't test if it'll work since I don't have the board), and I may not be able to do that for a while. (I'm working on some other features at the moment, and hope to release that update soon.)

Because I don't have the hardware to test with, the App update from me may not work... If you could use an HM-10 or a Bluno, it is a safer option as the current code/app will work with it right away.

Hai Cevinius,

Thank you for the quick response, I'll see what I can do, thank you for the explanation
and thank you for sharing this great project

kind regards

No problems. All the best for your build!

Hello cevinius!
Could you please release the mobbob app directly instead of putting it on google play?
Because I tried the google play service again and again on my phone but it still couldn't work.

Hi Lyx,

Were you able to install the app by some method? I just wanted to check what you mean by the "service". I noticed a screen shot on your blog with the app running. If you were able to install it and it's not working, then I'm not sure if it a non-google-play version would solve it.


Oh,I don't mean that,you misapprehend me....I can install the app out of Google play but,it's the old version that lose some functions.I am in China and the Google service isn't supporting here.Could you directly put the app on this website?
ps: forgive my pool English....
Thanks again!!!

Hi Lyx,

The app uses Android's voice recognition functionality, which requires connection to the Google Cloud. If you cannot access Google's services, then the voice recognition won't be able to work. Because of this, even if you side-loaded the app, I think that it still won't have all the functionality. :(

This is a reason I want to keep it on Google Play. If people aren't able to access that, the app may not work on their device anyway.


On a related note, I'm going to look at some offline voice recognition options over the Christmas break. If I get that working, then the app may be able to work without connecting to Google's services.

I'll provide updates here and on my blog when that's ready.


Oh,I see! That's why I can't use the voice recognition! I have found the reason for a long time.
Looking forward to your achievement!!!
In anyway,thanks so much again !!!

Hi great project !
Can you upload a picture explaining the connection of servos on Bluno Beetle please?

Thank you for the speed, I can continue to make my mobbob v2 this week-end.

Fantastic!! I look forward to seeing your build! All the best.

No problems. Someone else was asking for that too. I'll get that done this weekend! :D

Hi everyone,
i have problem with the app, I'm using nexus 5 with 5.1.1 and can't install the app
Can samebody help me

It should work on a Nexus 5 since I'm using a Nexus 5. :D What error do you get?

Thanks for answer, it's just says the app wasn't install, without any errors
Maybe android version is the problem 5.1.1

I used to use it on 5.1, so it should be Ok with that. I don't know what the problem might be. Do you have enough storage space and is the app set up to install apps from outside google play? Also, if you have an older version installed try deleting that first. Finally I read it can sometimes help to clear the Google Play cache. Also is your phone rooted or running anything out of the ordinary that could interfere? I'm not sure as I haven't seen this before. I'd just be googling for ideas too.

Yes I have storage, i can install from ouside of google play, My phone is with original furmware, I have not install old version, I clear cash on google play, but no luck at all, same result
I sucsesfully install on LG G3 on 5.0.1, and try to 2 different Nexus 5 on 5.1.1 but it can't install on them

I just did a triple check and it installed OK on my Nexus 5 running 5.1.1 (with all the latest updates from Google). I'm not sure what the problem could be. I'll also try to put the app onto Google Play this weekend. I wonder if downloading from there instead of side-loading will help with your situation? I'm still wondering what the problem might be.

Hi ipadov, I put the app onto Google Play here: https://play.google.com/store/apps/details?id=com.cevinius.MobBob I just installed it on my Nexus 5 running 5.1.1 and it worked fine. Give it a go and hopefully, it'll work for you too.

Yes :), working :), Thanks man

Really glad to hear that!!! Then my afternoon of filling in Google Play forms and making screenshots has been worth it! :D

Ones again thanks, you are great!

Comments deleted.

Great robot, I love it! However, I'm having a little trouble.

1 x Eneloop Battery Pack ~USD$7 (that's what I paid for it)

I've searched for this and keep finding AA Eneloop batteries instead. Could you provide a link to the actual object? Or maybe an item number or specific name?


This is the exact place I got it from... However it's no longer discounted!
I just did a check and I saw that this item comes up in ebay if you search for "eneloop mobile booster".
If you can't find this one... Other reliable 5V phone booster batteries of a similar size should work too. You can probably find some at a local electronics store. You may need to adjust the bracket a little in that case (but you can keep the mounting holes the same so that it will still fit together).
All the best with the search! I can't wait to see your build. :D

I have an Anker 5000 mAh battery pack. I was just worried it might be too heavy.It has a 1A and 2A output. Looks like the Eneloop you have posted here has a 1A output. I guess I could design an adapter for the larger battery bank? Thanks for the link! :)

That battery back would be fine from a power point of view! If it's not too heavy for the servos and you can balance it with the phone so he doesn't topple over, that would be cool, and would last for ages! :D When he walks he does tip a bit, so it's a bit of a balancing act. He can't be too top heavy as he might fall, but he can't be too bottom heavy either as then he might not be able to lift himself up! Maybe temporarily tape it on as a test to work out if it'll work!

All parts are now printed. Phone holder came out great. It took 4 1/2 hours with support to print, but It WAS worth it. Now its a waiting game until my Bluno Beetle arrives in October. I know you said it didn't matter what digital pins we hooked the servos up to because we could just change the order in the code you made. But it would really be helpful if you could list the way you did it, that way I could just copy and paste the code without having to modify it. As it stands ill have to guess what each servo is supposed to do for a particular command. If you don't want to post the firing order, I understand. Im very grateful for the work you have done so far, and for posting it for anyone to make. This will be my last post until Bluno arrives. Once again thank you very much

That is great news on the print! I can't wait to see some pictures of your build. :D
I just noticed that Thingiverse loses my paragraphs of comments if I leave a blank line in between! DOH! I did an edit of old comments to remove blank lines so that everything shows up. I did put my pins in the comment below. On mine, the left hip servo goes to pin 3, the left foot servo goes to pin 2, the right hip servo goes to pin 4, the right foot servo goes to pin 5. However, the code on github does not reflect this (as it has the pins from MobBob V1). So you'll need to edit those constants at the top of the code. You'll also want to tweak the servo centering and servo range values in the code since every servo is different and you'll need to check it in your build. Keep me informed and all the best!

All I have left to print is the phone holder. Did a test bridge today and my printer can only do a 60mm bridge max. So Im going to have to print the phone holder standing up with supports for the angled back attachment. Slicer says its going to take 4 1/2 hours to print. I ordered the bluno beetle yesterday, but its coming from china and wont be here unit October :( I have experience with arduino Uno r3 but no experience with Bluno Beetle programming. I have been reading up on the beetle and it seems that I runs the same code as arduino. Hooking up the components seems straight forward, however I don't know how to copy the code you listed in gitch to my computer ardunio program. Can you please tell me how to do this. Thanks again. Sorry for the questions, Im really looking forward to getting this built right.

Good luck with the phone holder print. I think that's the hardest part to print, but hopefully, it'll be fine!
The Bluno Beetle is an Arduino compatible board, so you should be fine with your Uno experience. (In fact, I think you select Uno as the board in the Arduino software.)
The code is available on Github. You can also download it from GitHub as a zip file (or you can clone it if you use git). https://github.com/cevinius/MobBob

I started printing parts for MobBob v2 today. Base is printing as I type. Ordering Bluno Beetle this week. Im excited about this build. Promised I would keep you updated. Base just finished printing. Tower pro 9g servos fit perfect. Sweet print so far. Starting on MobBob servo brace in a few minutes. Only piece that worries me, is the phone holder. I plan on laying it flat on the print surface and Im going to try and bridge it.

Thanks for the update! All the best with the prints. The phone holder is definitely the trickiest part. I was able to print it straight up without support, but the mounting bit came out a bit rough as you can see in the photos. If I was printing that part again, I'd probably use supports.

Excellent! Going to get a set printed myself. How long did it get to print on your printer model?

Fantastic!! I like to print on the slow, high quality mode, so it took a while. I was printing one part while I was updating/designing the next, so the time flew past! :D
I think most parts took less than an hour (and some like the legs took a lot less). The 2 feet and the phone holder took the longest. I can't remember how long... but I think the phone holder took a few hours for me. I set it printing before I went to bed.

I just got it downloaded. Sweeeeeet. Now I can print the parts. Thank you so much... I'll update my progress. Thanks again

Awesome. Can't wait to see it!

I want to make this robot but every time I try to download the phone app, it takes me to the playstore to download Dropbox. I installed Dropbox but Still no Mobbob app. Can you please post a direct link to the phone app Please. Thanks in advance

You shouldn't need to install DropBox. If you open the link on a desktop browser, you should be able to download the file from the page that opens up. It will be a webpage with an option to save the file. You can then sideload the file. Give that a try and let me know how you go!
I've set up a Google Play developer account recently (for my Sphero Companion app), so I can put the app on there as well. I'll do that soon, so that will be another option for getting the app.

Where can i find the wiring for the bluno ?

I haven't documented it, but it's pretty straight forward:
The 4 ground wires from the servos and the ground wire from the battery connect together and then to ground on the Bluno.
The servo +ve wires and the battery +ve wire connect together. I then connect these to the Bluno's 5V pin. (I do this since my battery is regulated already to 5V. If you are using a higher voltage battery, connect to Vin instead of 5V.)
Then I connect the servo signal wires to the Bluno digital pins. Each servo signal wire goes to its own digital pin. It doesn't really matter which servo connects to which pin, you can change the Arduino code to match your wiring. (On mine, the left hip servo goes to pin 3, the left foot servo goes to pin 2, the right hip servo goes to pin 4, the right foot servo goes to pin 5. However, as I said, it's fine to connect this differently as you can set this in the code.)

The 9g servos are quite easy to find. You can see lots of sellers if you search "9g servo" on ebay, and probably cheapest there if you get them in a bundle of a few of them. It's worth having spares since you sometimes find dud ones in cheap servos. You can also get them from Hobby King if you prefer a regular shop. (If you want nicer servos, I can recommend the Metal Gear Servos from Arcbotics. I used those in MobBob V1, and the move really nicely. They will also work with the printed parts from V2.)
The microcontroller is a Bluno Beetle made by DFRobot. I ordered that straight from the DFRobot website.
The battery I got locally (Australia) from a chain electronics store. I got it on sale when it was < $10. I just did a check and saw that eBay sellers have them if you search for "Eneloop Booster".
All the best with the search for parts!

Thanks I was not seeing the Bluno Beetle for less than 30 and google did not find the DFRobot site for me.

The website is www.dfrobot.com. I just had a look there and the Bluno Beetle is listed $14.90. I can't remember how it works, but I remember I got free shipping from there too, but I might have need to spend a certain amount.

Thanks for the design. Can you share where you got the non printed parts?