動機:

因為手邊剛好有Arduino UNO R3 板子、CC3000 WiFi Shield擴充版,
所以想說閒來就利用Android來控制Arduino!

目的:

從Android端發送指令來控制Arduino 上的 Servo馬達轉動、LED ON/OFF,以及讀取DS18B20溫度感測器讀取的值。
步驟:

STEP 1 :先按照網路上搜尋到的電路圖將Servo、LED以及DS18B20給接好。

STEP 2:再來我是利用 Adafruit_CC3000_Library裏頭的範例ChatServer下去修改

STEP 3:然後依序加入控制Servo的程式碼、控制LED開關的程式碼,最後是讀取溫度的程式碼
STEP 4:最後在Eclipse上開發一個簡單的介面,然後用模擬器來連接UNO

STEP 5:最後就可以達到雙向溝通的動作了(傳送&接收)

Source Code:

arduino code:

其實arduino的程式碼很多都是以範例程式下去修改,因此程式碼部分並不難
像是 Adafruit_CC3000_Library裏頭就有很多範例程式提供大家修改。

arduino的部分主要可以分為四個部分:(a).WiFi 連線的建立(b).LED 的控制(c).servo的控制(d).溫度感測的傳值

(a).WiFi 連線的建立

// 匯入程式庫標頭檔
#include <OneWire.h>

#include <Adafruit_CC3000.h>
#include <SPI.h>

#define WLAN_SSID "WiFi AP SSID" //輸入你要連線的無線路由器的名稱

#define WLAN_PASS ""//輸入AP密碼

// Security can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2
#define WLAN_SECURITY WLAN_SEC_WPA2 //輸入AP的加密方法

#define LISTEN_PORT 8080 //輸入TCP的port,以便手機端可以連入

Adafruit_CC3000_Server chatServer(LISTEN_PORT);

(b).LED 的控制

int led = 9; //先綁定led的控制腳

void setup(void)
{

     pinMode(led, OUTPUT);   //第9腳位,輸出

}

void loop(void)

{

digitalWrite(led,HIGH);   //LED ON
delay(1000);
digitalWrite(led,LOW);    //LED OFF
delay(1000);

}

 (c).servo的控制

 // 匯入程式庫標頭檔 

#include <Servo.h>

Servo servoMain;

void setup(void)
{

     servoMain.attach(2);// 腳位2

}

void loop(void)
{

     servoMain.write(90); // 將馬達轉動到90度,而servo只能轉到180度就是極限了

}

(d).溫度感測的傳值

#include <DallasTemperature.h>

 

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{

     sensors.begin();

}

void loop(void)
{

     sensors.requestTemperatures();

     Serial.print(sensors.getTempCByIndex(0));
     byte byteRead;
     byteRead = sensors.getTempCByIndex(0);
     chatServer.write(byteRead);
     delay(1000);

}

android code:

 

 作品呈現:

39970.jpg  圖一,Servo馬達0度角&LED OFF

39972.jpg 圖二,Servo馬達90度角&LED OFF

39973.jpg  圖三,Servo馬達180度角&LED OFF

 圖四,LED ON

未命名.png  圖五,Android UI && 收到溫度回傳值 27度

arduino uno.png  圖六,利用serial來查看是否分配到IP給CC3000

arrow
arrow
    全站熱搜

    JoshJhan 發表在 痞客邦 留言(4) 人氣()