앱 인벤터 appinventor

SPS 미세먼지 센서 농도 앱인벤터 디스플레이

coding art 2019. 2. 16. 19:18
728x90

SPS30 미세먼지 센서로 측정한 PM2.5 값을 255까지 한계인 byte 데이터로 변환하여 앱인벤터에서 수치 값과 실시간 그래프를 작성해 보자.

 

 

아두이노에서는 arduino_sps30_example 코드에서 PM2.5 데이터 출력만 블루투스로 송신하도록 byte 변수 pm을 선언하여 Serial.write 명령으로 출력한다.
byte 데이타이기 때문에 255를 넘을 수 없다. 나머지 출력문들은 죄다 // 처리해 둔다.

 

HC-06 블루투스 보드로부터 아두이노 우노 0번과 1번에 연결한 RX,TX 점퍼선을 빼둔 상태에서 컴파일 업로딩 한다.
업로딩이 완료되면 USB 케이블을 제거 하고 건전지 전원을 9V 어댑터에 설치한다. 이로서 블루투스 데이터 송신이 일어나게 되므로 앱인벤터 코딩이 완료되면 Paring 작업을 실시해야 한다.

그 과정에 대해서는 교보문고에서 판매 중인 필자의 아두이노 앱인벤터 코딩을 참조하기 바란다.

 

앱 인벤터 코딩은 설명 보다는 디자이너와 Blocks를 정확하게 보여 주기로 한다.
3개의 라벨 PM과 Unit 은 그냥 텍스트 박스에 입력해 준 데이터를 디스플레이 하며 Value 만 블루투스를 통해서 수신하는 구조이다.

 

다음은 Blocks 의 퍼즐 코드 부분이다. 첫줄에서 초기화 한후 실시간 그래프 작성을 위해 이전(X_before, Y_before) 좌표 값과 현재(X, Y) 좌표 값들을 선언하고 초기화 한다.

블루투스 ListPicking 후 Pairing이 되면 어드레스 정보를 확인하여 스마트폰 헤더 영역에 “connection with SPS30” 연결 정보를 디스플레이 해 준다.

 

 

클럭 시간 주기는 SPS30 출력 속도를 감안하여 1000msec 즉 1초 주기로 주었으며 블루투스가 연결되었으면 현재의 좌표 값들을 이전 좌표 값들에 옮겨 넣은 후

 

 

X 값은 +1 만큼 증가 시키고 Y는 블루투스에서 1 바이트 데이터를 수신하도록 한다. 한편 Y 값은 라벨명 Value에 텍스트 정보를 넣어주면 숫자로 디스플레이 된다.
이전 좌표 값들과 현재 좌표 값들을 사용하여 canvas에서 증분 직선을 작도한다.
만약 X 좌표 값이 Canvas 폭을 초과하게 되면 Canvas를 지우고 새로 그리도록 함과 동시에 X-before 와 X 값을 0.0 으로 재설정한다.

커버 그림에서처럼 코딩은 성공적이었으나 데코레이션 측면에서 별로 맘에 들지 않는 편이라 귀찮기는 하지만 보완이 필요한 듯 하다.