0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用ROHM传感器套件的DIY Arduino家庭安防系统 第2部分- Cayenne设置

李斌 来源:DevicePlus 作者:DevicePlus 2023-02-24 14:38 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。点击这里阅读本文的第1部分 >

pYYBAGDIBiCAORDQAAHy_D6Cm9A147.jpg

DIY智能家居安防系统第1部分中,我们将各种组件(例如PIR传感器温度传感器压力传感器)组合在一起,以创建家庭安防系统/探测器。在第2部分中,将对前面所创建系统的离线程序进行测试,并连接到Internet,以便使用Cayenne API进行无线控制。使用myDevices Cayenne,只要您通过网站和/或智能手机中的Cayenne App连接到WiFi,您就能够无线控制安防系统。

硬件

笔记本电脑/PC或智能手机

参考第1部分:

Arduino Mega 2560

Arduino WiFi Shield(Arduino WiFi扩展板)

用于Arduino的Grove Base Shield(Grove基础扩展板)

3 只 LED (红色、绿色和蓝色)

Grove PIR 移动侦测传感器

蜂鸣器

Arduino ROHM 传感器扩展板

ROHM 温度传感器 (BD1020HFV)

ROHM 气压传感器 (BM1383GLV)

Grove 通用4芯电线

亚克力: 195 x 195 x 3mm

电阻 (10 Kω and 100 KΩ)

面包板

无线遥控器,带2个发射器和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)

使用离线程序测试硬件

完成硬件安装后,现在可以运行离线程序进行测试。这是“离线”模式,系统尚未连接到Internet。我们马上就进行测试。离线程序将执行下列功能:

遥控发射器(在示例中使用通道D)打开/关闭警报。如果遥控发射器打开,绿色 LED将亮起,蜂鸣器将发出一次哔哔声。

PIR传感器将检测移动情况。如果检测到移动,蓝色 LED将亮起。

当警报声响起并检测到移动时,红色 LED将亮起,蜂鸣器将熄灭。

同样,当警报声响起(即绿色 LED亮起)且热量高于设定目标时,红色 LED将亮起,蜂鸣器将熄灭。

注:

若想关闭警报声,用户只需再次按遥控发射器上的通道D。绿色 LED将熄灭,蜂鸣器将发出两次哔哔声。

若需查看温度和气压的值,请将USB电线从Arduino连接到PC。然后,进入Arduino IDE并单击工具 → 串行监视器。

现在可以上传程序。进行编译以前,请确保已安装所有必需的库。

//**************** 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);

     }

}

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

准备在线连接

创建一个myDevices帐户!您可以通过以下链接注册并创建一个新帐户:https://mydevices.com/cayenne/signup/

如果您已经拥有帐户,请随意使用自己的帐户。

poYBAGPzFxSAJYJ-AARbIFfGR7c519.jpg

图1. 注册页面 – https://mydevices.com/cayenne/signup/

然后选择Arduino作为本项目的设备。

poYBAGDBwDGAYFTyAADNXnsF0Oc187.jpg

图2. 选择本项目所需的Arduino设备

阅读文档并通过以下网站安装Cayenne库:

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

然后继续下一步,在新网页中连接到Arduino。选择Arduino Mega和WiFi Shield。选定这两项后,您将收到设备的“身份验证口令”。务必复制此口令并将其保存于某处。在下一个程序中需要用到此口令。

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

pYYBAGDBwDKAGUQkAADULSbtFrc571.jpg

图3. 选择Arduino Mega和WiFi Shield

poYBAGDIBi2ABnxbAAVNhp5WxWQ587.jpg

图4. 创建传感器微件

创建微件

我们可以为PIR传感器、触发状态和警报开/关状态创建微件。

为此,必须单击 “添加新…” ,然后单击 “设备/微件”。然后转到 “传感器” 类别并单击 “通用”。在“通用”下,有2个输入选项:模拟输入和数字输入。选择 “数字输入”。进入“数字输入”设置页面后,将连接设置为“虚拟”和“V1”(在下方)。请勿忘记单击步骤1 步骤2

