【雕爷学编程】Arduino动手做(76)---2路光耦继电器模块之声音信号触发控制继电器模块(声控开关)

在这里插入图片描述

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七十六:2路继电器模块 带光耦保护Arduino扩展板

在这里插入图片描述
PC817
光电耦合器广泛用在电脑终端机,可控硅系统设备,测量仪器,影印机,自动售票,家用电器,如风扇,加热器等电路之间的信号传输,使之前端与负载完全隔离,目的在于增加安全性,减小电路干扰,简化电路设计。

在这里插入图片描述
主要参数
光电耦合器
电流传输比:50%(最小值)
高隔离电压:5000V(有效值)
符合UL标准
极限参数
正向电流(ICEO):50mA
峰值正向电流(ICE max):1A
反向电压:6V
功耗:70mW
集电极发射极电压:35V
发射极集电极电压:6V
集电极电流:50mA
集电极功耗:150mW
总功耗:200mW
工作温度:-30℃ ~+100℃
集电极发射极饱和电压:0.1V(典型值)
截止频率:80kHz
电流传输比:50%~600%
封装:DIP-4
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
光藕pc817的几个应用电路
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2路带光耦继电器模块
在这里插入图片描述
模块参数
1.尺寸:50.6mm(长)*38.8mm(宽)*19.3mm(高)
2.体重:30g
3.PCB颜色:黑色
4.板子四周带4个固定螺丝孔,孔直径3.1mm,方便安装及固定
5.继电器选用优质松乐继电器,单刀双掷。一个公共端、一个常开端、一个常闭端
6.光耦隔离,抗干扰性好
7.低电平吸合,高电平释放。吸合时状态指示灯亮,释放时状态指示灯灭
8.VCC为系统电源,JD_VCC为继电器电源。默认发5V继电器,插上跳线帽即可
9.继电器最大输出:直流30V/10A,交流250V/10A
在这里插入图片描述
模块电原理图
在这里插入图片描述
电气参数
供电电压:5VDC
电流:大于100mA
负载:250V 10A 交流 或30V 10A直流

接线说明
VCC:系统电源正极
GND:系统电源负极
IN1–IN2:继电器控制端口
(请勿接反,避免导致模块烧坏)
在这里插入图片描述
在这里插入图片描述

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七十六: 2路继电器模块 带光耦保护Arduino扩展板
实验开源代码

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 
实验七十六: 2路继电器模块 带光耦保护Arduino扩展板 
IN1——D6 
IN2——D7 
板载灯——D13*/

  #define IN1 6; 
  #define IN2 7; 
  #define relay 13; 
  
  void setup() { 
    pinMode(IN1, OUTPUT); 
    pinMode(IN2, OUTPUT); 
    pinMode(relay, OUTPUT); 
  } 
  
  void loop() { 
    digitalWrite(IN1, HIGH); 
    digitalWrite(IN2, HIGH); 
    digitalWrite(relay, HIGH); 
    delay(1000); 
    digitalWrite(IN1, LOW); 
    digitalWrite(IN2, LOW); 
    digitalWrite(relay, LOW); 
    delay(1000); 
  }

实验场景图
在这里插入图片描述
实验开源图形编程(Mind+、编玩边学)
在这里插入图片描述
实验开源仿真编程(Linkboy V4.2)
在这里插入图片描述

/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 
实验二:声音信号触发控制继电器模块(声控开关) 
实验接线:声音模块数字端口DO接Uno的D7,D13接LED灯         
继电器模块IN接D12口
*/

void setup() {
  pinMode(13, OUTPUT);  //板载LED作为声控开关的指示灯
  pinMode(12, OUTPUT);  //接继电器模块
}

void loop() {
  if (HIGH == digitalRead(7))  //如果D7有声音触发信号
  {
    digitalWrite(12, LOW == digitalRead(12) ? HIGH : LOW);
    digitalWrite(13, LOW == digitalRead(13) ? HIGH : LOW);  //则反转继电器模块与LED的状态(实现自锁开关功能)
    delay(1000);
  }
}

