아두이노 실습 10주차 (무선 통신)

2023. 11. 22. 23:47아두이노 (Arduino)

실습 10주차 (무선 통신)

이번주 실습에서는 저번주에 잠깐 설명했었던 블루투스를 활용하여 진행할 예정이다.

 

 

블루투스 실습

첫번째 실습에서는 블루투스 모듈을 통하여 우리가 가지고 있는 휴대폰과의 통신을 진행해 보려고 한다.

 

먼저 아두이노와 블루투스 모듈을 아래와 같이 연결한다.

 

스마트폰에 내장된 블루투스와 HC-06 모듈을 연결하여 아두이노 IDE의 시리얼 모니터를 통해서 데이터를 송·수신하는 실습을 한다.

 

스케치는 아두이노 IDE에서 제공되는 ‘SoftwareSerialExample예제를 사용한다.

 

코드를 자세히 살펴보자.

 

SoftwareSerial mySerial(2, 3) : SoftwareSerial 객체 mySerial을 생성하고 디지털 2번 핀을 TX(송신), 3번 핀을 RX(수신)으로 설정하여 블루투스 모듈과의 통신에 사용한다.

 

while (!Serial); : 시리얼 통신이 연결되기까지 무한반복하며 기다린다.

 

Serial.println ("bluetooth test!") : 시리얼 통신이 연결되면 while문이 종료되며 시리얼 모니터에 bluetooth test! 라는 문자열이 출력된다.

 

mySerial.println("Hello, world?") : 블루투스 모듈을 통해 "Hello, world?" 문자열을 전송한다.

 

 

if (mySerial.available()) : 블루투스 모듈로부터 데이터가 수신되면 아래 코드 실행

Serial.write(mySerial.read()) : 수신된 데이터를 시리얼 모니터에 출력한다.

 

if (Serial.available()) : 시리얼 모니터에서 데이터가 전송되면 아래 코드 실행

mySerial.write(Serial.read()) : 전송된 데이터를 블루투스 모듈로 출력한다.

 

 

아래 그림을 보며 코드를 살펴보면 더 이해하기 쉬울 것이다.

블루투스 통신 실습의 작동 원리

 

 

코드를 실행한 후 휴대폰에서 세팅해야 할 것들이 있다.

 

먼저 휴대폰 설정에서 블루투스를 켜주자.

 

 

 

블루투스를 켜게 되면 연결 가능한 디바이스에 HC-06 이라는 블루투스 모듈이 뜨게 된다.

 

HC-06 모듈을 선택하고 PIN은 0000 또는 1234를 입력하면 휴대폰에 모듈이 등록되게 된다.

 

(저번 글에서도 말했지만 HC-06 모듈은 아이폰과는 호환되지 않기 때문에 안드로이드 폰을 따로 구비하거나 다른 블루투스 모듈(HM-10, AT-09)을 사용해야 한다.)

 

 

 

그리고 play 스토어에서 '아두이노 블루투스 채팅' 앱을 다운받아 주자.

 

현재 이 앱은 찾을수 없어서 비슷한 다른 앱으로 대체했다.

 

 

필자는 아래 앱을 사용하여 실습을 진행하였다.

 

 

 

위 사진처럼 앱을 실행하고 'Select a device to connect' 를 클릭하여 HC-06 모듈을 선택한다.

 

그러면 connected(연결됨) 문구와 함께 블루투스 모듈과 통신이 가능한 창이 나타나게 된다.

 

 

휴대폰에서 입력창에 문자를 입력하게 되면 아래 실습영상처럼 컴퓨터 시리얼 모니터에 입력했던 문자가 출력되는 모습을 볼 수 있다.

 

 

if (mySerial.available()) : 블루투스 모듈로부터 데이터가 수신되면 아래 코드 실행

Serial.write(mySerial.read()) : 수신된 데이터를 시리얼 모니터에 출력한다.

 

코드에서 이 부분이 실행되는 모습이다.

 

그렇다면 반대로 컴퓨터 시리얼 모니터에서 입력한 문자를 휴대폰에서 출력시킬 수 있을 것이다.

 

 

 

if (Serial.available()) : 시리얼 모니터에서 데이터가 전송되면 아래 코드 실행

mySerial.write(Serial.read()) : 전송된 데이터를 블루투스 모듈로 출력한다.

 

코드에서 이 부분이 실행되는 모습이다.

 

 

 


 

블루투스 실습 2

두번째 블루투스 실습에선 아두이노 보드에 LED를 추가하여 블루투스 통신을 통해 LED를 제어해 보려고 한다.

 

 

보드는 아까 사용했던 보드에서 LED만 하나 추가해주면 된다.

 

코드는 아래와 같이 입력한다.

 

코드를 살펴보자.

 

char toSend = (char)BTSerial.read(); : 버튼의 값을 문자형 데이터로 저장한다.

 

switch ~ case : toSend값이 1(true)이면 'LED On' 문자열을 출력하고 LED를 키고, 0(false)이면 'LED Off' 문자열을 출력하고 LED를 끈다.

 

 

 

이번 실습을 하기 위해선 마찬가지로 앱을 하나 다운받아야 한다.

 

 

이 앱도 스토어에 없어서 필자는 아래 앱으로 다운받았다.

 

 

앱을 구동하고 HC-06 모듈을 선택한다.

 

그러면 화면에 버튼이 하나 나오게 되는데 이 버튼을 가지고 아두이노에 꼽은 LED를 제어할 수 있다.

 

 

블루투스 모듈을 통해 LED 제어가 잘 작동하는 모습이다.