[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); 
             // 熄燈
         }
    }
}

 

About CAVEDU 阿吉 - 雜工 (2521 Articles)
CAVEDU 教育團隊 打雜
Contact: Website

Leave a comment

Your email address will not be published.


*