0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用ROHM傳感器套件的DIY Arduino家庭安防系統(tǒng) 第2部分- Cayenne設(shè)置

李斌 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-02-24 14:38 ? 次閱讀

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。點擊這里閱讀本文的第1部分 >

pYYBAGDIBiCAORDQAAHy_D6Cm9A147.jpg

DIY智能家居安防系統(tǒng)第1部分中,我們將各種組件(例如PIR傳感器、溫度傳感器壓力傳感器)組合在一起,以創(chuàng)建家庭安防系統(tǒng)/探測器。在第2部分中,將對前面所創(chuàng)建系統(tǒng)的離線程序進行測試,并連接到Internet,以便使用Cayenne API進行無線控制。使用myDevices Cayenne,只要您通過網(wǎng)站和/或智能手機中的Cayenne App連接到WiFi,您就能夠無線控制安防系統(tǒng)。

硬件

筆記本電腦/PC或智能手機

參考第1部分:

Arduino Mega 2560

Arduino WiFi Shield(Arduino WiFi擴展板)

用于Arduino的Grove Base Shield(Grove基礎(chǔ)擴展板)

3 只 LED (紅色、綠色和藍色)

Grove PIR 移動偵測傳感器

蜂鳴器

Arduino ROHM 傳感器擴展板

ROHM 溫度傳感器 (BD1020HFV)

ROHM 氣壓傳感器 (BM1383GLV)

Grove 通用4芯電線

亞克力: 195 x 195 x 3mm

電阻 (10 Kω and 100 KΩ)

面包板

無線遙控器,帶2個發(fā)射器和1個接收器

電源:12 VDC

軟件

Arduino IDE

Seeed Studio (https://github.com/Seeed-Studio/PIR_Motion_Sensor, https://www.seeed.cc/project_detail.html?id=284)

Cayenne API (https://mydevices.com/cayenne/docs/#using-cayenne-library)

使用離線程序測試硬件

完成硬件安裝后,現(xiàn)在可以運行離線程序進行測試。這是“離線”模式,系統(tǒng)尚未連接到Internet。我們馬上就進行測試。離線程序?qū)?zhí)行下列功能:

遙控發(fā)射器(在示例中使用通道D)打開/關(guān)閉警報。如果遙控發(fā)射器打開,綠色 LED將亮起,蜂鳴器將發(fā)出一次嗶嗶聲。

PIR傳感器將檢測移動情況。如果檢測到移動,藍色 LED將亮起。

當警報聲響起并檢測到移動時,紅色 LED將亮起,蜂鳴器將熄滅。

同樣,當警報聲響起(即綠色 LED亮起)且熱量高于設(shè)定目標時,紅色 LED將亮起,蜂鳴器將熄滅。

注:

若想關(guān)閉警報聲,用戶只需再次按遙控發(fā)射器上的通道D。綠色 LED將熄滅,蜂鳴器將發(fā)出兩次嗶嗶聲。

若需查看溫度和氣壓的值,請將USB電線從Arduino連接到PC。然后,進入Arduino IDE并單擊工具 → 串行監(jiān)視器。

現(xiàn)在可以上傳程序。進行編譯以前,請確保已安裝所有必需的庫。

//**************** Home security Program - offline ******************************

#define PIR_MOTION_SENSOR 2   // Use pin 2 to receive the signal from the module



#define LED1 4                // Blue Led for motion detected

#define LED2 6                // Green Led for triggered alarm

#define LED3 8                // Red Led if motion and trigger switch are on



#define buzzer 5              // Buzzer  

#define remote 41             // Remote Control



#include 

#include 

#include 



int alarm = 0;

int trigger = 0;

int remote_sw = 0;

int online_sw = 0;

int previousState = -1;

int currentState = -1;



int prev_remote_stat = 0;

int curr_remote_stat = 0;

int currentValue = 0;



int prev_online_stat = 0;

int curr_online_stat = 0;



int tempout_pin = A2;



BM1383GLV bm1383;

BD1020 bd1020;

unsigned long previousMillis = 0;

void setup()

{

 Serial.begin(9600);

 while (!Serial);

 bd1020.init(tempout_pin);

 byte rc;

 while (!Serial);

 Wire.begin();

 rc = bm1383.init();



 pinMode(LED1,OUTPUT);

 pinMode(LED2,OUTPUT);

 pinMode(LED3,OUTPUT);

 pinMode(buzzer, OUTPUT);

 pinMode(remote, INPUT);

 pinMode(PIR_MOTION_SENSOR, INPUT);

}

