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 的溝通方式 來達成 感測器的功能 相對的 以後 如果許多不同的感測器 都能以這種方式 方便取得數值 加以應用 我是阿俊 謝謝大家~~~~


請問如果要連接兩個以上的感測器呢? 封包部分該如何處理
版主回覆:(11/04/2014 12:24:12 AM)
假設要同時連接2種以上的感測器(佔用A0.A1)傳輸資料 似乎只能一次傳一組資料畢竟傳送封包 %256只能8位元 第2組資料沒辦法做成封包 不過似乎 可以使用分批傳送 第一組完 換第2組 不過這樣好像沒辦法同時 不然設定在APP上設定分頁 可以切換 A0. A1的資料 這樣似乎可以接近你的要求(這只是我個人上的猜測 畢竟Arduino語法很多 說不定就有 可以同時傳送的語法 但我會試試看 在雙A互動下 是否能可以達到你說的要求XD畢竟我還在學習階段^^謝謝你的回應~~~)
不好意思想詢問有沒有更清楚的MIT APP的詳細照片
因為想要自己實際做一次,但在拉APP時遇到了一些問題><!!
謝謝!!
版主回覆:(02/04/2015 07:07:24 PM)
我開發檔還在 哪邊的問題? 打包還是安裝呢? 我可以擷圖給你 但也不能一次全丟上去 能問哪個步驟流程有疑問 這樣我方便擷圖給你呦!~~~
已經解決了><!!謝謝回復QAQ
只是我自己犯蠢的小問題而已><!!!!!!!
謝謝你!!
不好意思 請問一下
因為我也是照著 MIT APP 的方式做
可是APP一直無法顯示數值
你好 我照著您的 方法做 最後打開手機用您的app收數據時 數字一直停留在8 他並不會一直跳數字 除非我拿受電筒照射光敏電阻 就會跳256 然後跳776(大概) 但就是數值差很大 也不會隨著每秒改變數值 正常來說應該會在8上下一直跳動八~ 這是為什麼呢 我的鮑率是9600
我的app也是數值顯示不出來
請問可以提供 清楚的截圖嗎? 我的手機APP也顯示不出來資料