앱 인벤터로 아두이노 우노에 설치된 DHT11 온습도 센서 데이터를 HC-06 블루투스 센서 보드에 의해 안드로이드 폰에서 수신해 보자. 그다지 어려운 프로젝트는 아니지만 앱 인벤터 사용법을 아주 조금이라도 익힌 후 시도해 보자.
아래 사진은 포맥스 판을 주먹칼로 잘라 삼각형 받침대 2개를 뒤면에 양면 테이프로 접착하여 간단히 스탠드를 만들어 아두이노 보드와 빵판에 HS-06 블루투스와 DHT11 센서를 배선 후 선반 형상으로 양면 테이프로 접착 고정 하였다.
필요한 준비물은 아래와 같다.
안드로이드 스마트 폰; HC-06 아두이노 블루투스 센서 보드 X 1
아두이노 우노 보드 X 1; DHT11 온습도 센서X1; 점퍼선 7개
아두이노 우노 블루투스 배선
HC-06의 2개의 블루투스 데이터 선 TX(송신) 와 RX(수신) 와 대응하여 그림에서 처럼 아두이노 보드에서의 수신핀(RX 0번), 송신핀(TX 1번 )과 연결한다. 즉 블루투스의 송신은 아두이노 보드의 수신과 매치된다.
일단 블루투스 송신 전에 HC-06 보드의 TX, RX 핀을 뽑아둔 상태에서 아두이노 코드를 업로드하여 모니터 창에서 온습도측정이 제대로 이루어지는지 확인할 필요가 있다.
온습도 측정이 성공적이라면 아두이노 보드 USB 케이블을 제거하여 전원을 OFF 한 상태에서 뽑아 둔 통신선 RX 와 TX 를 다시 연결한다. 다소 귀찮은 작업이지만 RC카 제작에서 처럼 아두이노 핀수가 넉넉치 못해 반드시 RX 0번, TX 1번 핀을 사용해야 하므로 익숫해져야 할 필요가 있다.
(이것이 싫다면 SoftwareSerial.h 라이브러리흘 사용하여 별도의 통신선을 설정해서 사용해야 하는데 문제는 3.3V 전압을 사용하는 HC-06 보드의 경우 아두이노 보드와의 전압 레벨을 하드웨어적으로 맞춰줘야 하는 불편함이 있을 수 있다.)
스마트 폰 블루투스 등록
스마트 폰 블루투스 등록 과정은 사용가능한 디바이스 즉 HC-06 센서보드를 찾는 것으로 시작된다.
HC-06을 찾은 후 PIN 번호를 1234 로 입력하여 등록하자.
앱 인벤터 코딩 Tree 디자인
팔레트의 User Interface에서 ListPicker 1개, 수평배열용 레이아웃 1개, 라벨 1개, Connectivity에서 BluetoothClient 1개, Clock 1개를 사용한다.
ListPicker를 Viewer Screen1 에 드래그한 후 속성 창에서 Text 입력 박스에 DHT11을 입력한다. center, bold를 포함하는 폰트 세부 정보를 입력 하고 Width 항목에서 Fill parent를 선택하면 화면에서 자동적으로 수평 한 줄을 차지하게 된다.
Layout의 HorizontalArrangement를 드래그 하고 문자 출력을 위한 라벨 1개를 선택해 드래그 해 넣고 텍스트 명을 Temp & Humidity 로 해 둔다.
Clock은 샘플링 시간 간격을 2초로 설정하므로 Tmeinterval 을 2000 으로 입력한다. 이 숫자 2000 은 아두이노 코드에서 샘플링 주기 delay(2000 msec)와 일치시키도록 한다.
App inventor Block Editing
앱 인벤터 블록 편집
ListPicker 는 블루투스 사용 선택 시 터치 이전과 이후에 Address 와 명칭을 선택 처리하는 데 사용된다.
ListPicker 란 안드로이드 스마트 폰에서 여러개의 미 등록 블루투스 소스들이 라인 별로 나타낼때 이를 List 라 하며 Pick 는 특정 List 요소를 터치하여 선택함을 뜻한다. 아울러 ListPicker 는 스마트 폰 앱 작성을 위한 안드로이드 스튜디오 스마트 폰 코딩에서 대단히 중요한 코딩 알고리듬이다.
DHT11 이라는 이름의 ListPicker1은 픽(Pick) 전(Before)에 블루투스 클라이언트로서 주소와 이름을 갖는다. Pick 후(After)에는 그 주소와 이름으로 블루투스를 통해 외부 아두이노 우노의 HC-06과 연결(Connect) 한다. 이때 필요한 주소와 이름을 ListPicker1로부터 제공 받는다.
블루투스가 연결되면 ListPicker1의 DHT11 이 Connected with DHT11 로 바뀐다. 연결된 상태에서 타이머가 작동하며 아두이노 우노에서 2초에 한번씩 샘플된 온습도 데이터가 다수의 바이트 데이터를 한 묶음으로 구성하여 수신된다.
묶음 데이터 구성 방식은 “temperature”+측정된 온도 값“ 까지를 블루투스에 출력한 후 줄 바꿈 한다. 이어서 “Humidity: ”+측정된 습도 값“ 까지를 출력한다. 이 2개의 데이터를 합한 정보가 안드로이드 폰에서 다수의 바이트들로 구성된 1개 단위의 정보로 수신되어 2줄로 출력된다.
앱 인벤터를 저장 후 실행해 보자.
클라우드 상태에서 작성된 앱인벤터 코드를 내 PC 의 다운로드로 넘기기 위해서는 Projects 탭 메뉴의 Export selected project(.aia) to my computer 명령을 사용하자. 다운된 파일의 확장자는 .aia 이다.
지금 앱인벤터 작성이 어렵다면 아래에 첨부된 aia 확장자 파일을 내 PC에 다운 받아서 사용하자.
aia 파일을 읽어 들이기 위해서는 다음과 같이 Projects 파일 저장소에서 아이콘 import project(.aia) from a repository 명령을 사용한다. 과거에는 Projects 탭 메뉴에 포함되어 있었으나 지금은 이 위치로 이전된 것으로 확인된다.
//DHT11 App Inventor
#include <DHT11.h> //라이브러리 부르기
int pin = 5; //DHT11 데이타 핀 아두이노 연결
DHT11 dht11(pin); // DHT11 클라스 명령
void setup() {
Serial.begin(9600); //통신속도 설정
pinMode(pin, INPUT);
}
void loop() {
int err;
float temp, humi;
if((err=dht11.read(humi, temp))==0) { //온습도 읽기
Serial.print("temperature:");Serial.print(temp);
Serial.print(" humidity:");Serial.print(humi);
Serial.println();
}
else { //에러 출력
Serial.println();
Serial.print("Error No :");
Serial.print(err);
Serial.println();
}
delay(2000); //2초마다 측정
}//끝
'앱 인벤터 appinventor' 카테고리의 다른 글
RC Car 블루투스 조종기 앱 인벤터 코딩 (0) | 2022.11.19 |
---|---|
아두이노 RC Car 블루투스 제어 키보드 앱인벤터 앱 설치 (1) | 2022.11.19 |
3.5 앱 인벤터 ListView 코딩 (0) | 2020.03.16 |
Play Store에서 “Arduino RC Car Bluetooth HC-06 Control“ 앱을 다운 받으세요! (0) | 2019.05.17 |
SPS 미세먼지 센서 농도 앱인벤터 디스플레이 (0) | 2019.02.16 |