// ********************* Start Loop *****************************************

void loop()

{

   checkSensor();

   remote_sw = digitalRead(remote);

   Serial.print("Remote Status : ");

   Serial.println(remote_sw);

   Serial.println();

   //*********************** read barometric pressure ************************

   byte rc;

   float press;

   rc = bm1383.get_val(&press);

   if (rc == 0)

   {

     Serial.write("BM1383GLV (PRESS) = ");

     Serial.print(press);

     Serial.println(" [hPa]");

     Serial.println();

   }    

   //********************** read Temperature ********************************

   float temp;

   bd1020.get_val(&temp);

   temp = temp - 5;             // Temperature adjustment due to heat from circuit board

   Serial.print("BD1020HFV Temp=");

   Serial.print(temp);

   Serial.print("  [degrees Celsius], ADC=");

   Serial.println(bd1020.temp_adc);

   Serial.println();



   // ********** Check if Remote switch or online/App switch is on **********

   if(remote_sw == 1 | currentValue == 1)

   {

    digitalWrite(LED2,HIGH);   

    alarm = 1;

    curr_remote_stat = 1;

    if(curr_remote_stat != prev_remote_stat)

    {

     triggerBuzzer(2,70,30);  

     prev_remote_stat = curr_remote_stat;

    }

   }

   else

   {

    curr_remote_stat = 0;

    if(curr_remote_stat != prev_remote_stat)

     {

      triggerBuzzer(3,70,30);

      prev_remote_stat = curr_remote_stat;      

     }

    digitalWrite(LED2,LOW);       

   alarm = 0;   

  }



   // ********************** If motion detected ***********************

   if(isPeopleDetected())                               //if it detects the moving people?

      {

       digitalWrite(LED1, HIGH);                        // Turn on Blue Led

       trigger = 1;

       delay(10);

      }

   else

      { digitalWrite(LED1, LOW);

        trigger = 0;

       delay(2000);

      }

    // ***************If Alarm is triggerred **************************



   if (alarm == 1 && trigger == 1 )

     {

      digitalWrite(LED3,HIGH);

      delay(500);

      triggerBuzzer(6,100,100);

      Serial.println("Alarm triggered");

     }

  else

    {

     alarm = 0;

     trigger = 0;

     digitalWrite(LED3,LOW);

    }



    // *********************** If temperature is triggerred **********

     if (temp > 45.00)

     {

      digitalWrite(LED3,HIGH);

      delay(500);

      triggerBuzzer(10,100,10);

      Serial.println("Alarm triggered");

     }



      delay(10);

}

// **************************  End Loop *****************************



// Function: Write to PIR sensor indicator in Web/App ***************



void checkSensor()

{

 unsigned long currentMillis = millis();

 if (currentMillis - previousMillis >= 250)

   {  

    currentState = digitalRead(PIR_MOTION_SENSOR);

    if (currentState != previousState)

      {

       previousState = currentState;

      }

    previousMillis = currentMillis;

   }

}

//***************************************************************

// Function: Detect whether anyone moves in it's detecting range

boolean isPeopleDetected()

{

   int sensorValue = digitalRead(PIR_MOTION_SENSOR);

   if(sensorValue == HIGH)                           //if the sensor value is HIGH?

      {

       Serial.println("PIR detect motion");

       return true;                                  //yes,return true

      }

   else

      {

       Serial.println("no motion");     

       return false;                                 //no,return false

      }

}

//***************************************************************

// Function : activate buzzer based on parameters received



void triggerBuzzer(int iteration,int delay1,int delay2)

{

     for (int i = 1; i < iteration; i++)

     {

      digitalWrite(buzzer, HIGH);

      delay(delay1);

      digitalWrite(buzzer, LOW);

      delay(delay2);

     }

}

//*****************************************************************

準備在線連接

創(chuàng)建一個myDevices帳戶!您可以通過以下鏈接注冊并創(chuàng)建一個新帳戶:https://mydevices.com/cayenne/signup/

如果您已經(jīng)擁有帳戶,請隨意使用自己的帳戶。

poYBAGPzFxSAJYJ-AARbIFfGR7c519.jpg

圖1. 注冊頁面 – https://mydevices.com/cayenne/signup/

