Arduino 專案學習實作(一) 感測器數值顯示器

HI~我是阿俊 這次帶來 感測器的延伸應用  這次的目的在於 之前光控開關 有說過 不同的環境中 光感數值 都不同 總不能 電腦搬來搬去測吧! 外面賣許許多多的感測器 要價動輒上千元 要是只要花個幾百塊的東西 就能達成一樣的效果 何樂不為呢! 所以這次要做的東西 透過Arduino所接收到的數值 值接 顯示在 安卓的設備上 接下來一樣是 實列影片我用光敏電阻來達成光線感測器~

 



  

 

準備材料

Arduino 板子 

數條連接線

1K歐姆 X1

光敏電阻 X1

藍芽模組X1

安卓設備1隻

麵包板

官方程式編譯器 arduino-1.X.X以上版本

 

以下是電路圖

藍芽感測器  

這次的電路圖 難度在於 藍芽模組的接法 最左邊和最右邊在這次實作中完全不會用到的腳位 由左至右分別為 RX TX VCC GND(注意 VCC GND 接反會燒板)還有Arduino板子對應的10.11腳是RX.TX腳 連到藍芽模組時 要以[反接] 來連線 何謂反接? 就是[10RX]->藍芽模組TX  [11TX]->藍芽模組RX 相對的意義就是 傳送給接收端 接反的話 安卓上就不會顯示數值囉~~~ 我使用的藍芽模組為 HC05 大致市面上的都差不多

安卓端設定

首先 先到我的GOOGLE雲端硬碟下載ArduinoText 接著直接安裝在安卓裝置上

這APP是用 MIT APP 的網站寫的 他現在 已經有中文版 比之前方便多了 想當初 高中 老師教我們用 裡面的元件都英文看不懂 google翻譯 又會有打包問題 現在直接支援原生的很方便 如果要學習的話 網路上有很多 MIT APP的教學文 ~

 藍芽感測  藍芽感測

 

接下來是程式碼


 

#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial I2CBT(10,11); // RX TX  對應腳
byte serialA;
void setup(){
//define pin modes for tx,rx pin
pinMode(10,INPUT);
pinMode(11,OUTPUT);
Serial.begin(9600);
I2CBT.begin(9600); //與藍牙發射器的鮑率為 9600
}

 

void loop (){

 

byte Data[2];//此變數為封包
byte cmmd[20];
int insize;
int i=analogRead(A0);//讀取感應器值
serialA=I2CBT.read();//接收 Android 藍牙資料

 

// 將感應器數值包成封包,由於類比腳位的值為0~1023,加上’a’,因此使用了三個Byte來傳送。

 

// i 除以 256 以及對 256 取餘數就是以位元組(8 bits)為單位來拆封包噢!

 

Data[0]=’a’; //確認碼
Data[1]=i/256;
Data[2]=i%256;

 

Serial.println(i);//顯示感應器數值

 

if (serialA == 49){//判斷從手機接收到的訊號是否為”49″

 

/* 傳送封包 */

 

for(int j=0;j<3;j++)
I2CBT.write(Data[j]);

 

serialA=0;

 

}
delay(100);
}


這次程式用了一些藍芽方面的語法 首先先將傳感器的數值 打包成三個位元組(方便給藍芽傳輸)之後以 i 除以 256 以及對 256 取餘數就是以位元組(8 bits) 來解封包 之後在以安卓上 讀取認證碼 49 完全符合 即可開始傳送封包 到手機上還原數值 老實說 這裡我很多不太懂 但我只能理解成這樣 

 

結論~ 這次實作學到 藍芽傳遞的方法 並如何學習 在安卓上 與 Arduino 的溝通方式 來達成 感測器的功能 相對的 以後 如果許多不同的感測器 都能以這種方式 方便取得數值 加以應用 我是阿俊 謝謝大家~~~~

 

 

在〈Arduino 專案學習實作(一) 感測器數值顯示器〉中有 7 則留言

  1. 請問如果要連接兩個以上的感測器呢? 封包部分該如何處理
    版主回覆:(11/04/2014 12:24:12 AM)
    假設要同時連接2種以上的感測器(佔用A0.A1)傳輸資料 似乎只能一次傳一組資料畢竟傳送封包 %256只能8位元 第2組資料沒辦法做成封包 不過似乎 可以使用分批傳送 第一組完 換第2組 不過這樣好像沒辦法同時 不然設定在APP上設定分頁 可以切換 A0. A1的資料 這樣似乎可以接近你的要求(這只是我個人上的猜測 畢竟Arduino語法很多 說不定就有 可以同時傳送的語法 但我會試試看 在雙A互動下 是否能可以達到你說的要求XD畢竟我還在學習階段^^謝謝你的回應~~~)

  2. 不好意思想詢問有沒有更清楚的MIT APP的詳細照片
    因為想要自己實際做一次,但在拉APP時遇到了一些問題><!!
    謝謝!!
    版主回覆:(02/04/2015 07:07:24 PM)
    我開發檔還在 哪邊的問題? 打包還是安裝呢? 我可以擷圖給你 但也不能一次全丟上去 能問哪個步驟流程有疑問 這樣我方便擷圖給你呦!~~~

  3. 你好 我照著您的 方法做 最後打開手機用您的app收數據時 數字一直停留在8 他並不會一直跳數字 除非我拿受電筒照射光敏電阻 就會跳256 然後跳776(大概) 但就是數值差很大 也不會隨著每秒改變數值 正常來說應該會在8上下一直跳動八~ 這是為什麼呢 我的鮑率是9600

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

AbuseIPDB Contributor Badge
返回頂端