通过蓝牙hc05模块将数据从一个arduino发送到另一个

时间:2020-05-21 14:16:27

标签: arduino bluetooth

我必须为Uni做一个项目,该项目使用2个arduino uno,2个HC 05蓝牙模块和每个arduino 2个传感器。我已将模块设置为从站,而主站仅连接到从站。

当我尝试从从机发送数据以供主机读取时,它会一直读取0。

我正在使用Arduino IDE,没有错误,一切正常。

这是我到目前为止的代码。

此外,我想将2个传感器的数据从从设备发送到主设备,但我不知道该怎么做。

从站代码

changePageArray()

主密码

#include <SoftwareSerial.h>
#define TILT 7 // tilt sensor pin
#define LDR 8 //light intensity sensor pin
#define rxPin 10
#define txPin 11
SoftwareSerial nodeCommunication = SoftwareSerial(rxPin, txPin);
int sentBytes;                                         ////// SLAVE CODE
byte data[2];
void setup() { 
  Serial.begin(9600);
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  pinMode(TILT, INPUT);
  pinMode(LDR, INPUT);
  Serial.begin(9600);
  nodeCommunication.begin(9600);
  delay(2000);
}
void loop() {

  //int LDRval = analogRead(LDR); // light intensity sensor (candela)
  //int Tilt_Sensed = digitalRead(TILT);
  data[0] = analogRead(LDR);
  data[1] = digitalRead(TILT);

  if(nodeCommunication.available()){
    sentBytes = nodeCommunication.write(data[0]);
    Serial.println("I reached this if");
  }

  Serial.println(analogRead(LDR));
  Serial.println(sentBytes);


  delay(2000);
}

请告诉我我在做什么错。非常感谢!

1 个答案:

答案 0 :(得分:1)

byte data = 1; - should be just byte data;

您是否检查了TX / RX连接?来自主机的TX必须连接至从机的RX,反之亦然。 Als GND必须彼此连接。

然后,让主设备(发送方)只是对从设备(接收方)进行Serial.write(在您的情况下为nodeCommunication.write())。

是这样的:

大师:

#include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
byte data = 0x01; //Hex value for ''1''
SoftwareSerial nodeCommunication = SoftwareSerial(rxPin, txPin);

void setup()
{
Serial.begin(9600);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
nodeCommunication.begin(9600); 
}

void loop()
{
nodeCommunication.write(data); //Sends byte data to slave
delay(1000);
}

从站:

    #include <SoftwareSerial.h>
    #define rxPin 10
    #define txPin 11
    byte incoming
    SoftwareSerial nodeCommunication = SoftwareSerial(rxPin, txPin);

    void setup()
    {
    Serial.begin(9600);
    pinMode(rxPin, INPUT);
    pinMode(txPin, OUTPUT);
    nodeCommunication.begin(9600); 
    }

    void loop()
   {
    if(nodeCommunication.available > 0) //Only if data is available
    {
    byte incoming = nodeCommunication.read(); //read byte from master
    Serial.println("Incoming = ");
    Serial.println(incoming);
    }
    else
    {
    Serial.println("No data available....");
    }
   }

建立串行通信后,下一步就是实现DHT值。