然后選擇Arduino作為本項目的設(shè)備。

poYBAGDBwDGAYFTyAADNXnsF0Oc187.jpg

圖2. 選擇本項目所需的Arduino設(shè)備

閱讀文檔并通過以下網(wǎng)站安裝Cayenne庫:

https://mydevices.com/cayenne/docs/#using-cayenne-library

然后繼續(xù)下一步,在新網(wǎng)頁中連接到Arduino。選擇Arduino Mega和WiFi Shield。選定這兩項后,您將收到設(shè)備的“身份驗證口令”。務(wù)必復(fù)制此口令并將其保存于某處。在下一個程序中需要用到此口令。

char token[] = “zzzzzzz”;// Cayenne authentication token

pYYBAGDBwDKAGUQkAADULSbtFrc571.jpg

圖3. 選擇Arduino Mega和WiFi Shield

poYBAGDIBi2ABnxbAAVNhp5WxWQ587.jpg

圖4. 創(chuàng)建傳感器微件

創(chuàng)建微件

我們可以為PIR傳感器、觸發(fā)狀態(tài)和警報開/關(guān)狀態(tài)創(chuàng)建微件。

為此,必須單擊 “添加新…” ,然后單擊 “設(shè)備/微件”。然后轉(zhuǎn)到 “傳感器” 類別并單擊 “通用”。在“通用”下,有2個輸入選項:模擬輸入和數(shù)字輸入。選擇 “數(shù)字輸入”。進入“數(shù)字輸入”設(shè)置頁面后,將連接設(shè)置為“虛擬”和“V1”(在下方)。請勿忘記單擊步驟1 步驟2。

V2和V4微件也按相同步驟操作。請使用下表作為參考:

虛擬通道號 微件名稱 選擇微件 選擇圖標/顯示 連接至
V1 PIR 傳感器 0/1 2 狀態(tài) 顯示值 PIR 傳感器 – 藍色 Led
V2 觸發(fā)狀態(tài) 0/1 2 狀態(tài) 顯示值 觸發(fā)開關(guān) – 紅色 Led
V4 警報狀態(tài)開/關(guān) 0/1 2 狀態(tài) 圖標指示燈 遠程開關(guān)

代碼中使用的虛擬引腳分配如下:

#define VIRTUAL_PIN1 V1// PIR傳感器的虛擬引腳 – 藍色 Led

#define VIRTUAL_PIN2 V2// 觸發(fā)開關(guān)的虛擬引腳 – 紅色 Led

#define VIRTUAL_PIN4 V4// 遠程開關(guān)的狀態(tài)

當PIR傳感器檢測到發(fā)生移動時,V1將開啟(顏色變?yōu)榫G色);藍色LED也將亮起。

當觸發(fā)狀態(tài)開啟時,V2將開啟(顏色變?yōu)榫G色);當警報開啟且PIR傳感器檢測到發(fā)生移動時,紅色LED也將亮起。

通過遙控發(fā)射器或在線/應(yīng)用程序開啟警報狀態(tài)時,V4將開啟(顏色變?yōu)榫G色)

接下來為在線/應(yīng)用程序切換功能創(chuàng)建一個微件。

轉(zhuǎn)至 “添加新…” ,然后單擊 “設(shè)備/微件”。這次選擇 “執(zhí)行器” ,然后選擇 “通用”。選擇 “數(shù)字輸出” ,然后在“連接”下選擇“虛擬”。在“Pin”下,選擇“V3”。

pYYBAGDIBiyAf25VAANYrLW7zj8521.jpg

圖5. 創(chuàng)建在線/應(yīng)用程序切換功能的微件

使用下表作為參考:

虛擬通道號 微件名稱 選擇微件 選擇圖標/顯示 連接到
V3 在線/應(yīng)用程序切換 按鈕 圖標鎖定 在線/應(yīng)用程序
切換 — 綠色LED

單擊微件(在網(wǎng)站/應(yīng)用程序上)時,V3將開啟(顏色變?yōu)樽仙.擵3開啟時,綠色LED也會亮起。因此,該虛擬開關(guān)與遙控發(fā)射器功能相同。但是,通過此虛擬交換機激活時會有一段延時。在下一程序中以下代碼將會引用引腳V3。

#define VIRTUAL_PIN3 V3// 在線切換 – 綠色 led

