模块介绍:本实验的目的是在RS485模块通信的基础上实现接收端的控制,即接收端是否接收发送端的数据。
实验器材:
Arduino UNO 2块
RS485模块 2块 双公头杜邦线 2根 电路连接:
将上图中左边的RS485模块上H2的485-A连接到右边RS485模块上H2的485-A上;将上图中左边的RS485模块上H2的485-B连接到右边RS485模块上H2的485-B上;将两个RS485模块三的P1都用短路帽连接到3.3V上;将作为接收端的RS485模块(上图中左边的模块)上的P2都用短路帽连接到TX_CTRL上;将作为发送端的RS485模块(上图中右边的模块)上的P2都用短路帽连接到D9_CTRL上;用短路帽将两块RS485模块的D2与TX短接,D3与RX短接。 实验代码: 接收代码: #include <SoftwareSerial.h> SoftwareSerial mySerial(3,2);
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(9,OUTPUT);
}
void loop() {
while(mySerial.available() > 0){
char c = mySerial.read();
Serial.write(c);
}
}
发送代码:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3,2);
bool a=0;
int b=0;
void setup() {
mySerial.begin (9600);
Serial.begin(9600);
pinMode(9,OUTPUT);
}
void loop() {
if(a==0)
{
digitalWrite(9,HIGH);
Serial.println ("pin9 is HIGH");
mySerial.println("pin9 is HIGH");
}
else
{
digitalWrite(9,LOW);
Serial.println ("pin9 is LOW");
mySerial.println("pin9 is LOW");
}
b++;
a=b%2;
delay(1000);
}
上面的代码是含义是接收端始终处于监听的状态,而发送端通过Arduino的D9控制RS485是否发送使能,D9为高电平RS485发送数据失能,在接收端看不到数据,D9为低电平RS485发送使能,可以在接收端看到数据。
实验结果与分析:
由于RS485是差分信号,所以当D9为高电平时无法满足差分的最小阈值,故数据无法发送,相反的,当D9为低电平时数据就可以发送了。 本次试验是在《在Arduino上测试RS485模块之通讯测试》的基础上完成的,过程比较简单,希望大家喜欢。
|