<<<<<<<=Go Back To Home

See my Project Sketch Page

See my Applications and Implications Page

See my Project Developement Page

Final Project Journey

Bluetooth Controlled Belt Driven DC motor Car


To make an all terrain Car with bluetooth interface on Masters phone , that could give motion feedbacks to the Master

  • The Master/owner could operate or drive the Car using the application on the phone
  • Also the motion sensor feedback is also received at the application screen
  • Acknowledgement

    As going through these last days of the Fab Academy Course I would like to thank all who helped me in learning and going through this journey.
    I made this project with my ever increasing love for moving machines and cars and I have integrated the skills and lessons learned in each week to make this project.

    Different Steps of the Journey

    1. Mechanical Design
    2. Electronics Design
    3. Programming

    What I Purchased?

  • Bluetooth module HC-05
  • Motor Driver equipped with L293D
  • Sewing machine belt from repair shop
  • Iron Rod of diameter 6mm not bought but took from machine scrap at our Fablab

    What I made?

  • The Gear wheels from blue Acrylic sheet of 6mm
  • The Base, motor holder, Rod holer press fit with mm Black acrylic sheet
  • 3d Prints of board holder and Front Cover for Car,
  • Designing the Chassis and other parts of the Car

    Design of Wheels

    I have first designed a wheel and 3d printed them.


    3D Print

    I designed it on Solidworks

    But Later on I thought of a belt driven Car aso i never used this in my project.

    I designed a Gear wheel so I could bound it to a belt
    I purchased a 600mm lenth closed belt from a Sewing machine repair shop(it is a belt used in sewing machine).


    Belt from sewing machine

    I designed the gears in such a way that the teeth of the belt goes in mesh with the Gear wheel teeth.
    i tried different teeth numbers to fix the correct design of the gear wheel


    Cuts with different teeth number

    I selected the teeth number 45 which was the correct mesh when arranged with the belt.


    Gear Wheels after Laser cut

    I cut the outer wheels with diameter 80mm, ( the gear wheels will be placed between these outer wheels such that the belt doesn't slip out from the Gearwheels.)


    Outer Wheels after Laser cut

    Design of the Base, motor holder and rod holder pressfit.

    I have done by designs on the Solidworks software.
    As you can see the the design screen shots below

    I took a black coloured Acrylic Sheet of 5mm thickness for the cutting.
    The kerf for Acrylic is 0.5mm as we found in the Computer Cutting Week, so i gave +0.5mm clearance for press fit female slots and -0.5 mm to male slots.


    I designed the base, motorholders, and rod holder press fit in Solidworks. The idea was to make the whole chassis a big press fit to make sure the motors at front wheel and the axle rod at back wheel, all stays intacta and aligned without vibration.


    The Base design Screenshot

    I edited the design in inkscape, first i decided to cut the base.


    Cut file

    In the laser cutter I gave the settings for 5mm acrylic - Power 100 W and Velocity 0.9 mm/sec


    Power Settings

    The laser cutting screenshot is below




    The Base

    Motor Holder

    The below three images shows the motor holder pressfit which fits into the base also

    base base

    The motor holder cut file


    Cut file

    In the laser cutter I gave the settings for 5mm acrylic - Power 100 W and Velocity 0.9 mm/sec


    Power Settings

    The laser cutting screenshot is below






    Cut file

    In the laser cutter I gave the settings for Fablab Craftwood 3mm - Power 90 W and Velocity 1.2 mm/sec


    Power Settings

    The laser cutting screenshot is below




    The motor is to be screwed to this to ensure fit is firm.

    As you can see below the pressfit is holding the motor stiffly without any vibration. I still applied some glue to make sure it doesnt get damaged on hardhittings.


    Motor screwed and placed in the pressfit

    Rod Holder

    The below is the Rod holding pressfit which holds the Axle rod on the back the wheels and this is to make sure that the belt and gear wheels stay tight and fit enough.


    Rod holding pressfit Designs


    Cut file

    Power Settings same as the base and motor holders




    Rod holding pressfit

    The below image is the status of the vehicle after all these were assembled together


    Chassis Assembly

    Designing the Board Holder.

    I designed a board holder to keep my Atmega 328p and motor driver and bluetooth sensor intact.
    I designed this in Solidworks, in such a way that the motor driver shall be placed on the bottom shelf,
    my microcontroller board on the top shelf,
    I made a side slot to insert the bluetooth sensor


    Design Screenshot


    Cura Shot of Board Holder


    Board Holder

    Designing the Front Cover

    Then I thought to design a front/back cover , so i started designing it on Solidworks.
    It was designed in such a way that it just covers the front portion and could give my vehicle a Tanker like appearance as it is already a belt driven one.


    Design Screenshot


    Cura Shot of Front Cover


    Front Cover

    Designing the Top Cover

    I decided to do the Kerf Bending for the top Cover of my Car

    I love the Kerf pattern, and it was my intention to use and try this one once

    I used the most simple and effective kerf bending pattern

    Kerf thickness given was 1.4mm
    I left the portion which falls on the middle top of the vehicle without kerfs and the back-top was kerf bended so i could bend it and glue it to the acrylic.


    Design Screenshot

    The cut file in inkscape that has to be printed in laser machine


    Cut file

    The kerf bend was to be cut on the 4mm craftwood and the Power given was 100 W and Velocity 0.8 mm/sec


    Power Settings

    Laser cutting Screenshot




    Kerf Bended Top Cover


    As I first added the motors and screwd them to the holders

    Then the belts were connected on both sides of the vehicle and the belts were of the correct fit


    Belts Connected

    Then I glued the board holder on the centre spot of base


    Board Holder glued to the Base

    Arranged the boards on the board holder and connected the wires and soldered the motor pins.


    Soldering the motor pins and connecting the jumper wires

    And now It is ready for some action.

    Mechanical Design almost completed



    Inside of car after system integration.

    And finishing the mechanical design added the top and front covers to the car.


    Hero Shot

    Download All Mechanical Design Files with names Click Here

    Electronics Design

    Design the board

    I have designed a board with ATtiny44 microcontroller with pins allocated for the motors, bluetooth and the Sensors. Designing was done on the Eagle software and see below the schematic diagram.


    See below the Board view.


    to Download the Design Files Click Here

    Milling the board

    The trace image

    final projoutcut
    The cut image

    to Download the Mill Files Click Here

    The board was ready and it is working , See below image

    The board before soldering

    The list of components used in making the board

    The finished board

    I have tested the board by using it for the Networking week, and it was working good.

    See below image to see the PINs I left to use in this project


    Changing the board

    Later I changed to Atmega 328p board because when multiple conditions were used data was not transferring correctly in Attiny board.

    I used the board from my Input Week for the project.

    Go to Input Week to see the board details

    schematic image

    Download Eagle Schematic

    board image

    Download Eagle Board

    board image

    board image

    Go to Input Week to see the board details

    Testing the motors

    The Motors I am using are 9 Volt DC motor.

    motor image

    Motors 9 V

    I decided to use motor driver module to make sure that the motors could get the correct voltage necessary to drive
    So I purchased a motor driver module equipped with L293D.
    L293D is a dual motor driver integrated circuit (IC).
    Microprocessors operate at low voltages and require a small amount of current to operate while the motors require a relatively higher voltage and current.
    This current cannot be supplied to the motors from the microprocessor. This is the primary need for the motor driver IC.
    L239D motor driver is a small Current Amplifier IC whose function is to take a low-current control signal and then turn it into a higher-current signal that can drive a motor

    data sheet for L293D

    motor driver image

    motor driver module equipped with L293D

    I gave the PD3 and PD4 pins of Atmega to C1-A and C1-B pins of Motor Driver,
    and the PD5 and PD6 pins of Atmega C2-A and C2-B pins of Motor Driver.
    Enable pins werent used , as it was working without it.
    I bought a 9V battery and tried giving voltage to the 12V pin in motor driver for driving the motors, but those were not working. This was because the motor needed 1 to 1.5 ampheres to work
    So 12 V and 5V voltage was given through SMPC( Switched mode Power Supply) through wires to the respective Vcc pins and Ground pin was also connected.

    Bluetooth module HC-05

    I bought a Bluetooth module HC-05 from online.

    bluetooth2 image
    bluetooth image

    HC-05 Bluetooth Module

    Data sheet of HC-05 Bluetooth Module

    HC-05 Technical Specifications

    • Serial Bluetooth module for Arduino and other microcontrollers
    • Operating Voltage: 4V to 6V (Typically +5V)
    • Operating Current: 30mA
    • Range: <100m
    • Works with Serial communication (USART) and TTL compatible
    • Follows IEEE 802.15.1 standardized protocol
    • Uses Frequency-Hopping Spread spectrum (FHSS)
    • Can operate in Master, Slave or Master/Slave mode
    • Can be easily interfaced with Laptop or Mobile phones with Bluetooth
    • Supported baud rate: 9600,19200,38400,57600,115200,230400,460800.

    Enable / Key - This pin is used to toggle between Data Mode (set low) and AT command mode (set high). By default it is in Data mode

    Vcc - Powers the module. Connect to +5V Supply voltage

    Ground - Ground pin of module

    TX -Transmitter -Transmits Serial Data. Everything received via Bluetooth will be given out by this pin as serial data.

    RX - Receiver - Receive Serial Data. Every serial data given to this pin will be broadcasted via Bluetooth

    State - The state pin is connected to on board LED, it can be used as a feedback to check if Bluetooth is working properly.

    LED - Indicates the status of Module

    Programming the board

    I first tried a Software Serial program as I was using the ATtiny 44 board,( later I changed to Atmega 328p because when multiple conditions were used data was not transferring correctly in Attiny).


    Motor Pins Defined for my Atmega 328p

    I used the board form my Input Week for the project.

    Go to Input Week to see the board details

    In my Program, I have defined the Rx and TX pins for Serial Communication PD0 and PD1 pins of Atmega 328p
    The Motor 1 pins are PD3 and PD4.
    The Motor 2 pins are PD5 and PD6.

    By testing with the arduino serial communication examples I found that the Serial transmission baudrates are 57600 and 9600.

    I defined the Software Serial command as "bluetooth"

    bluetooth.begins sets the data rate in bits per second (baud) for serial data transmission.
    bluetooth.available is used for getting the number of bytes (characters) available for reading from the serial port.
    bluetooth.read reads incoming serial data. I defined my bluetooth.read as character toSend for easy purpose.
    bluetooth.write writes binary data to the serial port. I added bluetooth.write to every condition in the program to verify the data transfer and later tested the program in Serial Monitor.





    Download the first program Click Here

    Here in the below program I have used Flag variables as I have seen those in many motor driven programs

    Flag variables are used to indicate a single state. Like an LED that needs to be ON or OFF. And these Variables are used in situations were we have to get in and out of states as fast as possible.

    Using Flag Variable is to give temporary states to pins when serial commands are given through Bluetooth.

    I tested the serial communication with serial monitor

    Simplifying the program

    I found that atmega 328p is a powerful chip and it doesnt require software serial for serial communication.
    So I removed the software serial commands and added the Serial. commands which are hardware serial.

    Now the Serial communication was much more easy.
    Also I removed the Flag statements and the OR conditions for different motor movements.
    I made the conditions more simpler by just making five conditions as follows:

    '0' for stop,
    '1' for forward motion of both motors
    '2' for reverse motion of both motors
    '3' for forward motion of Motor 2 and reverse motion of Motor 1, ie; Car gets right movement.
    '4' for reverse motion of Motor 1 and forward motion of Motor 2, ie; Car gets left movement.





    Download the final program Click Here


    Adding the Ultrasonic sensor to the front of the Car


    Ultrasonic sensor

    I added an extra if-else condition outside the Bluetooth conditions,
    so that if any obstacles comes in front of the Car inside 10 cm the all Motor pins go to Low state and stops the movement and gives '5' as Serial.write.
    I added the ultrasonic sensor trig and echo pins to pins PD2 and PD7 of Atmega 328p.





    Download the program Click Here

    Building the Android App

    I used MIT app Inventor 2 for making the android app to interface with bluetooth sensor

    Firstly, I added the basic blockfunctions for connecting the bluetooth device


    Then I added the Forward , Reverse , Right, Left and Stop buttons and their block functions.


    Then added the Bluetooth Connection Status block functions


    After that added the Feedback message that would be recieved via bluetooth.ie; when some thing comes inside 10 cm the text 'Obstacle in Front' shows or else 'Going In' shows in the text box.


    So below is the Design blocks of my app


    I have also added a Text box for feedback message, which normally shows 'Ready to Go' or else the feedback message shows.


    Download the Android Application Click Here

    App opened in phone

    Bill Of Materials

  • HC-05 Wireless Bluetooth Sensor -3.6 usd or 250 inr ( Indian bluetooth sensors wont really work and I had to buy two of them as the first one wasn't working)
  • Motor Driver equipped with L293D - 3.6 usd or 250 inr
  • sewing machine belt from repair shop - 0.73 usd
  • Fab Lab components like Acrylic sheet, Atmega 328p, Jumper Wires, other eleectronic components are approximately 22 USD

    Total Purchase Cost including Fab Components is 29.93 USD


    Inside of car when

    Final Project Presentation

    Slide image
    Slide 1

    presentation image
    Slide 2 - Presentation image

    Creative Commons License
    This work by Aby Michael is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.