通过蓝牙hc05模块将数据从一个arduino发送到另一个arduino
我必须为Uni做一个项目,为每个arduino使用2个arduino uno、2个HC 05蓝牙模块和2个传感器。我已经将一个模块设置为从模块,并且主模块仅连接到从模块 当我试图从从属设备发送数据以供主设备读取时,它一直读取0 我使用的是Arduino IDE,没有错误,一切都正常运行 这是我目前掌握的代码 另外,我想从2个传感器向主传感器发送数据,但我不知道如何做到这一点 从代码通过蓝牙hc05模块将数据从一个arduino发送到另一个arduino,arduino,bluetooth,Arduino,Bluetooth,我必须为Uni做一个项目,为每个arduino使用2个arduino uno、2个HC 05蓝牙模块和2个传感器。我已经将一个模块设置为从模块,并且主模块仅连接到从模块 当我试图从从属设备发送数据以供主设备读取时,它一直读取0 我使用的是Arduino IDE,没有错误,一切都正常运行 这是我目前掌握的代码 另外,我想从2个传感器向主传感器发送数据,但我不知道如何做到这一点 从代码 #include <SoftwareSerial.h> #define TILT 7 // tilt
#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);
}
#包括
#定义倾斜7//倾斜传感器针脚
#定义LDR 8//光强传感器引脚
#定义rxPin 10
#定义txpin11
SoftwareSerial节点通信=SoftwareSerial(rxPin,txPin);
int sentBytes;//从代码
字节数据[2];
无效设置(){
Serial.begin(9600);
pinMode(rxPin,输入);
pinMode(txPin,输出);
pinMode(倾斜、输入);
引脚模式(LDR,输入);
Serial.begin(9600);
nodeCommunication.begin(9600);
延迟(2000年);
}
void循环(){
//int LDRval=analogRead(LDR);//光强传感器(坎德拉)
//int Tilt_Sensed=数字读取(倾斜);
数据[0]=模拟读取(LDR);
数据[1]=数字读取(倾斜);
if(nodeCommunication.available()){
sentBytes=nodeCommunication.write(数据[0]);
Serial.println(“我达到了这个if”);
}
串行打印LN(模拟读取(LDR));
Serial.println(千字节);
延迟(2000年);
}
主代码
#include "dht.h"
#include <SoftwareSerial.h>
#define dht_apin A0 // Analog Pin sensor is connected to A0
dht DHT; // DHT.humidity // DHT.
#define rxPin 10
#define txPin 11
SoftwareSerial nodeCommunication = SoftwareSerial(rxPin, txPin);
byte data = 1;
///// MASTER CODE
void setup(){
Serial.begin(9600);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
nodeCommunication.begin(9600);
delay(2000);//Wait before accessing Sensor
}//end "setup()"
void loop(){
//Start of Program
DHT.read11(dht_apin); // reading the data from the sensor
if(nodeCommunication.available()){
data = nodeCommunication.read();
Serial.println("I reached this if");
}
Serial.print(data); Serial.println(" candela;");
Serial.print(DHT.temperature); Serial.println(" C");
Serial.print(DHT.humidity); Serial.println(" % humidity");
delay(2000);//Wait 2 seconds before accessing sensor again.
//Fastest should be once every two seconds.
}// end loop()
#包括“dht.h”
#包括
#定义dht_apin A0//模拟引脚传感器连接到A0
dht dht;//湿度//DHT。
#定义rxPin 10
#定义txpin11
SoftwareSerial节点通信=SoftwareSerial(rxPin,txPin);
字节数据=1;
/////主代码
无效设置(){
Serial.begin(9600);
pinMode(rxPin,输入);
pinMode(txPin,输出);
nodeCommunication.begin(9600);
延迟(2000);//在访问传感器之前等待
}//结束“设置()
void循环(){
//节目开始
DHT.read11(DHT_apin);//从传感器读取数据
if(nodeCommunication.available()){
data=nodeCommunication.read();
Serial.println(“我达到了这个if”);
}
Serial.print(数据);Serial.println(“坎德拉;”);
Serial.print(DHT.temperature);Serial.println(“C”);
Serial.print(DHT.湿度);Serial.println(“%湿度”);
延迟(2000);//在再次访问传感器之前等待2秒。
//最快的应该是每两秒一次。
}//结束循环()
请告诉我我做错了什么。非常感谢你
byte data = 1; - should be just byte data;
您是否检查了发送/接收连接?来自主设备的发送必须连接到从设备的接收,反之亦然。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);
}
#包括
#定义rxPin 10
#定义txpin11
字节数据=0x01//“1”的十六进制值
SoftwareSerial节点通信=SoftwareSerial(rxPin,txPin);
无效设置()
{
Serial.begin(9600);
pinMode(rxPin,输入);
pinMode(txPin,输出);
nodeCommunication.begin(9600);
}
void循环()
{
nodeCommunication.write(data);//向从机发送字节数据
延迟(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....");
}
}
#包括
#定义rxPin 10
#定义txpin11
字节传入
SoftwareSerial节点通信=SoftwareSerial(rxPin,txPin);
无效设置()
{
Serial.begin(9600);
pinMode(rxPin,输入);
pinMode(txPin,输出);
nodeCommunication.begin(9600);
}
void循环()
{
if(nodeCommunication.available>0)//仅当数据可用时
{
byte incoming=nodeCommunication.read();//从主机读取字节
Serial.println(“Incoming=”);
Serial.println(传入);
}
其他的
{
Serial.println(“无可用数据…”);
}
}
建立串行通信后,下一步是实现DHT值 嗨,欢迎来到StackOverflow。请提供更多细节:你到底想做什么?你是如何执行代码的?您看到了什么输出或错误?您好,谢谢您的评论。我使用的是arduino IDE,我没有看到任何错误,一切都在编译和运行。因此,主机必须向从机发送数据?虽然它们都可以相互发送数据,但首先建立连接可能是一个好的开始。如果可行,则尝试将DHT数据从一个arduino发送到另一个arduino。然后也许让他们同时发送和接收,但这需要更多地思考他们将如何沟通。