The Tank in Battle City

The Tank in Battle City


The small previous tank has the size of the light tanks, and the speed of the heavy tanks. In order to carry Microduino secret weapons such as turret(13.8mm water cannon)and surveillance cameras(made by Chen Hao)better, a larger and more rapidly tank enters the stage of designing:


The appearance is still the classic and solid wooden structure.


The wheel set adopts 1 driving wheel, 1 inducer + bogie wheel, and 1bogie wheel.
The electrical machine adopts 370 reduction unit*2.


The power amplifier board is provided by Huashengmi.


The control adopts Microduino Core+ 2.4g module, and match up with Joypad.



Make the set-up part:


Insert some pictures at first:

The graphic designed picture. It adopts double front boards + double side boards structure.

Simulation of 3D effect(In this picture it is the 2-wheel version, and the one I made is 3-wheel version, which will have better steering performance.).

Start the laser cutting. The wooden board is 2.75mm Aosong board.

Cutting is finished. It turns out that the moulding of the side boards of this version will produce big resistance on tracks, which will make it too slow.

Begin to build. Install the two layer transverse plates and a vertical plate of the main body in place.

Install the wipe board in place. In order to make the strength of the fixation of the motor enough, I adopt double vertical plates structure.

Install the motor on the double vertical plates. The motor is 370 gear motor provided by Shenyang, a high-end good with Hall Velocity Measurement, which has too many lines.

Install the driver wheelset.

Install the side board.

A bit like the tanks in the First Word War.

More like, after installing tracks.

Compared with the last generation of small tanks(on the left), it is bigger, faster, and stronger.

One more photo.

Install the circuit part. Because I choose a motor driven board compatible of Aduino, so install a transfer board transferring from Microduino to Aduino at first.

Install the driver board, and begin to debug.

This is the structure redesigned later, with a set of road wheel in the middle, which make it obtain the very good steering performance and walking performance. You can compare it with the one above.

Place Microduino, one Core, and one 2.4g.

Splice tracks.



#include “Arduino.h”


#include <RF24Network.h>

#include <RF24.h>

#include <SPI.h>


// nRF24L01(+) radio attached using Getting Started board

RF24 radio(9, 10);

RF24Network network(radio);

const uint16_t this_node = 1;  //Set the ID of this machine.

const uint16_t other_node = 0;


struct send_a { //Send.

uint32_t node_ms;   //The running time of the nodes.



struct receive_a { //Receive.

uint32_t ms;

uint16_t rf_CH0;

uint16_t rf_CH1;

uint16_t rf_CH2;

uint16_t rf_CH3;

uint16_t rf_CH4;

uint16_t rf_CH5;

uint16_t rf_CH6;

uint16_t rf_CH7;



boolean nrfParse(uint16_t * _channal) {


// Is there anything ready for us?

while ( network.available() ) {

RF24NetworkHeader header;

receive_a rec;, &rec, sizeof(rec));


_channal[0] = rec.rf_CH0;

_channal[1] = rec.rf_CH1;

_channal[2] = rec.rf_CH2;

_channal[3] = rec.rf_CH3;

_channal[4] = rec.rf_CH4;

_channal[5] = rec.rf_CH5;

_channal[6] = rec.rf_CH6;

_channal[7] = rec.rf_CH7;




send_a sen = { millis() };  //Send these data, corresponding to the data sent ahead.

RF24NetworkHeader header(other_node);

boolean ok = network.write(header, &sen, sizeof(sen));

return ok;





boolean nrfBegin() {

SPI.begin();    //Initialize SPI bus.


if (! radio.setDataRate(RF24_250KBPS))  {

return false;


else  {

network.begin(/*channel*/ NRF_CHANNEL, /*node address*/ this_node);

return true;






#define _DEBUG  //DEBUG


#define NRF_CHANNEL 70  //nRF gallery.

#define BLE_SPEED 9600  //The speed of the Bluetooth interface.


#define SAFE_TIME_OUT 250   //Out of control protection time.

#define MAX_THROTTLE 255 //The largest gas < 255

#define MAX_STEERING 512 //The biggest turning < 512

#define CHANNEL_THROTTLE  2 //The gas channel

#define CHANNEL_STEERING  1 //Turn channel


#if defined(__AVR_ATmega32U4__) || (__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega128RFA1__)

#define motor_pin0A 8  //PWM

#define motor_pin0B 6

#define motor_pin1A 7  //PWM

#define motor_pin1B 5

#define motor_fixL 1  //Modify the speed as -1 to 1.

#define motor_fixR 1  // Modify the speed as -1 to 1.


#define motor_pin0A 6  //PWM

#define motor_pin0B 8

#define motor_pin1A 5  //PWM

#define motor_pin1B 7

#define motor_fixL -1 // Modify the speed as -1 to 1.

#define motor_fixR -1 // Modify the speed as -1 to 1.




Related Post

The Microduino Tank

The Microduino Tank

I don’t say much, start to work at once! Start with the materials list, this one is a green environmental…

Leave a Reply

Your email address will not be published. Required fields are marked *

Skip to toolbar