Introduction: Torque: DIY All Terrain Electric Longboard

About: Brain of an Engineer, Heart of an Artist. I love building creative tech!

Five months of building, prototyping, testing, rebuilding and now finally introducing to you, TORQUE: the DIY all Terrain Electric Cruizer Board. For around 300 USD you get a masterpiece that you can proudly ride around! Compare that to the 1500+ Evolve Off road board they sell here.

Cruising at an optimum top speed of 15 mph with the high power lithium ion is a perfect power source to fuel your rides for over up to 20 miles a charge! The joystick in the hand responds to the slight but intentional movements of the thumb, giving you the full control and safety while riding. This off-road vehicle has superb suspensions which means you can smoothly take over anything without feeling a bump!

I believe in the power of open-source projects in changing the lives of numerous makers including me and this is a way that I give back to the community that has given me so much! :) and so the project is completely open-sourced and all code files, plans, and drawings are available to you for free in this instructable! (links in the last

Snapchat and Instagram: @chitlangesahas

I'd love to connect with you guys on Snapchat and Instagram, I document the experience, learning lessons and also answer questions on those platforms. Looking forward to connect! Here is my username for both: @chitlangesahas


Snapcode

Would you please take a moment to Vote?

Just a few clicks away (near the comments sections) is the Vote button. Completely free for you but priceless to me. It motivates me to keep producing these high-quality tutorials to share with you. I am open to all suggestions, please leave it in the comments.

If you are a hardcore DIY person like me, you definitely know how many trials - error - engineering goes into making your own project! And a small donation from you will help me in my coming projects :)

You can donate here on Paypal.

www.paypal.me/SahasChitlange

Means the world to me:)


Are you asking yourself, what should you do if you don't have the tools that I used here?

Let me answer this question here real quick. Neither do I. The instructable is simple to follow and can be replicated with some time investment.

One year ago, I was in the same spot, I had no tools (other than a few power tools like a drill) and I can relate to the question. However, even at this wonderful university, the only tool I have access to is the 3D printer and some power tools (safety issues, that is what they say). So I had to look up local makerspaces that would let me use their welding equipment and some tools!

Does that help?

I think as a maker the part of the fun is to figure out how to get your dream to life with the resources you have! (I used a hacksaw because I didn't have access to an angle grinder later in the instructable!)

Step 1: Picture Speaks a Thousand and a Video, Definitely More.

Because a video is a collection of a million pictures :D

Watch it!

Step 2: Here's What You Need

1) 4 x 4 Birch plywood 5 mm thick.

2) Wood Glue - Lots of it : https://www.walmart.com/ip/Elmer-s-Carpenter-s-Woo...

3) 1/4 in Square Tube - 36 inches

4) 1/2 in Square Tube - 36 inches

5) Springs: https://www.homedepot.com/p/Prime-Line-1-2-in-L-x-...

6) 24 V 250 W motor : http://www.ebay.com/itm/172763089240

7) BTS7960 H Bridge: https://www.amazon.com/HiLetgo-BTS7960-Driver-Ardu...

8) 6s 12000mAh Battery: https://hobbyking.com/en_us/multistar-high-capacit...multi-rotor-lipo-pack-1.html

9) A joystick: https://www.adafruit.com/product/512?gclid=CjwKCAj...

10) 10-inch pneumatic wheels : https://www.harborfreight.com/10-inch-pneumatic-ti...

11) RF Module : https://www.digikey.com/catalog/en/partgroup/433mh...

I may have missed to include some required parts and I request you to go through all the steps.

Step 3: Cut the Birch Plywood

I got a 8 feet by 4 feet plywood for 6 dollars from the Home Depot in their discounted section which serves well for the purpose of making the deck. We are going to glue together three sheets of Birch Plywood to make the deck.

1) We cut the birch plywood into three pieces of 1 feet x 4 feet. We used jig-saw to get all the three pieces.

2) Sand off the edges to get a clean cut.

Step 4: Prepare the Sheets to Be Glued

The plywood may have a coating that the company has applied to have some protection which we want to get rid of because that coating will affect the adhering of the plywood layers.

1) Use #60 Grit paper to sand off the faces of Plywood, this will get rid of all the coatings and give it the rough surface ready for bonding.

# Birch dust can be nasty and gets all over so make sure to use all the protection gears to protect yourself, unless you don't care about your life :P

# Use an orbital sander if you have one, it makes life a lot easier.

Step 5: Stick It! : Clamp the Boards Together

To make our deck, we are going to stack the glued boards together. Let's get to work!

