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

2019-09-19 10:20 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。

点击这里阅读本文的第1部分 >

在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 只  (红色、绿色和蓝色)

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,http://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将熄灭,蜂鸣器将发出两次哔哔声。

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

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

Arduino

 //**************** 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 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 previousllis = 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/

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

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

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

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

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

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

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

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

图3. 选择Arduino Mega和WiFi Shield

图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”。

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

使用下表作为参考:

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

 

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

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

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

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

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

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

 

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

#define VIRTUAL_PIN5 V5        // 温度传感器

#define VIRTUAL_PIN6 V6        // 气压传感器

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

图7. 微件的显示

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

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

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

图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所示的电子邮件。

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

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

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

然后还会显示图表:

图12. 温度曲线图示例

下载智能手机应用程序

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

图13. Cayenne App

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

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

图14. Cayenne App微件

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

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

收藏 人收藏
分享:

评论

相关推荐

怎样用Arduino控制RGBLED

这是怎么回事。基本上,我们已经将arduino设置为响应特定的消息。此消息包含一个标头(字母“ C”....
的头像 39度创意研究所 发表于 09-28 16:44 94次 阅读

如何使用Arduino和Darlington ULN2803控制大功率电路

  要控制此显示,我连接了共阳极到36V,然后选择性地将要点亮的显示器各部分接地。
的头像 39度创意研究所 发表于 09-28 13:13 80次 阅读

如何使用Arduino制作简易数据记录器

如果一切正确,则dist超声波传感器和其范围内的对象之间的距离出现在富文本框中
的头像 39度创意研究所 发表于 09-28 12:56 81次 阅读

在本项目中,我们来看一下如何用Arduino,Micro SD卡读卡器来制作一个简单的音乐播放器。完成后,你可以用它来播放储存在SD...
发表于 09-27 17:20 264次 阅读

怎样用Arduino控制直流电机

 现在,您已将Arduino连接好,将代码复制并粘贴到Arduino IDE。将读取此代码的作用,以....
的头像 39度创意研究所 发表于 09-27 14:25 168次 阅读

如何使用atmeg328IC构建Arduino

  完成上述所有步骤后,您就可以使用arduino。现在该上传您的第一个代码了。要上传代码,您只需从....
的头像 39度创意研究所 发表于 09-27 14:17 77次 阅读

Arduino闪烁LED的教程

要使LED闪烁,首先需要使用软件对芯片进行编程。请访问arduino.cc以获取完整程序和其他示例。....
的头像 39度创意研究所 发表于 09-27 11:43 88次 阅读

如何从arduino连接到I/O

一个按钮,每次按下该按钮,“ Hello world”都会打印到该按钮上方的文本字段中。一旦文本字段....
的头像 39度创意研究所 发表于 09-27 11:40 52次 阅读

如何通过Arduino安全使用中继

 要测试新的继电器电路,只需将此代码复制并粘贴到您的ARDUINO IDE中,请确保将arduino....
的头像 39度创意研究所 发表于 09-27 11:15 58次 阅读

如何编写代码以捕获十六进制和十进制值的远程控制代码

 现在我们知道如何获取任何远程控制按钮的代码,我将在另一本可指导的示例中向您展示如何使用这些代码进行....
的头像 39度创意研究所 发表于 09-27 11:10 57次 阅读

如何使用Arduino和NRF24L01制作PS2控制器

 在代码中,您可能还会发现与BatteryCheck有关的内容,目前尚未使用。最初,我打算使用它来检....
的头像 39度创意研究所 发表于 09-27 11:04 1190次 阅读

Arduino启动板DIY图解

 这不是Midi乐器,而是配置为网格控制器的键盘,可能在作弊,但肯定值得尝试,并且我很快就会添加与该....
的头像 39度创意研究所 发表于 09-27 11:00 152次 阅读

怎样在ArduinoMega上使用2.4英寸TFTLCD屏蔽

 在Arduino IDE上,选择COM端口,然后选择将您的开发板命名为Arduino Mega,然....
的头像 39度创意研究所 发表于 09-27 10:29 70次 阅读

Arduino双轴伺服太阳能跟踪器制作图解

我使用了3个光传感器和1个倾斜传感器。您可以用LED或光电晶体管代替CDS电池,和/或用汞开关代替滚....
的头像 39度创意研究所 发表于 09-27 10:05 107次 阅读

怎样为Arduino制造电流传感器电子元件和自制分流器

此构建所需的主要零件是分流器以及运算放大器IC。对于我的应用,我使用的是IC LM358,它是一个双....
的头像 39度创意研究所 发表于 09-27 09:18 63次 阅读

基于Arduino的自动感应门的制作

要控制直流电动机的运动,我们必须构建一个电动机控制器。为此,我们使用上图中的H桥配置。我已经使用5v....
的头像 39度创意研究所 发表于 09-27 08:48 86次 阅读

如何制作可录制视频的电话控制的遥控汽车

 在您的Android/iOS设备上下载Blynk应用程序,并构建图片上的仪表板。此项目需要两个操纵....
的头像 39度创意研究所 发表于 09-27 08:38 132次 阅读

我的项目是超声波测距,现在有以下几个用电芯片   HC-SRO4(超声波测距模块),ADXL203EB(双轴加速度计...
发表于 09-27 02:44 18次 阅读

如何仅使用2节AAA电池来运行arduinounor3

确保蓝色PWR LED点亮并且红色LOW BATT灯熄灭。
的头像 39度创意研究所 发表于 09-26 15:49 520次 阅读

如何采用Arduino系统板进行单片机编程

Arduino最小系统板电路见下图,适用于对ATmega8、ATmega168、ATmega328等....
发表于 09-26 15:44 67次 阅读
如何采用Arduino系统板进行单片机编程

怎样用ArduinoProMicro进行PC远程控制

您可以使用遥控器的按钮来按想要用适当的代码在键盘中按下的任何键。
的头像 39度创意研究所 发表于 09-26 15:39 127次 阅读

如何对基于Arduino的金属探测器进行编程

金属探测器的基本原理是,线圈中的电感/信号会随着目标靠近线圈而改变。识别这些变化的常用方法是测量频移....
的头像 39度创意研究所 发表于 09-26 14:57 88次 阅读

Arduino激光投影仪和控制应用程序的制作

 将整个电路放入塑料接线盒中,并用螺钉拧紧。整个投影机非常便携,只需插入电源,切换开关,即可看到激光....
的头像 39度创意研究所 发表于 09-26 14:19 251次 阅读

如何将ArduinoBootLoader刻录到AtMega328p芯片上

假设您已经拥有一个Arduino Uno或类似产品,并且您对IDE熟悉并且上传草图。
的头像 39度创意研究所 发表于 09-26 11:27 81次 阅读

本项目将教你如何通过Arduino结合Websocket在网页浏览器上控制伺服电机。所需元件Arduino UNO x 1PHPoC Wifi扩展板 x...
发表于 09-26 11:16 299次 阅读

两轮平衡机器人DIY图解

所有3种芯片上都装有数字运动处理器(DMP)。使用此处理器有很大的优势。它在计算垂直角度(传感器融合....
的头像 39度创意研究所 发表于 09-26 11:00 149次 阅读

如何使用LM35温度传感器和Arduino来测量温度

在Void循环中,我将从传感器读取温度,将其更改为摄氏温度并将其显示在第一行,然后再次更改到华氏度并....
的头像 39度创意研究所 发表于 09-26 10:53 110次 阅读

Arduino USB的制作

此适配器还附带四件式电缆。如果您没有使用自动重置和/或有其他功能,则可以使用这些功能代替像我一样制作....
的头像 39度创意研究所 发表于 09-26 10:49 96次 阅读

如何在Arduino上使用键盘和LCD来制作Arduino计算器

因此,首先要使用键盘,您必须了解键盘的工作原理。
的头像 39度创意研究所 发表于 09-26 10:40 100次 阅读

遥控Arduino坦克的制作

将两者混合在一起,我可以将RC接收器的读数直接输入到我的arduino中,将值转换为电机通过电机护罩....
的头像 39度创意研究所 发表于 09-26 10:24 96次 阅读

ArduinoICSP编程电缆的制作

 这是完成的电缆。使用标签制造商标记电缆的哪一端用于编程器,哪一端用于目标。并标记标题的哪一端应指向....
的头像 39度创意研究所 发表于 09-26 10:20 111次 阅读

怎样用Arduino和两个瞬时开关控制RC伺服电机

这是我使用的代码。我稍后再解释,我有点懒。多数民众赞成在这里和这是什么。
的头像 39度创意研究所 发表于 09-26 10:19 143次 阅读

怎样将模拟传感器连接到Arduino

完成后,您应该看到Lilypad上的LED闪烁。按下按钮,LED应该以较低的频率闪烁。
的头像 39度创意研究所 发表于 09-26 10:09 802次 阅读

如何创建一个DualShock4控制的Arduino

这就是将PS4 DualShock 4控制器连接到Arduino的方式!如果有读者还在学习如何使用A....
的头像 39度创意研究所 发表于 09-26 09:54 390次 阅读

如何制作带LCD的Arduino温度传感器

的。因此,在您上传代码之后,LCD显示器应该会亮起,并显示类似“ Temp:72.5”的字样。如果可....
的头像 39度创意研究所 发表于 09-26 09:30 130次 阅读

怎样设置ArduinoIDE对ESP8266进行编程

恭喜!您的Arduino IDE已准备好支持ESP8266模块。  
的头像 39度创意研究所 发表于 09-26 09:24 143次 阅读

智能家居的话题仍在不断炒热,它能帮助人们减少人力需求与错误,同时还能提升效率。在家庭自动化系统的帮助下,我们可以控制不同...
发表于 09-25 18:12 389次 阅读

Arduino脑波阅读器的制作教程

 NeuroSky芯片还进行了一些处理,并为“注意力”和“冥想”提供了2个值。您可以直接使用这些值来....
的头像 39度创意研究所 发表于 09-25 11:52 125次 阅读

简易Arduino机器人的制作

  恭喜,现在您已经建立了第一个机器人!它具有基本功能,可以向前,向后,左转和右转。
的头像 39度创意研究所 发表于 09-25 10:31 135次 阅读

如何使用滑动开关打开/关闭外部LED

首先,读取switchPin的状态,并查看是否已移动开关手柄。如果已将其推到引脚12,则switch....
的头像 39度创意研究所 发表于 09-25 09:49 186次 阅读

白板绘图仪DIY图解

 用子例程字母写草图仍然有些困难,但是当解决方案可以解决V2马达护罩到位,我可以再次添加键盘。
的头像 39度创意研究所 发表于 09-25 09:30 145次 阅读

如何用PHP控制Arduino

此方法在Windows下将无法使用。我不能告诉你我花了多长时间才弄清楚。在Windows和Linux....
的头像 39度创意研究所 发表于 09-25 09:18 133次 阅读

带有16X2LCD的ARDUINO指纹扫描仪的制作

请确保将adafruit库添加到您的arduino库中。
的头像 39度创意研究所 发表于 09-24 17:11 315次 阅读

Arduino声音监控器的制作

在我的项目中,我使用了具有4个串行引脚的Arduino Mega。图中的对象不是麦克风,但是我使用了....
的头像 39度创意研究所 发表于 09-24 16:53 153次 阅读

Arduino控制的机器人真空吸尘器的制作

可以通过以下方式将HG7881上的电机驱动器连接到Arduino:电线。它比电动机屏蔽罩便宜得多,但....
的头像 39度创意研究所 发表于 09-24 16:49 149次 阅读

如何通过Arduino制作数字示波器

在线制作数字示波器的经常见到的人,DSO必须具有数模转换单元,根据d/a转换电路可分为两种模式:1.....
的头像 39度创意研究所 发表于 09-24 16:45 277次 阅读

Arduino按钮蜂鸣器的制作

按钮连接到板上
的头像 39度创意研究所 发表于 09-24 11:33 105次 阅读

ARDUINO蜘蛛机器人DIY图解

 现在我们已经准备好运行机器人了,但是我们需要先设置关节角度,因此请上传设置代码,该代码可让您将每个....
的头像 39度创意研究所 发表于 09-24 10:37 131次 阅读

如何使用Arduino读取卡尺

我一直在使用的游标卡尺是Precision Gold的电子数字游标卡尺。我从英国的Maplin(项目....
的头像 39度创意研究所 发表于 09-24 10:27 129次 阅读

怎样用Arduino和ESP8266进行远程天气监控

在此指导中,我们将学习如何使用arduino,esp8266和ThingSpeak构建远程天气监视系....
的头像 39度创意研究所 发表于 09-24 10:23 118次 阅读

怎样将电话转换为电视语音遥控器

 现在,您可以在任何类型的电视上享受智能电视的体验。如果仍然存在任何错误,请尝试调试您的工作。
的头像 39度创意研究所 发表于 09-24 09:50 136次 阅读

怎样在Windows上使用ArduinoIDE

如果您是唯一使用此计算机的用户,则可以下载非管理员安装
的头像 39度创意研究所 发表于 09-24 09:43 155次 阅读

刚刚接触arduino,安装了arduino ide,想跑一下IDE自带例程   如果不把开发板插进电脑,Sketch uses 76,327 byt...
发表于 09-24 05:55 28次 阅读

怎样在Arduino上使用4×4键盘

现在,上传程序并打开串行监视器。然后,打开串行监视器。然后,按任意按钮,您将能够看到屏幕上相应的字符....
的头像 39度创意研究所 发表于 09-24 05:22 107次 阅读

另外还想问下前辈们,在哪儿可以看到他们需要的工作电压的资料呢?...
发表于 09-23 19:21 60次 阅读

心跳脉冲LED的制作

这将是最困难的步骤。如果您已经使用Arduino IDE,则可能需要修改IDE才能与Trinket一....
的头像 39度创意研究所 发表于 09-23 14:29 200次 阅读

我找到了Arduino,会对先锋开发套件的工作吗? 我们正在寻求建立一个小型的DIY数控安装在商店,我们更熟悉的PSoC比Ardu...
发表于 09-23 14:14 72次 阅读

断断续续弄了一周才把微信控制搞定,做了个微信控制小风扇。有微信连不上的可以找我交流,自己一步一步走来,看官方教材,虽不明...
发表于 09-23 04:35 56次 阅读

我从网上找了Arduino的max30100模块的程序,想一直过来用STM32来做,结果卡在了millis函数这里,求助各位有过经验的大哥...
发表于 09-18 17:07 92次 阅读

现在我有一些新的LED,它是SK68 12WWA、SK68 12 RGB、SK68 12 RGBW、SK68 12WWA和SK68 12 RGB可以...
发表于 09-18 13:47 113次 阅读
电子发烧友 华秋开发
APP 网站地图
红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三