賈維斯的智慧工坊

  • Home
  • About
  • Note
  • Project
  • Experience
  • Service
  • Sitemap


MY | NOTES

  1. 首頁
  2. >
  3. 筆記
  4. >
  5. 微處理器

Arduino connect with Matlab through Bluetooth

透過藍芽,使用Matlab讓Arduino
與電腦進行資料傳輸

Jun, 2015
操作這篇以前,必須完成Arduino HC-05與電腦間藍芽的配對
可參考 Set up HC-05 Bluetooth

一、Arduino Code

將以下程式碼透過USB傳入Auduino

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(3,2); // TX | RX
int val = 1;
void setup()
{
     Serial.begin(9600);
     BTSerial.begin(38400);
}
void loop()
{
     if (BTSerial.available())
     {
          Serial.write(BTSerial.read());
          val = BTSerial.read();
          //MATLAB傳給HC-05後讀到的指令為val
     }
     BTSerial.print(2);
     //HC-05將2傳給MATLAB
     delay(500);
}

二、MATLAB code

將電腦連線至藍芽
b=Bluetooth('your Bluetooth name',1);
等待MATLAB將b的資料處理完成,執行
fopen(b)

HC-05的LED慢速閃爍後,此時USB依然接在Arduino上
開啟序列埠監控視窗

MATLAB送Arduino收

MATLAB送出
fwrite(b,[1 123])

此時監控視窗會顯示123
即Serial.write(BTSerial.read());這行指令的效果

fwrite(b,123)也可以,但接受字元上會多一個空隔
故改變成矩陣型式
fwrite(b,[1 你要傳的指令])
指令可以接受1~255的數字去做變化

我們可以在Arduino中寫入
if (val == 123)
{
     讓LED亮燈}
elseif(val == 321)
{
     讓LED熄滅}
end

藉此透過藍芽遙控Arduino

Arduino送MATLAB收

要接收藍芽發收的訊息,使用MATLAB輸入
a = fread(b,1);

則可以得到
>> a = 2

是BTSerial.print(2);的效果
Arduino會每隔0.5秒就發送一次2
可使用MATLAB去接收

Reference

1、Arduino and Matlab interfacing via Bluetooth module

← Back to note