[LinkIt One教學] – 簡訊控制LED亮滅

繼續來介紹 LinkIt One的通訊功能,先從 GPRS 模組開始。

請將 SIM 卡插入 LinkIt One 背面的 SIM 卡插槽,另外還要安裝 GPRS 天線,如下圖。另外請在 pin3 接上一顆LED。操作時,請插入一張有效的 SIM 卡(大張的),對這個號碼發送 “ON” 可以點亮 LED, “OFF”則熄滅 。大小寫沒有差別,程式中都有檢查到喔。

玩一兩次就好,傳簡訊要錢…   或是您可以找一張傳簡訊不用錢的門號就可以一直玩了

2014-11-22 18.16.48

以下為程式碼說明:

重點在於 dtaget[20] 這個字元陣列(長度為20)是用來依序存放簡訊的各個字元,我們藉由檢查前兩個字元是否等於 ON 來開燈,等於 OFF 則關燈。當然囉,一封簡訊可以有許多字元,您可以使用這種方式來把各種檢查碼放入簡訊中,LinkIt One 收到之後就可以執行對應的動作,就好像解碼天書一樣呢!

#include <LTask.h>

#include <LGSM.h>
const int pinLed = 3; // LED接在 D3 腳位

void setup()
{
Serial.begin(9600);
while(!LSMS.ready()) //等候 SIM卡模組 ready
{
delay(1000);
}

Serial.println("GSM OK!!");
}
void loop()
{

char p_num[20];
int len = 0;
char dtaget[500];

if(LSMS.available()) // 檢查有沒有新簡訊
{
LSMS.remoteNumber(p_num, 20); //顯示發送者電話號碼
Serial.println("There is new message.");

Serial.print("Number:");
Serial.println(p_num);
Serial.print("Content:"); // 顯示簡訊內容

while(true)
{
int v = LSMS.read();
if(v < 0)
break;

dtaget[len++] = (char)v;
Serial.print((char)v);
}

Serial.println();
LSMS.flush(); // 刪除簡訊
if((dtaget[0] == 'O' && dtaget[1] == 'N') || (dtaget[0] == 'o' && dtaget[1] == 'n'))
{
//檢查簡訊前兩個字元是否為 ON 或 on
digitalWrite(pinLed, HIGH);
// 這不用多說了吧,亮燈!
}

else if((dtaget[0] == 'O' && dtaget[1] == 'F' && dtaget[2] == 'F') || (dtaget[0] == 'o' && dtaget[1] == 'f' && dtaget[2] == 'f'))
{
digitalWrite(pinLed, LOW);
// 熄燈
}
}
}

 

2 thoughts on “[LinkIt One教學] – 簡訊控制LED亮滅

發佈留言

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