Project showcase
Bluetooth Boat in doubleA

Bluetooth Boat in doubleA © Apache-2.0

An Android-control(BT) system is added in a motor toy boat and it can go any direction slowly.

  • 3,487 views
  • 1 comment
  • 11 respects

Components and supplies

About this project

The history of Radio Controlled (RC) model vehicle may be about 100 years. It's technology is mature but the cost is not popular. A bluetooth controlled Arduino with Android smartphone system(double A) is an inexpensive solution.

Outdoor with Fun

The system was embedded into a simple motor toy boat model set and overall budget is less than USD 10. I shared this project with students in my school and totally 6 BT boats were made before the Open Day. As beginners, my students spent about 20 hours to complete the whole project and earned an unforgettable experience on Arduino project.

Mechanical Part

The boat model sets were purchased on Taobao online shopping website. All mechanical parts were provided in a kit-set, expect a rudder and two plastic bottles. I let them to choose their own bottles and the rudder, which can be shaped in other form, is prepared for them thru' a laser cutter.

Drive by waterwheel

turn by rudder

Electronic Part and Apps in Ardroid

We chose Arduino nano as its small size. Motor drive L9110 is used and the simple motor is connected to the wheel of the boat for movement. For simplicity, it can move forward or backward with constant speed in this version. The rudder is controlled by a mini servo, and the Arduino was connected to a Android thru' a bluetooth module HC-06. The apps is created by MIT Appinventor.

Education Highlight

For educational purpose, some features of this boat are highlighted here:

- Floating, balancing(centre of gravity) or even fluid dynamic are relevant academic topics can be taught.

- Various coding skills are used in this project, such as servo motor, simple motor with motor drive and communication between smartphone and arduino thru' BT.

- The framework of the boat is made of plastic with holes, students can build up in their own style.

- A curriculum is set for whole project

Cut the lane

U-turn

Kid with fun

P.S.:

The program of apps of Android is linked below:

ai2.appinventor.mit.edu/?galleryId=5648949318516736

Code

finish.inoArduino
#include <SoftwareSerial.h> 
#include <Wire.h>  //SoftwareSerialWire SoftwareSerial 
#include <Servo.h>
SoftwareSerial I2CBT(A0,A1); //PIN10PIN11RXTX 
Servo myservo;  // create servo object to control a servo


int pos = 0;    // variable to store the servo position
int INA = 9; 
int INB = 10;
//int LED = 13;

void setup() {
  Serial.begin(9600); //Arduino9600 
  I2CBT.begin(9600); //57600
  myservo.attach(3);  // attaches the servo on pin 3 to the servo object
  pinMode(INA,OUTPUT); 
  pinMode(INB,OUTPUT); 
}

void loop() { 
  byte cmmd[20]; 
  int insize; 
  servo(90);
  while(1){ 
    if ((insize=(I2CBT.available()))>0){
       Serial.print("input size = "); 
       Serial.println(insize);  // 
       for (int i=0; i<insize; i++) {
           Serial.print(cmmd[i]=char(I2CBT.read()));//
           //Serial.print("\n");
       }  //for
     switch (cmmd[0]) {
        case 97: //'a'     
          //digitalWrite(LED,HIGH);
          motorforward();
          Serial.print("  go");
        break;  

        case 98: //'b'
          //digitalWrite(LED,LOW);
          motorstop();
          Serial.print("  stop");
        break;

        case 102: //'f'
          //digitalWrite(LED,LOW);
          motorback();
          Serial.print("  back");
        break;






        case 99: //'c'
          servo(150);
          Serial.print("  Left");
        break;

         case 100: //'d'
          servo(90);
          Serial.print("  Ctr");
        break;
       
        case 101: //'e'
          servo(30);
          Serial.print("  Right");
        break;
               
     } //Switch     
     Serial.print("\n");
     
     
     } //if 
          
 
  
  
  } //while
}




//**************************
void servo(int servopos) {
  myservo.write(servopos);              // tell servo to go to position in variable 'pos'
  delay(15);                       // waits 15ms for the servo to reach the position
}

void motorforward() { 
  digitalWrite(INA,LOW);
  digitalWrite(INB,HIGH); 
  //delay(1000); 
}

void motorstop() { 
  digitalWrite(INA,LOW);
  digitalWrite(INB,LOW); 
  //delay(1000); 
}

void motorback() { 
  digitalWrite(INA,HIGH);
  digitalWrite(INB,LOW); 
  //delay(1000); 
}

Schematics

circuit_RkmZDUJZHn.jpeg
Circuit rkmzdujzhn
Schematic design
by Designspark
boat02_Iz7ATUJQc5.sch

Comments

Similar projects you might like

Arduino Bluetooth Boat

Project tutorial by CrazySuspct

  • 2,286 views
  • 3 comments
  • 20 respects

Arduino Customized Bluetooth Controller

Project showcase by Liao Ping Lun

  • 1,133 views
  • 0 comments
  • 3 respects

Otto DIY+ Arduino Bluetooth Robot Easy to 3D Print

Project tutorial by Team Otto builders

  • 48,249 views
  • 117 comments
  • 162 respects

Bluetooth Mini Car

Project showcase by Hesham

  • 8,138 views
  • 2 comments
  • 29 respects

Control RC Car via Bluetooth with Android Smartphone

Project showcase by JoyDutta06

  • 7,322 views
  • 3 comments
  • 5 respects

Connecting "stuff" via Bluetooth / Android / Arduino

Project tutorial by MJRoBot

  • 12,070 views
  • 20 comments
  • 30 respects
Add projectSign up / Login