• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Stop wasting time looking for files and revisions. Connect your Gmail, DriveDropbox, and Slack accounts and in less than 2 minutes, Dokkio will automatically organize all your file attachments. Learn more and claim your free account.


Xian Ruicheng Final Project

Page history last edited by Ruicheng Garry Xian 5 years, 6 months ago


A remote car looks like a mouse for me to interact with my dog.



At first, I just wanted to make a remote car that can be controlled with an iPhone, but as the course progressed, I made up my mind and decided to build a thing that can scare interact with my chow-chow.

The product will be a remote car, that can be remotely controlled by an iOS device via Bluetooth LE 4.0, with the ability to play songs or sounds, so that I can (indirectly) play with my chow-chow. Named Quasi-Mouse, because the product will be decorated so that it looks like a mouse (rat).



Presented product


iPhone application screenshot

iPhone screenshot 




Documentation (Source code, libraries, and housing design)

Source code, and the vector housing design for my final project is hosted on Github as follow


All the sketches made for the final project are on this page

Xian Ruicheng Final Project Sketches

All the parts that was present in the final project are listed below

All the connections from Arduino pins, including the schematics, are listed below 

  • Schematics Sketch
  • Arduino Connections 
    • Pin 2 - nRF8001 RDY 
    • Pin 4 - TB6612FNG STBY
    • Pin 5 - TB6612FNG AIN1
    • Pin 6 - TB6612FNG PWMA
    • Pin 7 - TB6612FNG AIN2
    • Pin 8 - TB6612FNG BIN1
    • Pin 9 - TB6612FNG BIN2
    • Pin 11 - TB6612FNG PWMB
    • Pin 12 - nRF8001 RESET
    • Pin 13 - nRF8001 REQ
    • Pin A0 - WTV020SD RESET
    • Pin A1 - WTV020SD DCLK
    • Pin A2 - WTV020SD DIN
    • Pin A3 - WTV020SD BUSY
    • Pin A5 - Battery indicator (voltage divider) Vout
    • MISO - nRF8001 MISO
    • MOSI - nRF8001 MOSI
    • SCK - nRF8001 SCK
    • VIN - 9V Battery anode
    • GND - 9V Battery cathode

Libraries and example code used are listed below, actual files are also included with my source code





  • I spent a good amount of time at first trying to figure out how to mount the servo to the front wheel so that the direction can be controlled, but it turns out that none of the plans (can be found in the sketches) are satisfying; either the profile will be too tall or the turning angle will be too small. But thanks to Nino Chen, he minded me that I should use a metal ball caster instead, and I was able to steer by controlling the speed differences between the two wheels (the advantage of using gearmotors to DC motors, the latter ones are affected by inertia).
  • When I was trying out with the SD card, I accidentally plugged the 9V battery into the 5V power supply rail, and the SD card was burnt immediately. Fortunately, other parts remained intact. (Never confuse power supply rail on the breadboard with the Vin Pin of the Arduino)
  • I was testing the MOSFET N-Channel, to see how it can be used as a switch to control the 6V power supply that was originally designed to power the motor (4 x AA), however, somehow I short-circuited the battery and the transistor was fried, and the battery was warm as well.
  • The Bluetooth LE module cannot work simultaneously with the SD.read() function, because the MISO signal will get confused, even if I select/deselect chips by digitalWrite(chipSelectPin, HIGH/LOW). Therefore, I turned to using the WTV020SD chip that doesn't require the Arduino to handle the audio file at all.
  • I also tried to use two Arduinos, one acting as the control/bluetooth connection part and the other is the music playing part. However, maybe because they have the same voltage, digitalWrite() doesn't get picked up by digitalRead() on the second Arduino. Some research on how to specify master/slave for cross-Arduino communication may resolve it. But I eventually adopted the WTV020SD chip.
  • When assembling all the laser-cut parts, I kept messing it up and only succeed at the third time. One note for assembling (or gluing) parts, always start with the fragile components, and eliminate fragile parts as much as possible. Also, always be prepared to re-cut parts, because measurements might not actually fit in reality.
  • Sewing tips: http://handmadecuddles.com/2011/12/christmas-tutorial-advent-christmas-mouse.html, sewing can be messy, the right way to do it is to preserve more fabric than needed upon sewing, and actually draw the pattern onto the fabric. So that the sew can be accurate. But always be prepared to do it several times again. 

Comments (1)

David S said

at 7:21 pm on Aug 19, 2014

This was an awesome project, expertly executed, and we really enjoyed reading through your design documentation!

We like that you switched plans from building a car to crafting a product, with a specific goal and usage model in mind. It definitely made for a stronger project and final design. Given that, we wish that you had couched the Idea for your design closer to the Point of View as covered in class: “who” needs “what” to “do what task?” Is there a user need here, keeping in mind that there are two users? Maybe to reduce your (or your dog’s) stress, or to strengthen your relationship with each other?

We also like the wiring diagrams and sketches that you included, especially the mechanical schematics, which do a fine job of communicating your design.

Your Verplank diagram is very carefully made, and while the metaphor of a cat chasing a mouse is apt, it’s really the same thing as your idea. Maybe a sharper metaphor would be playing “hide and seek” with a friend or sibling? Also, regarding control, there’s a potential for user confusion due to the left-right nature of the interface. That is, from the operator’s perspective, moving the slider to the right drives the mouse to the operator’s right when they both face the same direction, but to the operator’s left when they both face opposite directions.

We see the “adjust volume,” “move,” “sound” and “adjust volume” handlers in your Arduino sketch, but do those represent states, as identified in your state diagram, or just transitions/actions to take upon receiving input from the controller?

It’s great that you provide a description of the challenges you faced and your solutions, including the car’s steering, mp3 play, component assembly and cover sewing.

Overall, a super project that you and your dog should be most proud of!

Best Regards,
David, Nik, Samyuktha, Jane and Xinyi

You don't have permission to comment on this page.