1) Find a firm plain surface to clamp the glued boards to the surface.

2) I could not find a good surface to clamp and had to use two tables that had pipes which made a decent clamping site.

3) Get all the clamps you can and clamp the three sheets.

4) The pressure is going to press the glue outwards and it will drip, have something to wipe that off.

# The pressure is going to make the boards slide against each other and it is important to keep them all aligned and corners matched.

# The boards will take about 24-36 hours to dry, its always better to keep them for 48 hours because there is no going back once you unclamp them.


Step 6: Let the Boards Soak Up the Glue.

Once the boards are glued up, let them take the glue into their pores which makes them ready to take all the future abuses.

Keep all the children out of the clamp zone, any disturbances are going to result in frustration lol.

Step 7: Choose the Deck Design

Choose the deck design and print it out as a poster on a couple of A4 paper sheets. We will use this as the template guide when we cut our deck on a bandsaw.

# We have 10 Inch wheels, choose an appropriate deck size. I have attached a pdf which you can print and use right away. Else, there is also a adobe illustrator file which you can resize as required.

Photo by MESSALA CIULLA from Pexels

Step 8: Paste the Deck Poster on the Wooden Deck

To cut the deck of the skateboard on the bandsaw, we want to make a visual guide which we guide our blade through and cut the wood.

1) Use some glue, preferably small amount as the bond doesn't have to be a long lasting one and it will be easier for us later to remove it.

2) Place the paper template over the wood and make sure you get rid of all the air bubbles.

3) let it set just enough and we are ready to move on to the next step.

# When laying over the individual pieces of A4 paper, make sure you align the templates along their edges and not overlapping them. This will give a better aligned template.

Step 9: Cut the Deck on the Bandsaw

Grrrrr Grrrrr... Time to cut some wood. This is an exciting step but behold, do it with all the patience you can gather. One wrong cut, and there you go, what should take a week will take two weeks to complete. ¯\_(ツ)_/¯.

1) Take care to keep the cut straight.

2) Feed it slowly, "feel" the cut. Sometimes you just know that it's going to f**k up and you should right-away stop and take time to make it the best you can. rushing through doesn't help.

3) Avoid burnt wood by keeping a steady, not a tortoise-ey neither a snake-ey pace. Just like a calm human-ey one. (I just made this up).

Step 10: Making the Edges Smooth

Wow! You just made a deck from four sheets of wood, some glue and lots of pressure. We cut it into a shape of our skateboard deck using the bandsaw and this operation has left its scars on the deck. Lets sand it down to get an edge which is soft to touch, all day long.

I am no expert on sandpapers but one thing I have learned is that the *lower* (thanks for the correction in the comments guys! you are awesome :) ) the sandpaper number, the coarse and rough finish we get. These are primarily used when you want to get rid of a lot, quickly.

Using the belt sander makes it easy to get uniform sanding without the chance of angled edges you might get if doing using a sand paper. Finally you can use the orbital sander to give it a nice finish.

Step 11: Look Into the Future: the Trucks

Because building the trucks involve a plenty of steps, I think it is a good time to show you at this point the end result of what the trucks are going to look like. This I believe will make it easier to make sense of the following steps that go into making the trucks.

#while reading other Instructables, although they were very well documented when steps got complicated I sometimes had a hard time to figure out what was going on and I jumped to the last step in the sequence to make sense of where the current one was leading to. So for my style, I thought it will be interesting to add a "Look into the future" step before each set of complicated steps so that you already know what's going on!

Let me know how well this helped you :) Always open to suggestions.

Step 12: The Turning Mechanism (animation)

Here is a gif animation showing the working of the turning mechanism.

Step 13: The Four Trapezoids; Making the Trucks - I

We will be making the trucks from scratch using 1.5-inch and 0.5 inches Squared Steel tubing. So first we are cutting alternate parallelograms in the tubes.

1) The parallelograms are 4 inches on the bottom side, and two inches in the top.

2) The sides are 45 degrees to the bases.

3) We are going to cut the top of each of the pipes so that the two pieces go into each other.

4) A screw and bolt go through both the parallelogram shaped metal pieces, allowing it to freely pivot like a see-saw.

Step 14: The Axle Holders ; Making the Trucks II

We use the threaded rods to serve as an axle. To make the axle stay in place and also aid the attachment of the axle to the whole truck assembly, we have the Axle holder.

1) We are going to use 1/4th inch square pipes which are 11 inch in size.

2) Cut two pipes of 11 inch square pipes.

