上一章介紹了 particle photon 初始化與手機 app 調試的方法,要實現 alexa 控制 particle photon 上的 led 燈,
需要在 particle 云上添加設備,并做相應設置,以提供對應的 api 給 alexa skill 調用。
第4章、在 particle 云上配置 Photon
particle 提供了很強大的文檔功能 docs.particle.io
1) 打開 particle.io 網站并登入 CONSOLE
2) 進入 Products 菜單項,點擊右側的 +NEW PRODUCT 按鈕
3) 輸入 Product Name 為 photon0815, 選擇設備類別為 Photon(PO), 點擊 CREATE 按鈕
建立成功
4) 進入左下方的配置菜單界面
5) 配置產品詳細信息,以下是配置后的截圖. (配置前有詳細的幫助信息,內容太多,所以省略)
Product ID 為 1029, 這個值在 particle 云代碼中會用到
Working with Particle 配置項
Customers 配置項
Firmware 配置項
6) 配置完成后, 點擊 IMPORT DEVICE 按鈕 (也可以在 Product 頁面中點擊 +Add Devices 按鈕來添加)
在添加前, 要觸除手機與 photon 的綁定 (在手機 app 中操作), 否則會添加失敗
7) 點擊 +Add One Device 按鈕
8) 輸入 Device ID,這個ID在手機 app 中查看,要把大字 (在上一章中有提到), 由24個16進制字符組成, 輸入時要把大寫改為小寫
添加成功的畫面
9) 點擊"指紋"圖標, 進入到認證頁面 (如果沒有找到這個圖標, 需要先在產品清單中點擊產品才會顯示)
10) 點擊右側的 + NEW CLIENT 按鈕
11) 選擇 Client Type, 輸入名稱 webapp (這個名稱在建立 alexa skill 時會用到)
Redirect URI 輸入https://pitangui.amazon.com/api/skill/link/M1DXJTXVOEUAS0
(這個網址在建立 alexa skill 的頁面中可以得到, 所以理論上要先建立 alexa skill, 再來設置 particle 云, 但先設置 particle 云再建 alexa skill 更容易理解)
12)將以下畫面中的 Client ID 和 Client Secret 記錄下來, 在建立 alexa skill 時要用到.
增加 Client 后的畫面
13) 點擊左下方的 Build 菜單項
14) 在 Build 頁面中點擊 CREATE NEW APP 按鈕, 在 Current APP 下方輸入 app 的名稱 photontest
15) 編寫代碼, 第一行的 PRODUCT_ID(1029) 是我們在前面建立 PRODUCT 時看到的 ID, 如果這個ID不匹配, 就不能更新程序到 photon 芯片.
代碼提供 photon A4 和 A5 兩個LED燈的開關和亮度調節。
PRODUCT_ID(1029);
PRODUCT_VERSION(1);
#define MAX_ARGS 64
int lightPins[] = {
A5,A4
};
int lightValues[] = {
255,255
};
int onoffLight(String args){
int index = args.toInt();
int value;
char szArgs[MAX_ARGS];
int count = sizeof(lightPins) / sizeof(int);
args.toCharArray(szArgs, MAX_ARGS);
sscanf(szArgs, "%d=%d", &index, &value);
Serial.println();
Serial.print("On/Off");
Serial.println();
Serial.print("Arguments: ");
Serial.print(args);
Serial.println();
Serial.print("Index: ");
Serial.print(index);
Serial.println();
Serial.print("Value: ");
Serial.print(value);
Serial.println();
if(index >= 0 && index<count){
analogWrite(lightPins[index], value == 1 ? lightValues[index] : 0);
}
return lightValues[index];
}
int setPercentage(String args){
int index;
int value;
char szArgs[MAX_ARGS];
int count = sizeof(lightPins) / sizeof(int);
args.toCharArray(szArgs, MAX_ARGS);
sscanf(szArgs, "%d=%d", &index, &value);
float brightness = ((float)value * 255.0) / 100.0;
if(index >= 0 && index<count){
lightValues[index] = (int)brightness;
analogWrite(lightPins[index], lightValues[index]);
}
Serial.println();
Serial.print("Percentage");
Serial.println();
Serial.print("Arguments: ");
Serial.print(args);
Serial.println();
Serial.print("Index: ");
Serial.print(index);
Serial.println();
Serial.print("Value: ");
Serial.print(value);
Serial.println();
Serial.print("Brightness: ");
Serial.print(brightness);
Serial.println();
return (int)brightness;
}
void setup() {
Serial.begin(115200);
int count = sizeof(lightPins) / sizeof(int);
for(int index=0; index<count; ++index){
pinMode(lightPins[index], OUTPUT);
}
Particle.function("setvalue", setPercentage);
Particle.function("onoff", onoffLight);
}
void loop() {
}
16) 依次點擊左側的 Save、Verify、Flash按鈕 (Flash的作用是將代碼編譯并寫入到 Photon 芯片)
第一次點擊 Flash 按鈕會要求增加新的設備, (即代碼至少要綁定到一個設備才能進行Flash)
在 DEVICE ID框中輸入 photon 的 ID (前提提到的24位16進制字符),點擊 CLAIM A DEVICE
輸入 Device 名稱 (photon0815)后點擊 SAVE 按鈕
到此,particle 云的設置已經完成。
除了可以在 Partcle 云上面將代碼 Flash 到芯片外,也可以下載 Particle for Windows 程序在本地進行 Flash,
Particle 云提供了一些 Sample Code 供入門學習,更多的功能可以參考官方文檔 docs.particle.io