Bluetooth

Dependencies:   Motor mbed

IoT Bluetooth Fan Control

Description

This project uses Bluetooth on the smartphone to control a Smart IoT Fan that comes with an thermal sensor and a bluetooth module. The phone can access the temperature read by the thermal sensor, and send send the command to the phone and adjust the speed of the Fan accordingly.

Components

mBedLM19
VoutVs
GNDGND
P15Vout
mBedmd80a
GNDGND
P5Ain2
P6Ain1
VoutSTBY

Project Picture

/media/uploads/wufeiok/img_0257-1-.jpg

Demo Video

Code

#include "mbed.h"
#include "Motor.h"
RawSerial  dev(p13, p14);
AnalogIn   temp(p15);

Motor m(p23, p6, p5);

float _temp; 
float _speed = 0;
void dev_recv()
{
    while(dev.readable()) {
        char mode = dev.getc();
        if (mode == 'T') {
            _temp = temp;
            _temp = 38.0-27.5*_temp;
            dev.printf("%f\n",_temp);
 
        }
        if (mode=='V') {
            char type = dev.getc();
            if(type=='?') {
                dev.printf("%f\n",_speed);
            }  
            if(type=='+') {
                if (_speed < 1.0) {
                    _speed= _speed + 0.1;
                }
                m.speed(_speed);
                dev.printf("New Speed %f\n",_speed);
            } 
            if(type=='-') {
                if (_speed >= 0.1) _speed-= 0.1;
                m.speed(_speed);
                dev.printf("New Speed %f\n",_speed);
            }
        }
        
    }
}

int main()
{
    dev.baud(9600);
    dev.attach(&dev_recv, Serial::RxIrq);

    while(1) {
        sleep();
    }
}

Committer:
wufeiok
Date:
Mon Mar 13 23:43:10 2017 +0000
Revision:
0:84c73f8a4a96
Bluetooth Fan Controller;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wufeiok 0:84c73f8a4a96 1 #include "mbed.h"
wufeiok 0:84c73f8a4a96 2 #include "Motor.h"
wufeiok 0:84c73f8a4a96 3 RawSerial pc(USBTX, USBRX);
wufeiok 0:84c73f8a4a96 4 RawSerial dev(p13, p14);
wufeiok 0:84c73f8a4a96 5 DigitalOut led1(LED1);
wufeiok 0:84c73f8a4a96 6 DigitalOut led4(LED4);
wufeiok 0:84c73f8a4a96 7 AnalogIn temp(p15);
wufeiok 0:84c73f8a4a96 8
wufeiok 0:84c73f8a4a96 9 Motor m(p23, p6, p5);
wufeiok 0:84c73f8a4a96 10
wufeiok 0:84c73f8a4a96 11 float _temp;
wufeiok 0:84c73f8a4a96 12 float _speed = 0;
wufeiok 0:84c73f8a4a96 13 void dev_recv()
wufeiok 0:84c73f8a4a96 14 {
wufeiok 0:84c73f8a4a96 15 led1 = !led1;
wufeiok 0:84c73f8a4a96 16 while(dev.readable()) {
wufeiok 0:84c73f8a4a96 17 char mode = dev.getc();
wufeiok 0:84c73f8a4a96 18 if (mode == 'T') {
wufeiok 0:84c73f8a4a96 19 _temp = temp;
wufeiok 0:84c73f8a4a96 20 _temp = 38.0-27.5*_temp;
wufeiok 0:84c73f8a4a96 21 dev.printf("%f\n",_temp);
wufeiok 0:84c73f8a4a96 22
wufeiok 0:84c73f8a4a96 23 }
wufeiok 0:84c73f8a4a96 24 if (mode=='V') {
wufeiok 0:84c73f8a4a96 25 char type = dev.getc();
wufeiok 0:84c73f8a4a96 26 if(type=='?') {
wufeiok 0:84c73f8a4a96 27 dev.printf("%f\n",_speed);
wufeiok 0:84c73f8a4a96 28 }
wufeiok 0:84c73f8a4a96 29 if(type=='+') {
wufeiok 0:84c73f8a4a96 30 if (_speed < 1.0) {
wufeiok 0:84c73f8a4a96 31 _speed= _speed + 0.1;
wufeiok 0:84c73f8a4a96 32 }
wufeiok 0:84c73f8a4a96 33 m.speed(_speed);
wufeiok 0:84c73f8a4a96 34 dev.printf("New Speed %f\n",_speed);
wufeiok 0:84c73f8a4a96 35 }
wufeiok 0:84c73f8a4a96 36 if(type=='-') {
wufeiok 0:84c73f8a4a96 37 if (_speed >= 0.1) _speed-= 0.1;
wufeiok 0:84c73f8a4a96 38 m.speed(_speed);
wufeiok 0:84c73f8a4a96 39 dev.printf("New Speed %f\n",_speed);
wufeiok 0:84c73f8a4a96 40 }
wufeiok 0:84c73f8a4a96 41 }
wufeiok 0:84c73f8a4a96 42
wufeiok 0:84c73f8a4a96 43 }
wufeiok 0:84c73f8a4a96 44 }
wufeiok 0:84c73f8a4a96 45
wufeiok 0:84c73f8a4a96 46 void pc_recv()
wufeiok 0:84c73f8a4a96 47 {
wufeiok 0:84c73f8a4a96 48 led4 = !led4;
wufeiok 0:84c73f8a4a96 49 while(pc.readable()) {
wufeiok 0:84c73f8a4a96 50 dev.putc(pc.getc());
wufeiok 0:84c73f8a4a96 51 }
wufeiok 0:84c73f8a4a96 52 }
wufeiok 0:84c73f8a4a96 53
wufeiok 0:84c73f8a4a96 54 int main()
wufeiok 0:84c73f8a4a96 55 {
wufeiok 0:84c73f8a4a96 56 pc.baud(9600);
wufeiok 0:84c73f8a4a96 57 dev.baud(9600);
wufeiok 0:84c73f8a4a96 58
wufeiok 0:84c73f8a4a96 59 pc.attach(&pc_recv, Serial::RxIrq);
wufeiok 0:84c73f8a4a96 60 dev.attach(&dev_recv, Serial::RxIrq);
wufeiok 0:84c73f8a4a96 61
wufeiok 0:84c73f8a4a96 62 while(1) {
wufeiok 0:84c73f8a4a96 63 sleep();
wufeiok 0:84c73f8a4a96 64 }
wufeiok 0:84c73f8a4a96 65 }