정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노 블루투스 HC-06와 HC-05 이렇게 페어링은 됐는데 데이터 전송이 안됩니다 도와주세요 ㅠㅠ
도와주세요 | 2020-11-04
 

1. 프로젝트 사용한 보드 종류

 브레드 보드, 아두이노 UNO

 

 

2. 사용한 개발 프로그램명

  아두이노

 

 

3. 사용한 센서 모델명

  DS18B20, DHT-11, pulsesensor, KY-037(고감도 소리감지 센서), I2C 2대, LED, HC-06, HC-05, 220옴, 470옴

 

 

4. 연결한 회로 설명 (또는 이미지)

 아두이노 우노 한대에는   DS18B20, DHT-11, pulsesensor, KY-037(고감도 소리감지 센서), I2C,LED,

 

HC-05, 220옴, 470옴을 연결했습니다. 

 

다른 아두이노 우노 한대에는 I2C, HC-06 을 연결했습니다.

 

 

 

5. 소스코드 (주석 필수)

마스터 코드 HC-05 는 이렇습니다.

#define USE_ARDUINO_INTERRUPTS true
#include   // pulse sensor의 라이브러리를 불러온다.
#include    // LCD의 라이브러리를 불러온다. 
#include
#include
#include
SoftwareSerial HI(2,3); 
#include
 #include

#define ONE_WIRE_BUS 4
 OneWire oneWire(ONE_WIRE_BUS);
 DallasTemperature sensors(&oneWire);

#define DHTPIN 9 
#define DHTTYPE DHT11

LiquidCrystal_I2C lcd(0x27,16,2);  // 사용할 LCD의 주소는 0x27이고, 화면은 가로로 16개의 문자를 사용할 수 있고 세로로 2줄 사용 가능하다.

DHT dht(DHTPIN, DHTTYPE); 
int sensor=A1; //고감도 소리감지 센서 A핀 연결입니다.
 int led= 11; // LED를 11번에 연결했습니다.
const int PulseLine = A0;  // PulseLine이라는 상수를 int형으로 선언해 주고 아날로그 핀 0에 연결해 줄 것이기 때문에 A0이라고 설정한다.

PulseSensorPlayground pulseSensor; // PulseSensorPlayground 라이브러리 안에 pulseSensor라는 객체를 생성시킵니다. 

void setup() { 
  
   
  lcd.init();  // LCD를 초기화해주는 코드이며, 시동을 걸어주는 역할이다.
  
  Serial.begin(38400); 
  HI.begin(38400);   

  pulseSensor.analogInput(PulseLine); //   심박 센서에 PulseLine이라고 선언했던 상수를 입력한다.
  pulseSensor.blinkOnPulse(led);       // 아두이노의 심장센서가 측정할 때마다 LED를  깜빡여주는 코드이다.
  pulseSensor.begin(); 
  dht.begin(); // DHT 센서를 가동해 줍니다.
  pinMode(led,OUTPUT);
  pinMode(sensor,INPUT);
 sensors.begin();
 
}
void loop(){

    if (HI.available()) //블루투스를 통해 데이터가 들어오면
     Serial.write(HI.read()); 
   if (Serial.available()) //시리얼 모니터에서 데이터를 보내면
    HI.write(Serial.read());  

float h = dht.readHumidity(); // 습도
  float t = dht.readTemperature(); // 온도
  float temp;
int myBPM = pulseSensor.getBeatsPerMinute();  // 측정된 심박수를 int형변수로 선언한 myBPM에 저장
int val;
 val = analogRead(sensor);
  int light = map(val,100,1023,0,255);
  analogWrite(led,light);
  sensors.requestTemperatures(); 

 

  lcd.backlight();  // 화면을 ON 
  lcd.display();  // 내용이 표시
  lcd.print("BPM: "); 
  lcd.print(myBPM); 
  lcd.print(", TEM:");
  lcd.println(sensors.getTempCByIndex(0));
  lcd.print(temp);
  lcd.setCursor(0,1);
  lcd.print("T:"); 
  lcd.print(t);
  lcd.print(",H: ");
  lcd.print(h);
 delay(1000); 
 lcd.clear(); // 계속 업데이트되도록 설정

 Serial.print("온도: ");
 Serial.print(t);
 Serial.println("도");
 Serial.print("습도: ");
 Serial.print(h);
 Serial.println("%"); 
 Serial.print("BPM: "); // BPM: 이라고 출력해준다.
 Serial.println(myBPM);
 Serial.print("temperature : ");
 Serial.println(sensors.getTempCByIndex(0));
   //Serial.println(temp);
   Serial.print("sound:  ");
   Serial.println(val);
 Serial.println("---------------------------------------");
  delay(100);

   
   
  HI.print("BPM: "); // BPM: 이라고 출력해준다.
  //myBPM = HI.write(HI.read()); 
  HI.println(pulseSensor.getBeatsPerMinute());
  HI.print(myBPM);
  HI.print("temp: ");
 // temp =  HI.write(HI.read()); 
  HI.println(sensors.getTempCByIndex(0));
  HI.println(temp);
delay(1000);
 
  
}

마스터 코드는 I2C에서 센서값이랑 다 잘 나오는데

6. 문제점 및 에러 내용

 

슬레이브 코드인 hc-06 이렇게 되고

마스터에서 오는 값이 전달이 안되는 것 같습니다.

슬레이브 코드 문제 인것 같은데 도대체 뭘까요ㅠㅠ 

 

#include    // LCD의 라이브러리를 불러온다. 
#include
SoftwareSerial HI(2,3); 
#include
LiquidCrystal_I2C lcd(0x27,16,2);  // 사용할 LCD의 주소는 0x27이고, 화면은 가로로 16개의 문자를 사용할 수 있고 세로로 2줄 사용 가능하다.


void setup() { 
 
  Serial.begin(9600); 
  HI.begin(38400);   
  lcd.init();  // LCD를 초기화해주는 코드이며, 시동을 걸어주는 역할이다.
  Serial.println("LCD통신 시작"); // 시리얼 통신 시작 문자 출력

 
 
}
void loop(){

    if (HI.available()){ //블루투스를 통해 데이터가 들어오면
   
   int myBPM;
   float temp;
 
  
  lcd.backlight();  // 화면을 ON 
  lcd.display();  // 내용이 표시
  lcd.print("BPM: ");
  myBPM = HI.write(HI.read());
  lcd.print(myBPM); 
  lcd.setCursor(0,1);
  lcd.print("TEM:");
  temp = HI.print(HI.read());
  lcd.print(temp);

 delay(1000); 
 lcd.clear(); // 계속 업데이트되도록 설정

 Serial.print("BPM: "); // BPM: 이라고 출력해준다.
 Serial.println(myBPM);
 Serial.print("temperature : ");
 Serial.println(temp);
 Serial.println("---------------------------------------");
  delay(10);
  
  }

    }

  

 

 둘이 페어링은 성공했는데 HC-05에서 HC-06으로 센서 값이 넘어가질 않습니다

도와주세요

 

이전글   |    피에조부저 오류 2020-11-01
다음글   |    아두이노 온도센서 앱인벤터와 연결 2020-11-10