然后需要創(chuàng)建溫度和壓力傳感器的微件。和前面一樣,點擊 “添加新…” 和 “設(shè)備/微件”。然后選擇 “傳感器” 和 “通用” ,然后選擇 “模擬輸入”。連接后,選擇“虛擬”和“V5”進行引腳選擇。

poYBAGDBwDWAc44RAAE70u8m1rw210.jpg

圖6. 創(chuàng)建溫度和壓力傳感器的微件

對V6執(zhí)行相同操作并使用下表作為參考:

虛擬通道號 微件名稱 選擇微件 選擇單位 連接到
V5 溫度(℃) 測量精度 有效位數(shù) — 小數(shù)點后2位 溫度傳感器
V6 氣壓(hPa) 測量精度 有效位數(shù) — 小數(shù)點后2位 大氣壓力傳感器

在下一程序中以下代碼將會引用引腳V5和V6。

#define VIRTUAL_PIN5 V5// 溫度傳感器

#define VIRTUAL_PIN6 V6// 氣壓傳感器

如果上述所有步驟都正確完成,您將看到如圖7所示的頁面。

poYBAGDIBjKAOscEAAQUWWj3tjw668.jpg

圖7. 微件的顯示

最后一步是啟用電子郵件通知功能(觸發(fā)警報時)。為此,請單擊“觸發(fā)器狀態(tài)”微件上的設(shè)置符號,然后選擇“觸發(fā)器”。

poYBAGDIBiuAcX03AATI17emz20762.jpg

圖8. 創(chuàng)建電子郵件觸發(fā)器

然后,您將進入以下頁面(圖9)。在“添加自定義收件人”中鍵入您的電子郵件地址,然后單擊“發(fā)送電子郵件”。

pYYBAGDIBiaANYtvAAIZRH1v28U252.jpg

圖9. 設(shè)置電子郵件通知

myDevices設(shè)置到此結(jié)束!

測試在線程序

以上已經(jīng)完成了與家庭安防系統(tǒng)的在線連接設(shè)置。運行最終程序前可以先測試在線程序。

上傳以下程序。確保已安裝適用于Arduino的Cayenne庫。該程序用于執(zhí)行簡單的功能(即顯示溫度和氣壓值)。正確運行時,溫度和氣壓微件將改變顏色(綠色和橙色),相應(yīng)數(shù)值顯示于微件的底部。

//**************** Home security Program - online test*********************** *

#define CAYENNE_DEBUG         // Uncomment to show debug messages

#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space



#define VIRTUAL_PIN5 V5       // Temperature sensor

#define VIRTUAL_PIN6 V6       // Barometric Pressure Sensor



#include       // Cayenne wifi library

#include 

#include 

#include 




char token[] = "zzzzzzz";          // Cayenne authentication token.

char ssid[] = "xxxxxxxxx";       // Your Wifi network name

char password[] = "yyyy";          // Your Wifi password

int tempout_pin = A2;

BM1383GLV bm1383;

BD1020 bd1020;

unsigned long previousMillis = 0;

void setup()

{

 Serial.begin(9600);

 while (!Serial);

 bd1020.init(tempout_pin);

 byte rc;

 while (!Serial);

 Wire.begin();

 rc = bm1383.init();

 Cayenne.begin(token, ssid, password);

}

// ********************* Start Loop *****************************************

void loop()

{

   Cayenne.run();  



   //*********************** read barometric pressure ************************

   byte rc;

   float press;

   rc = bm1383.get_val(&press);

   if (rc == 0)

   {

     Cayenne.virtualWrite(VIRTUAL_PIN6, press); // Write Barometric Pressure to Cayenne

     Serial.write("BM1383GLV (PRESS) = ");

     Serial.print(press);

     Serial.println(" [hPa]");

     Serial.println();

   }

   

   //********************** read Temperature ********************************

   float temp;

   bd1020.get_val(&temp);

   temp = temp - 5;                                // Temperature adjustment due to heat from circuit board

   Cayenne.virtualWrite(VIRTUAL_PIN5, temp);       // Write Temperature to Cayenne

   Serial.print("BD1020HFV Temp=");

   Serial.print(temp);

   Serial.print("  [degrees Celsius], ADC=");

   Serial.println(bd1020.temp_adc);

   Serial.println();



   // ********** Check if Remote switch or online/App switch is on **********



      delay(5000);

}