实验二开源仿真编程(Linkboy V4.2)
在这里插入图片描述
实验二开源图形编程(Mind+、编玩边学)
在这里插入图片描述
实验二实验场景图
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这是一个简单的Arduino UNO和ESP-01阿里云远程控制继电器和温湿度显示的代码: 首先,你需要准备以下材料: - Arduino UNO板 - ESP-01模块 - DHT11温湿度传感器 - 5V继电器模块 - 杜邦线 - 跳线 然后,你需要进行以下操作: 1. 连接ESP-01模块Arduino UNO板上。使用跳线将ESP-01的VCC引脚连接到Arduino UNO板的5V引脚上,将ESP-01的GND引脚连接到Arduino UNO板的GND引脚上,将ESP-01的TXD引脚连接到Arduino UNO板的RX引脚上,将ESP-01的RXD引脚连接到Arduino UNO板的TX引脚上。 2. 连接DHT11温湿度传感器到Arduino UNO板上。使用跳线将DHT11的VCC引脚连接到Arduino UNO板的5V引脚上,将DHT11的GND引脚连接到Arduino UNO板的GND引脚上,将DHT11的DATA引脚连接到Arduino UNO板的数字引脚2上。 3. 连接5V继电器模块Arduino UNO板上。使用跳线将继电器模块的VCC引脚连接到Arduino UNO板的5V引脚上,将继电器模块的GND引脚连接到Arduino UNO板的GND引脚上,将继电器模块的IN引脚连接到Arduino UNO板的数字引脚3上。 4. 下载并安装Arduino IDE软件。 5. 通过Arduino IDE软件将以下代码上传到Arduino UNO板上,该代码将读取温湿度传感器的值并将其显示在串口监视器中: ```C++ #include <DHT.h> #define DHTPIN 2 // DHT11连接到Arduino UNO板的数字引脚2上 #define DHTTYPE DHT11 // DHT11温湿度传感器类型 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); // 打开串口监视器 dht.begin(); } void loop() { delay(2000); // 2秒读取一次温湿度传感器 float h = dht.readHumidity(); // 读取湿度值 float t = dht.readTemperature(); // 读取温度值 if (isnan(h) || isnan(t)) { // 如果读取失败 Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); // 打印湿度值 Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); // 打印温度值 Serial.print(t); Serial.println(" *C"); } ``` 6. 通过Arduino IDE软件将以下代码上传到Arduino UNO板上,该代码将控制继电器开关,并连接到阿里云IoT平台: ```C++ #include <SoftwareSerial.h> #include <PubSubClient.h> #include <ESP8266WiFi.h> #define DHTPIN 2 // DHT11连接到Arduino UNO板的数字引脚2上 #define DHTTYPE DHT11 // DHT11温湿度传感器类型 #define RELAY_PIN 3 // 继电器连接到Arduino UNO板的数字引脚3上 const char* ssid = "你的WiFi名称"; // WiFi名称 const char* password = "你的WiFi密码"; // WiFi密码 const char* mqttServer = "你的MQTT服务器地址"; // MQTT服务器地址 const int mqttPort = 1883; // MQTT服务器端口 const char* mqttUser = "你的MQTT用户名"; // MQTT用户名 const char* mqttPassword = "你的MQTT密码"; // MQTT密码 const char* clientID = "ESP8266Client"; // MQTT客户端ID const char* topic = "你的MQTT主题"; // MQTT主题 DHT dht(DHTPIN, DHTTYPE); WiFiClient espClient; PubSubClient client(espClient); void setup() { Serial.begin(9600); // 打开串口监视器 pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, LOW); // 继电器默认关闭 dht.begin(); delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); client.setServer(mqttServer, mqttPort); client.setCallback(callback); reconnect(); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); delay(2000); // 2秒读取一次温湿度传感器 float h = dht.readHumidity(); // 读取湿度值 float t = dht.readTemperature(); // 读取温度值 if (isnan(h) || isnan(t)) { // 如果读取失败 Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); // 打印湿度值 Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); // 打印温度值 Serial.print(t); Serial.println(" *C"); if (t >= 25.0) { // 如果温度大于等于25摄氏度 digitalWrite(RELAY_PIN, HIGH); // 继电器开启 client.publish(topic, "ON"); // 向MQTT主题发送开启信号 } else { // 如果温度小于25摄氏度 digitalWrite(RELAY_PIN, LOW); // 继电器关闭 client.publish(topic, "OFF"); // 向MQTT主题发送关闭信号 } } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); if ((char)payload[0] == '1') { // 如果MQTT主题收到1 digitalWrite(RELAY_PIN, HIGH); // 继电器开启 } else { // 如果MQTT主题收到0 digitalWrite(RELAY_PIN, LOW); // 继电器关闭 } } void reconnect() { while (!client.connected()) { Serial.print("Connecting to MQTT broker..."); if (client.connect(clientID, mqttUser, mqttPassword)) { Serial.println("connected"); client.subscribe(topic); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } ``` 7. 修改代码中的WiFi名称、WiFi密码、MQTT服务器地址、MQTT端口、MQTT用户名、MQTT密码、MQTT客户端ID和MQTT主题。 8. 将ESP-01模块连接到阿里云IoT平台并启动。 9. 打开串口监视器并观察温湿度传感器的读数和继电器开关状态。 现在,你已经完成了使用Arduino UNO和ESP-01阿里云远程控制继电器和温湿度显示的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值