3) Smooth out the cut ends with a file to make sure the sides are free of burrs.

# I did not expect the hacksaw to work so nicely with the metal.

Step 15: The Small Wedges : Making the Truck III

At this point in our build, we have the whole turning mechanism is based on this angled arrangement of the trucks and the deck.

Do the pictures speak a thousand words to you? Yes? Good. I will stop writing.

Questions in the questions sections below.

Step 16: The Truck Base : Making the Trucks IV

The truck base is the piece of metal that acts as the mounting plate helping the truck assembly to mount to the deck securely.

1) Cut the small x by x sized metal bar to serve as the base of the trucks. This will go between the deck and the truck assembly.

2) Deburr the edges. A quick filing will work.

3) You may want to give it an acetone wash, gets rid of the protective oily substance the bar has.

Step 17: Weld It Together : Making the Trucks V

We got the components ready, let's fuse them together with some welding.

As much it is fun to watch the welding process, it's as much harm to your bare eyes. Make sure to watch the fun through a pair of UV glasses.

Watch out for the puddle of hot metal, not fun to get burned by sparks and molten metal.

Step 18: Make the Axle: Cut the Threaded Rods

The threaded rods serve as axles for the four wheels to rest onto. I was surprised later on how well the 5/16th Inch threaded rods worked as axles despite the fact that they had rough ridges which I was worried will cause friction between the wheels and the axle.

Step 19: Drill the Holes in the Axle Holder: Make the Trucks VI

In this step, we are drilling the holes all the way through the axle holder into the axle to allow us mount the trapezoids using a nut-bolt.

I managed to mess up the drill by drilling through both of them at once which wobbled the whole drill, giving me a wider hole than needed. I am just happy that it worked for me. The lesson? Drill out the holes into the holder and axle separately. I do not know why this happened, just know that it did.

Step 20: Spring Suspensions: Make the Trucks VII

To help the board spring back into its normal horizontal position every time you lean right or left to turn, we add some stiff springs that do the job of keeping the deck horizontal under the absence of intentional leans.

1) I got two bigger springs and cut them into half to make four smaller ones so that each truck assembly gets two springs on either side.

2) The springs also help as suspensions so we have two wins with one shot!

Step 21: The Sprocket Wheel Coupler

To mount the Sprocket which drives the wheel we need a missing piece which connects the sprocket to the wheel.

1) I made a simple model in Fusion 360 for the coupler.

2) The file is available to download below.

3) 3D print the model using ABS because ABS is much stronger than PLA and serves best for our purpose.

4) The dimensions of the voids in the model are made to fit the sprocket and wheel pair and you might want to modify the file to fit your dimensions.

5) Make sure to print the model in High Density (70% +) so that we have the maximum density.

6) Push the coupler onto the wheel so that it fits snugly.

#The File is available to download in multiple formats here: https://a360.co/2JCmwOp

Step 22: Assemble the Wheels

We have all our mechanical assemblies together now let us assemble the wheels together and this gives us a manually ridable mountainboard!

1) Because the board will experience vibrations while riding, it is a good idea to add locknut solution onto the threads to prevent the nuts from undoing themselves.

Step 23: Sprocket to the Wheel - Chain Assembly

We want to attach the sprocket to the wheel so that the motor is able to deliver the power to the wheel using the chain drive system.

1) The ABS print was made so that the sprocket can be forced into it.

2) Push the sprocket into the coupler using some brute force.

3) Because of the high torques involved, we want to make sure the sprocket fits snug and stationary thus avoiding any relative rotation between the wheel and the sprocket, we use some bolts and gorilla glue to do this.

4) I did not have small bolts (11 mm long) so I chop off the bolts that I had, with a Dremel making them 11mm long to use for #3.

Step 24: Look Into the Future : Make the Control Joystick

The control joystick is a simple remote with a joystick with which we are controlling the speed of the motor. The remote is simple as that. It has RF module, an Arduino Nano, and two 3V lithium ion batteries.

Step 25: 3D Print the Case - Make the Control Joystick I

1) 3D print the STL file that is attached with this step. This print will give us the shell of the remote control we are making. The color of the print may be chosen desirable.

The Models are available to download here or sketchfab

Joystick Case I by chitlangesahas on Sketchfab

Control Joystick Case - II by chitlangesahas on Sketchfab

Step 26: Install the Electronics - Make the Control Joystick II

1) The Arduino nano has corners that won't allow it to fit the curved sides of the 3D printed body so we have to sand off the corners to match the curved side of the transmitter.

