BASIC4MCU | 질문게시판 | 아두이노 초음파센서와 HC06(블루투스)를 이용, 릴레이동작
페이지 정보
작성자 나도할수있어아두 작성일2023-04-27 00:02 조회6,308회 댓글3건본문
HC06블루투스를 활용하여
마스터단에서는 초음파센서로 10cm 이상이고 1M이하의 범위에 물체가 들어오면 "1" 또는 "HIGH 신호를
슬레이브단 HC06으로 전송. 이를 슬레이브에서는 "1" 또는 "HIGH" 신호가 들어왔을때 relay를 ON 시키는 동작을 구현하려 합니다.
아래는 제가 직접 공부하여 코드를 작성해 보았는데
마스터단에서 10cm이상 1M이하의 범위를 주는 방법을 모르겠습니다..
범위를 주는 방법과 제가 작성한 코드가 정상적인 코드인지 검토한번 해주시면 너무나 감사하겠습니다.
혼자서 유튜브를 보고 공부하고 있는데 어려움이 많습니다.. 도움 꼭 부탁드립니다.
HC06(마스터코드)
*/
#include <SoftwareSerial.h>
#define TRIG 4
#define ECHO 5
SoftwareSerial HC06(2, 3); // RX, TX
void setup() {
Serial.begin(9600); //PC-아두이노간
HC06.begin(9600); //아두이노-블루투스모듈
// put your setup code here, to run once:
pinMode(TRIG,OUTPUT); //trig 발사
pinMode(ECHO,INPUT); //echo 받기
}
int duration = 0;
void loop() {
// put your main code here, to run repeatedly:
// trigpin으로 초음파를 보낸 후 초음파가 다 보내지면, echopin이 신호를 받아들일 준비를함.
digitalWrite(4,HIGH);
delay(10);
digitalWrite(4,LOW);
//trigpin에서 low신호를 보내고 echopin으로 돌아오는 시간을 측정
//echopin은 high에서 low로 떨어지는 시간 측정
duration = pulseIn(5, HIGH);
distance = (float)duration*0.017;
// pulsein함수는 echo핀이 high -> low로 변하는 시간을 us로 나타내주는 함수.
//(물체까지의 거리=속도x시간/2 = 시간x 0.034/2)[cm] 즉 duration에는 echopin이 high에서 low로 변하는 시간을 저장하고 그값을 통해 측정한 거리값을 float의 형태로 distace에 저장.
// 0.017 = 0.034/0...속도는 340m/s.
if(duration<=10){
digitalWrite(4,HIGH);
Serial.println("물체감지!");
HC06.write('1');
// 10cm 이상의 거리에 물체 감지 = 카와 균형추의 교차점이다.
}else{
Serial.println("물체미감지");
HC06.write('0');
//교차점이 아닌경우
}
delay(200);
}
HC06(슬레이브코드)
*/
#include <SoftwareSerial.h>
#define relay 4
SoftwareSerial HC06(2, 3); // RX, TX
void setup() {
Serial.begin(9600); //PC-아두이노간
HC06.begin(9600); //아두이노-블루투스모듈
pinMode(led,OUTPUT);
}
void loop() { // run over and over
if(HC06.available()){
char c = HC06.read();
if(c == '0'){
//relay OFF
digitalWrite(relay,LOW);
}else if(c == '1'){
//relay ON
digitalWrite(relay,HIGH);
}
}
}
댓글 3
조회수 6,308master님의 댓글
master 작성일
if(duration<=10){
duration을 체크하지말고 distance를 체크하세요
if((distance>=10)&&(distance<=100)){ // 10~100cm
나도할수있어아두님의 댓글
나도할수있어아두 작성일
감사합니다.
추가 질문이 있습니다
현재 hc06을 사용하여 무선통신을 하고있는데 lora(SX1276)를 사용하여 무선통신이 가능하다고 알게 되었습니다
통신거리는 Hc06은 최대10M 로라는 1km이상이라는데
긴 직사각형의 철판으로 둘러싸인 7~8M거리 통로안에서 통신을 하는 환경인데 hc06을 사용하는것이 유리한지 아니면 lora(SX1276)를 사용하는게 유리한지 궁금합니다
두 통신부품의 차이가 단순 통신거리의 차이 밖에는 없는지 궁급합니다.
master님의 댓글
master 작성일예제를 쉽게 찾을 수 있을테니 테스트 해보면 알 수 있지 않을까요?