// **************************  End Loop *****************************

至此差不多完成了所有步驟!

最終方案

如果以上所有程序都能流暢運行,則可上傳最終程序,該程序中嵌入了離線程序以及與Cayenne API的連接功能。

//**************** Home security Program - Final ******************************

#define CAYENNE_DEBUG         // Uncomment to show debug messages

#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space

#define VIRTUAL_PIN1 V1       // Virtual Pin for PIR sensor  - Blue Led

#define VIRTUAL_PIN2 V2       // Virtual Pin for Trigger Switch - Red Led

#define VIRTUAL_PIN3 V3       // Online Switch  - Green led

#define VIRTUAL_PIN4 V4       // Status of Remote Switch

#define VIRTUAL_PIN5 V5       // Temperature sensor

#define VIRTUAL_PIN6 V6       // Barometric Pressure Sensor



#define PIR_MOTION_SENSOR 2   // Use pin 2 to receive the signal from the module



#define LED1 4                // Blue Led for motion detected

#define LED2 6                // Green Led for triggered alarm

#define LED3 8                // Red Led if motion and triger switch are on



#define buzzer 5              // Buzzer  

#define remote 41             // Remote Control



#include       // Cayenne wifi library

#include 

#include 

#include 



char token[] = "zzzzzzz";          // Cayenne authentication token.

char ssid[] = "xxxxxxxxx";       // Your Wifi network name

char password[] = "yyyy";          // Your Wifi password



int alarm = 0;

int trigger = 0;

int remote_sw = 0;

int online_sw = 0;

int previousState = -1;

int currentState = -1;

int prev_remote_stat = 0;

int curr_remote_stat = 0;

int currentValue = 0;



int prev_online_stat = 0;

int curr_online_stat = 0;

int tempout_pin = A2;



BM1383GLV bm1383;

BD1020 bd1020;

unsigned long previousMillis = 0;

void setup()

{

 Serial.begin(9600);

 while (!Serial);

 bd1020.init(tempout_pin);

 byte rc;

 while (!Serial);

 Wire.begin();

 rc = bm1383.init();

 

 Cayenne.begin(token, ssid, password);



 pinMode(LED1,OUTPUT);

 pinMode(LED2,OUTPUT);

 pinMode(LED3,OUTPUT);

 pinMode(buzzer, OUTPUT);

 pinMode(remote, INPUT);

 pinMode(PIR_MOTION_SENSOR, INPUT);

}

// ************ Check if Online/App Switch is on *****************************

CAYENNE_IN(VIRTUAL_PIN3)

 {currentValue = getValue.asInt();}

// ********************* Start Loop *****************************************

void loop()

{

   Cayenne.run();  



   Serial.print("currentValue: ");

   Serial.println(currentValue);

   

   checkSensor();

   remote_sw = digitalRead(remote);

   Serial.print("Remote Status : ");

   Serial.println(remote_sw);

   Serial.println();



   //*********************** read barometric pressure ************************

   byte rc;

   float press;

   rc = bm1383.get_val(&press);

   if (rc == 0)

   {

     Cayenne.virtualWrite(VIRTUAL_PIN6, press);

     Serial.write("BM1383GLV (PRESS) = ");

     Serial.print(press);

     Serial.println(" [hPa]");

     Serial.println();

   }

   

   //********************** read Temperature ********************************

   float temp;

   bd1020.get_val(&temp);

   temp = temp - 5;                                // Temperature adjustment due to heat from circuit board

   Cayenne.virtualWrite(VIRTUAL_PIN5, temp);

   Serial.print("BD1020HFV Temp=");

   Serial.print(temp);

   Serial.print("  [degrees Celsius], ADC=");

   Serial.println(bd1020.temp_adc);

   Serial.println();



   // ********** Check if Remote switch or online/App switch is on **********

   if(remote_sw == 1 | currentValue == 1)

   {

    digitalWrite(LED2,HIGH);

    Cayenne.virtualWrite(VIRTUAL_PIN4, HIGH);    

    alarm = 1;

    curr_remote_stat = 1;

    if(curr_remote_stat != prev_remote_stat)

    {

     triggerBuzzer(2,70,30);  

     prev_remote_stat = curr_remote_stat;

    }

   }

   else

   {

    curr_remote_stat = 0;

    if(curr_remote_stat != prev_remote_stat)

     {

      triggerBuzzer(3,70,30);

      prev_remote_stat = curr_remote_stat;      

     }

    digitalWrite(LED2,LOW);

    Cayenne.virtualWrite(VIRTUAL_PIN4, LOW);         

   alarm = 0;   

  }



   // ********************** If motion detected ***********************

   if(isPeopleDetected())                               //if it detects the moving people?

      {

       digitalWrite(LED1, HIGH);                        // Turn on Blue Led

       trigger = 1;

       delay(10);

      }

   else

      { digitalWrite(LED1, LOW);

        trigger = 0;

       delay(2000);

      }



    // ***************If Alarm is triggerred **************************

   if (alarm == 1 && trigger == 1 )

     {

      digitalWrite(LED3,HIGH);

      Cayenne.virtualWrite(VIRTUAL_PIN2, HIGH);

      delay(500);

      triggerBuzzer(6,100,100);

      Serial.println("Alarm triggered");

     }

  else

    {

     alarm = 0;

     trigger = 0;

     digitalWrite(LED3,LOW);

     Cayenne.virtualWrite(VIRTUAL_PIN2, LOW);

    }



    // *********************** If temperature is triggerred **********

     if (temp > 45.00)

     {

      digitalWrite(LED3,HIGH);

      Cayenne.virtualWrite(VIRTUAL_PIN2, HIGH);

      delay(500);

      triggerBuzzer(10,100,10);

      Serial.println("Alarm triggered");

     }



      delay(10);

}



