手機透過藍芽來接收Arduino感測器資料,記錄Log、畫出圖表的App「Bluetooth Terminal/Graphics」

Google的科學期刊(Science Journal),目前能配合的Arduino,只有那塊新的Arduino101,
正巧看到阿簡老師介紹「以手機藍牙接收Arduino感測器訊號,進行即時紀錄與繪圖
裡頭有詳細的影片說明,很容易上手。

嘗試一下,這個「Bluetooth Terminal/Graphics」的確方便好用。
連結:Google Play的官方載點 (Android only)


參考阿簡老師的程式,以HC-SR04超音波感測器為例子,
一開始手機的圖表出不來,只接收到一塊亂碼,而畫不出圖來。
原來是HC-05藍芽之前改過Baud Rate成57600。

我是利用RJ-11轉接線接在S4A IO Board的孔位
HC-SR04超音波感測器的 Trig接Pin 3、Echo接Pin 2



程式如下(參考自阿簡生物筆記):

/*

HC-SR04 Ping distance sensor]
VCC to arduino 5v
GND to arduino GND
Echo to Arduino pin 2
Trig to Arduino pin 3


BlueTooth
VCC to arduino 5v
GND to arduino GND
RXD to D1
TXD to D0
*/



#define trigPin 3
//超音波腳位要確認 Trig
#define echoPin 2//超音波腳位要確認 Echo
int x0=0;
//一開始的位置
int v0=0;//初速
float temp=30.0;//溫度
float c=(331.5+0.6*temp)/10000;//單位是每微秒幾公分
float intervaltime=100; //每幾毫秒測量一次
float duration, distance,velocity,acceleration;

void setup() {
Serial.begin (57600);//藍牙的Baud Rate要確認一下
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

}


void loop() {

digitalWrite(trigPin, HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
//超音波來回經過的時間,單位是微秒
distance = (duration/2) *c;//單位是公分
velocity=(distance-x0)/(intervaltime/1000);//每秒速度
acceleration=(velocity-v0)/(intervaltime/1000);//每秒加速度

x0 = distance;
v0=velocity;
Serial.print("E");//送出的字串最前面是E字
Serial.print(distance);//送出距離
Serial.print(",");//送出英文逗號相隔
Serial.print(velocity);//送出速度
Serial.print(",");//送出英文逗號相隔
Serial.println(acceleration);//送出加速度

delay(intervaltime);

}


----------送出給手機接的字串,開頭是個大寫E,緊接的是第一筆資料,每筆資料要用英文逗號「,」相隔。如E21,544.4,3453.2

   

留言

  1. 請問一下即時繪圖後,那些資料可以儲存的下來嗎?

    回覆刪除
  2. 作者已經移除這則留言。

    回覆刪除
  3. 請問一下即時繪圖後,那些資料可以儲存的下來嗎?

    回覆刪除

張貼留言

這個網誌中的熱門文章

自製簡易結構耐震震動台

HC-05藍芽模組設定