V2和V4微件也按相同步骤操作。请使用下表作为参考:

虚拟通道号 微件名称 选择微件 选择图标/显示 连接至
V1 PIR 传感器 0/1 2 状态 显示值 PIR 传感器 – 蓝色 Led
V2 触发状态 0/1 2 状态 显示值 触发开关 – 红色 Led
V4 警报状态开/关 0/1 2 状态 图标指示灯 远程开关

代码中使用的虚拟引脚分配如下:

#define VIRTUAL_PIN1 V1// PIR传感器的虚拟引脚 – 蓝色 Led

#define VIRTUAL_PIN2 V2// 触发开关的虚拟引脚 – 红色 Led

#define VIRTUAL_PIN4 V4// 远程开关的状态

当PIR传感器检测到发生移动时,V1将开启(颜色变为绿色);蓝色LED也将亮起。

当触发状态开启时,V2将开启(颜色变为绿色);当警报开启且PIR传感器检测到发生移动时,红色LED也将亮起。

通过遥控发射器或在线/应用程序开启警报状态时,V4将开启(颜色变为绿色)

接下来为在线/应用程序切换功能创建一个微件。

转至 “添加新…” ,然后单击 “设备/微件”。这次选择 “执行器” ,然后选择 “通用”。选择 “数字输出” ,然后在“连接”下选择“虚拟”。在“Pin”下,选择“V3”。

pYYBAGDIBiyAf25VAANYrLW7zj8521.jpg

图5. 创建在线/应用程序切换功能的微件

使用下表作为参考:

虚拟通道号 微件名称 选择微件 选择图标/显示 连接到
V3 在线/应用程序切换 按钮 图标锁定 在线/应用程序
切换 — 绿色LED

单击微件(在网站/应用程序上)时,V3将开启(颜色变为紫色)。当V3开启时,绿色LED也会亮起。因此,该虚拟开关与遥控发射器功能相同。但是,通过此虚拟交换机激活时会有一段延时。在下一程序中以下代码将会引用引脚V3。

#define VIRTUAL_PIN3 V3// 在线切换 – 绿色 led

然后需要创建温度和压力传感器的微件。和前面一样,点击 “添加新…” 和 “设备/微件”。然后选择 “传感器” 和 “通用” ,然后选择 “模拟输入”。连接后,选择“虚拟”和“V5”进行引脚选择。

poYBAGDBwDWAc44RAAE70u8m1rw210.jpg

图6. 创建温度和压力传感器的微件

对V6执行相同操作并使用下表作为参考:

虚拟通道号 微件名称 选择微件 选择单位 连接到
V5 温度(℃) 测量精度 有效位数 — 小数点后2位 温度传感器
V6 气压(hPa) 测量精度 有效位数 — 小数点后2位 大气压力传感器

在下一程序中以下代码将会引用引脚V5和V6。

#define VIRTUAL_PIN5 V5// 温度传感器

#define VIRTUAL_PIN6 V6// 气压传感器

如果上述所有步骤都正确完成,您将看到如图7所示的页面。

poYBAGDIBjKAOscEAAQUWWj3tjw668.jpg

图7. 微件的显示

最后一步是启用电子邮件通知功能(触发警报时)。为此,请单击“触发器状态”微件上的设置符号,然后选择“触发器”。

poYBAGDIBiuAcX03AATI17emz20762.jpg

图8. 创建电子邮件触发器

然后,您将进入以下页面(图9)。在“添加自定义收件人”中键入您的电子邮件地址,然后单击“发送电子邮件”。

pYYBAGDIBiaANYtvAAIZRH1v28U252.jpg

图9. 设置电子邮件通知

myDevices设置到此结束!

测试在线程序