// **************************  End Loop *****************************



// Function: Write to PIR sensor indicator in Web/App ***************



void checkSensor()

{

 unsigned long currentMillis = millis();

 if (currentMillis - previousMillis >= 250)

   {  

    currentState = digitalRead(PIR_MOTION_SENSOR);

    if (currentState != previousState)

      {

       Cayenne.virtualWrite(VIRTUAL_PIN1, currentState);

       previousState = currentState;

      }

    previousMillis = currentMillis;

   }

}



//***************************************************************

// Function: Detect whether anyone moves in it's detecting range



boolean isPeopleDetected()

{

   int sensorValue = digitalRead(PIR_MOTION_SENSOR);

   if(sensorValue == HIGH)                           //if the sensor value is HIGH?

      {

       Serial.println("PIR detect motion");

       return true;                                  //yes,return true

      }

   else

      {

       Serial.println("no motion");     

       return false;                                 //no,return false

      }

}

//***************************************************************

// Function : activate buzzer based on parameters received



void triggerBuzzer(int iteration,int delay1,int delay2)

{

     for (int i = 1; i < iteration; i++)

     {

      digitalWrite(buzzer, HIGH);

      delay(delay1);

      digitalWrite(buzzer, LOW);

      delay(delay2);

     }

}

// *****************************************************************

以下幾種方法可以測試程序是否正常運行。

檢查觸發(fā)警報時是否發(fā)送電子郵件。您應(yīng)收到如圖10所示的電子郵件。

poYBAGDBwDmAYl4dAADefLHjGeE044.jpg

圖10. 觸發(fā)警報時收到的電子郵件通知

檢查您是否可以看到溫度和氣壓圖。如需顯示圖形,請單擊窗口微件右上角的圖形符號。

pYYBAGDBwDqAaMb6AADwUQPC-Vc828.jpg

圖11. 傳感器的圖形符號的顯示

然后還會顯示圖表:

pYYBAGDBwDuASfK0AADLhraNGO4366.jpg

圖12. 溫度曲線圖示例

下載智能手機應(yīng)用程序

如前所述,無論何時何地只要您能連接WiFi,您就可以24/7全天候?qū)Π卜老到y(tǒng)進行監(jiān)控。您可以在網(wǎng)站上或通過Cayenne手機應(yīng)用程序進行監(jiān)控。您可以在智能手機上直接下載Cayenne應(yīng)用程序。進入App Store(應(yīng)用商店,適用于iPhone)或Google Play商店(適用于Android)并搜索Cayenne然后就能下載。

poYBAGDBwDyAXnvcAACnv_cPQX0984.jpg

圖13. Cayenne App

成功安裝應(yīng)用程序后,應(yīng)用程序圖標會顯示在主屏幕上。

pYYBAGDBwD2AfV9LAAAkQPobjBo127.jpg