2) Wire all the electronics as shown in the picture, to state it simple here is the simple representation of the wiring that is happening:

Transmitter Pin VCC ==> Arduino Nano Pin 3.3V Vcc

Transmitter Pin GND ==> Arduino Nano Pin GND

Transmitter Pin DATA ==> Arduino Nano Pin 3

Joystick Pin +5V ==> Arduino Nano Pin +5V Vcc

Joystick Pin GND ==> Arduino Nano Pin GND

Joystick Pin Y_AXIS ==> Arduino Nano Pin

3) Hot glue the Joystick to the 3D printed case.

4) Hot glue the Arduino Nano and the transmitter into the case.

5) Solder a piece of thin tin metal to the ends of the battery input connections to make a makeshift battery holder.

# You might find it easier to put all the components in the case and then wire them, that is what worked for me.


The code for the Arduino Nano (Transmitter).

#include <VirtualWire.h><br>#define X_AXIS A0
#define Y_AXIS A1
#define Y_INIT 520
#define TX_PIN 3
int inputSwitch;
int xAxis;
int yAxis;
int switchOn;
void  setup() 
{
  inputSwitch = 2;
  Serial.begin(9600);
  pinMode(inputSwitch , INPUT_PULLUP);
  vw_set_tx_pin(TX_PIN);          // Sets pin D12 as the TX pin
  vw_setup(4000);             // Bits per sec
}D
void  loop()
{
  yAxis = analogRead(Y_AXIS);
  if(digitalRead(inputSwitch)== LOW)
  {
    switchOn = 1;
  }
  else switchOn = 0;
  String joystick_data = String(yAxis) + String(",") + String(switchOn);
  Serial.println("yAxis = " + String(yAxis - Y_INIT));
  Serial.println("Switch state = " + String(switchOn));
  Serial.println(String(joystick_data));
  String stringData = String(joystick_data);
  sendData(stringData);
}
/* sendData takes in a string and sends it over the 
 *  RF Transmitter. 
 */
void  sendData(String data)
{
  char msg[30] ;
  data.toCharArray(msg, 100);
  vw_send((uint8_t *)msg, strlen(msg));
  vw_wait_tx();
}

Step 27: Mount the Motor

Mounting the motor was a tricky part of the whole build because of the amount of the space available and the way the trucks move relative to the wooden deck. We can not mount the motor on the deck because the deck dips a substantial amount while turning and this will cause a slack in the chain.

To solve that problem we mount the motor at a place that is relatively stationary with respect to the axle which is the axle itself!

1) 3D print the STL file in 100% infill.

2) if your design varies or you are modifying the design, make sure to modify the stl file accordingly. For example, if you use a different sized pipe, make sure to adjust the square duct to fit your size.

3) Drill the necessary holes for the motor mounting. Also, it does help to drill slots instead of circular holes because you need some "play" to make the motor-chain-wheel alignment successful.

# I was skeptical of the 3D printing being able to print something that will survive the stresses induced when the motor is running so I did some tests on fusion 360 and surprizingly it passed with flying colours! (Literally!)

Motor Mount by chitlangesahas on Sketchfab

Step 28: The Electronics Enclosure Case

To protect the battery and other electronics I tried a bunch of different ways to make an enclosure. 3D printing a case, trying a 9 in x 6 in a cake pan and using a meshed office bin! All the ways I tried were too impractical or expensive so finally, I thought it will be best to make a case out of laser cut 1/8th-inch sheet of wood.

The attached file is a plan that you can use to cut the case using a lasercutter.

The case was made using the online tool MakerCase : http://www.makercase.com

Step 29: Test Ride

Time to test ride. I held together the circuit and battery with some masking tape and took it for a test ride around the room and outside.

The test passed with ... Italian Trulli

Image credit : https://www.paintwithflyingcolors.com/

Step 30: Wire and Install the Electronics

Now that we have all the mechanics and electronics ready, we should wire up all the electronics.

1) Solder an antenna to the RF module to have no-glitch performance while using the joystick.

2) Check the battery connections, vibrations can loosen them quickly and can result in some magic smoke.

3) Make sure the motor is connected in the right polarity, opposite connections can cause it to go in reverse.

4) I used some gorilla tape to secure the battery and the electronics to the deck. This flexible tape also dampnes the vibrations that the battery experiences.

# Make sure the installation is a nice permanent one, failure to do so will cause them to fall out and get damaged.

Step 31: The Motor Controller Side Code and All Other Files!