以上已经完成了与家庭安防系统的在线连接设置。运行最终程序前可以先测试在线程序。

上传以下程序。确保已安装适用于Arduino的Cayenne库。该程序用于执行简单的功能(即显示温度和气压值)。正确运行时,温度和气压微件将改变颜色(绿色和橙色),相应数值显示于微件的底部。

//**************** 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);

     }

}

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

以下几种方法可以测试程序是否正常运行。

检查触发警报时是否发送电子邮件。您应收到如图10所示的电子邮件。

poYBAGDBwDmAYl4dAADefLHjGeE044.jpg

图10. 触发警报时收到的电子邮件通知

检查您是否可以看到温度和气压图。如需显示图形,请单击窗口微件右上角的图形符号。

pYYBAGDBwDqAaMb6AADwUQPC-Vc828.jpg

图11. 传感器的图形符号的显示

然后还会显示图表:

pYYBAGDBwDuASfK0AADLhraNGO4366.jpg

图12. 温度曲线图示例

下载智能手机应用程序

如前所述,无论何时何地只要您能连接WiFi,您就可以24/7全天候对安防系统进行监控。您可以在网站上或通过Cayenne手机应用程序进行监控。您可以在智能手机上直接下载Cayenne应用程序。进入App Store(应用商店,适用于iPhone)或Google Play商店(适用于Android)并搜索Cayenne然后就能下载。

poYBAGDBwDyAXnvcAACnv_cPQX0984.jpg

图13. Cayenne App

成功安装应用程序后,应用程序图标会显示在主屏幕上。

pYYBAGDBwD2AfV9LAAAkQPobjBo127.jpg

单击应用程序图标并登录myDevices帐户(电子邮件ID和密码应与上一次设置帐户时相同)。登录后,您将看到您创建的微件。现在单击在线/应用程序切换微件就可以打开/关闭警报;警报开/关状态颜色变为绿色,如下图所示:

pYYBAGDBwD6ANylxAABHLHP-RR4786.jpg

图14. Cayenne App微件

恭喜您!完整的系统已经建立!每当触发警报时,您将收到电子邮件通知。

这是一个包含多个模块的有趣项目。将来还可以添加更多传感器并增加其他功能和多个蜂鸣器,以使哔哔声更大。我们还可以考虑通过更换一些组件来缩小系统规模。在此之前,尽情享受吧!

pYYBAGPzFWyADVB1AAAGS83r-qY435.jpg

Purnomo Nuhalim

来自墨尔本的Purnomo是一名退休人员,也是电子发烧友。目前,他正使用Arduino和Raspberry Pi从事各种开放式硬件项目的研发。除了电子学,他还对航空建模和天文学充满热情。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2548

    文章

    50664

    浏览量

    751895
  • 安防系统
    +关注

    关注

    2

    文章

    249

    浏览量

    33233