單擊應(yīng)用程序圖標并登錄myDevices帳戶(電子郵件ID和密碼應(yīng)與上一次設(shè)置帳戶時相同)。登錄后,您將看到您創(chuàng)建的微件?,F(xiàn)在單擊在線/應(yīng)用程序切換微件就可以打開/關(guān)閉警報;警報開/關(guān)狀態(tài)顏色變?yōu)榫G色,如下圖所示:

pYYBAGDBwD6ANylxAABHLHP-RR4786.jpg

圖14. Cayenne App微件

恭喜您!完整的系統(tǒng)已經(jīng)建立!每當觸發(fā)警報時,您將收到電子郵件通知。

這是一個包含多個模塊的有趣項目。將來還可以添加更多傳感器并增加其他功能和多個蜂鳴器,以使嗶嗶聲更大。我們還可以考慮通過更換一些組件來縮小系統(tǒng)規(guī)模。在此之前,盡情享受吧!

pYYBAGPzFWyADVB1AAAGS83r-qY435.jpg

Purnomo Nuhalim

來自墨爾本的Purnomo是一名退休人員,也是電子發(fā)燒友。目前,他正使用Arduino和Raspberry Pi從事各種開放式硬件項目的研發(fā)。除了電子學(xué),他還對航空建模和天文學(xué)充滿熱情。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2551

    文章

    51099

    瀏覽量

    753568
  • 安防系統(tǒng)
    +關(guān)注

    關(guān)注

    2

    文章

    249

    瀏覽量

    33269