#include <VirtualWire.h><br>#define RX_PIN 2
#define Y_INIT 503
#define MIN_FORWARD_SPEED 1
#define MIN_BACKWARD_SPEED -1
#define RPWM 5
#define LPWM 6
#define R_EN 7                                    // Enable Backward
#define L_EN 8                                    // Enable Forward 
int speed;
void  setup()
{
    Serial.begin(9600);	
    Serial.println("setup");                      //Prints "Setup" to the serial monitor
    pinMode(RPWM, OUTPUT);
    pinMode(LPWM, OUTPUT);
    pinMode(R_EN, OUTPUT);
    pinMode(L_EN, OUTPUT);
    digitalWrite(L_EN, HIGH);
    digitalWrite(R_EN, HIGH);
    vw_set_rx_pin(RX_PIN);                        //Sets pin D12 as the RX Pin
    vw_setup(4000);	                              // Bits per sec
    vw_rx_start();                                // Start the receiver PLL running
}
void loop()
{
    char *s;                              // savePtr for strtok_r
    char p[VW_MAX_MESSAGE_LEN];           // pointer for strtok_r ? 
    uint8_t buf[VW_MAX_MESSAGE_LEN];      // buffer to save the incoming message.
    uint8_t buflen = VW_MAX_MESSAGE_LEN;  // length of the message buffer equals to VW_MAX_MESSAGE_LEN #30
    if (vw_get_message(buf, &buflen))     // A new message?
    {
      int i;
      for (i = 0; i < buflen; i++)
      {
        p[i] = buf[i];
      }
      speed = map(atoi(strtok_r(p, ",", &s)), 0, 1023, -100, 100);             
      Serial.println(speed);
      set_speed(speed/2);
    }
}
 /*
  * Takes the int speed 0 - 100 and sets the 
  * speed of the motor as speed %. 
  * example speed = 12 ===> motor set to 12% max speed.
  */
void  set_speed(int speed)
{
  bool is_reverse = false;
  if (speed > MIN_FORWARD_SPEED)
  {
    // forward
    digitalWrite(L_EN, HIGH);
    digitalWrite(R_EN, HIGH);
    analogWrite(RPWM, 0);
    analogWrite(LPWM, map(speed, 0, 100, 0, 255));
  }
  else if (speed < MIN_BACKWARD_SPEED)
  {
    // reverse
    digitalWrite(L_EN, HIGH);
    digitalWrite(R_EN, HIGH);
    Serial.println("reverse");
    analogWrite(LPWM, 0);
    analogWrite(RPWM, map(abs(speed), 0, 100, 0, 255));
  }
  else
  {
    digitalWrite(L_EN, LOW);
    digitalWrite(R_EN, LOW);
  }
}
{
    char *s;                              // savePtr for strtok_r
    char p[VW_MAX_MESSAGE_LEN];           // pointer for strtok_r ? 
    uint8_t buf[VW_MAX_MESSAGE_LEN];      // buffer to save the incoming message.
    uint8_t buflen = VW_MAX_MESSAGE_LEN;  // length of the message buffer equals to VW_MAX_MESSAGE_LEN #30
    if (vw_get_message(buf, &buflen))     // A new message?
    {
      int i;
      for (i = 0; i < buflen; i++)
      {
        p[i] = buf[i];
      }
      speed = map(atoi(strtok_r(p, ",", &s)), 0, 1023, -100, 100);             
      Serial.println(speed);
      set_speed(speed/2);
    }
}
 /*
  * Takes the int speed 0 - 100 and sets the 
  * speed of the motor as speed %. 
  * example speed = 12 ===> motor set to 12% max speed.
  */
void  set_speed(int speed)
{
  bool is_reverse = false;
  if (speed > MIN_FORWARD_SPEED)
  {
    // forward
    digitalWrite(L_EN, HIGH);
    digitalWrite(R_EN, HIGH);
    analogWrite(RPWM, 0);
    analogWrite(LPWM, map(speed, 0, 100, 0, 255));
  }
  else if (speed < MIN_BACKWARD_SPEED)
  {
    // reverse
    digitalWrite(L_EN, HIGH);
    digitalWrite(R_EN, HIGH);
    Serial.println("reverse");
    analogWrite(LPWM, 0);
    analogWrite(RPWM, map(abs(speed), 0, 100, 0, 255));
  }
  else
  {
    digitalWrite(L_EN, LOW);
    digitalWrite(R_EN, LOW);
  }
}

Step 32: Take It for a Ride!

Make it Move Contest

First Prize in the
Make it Move Contest