BTSmartFan Servo/DC motor controlled using Bluetooth

Dependencies:   Servo mbed-dev

Fork of BTSmartFan_WIZwiki-W7500 by justin kim

Prerequisite

This example is to control a servo motor and DC motor using bluetooth.

To implement this function, you need a Platform board, Easy Module Shield V1, Bluetooth module, DC jack, 5V DC Power Supply.

Below are what we used.

  • WIZwiki-W7500 from WIZnet (Platform board)
  • Arduino Motor Shield
  • Easy Module Shield(Not mandatory)
  • HC-05 bluetooth module
  • Servo motor(DM-S0300D)
  • DC motor(5V)
  • DC jack
  • 5V DC Power Supply

Hardware Configuration

WIZwiki-W7500 Pin map

pin map

Arduino Motor Shield + DC motor(5V) + DC jack + 5V DC Power Supply

pin map

Easy Module Shield(Not mandatory) + HC-05 bluetooth module + Servo motor(DM-S0300D)

pin map


Software

BlueTerm (Application)

download a BlueTerm App to send a command message to bluetooth module with smart phone.

Pins setting

main.cpp

Serial pc(USBTX, USBRX);
Serial bt(PA_14, PA_13);
Servo myservo(D14);
PwmOut Motor(D3);
DigitalOut direction(D12);

Baud rate

main.cpp

    pc.baud(115200);
    //bt.baud(115200);
    bt.baud(9600);
Revision:
0:7441087c2a16
Child:
1:1ad093d2a110
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jun 29 01:27:03 2015 +0000
@@ -0,0 +1,101 @@
+/**
+ ******************************************************************************
+ * @project  Smart BT Fan
+ * @author  Justin Kim
+ * @version V1.0.0
+ * @date    29-JUN-2015
+ * @brief   Main program body
+*******************************************************************************
+**/
+
+/* Includes ------------------------------------------------------------------*/
+#include "mbed.h"
+#include "Servo.h"
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+Serial pc(USBTX, USBRX);
+Serial bt(PA_14, PA_13);
+Servo myservo(D14);
+PwmOut Motor(D3);
+DigitalOut direction(D12);
+
+/* Private function prototypes -----------------------------------------------*/
+
+/* Private functions ---------------------------------------------------------*/
+/**
+   * @brief     Main Function
+   * @param  None
+   * @retval    None
+   */
+int main(void)
+{
+    char ch;
+    pc.baud(115200);
+    bt.baud(115200);
+    pc.printf("Hello World!\n\r");
+    bt.printf("Hello World!\r\n");
+    
+    direction.write(1);
+    Motor.period_ms(1);
+    
+    while(1)
+    {
+        if(bt.readable())
+        {
+            ch=bt.getc();
+            pc.printf("%c",ch);
+            bt.printf("%c",ch);
+                                  
+            if(ch == '*')
+            {
+                myservo = 0.5;
+            }
+            else if(ch == '+')
+            {
+                myservo = myservo + 0.1;
+            }
+            else if(ch == '-')
+            {
+                myservo = myservo - 0.1;
+            }     
+            else if(ch == '@')
+            {
+                Motor.write(0.8);
+            }
+            else if(ch == '!')
+            {
+                Motor.write(0);
+            }
+        }
+        
+        else if(pc.readable())
+        {
+            ch=pc.getc();
+            bt.printf("%c",ch);
+            pc.printf("%c",ch);            
+                        
+            if(ch == '*')
+            {
+                myservo = 0.5;
+            }
+            else if(ch == '+')
+            {
+                myservo = myservo + 0.1;
+            }
+            else if(ch == '-')
+            {
+                myservo = myservo - 0.1;
+            }
+            else if(ch == '@')
+            {
+                Motor.write(0.8);
+            }
+            else if(ch == '!')
+            {
+                Motor.write(0);
+            }
+        }
+    }
+}