收藏 人收藏

    評論

    相關(guān)推薦

    采用ROHM傳感器套件DIY Arduino家庭系統(tǒng) 2部分- Cayenne設(shè)置

    DIY智能家居系統(tǒng)1部分中,我們將各種組件(例如PIR
    的頭像 發(fā)表于 09-19 10:20 ?4216次閱讀

    采用ROHM傳感器套件DIY Arduino家庭系統(tǒng) 1部分-機制

    在亞克力板上鉆孔以連接Arduino Mega和Grove Wrapper/Case。必須測量模塊的尺寸并在表面上標出待鉆孔的點。本項目的電路板布設(shè)如下圖所示(圖15)。您可以按自己的偏好習(xí)慣重新排列電路板上的模塊。使用雙面膠帶連接面包板和遙控。
    的頭像 發(fā)表于 09-23 10:33 ?4963次閱讀
    <b class='flag-5'>采用</b><b class='flag-5'>ROHM</b><b class='flag-5'>傳感器</b><b class='flag-5'>套件</b>的<b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b><b class='flag-5'>家庭</b><b class='flag-5'>安</b><b class='flag-5'>防</b><b class='flag-5'>系統(tǒng)</b> <b class='flag-5'>第</b>1<b class='flag-5'>部分</b>-機制

    基于Arduino家庭防盜(原創(chuàng))

    音頻模塊的開關(guān)開關(guān)撥至關(guān)閉狀態(tài),否則會造成程序下載失敗。分別給卓手機和arduino下載好程序好,家庭防盜報警就可以工作了。大家可以下載源代碼自己研究軟件
    發(fā)表于 08-25 21:13

    【黑三郎】智能家庭系統(tǒng)

    相信家庭系統(tǒng)定能掀起新的智能家居革命。本系統(tǒng)是有單片機控制模塊,電源模塊,傳感器模塊---煙
    發(fā)表于 12-31 11:39

    一種無線家庭系統(tǒng)構(gòu)建

    無線家庭系統(tǒng)構(gòu)建介紹了如何應(yīng)用CC2430SoC(System-on-Chip片上系統(tǒng))芯片構(gòu)筑
    發(fā)表于 08-02 16:09 ?37次下載
    一種無線<b class='flag-5'>家庭</b><b class='flag-5'>安</b><b class='flag-5'>防</b><b class='flag-5'>系統(tǒng)</b>構(gòu)建

    使用觸摸傳感器的設(shè)備的輸入和控制,2部分:控制和開發(fā)包

    在本系列觸摸感知的1部分中,我們研究了各種類型的觸摸傳感器技術(shù)。在2部分中,我們將探討觸摸感
    發(fā)表于 06-21 09:28 ?5次下載
    使用觸摸<b class='flag-5'>傳感器</b>的設(shè)備的輸入和控制,<b class='flag-5'>第</b><b class='flag-5'>2</b><b class='flag-5'>部分</b>:控制<b class='flag-5'>器</b>和開發(fā)包

    優(yōu)化您的汽車USB電路電池短路設(shè)計——2部分

    優(yōu)化您的汽車USB電路電池短路設(shè)計——2部分
    發(fā)表于 11-02 08:16 ?0次下載
    優(yōu)化您的汽車USB電路<b class='flag-5'>防</b>電池短路設(shè)計——<b class='flag-5'>第</b><b class='flag-5'>2</b><b class='flag-5'>部分</b>

    DIY點焊機-2部分

    電子發(fā)燒友網(wǎng)站提供《DIY點焊機-2部分.zip》資料免費下載
    發(fā)表于 11-30 12:04 ?9次下載
    <b class='flag-5'>DIY</b>點焊機-<b class='flag-5'>第</b><b class='flag-5'>2</b><b class='flag-5'>部分</b>

    DIY CD點焊機-1部分

    電子發(fā)燒友網(wǎng)站提供《DIY CD點焊機-1部分.zip》資料免費下載
    發(fā)表于 11-30 11:57 ?14次下載
    <b class='flag-5'>DIY</b> CD點焊機-<b class='flag-5'>第</b>1<b class='flag-5'>部分</b>

    基于Arduino的太陽能電池板數(shù)字生態(tài)箱(1部分

    這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。在今天的文章中,我們將提供一個使用Arduino構(gòu)建電子套件的新方案,本文分為1部分
    的頭像 發(fā)表于 02-23 09:44 ?1127次閱讀
    基于<b class='flag-5'>Arduino</b>的太陽能電池板數(shù)字生態(tài)箱(<b class='flag-5'>第</b>1<b class='flag-5'>部分</b>)

    Arduino傳感器ROHM傳感器評估套件概覽

    ROHM Sensor Shield(ROHM傳感器開發(fā)板)是一種兼容Arduino的擴展板,旨在幫助用戶快速將各種傳感器添加到自己的開發(fā)項
    的頭像 發(fā)表于 02-23 17:37 ?878次閱讀
    <b class='flag-5'>Arduino</b><b class='flag-5'>傳感器</b>–<b class='flag-5'>ROHM</b><b class='flag-5'>傳感器</b>評估<b class='flag-5'>套件</b>概覽

    ROHM Arduino傳感器套件打造DIY萬圣節(jié)僵尸面具

    今天,我們會利用ROHM傳感器評估套件制作一款超級簡單的萬圣節(jié)僵尸面具!我們將使用ROHM接近傳感器/環(huán)境光
    的頭像 發(fā)表于 02-23 17:45 ?932次閱讀
    用<b class='flag-5'>ROHM</b> <b class='flag-5'>Arduino</b><b class='flag-5'>傳感器</b><b class='flag-5'>套件</b>打造<b class='flag-5'>DIY</b>萬圣節(jié)僵尸面具

    采用ROHM傳感器套件DIY Arduino家庭系統(tǒng) 1部分 機制

    在該項目中,我們將使用Arduino Mega和ROHM傳感器評估套件來制作一套DIY Arduino
    的頭像 發(fā)表于 02-24 15:08 ?1039次閱讀
    <b class='flag-5'>采用</b><b class='flag-5'>ROHM</b><b class='flag-5'>傳感器</b><b class='flag-5'>套件</b>的<b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b><b class='flag-5'>家庭</b><b class='flag-5'>安</b><b class='flag-5'>防</b><b class='flag-5'>系統(tǒng)</b> <b class='flag-5'>第</b>1<b class='flag-5'>部分</b> 機制

    ROHM傳感器評估套件的3D外殼以及RohmMultiSensor庫更新

    不久前,我創(chuàng)建了RohmMultiSensor - Arduino庫,利用該庫可以輕松控制ROHM傳感器評估套件中的多個傳感器
    的頭像 發(fā)表于 02-24 09:51 ?890次閱讀
    <b class='flag-5'>ROHM</b><b class='flag-5'>傳感器</b>評估<b class='flag-5'>套件</b>的3D外殼以及RohmMultiSensor庫更新

    利用ROHM傳感器評估套件實現(xiàn)UCLA AirMouse–2部分

    在利用ROHM傳感器評估套件實現(xiàn)UCLA AirMouse – 1部分中,我們完成了項目的硬件。對于發(fā)射
    的頭像 發(fā)表于 02-27 10:27 ?559次閱讀