Lab-09: 안드로이드-아두이노블루투스통신 앱인벤터로아두이노와블루투스로연결하여센서값확인하기 (1) 아두이노 회로도 - DHT11 : 온도, 습도센서, - HC-06 : 블루투스모듈 소스코드 – 오픈소스사용 #include "DHT.h" // 온도습도를센서를위한 DHT.h 라이브러리를포함한다 #include <SoftwareSerial.h> //SoftwareSerial을통해블루투스와데이터전송 SoftwareSerial BTserial(4,5); //Rx, Tx #define DHTPIN 2 // DHT핀을 6번으로정의한다(DATA핀) #define DHTTYPE DHT11 // DHT타입을 DHT11로정의한다 DHT dht(DHTPIN, DHTTYPE); // DHT설정 - dht (디지털2, dht11) void setup() Serial.begin(9600); // 9600 속도로시리얼통신을시작한다 BTserial.begin(9600); // 9600 속도로블루투스시리얼(소프트웨어시리얼) 통신을시작한다 void loop() int h = dht.readHumidity(); // 변수 h에습도값을저장 int t = dht.readTemperature(); // 변수 t에온도값을저장 BTserial.print("습도: "); BTserial.print(h); BTserial.print("% "); BTserial.print("온도: "); BTserial.print(t); BTserial.print(" C"); // 블루투스시리얼을통해문자열전송 delay(1000); (2) 앱인벤터를통해어플리케이션만들기 1. 목록선택(ListPicker) 컴포넌트 추가. 2. 목록선택이름변경과너비변경 3. 텍스트변경 ● 블루투스의연결의경우아두이노와연결된 HC-06의신호하나만잡히지않고다른여러신호가잡힐수있기때문에 목록을만들어원하는연결을선택할수있도록하여야한다. 1. 레이블(Lable) 컴포넌트추가 2. 글꼴크기변경 3. 텍스트란의레이블1 텍스트를공백으로변경 1. 센서탭의시계(clock) 컴포넌트추가 (단위 ms) ● C언어의 delay와비슷한동작을함.여기서는 1초간격으로 블루투스의전송된값을읽기위해사용. 1. 연결탭의블루투스 클라이언트(Bluetooth client) 추가 ● 어플리케이션을블루투스클라이언트로사용해야할때추가하는컴포넌트이다. 여기서는 아두이노의 HC-06이블루투스서버가되고안드로이드가클라이언트가된다. 위의블록과같이블록도생성. 1. 첫번째블록 - 블루투스목록을선택하기전에블루투스클라이언트에서받는서버의주소와 이름들을블루투스목록으로지정한다. 2. 두번째블록 - 블루투스목록에서블루투스를선택하게되면 선택된항목의주소로안드로이드에서블루투스클라이언트로연결한다. 3. 세번째블록 - 1초간격 마다블루투스연결상태를확인한다. 블루투스가연결이되어있다면다시블루투스를통해받는데이터를바이트크기로 받게된다. 만약바이트의크기가 0보다크다면 (데이터가전송된다면) 레이블1에블루투스클라이언트를 통해받은바이트를텍스트로변경해입력하게된다. (3) 결과 - 어플리케이션화면 ● 메인화면, 블루투스연결 목록버튼을누른화면, 연결후화면순이다. ● 레이블컴포넌트에블루투스에서전송한데이터가출력되는 것을확인할수있다. - 아두이노와어플리케이션실행화면 추가 1. 버튼을통한 온도, 습도값전송받기. 2. 음성변환기능을사용하여온도습도텍스트음성변환. |