收藏 人收藏

    评论

    相关推荐

    采用ROHM传感器套件DIY Arduino家庭系统 2部分- Cayenne设置

    DIY智能家居系统1部分中,我们将各种组件(例如PIR
    的头像 发表于 09-19 10:20 4194次阅读

    采用ROHM传感器套件DIY Arduino家庭系统 1部分-机制

    在亚克力板上钻孔以连接Arduino Mega和Grove Wrapper/Case。必须测量模块的尺寸并在表面上标出待钻孔的点。本项目的电路板布设如下图所示(图15)。您可以按自己的偏好习惯重新排列电路板上的模块。使用双面胶带连接面包板和遥控
    的头像 发表于 09-23 10:33 4920次阅读
    <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'>系统</b> <b class='flag-5'>第</b>1<b class='flag-5'>部分</b>-机制

    基于Arduino家庭防盗(原创)

    音频模块的开关开关拨至关闭状态,否则会造成程序下载失败。分别给卓手机和arduino下载好程序好,家庭防盗报警就可以工作了。大家可以下载源代码自己研究软件
    发表于 08-25 21:13

    【黑三郎】智能家庭系统

    相信家庭系统定能掀起新的智能家居革命。本系统是有单片机控制模块,电源模块,传感器模块---烟
    发表于 12-31 11:39

    一种无线家庭系统构建

    无线家庭系统构建介绍了如何应用CC2430SoC(System-on-Chip片上系统)芯片构筑
    发表于 08-02 16:09 37次下载
    一种无线<b class='flag-5'>家庭</b><b class='flag-5'>安</b><b class='flag-5'>防</b><b class='flag-5'>系统</b>构建

    使用触摸传感器的设备的输入和控制,2部分:控制和开发包

    在本系列触摸感知的1部分中,我们研究了各种类型的触摸传感器技术。在2部分中,我们将探讨触摸感
    发表于 06-21 09:28 5次下载
    使用触摸<b class='flag-5'>传感器</b>的设备的输入和控制,<b class='flag-5'>第</b><b class='flag-5'>2</b><b class='flag-5'>部分</b>:控制<b class='flag-5'>器</b>和开发包

    优化您的汽车USB电路电池短路设计——2部分

    优化您的汽车USB电路电池短路设计——2部分
    发表于 11-02 08:16 0次下载
    优化您的汽车USB电路<b class='flag-5'>防</b>电池短路设计——<b class='flag-5'>第</b><b class='flag-5'>2</b><b class='flag-5'>部分</b>

    DIY点焊机-2部分

    电子发烧友网站提供《DIY点焊机-2部分.zip》资料免费下载
    发表于 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部分

    电子发烧友网站提供《DIY CD点焊机-1部分.zip》资料免费下载
    发表于 11-30 11:57 14次下载
    <b class='flag-5'>DIY</b> CD点焊机-<b class='flag-5'>第</b>1<b class='flag-5'>部分</b>

    基于Arduino的太阳能电池板数字生态箱(1部分

    这篇文章来源于DevicePlus.com英语网站的翻译稿。在今天的文章中,我们将提供一个使用Arduino构建电子套件的新方案,本文分为1部分
    的头像 发表于 02-23 09:44 1083次阅读
    基于<b class='flag-5'>Arduino</b>的太阳能电池板数字生态箱(<b class='flag-5'>第</b>1<b class='flag-5'>部分</b>)

    Arduino传感器ROHM传感器评估套件概览

    ROHM Sensor Shield(ROHM传感器开发板)是一种兼容Arduino的扩展板,旨在帮助用户快速将各种传感器添加到自己的开发项
    的头像 发表于 02-23 17:37 840次阅读
    <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万圣节僵尸面具

    今天,我们会利用ROHM传感器评估套件制作一款超级简单的万圣节僵尸面具!我们将使用ROHM接近传感器/环境光
    的头像 发表于 02-23 17:45 896次阅读
    用<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>万圣节僵尸面具

    采用ROHM传感器套件DIY Arduino家庭系统 1部分 机制

    在该项目中,我们将使用Arduino Mega和ROHM传感器评估套件来制作一套DIY Arduino
    的头像 发表于 02-24 15:08 990次阅读
    <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'>系统</b> <b class='flag-5'>第</b>1<b class='flag-5'>部分</b> 机制

    ROHM传感器评估套件的3D外壳以及RohmMultiSensor库更新

    不久前,我创建了RohmMultiSensor - Arduino库,利用该库可以轻松控制ROHM传感器评估套件中的多个传感器
    的头像 发表于 02-24 09:51 857次阅读
    <b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b>评估<b class='flag-5'>套件</b>的3D外壳以及RohmMultiSensor库更新

    利用ROHM传感器评估套件实现UCLA AirMouse–2部分

    在利用ROHM传感器评估套件实现UCLA AirMouse – 1部分中,我们完成了项目的硬件。对于发射
    的头像 发表于 02-27 10:27 534次阅读