수행기록퀘스트4
이번에는 기초적인 회로 동작을 확인 하고 이에 맞춰서 케이스를 설계하며 프로젝트를 마무리해보고자 합니다.
회로 결선은 pico의 pinmap을 참고 하면 다음과 같이 핀들의 기능이 분포 되어 있는 것을 확인 할 수 있습니다.
회로도 설계
여기서 제가 사용하고자 하는 미세먼지 센서 PMS7003A와 WS2812B 의 필요 핀맵인 GP1(UART RX), GP2(PWM)을 선정하였습니다.
이외에도 VCC와 GND를 참고하여 다음과 같은 간이 배선도를 제작 하였습니다.
배선도를 바탕으로 각 부품들이 원하는 위치에 고정 될 수 있도록 설계를 진행 합니다.
기구 설계 (3D)
fusion 360을 이용하여 각 부품들의 거치 여부를 확인 했습니다. 렌더링 결과물은 다음과 같습니다.
센서에 흡기가 정상적으로 이루어 질 수 있도록 배기 구멍을 반영하여 설계 하였습니다.
설계가 완성 된후 부품들의 가조립을 위해 다음과 3D printing을 진행합니다.
가조립과 납땜을 동시에 진행 했습니다.
정상적으로 각 파츠들이 거치된 상태로 문제 없이 고정되는 것을 확인 하였습니다.
이후 최종적으로 APM server와 정상적으로 통신하여 동작하는 코드를 작성합니다.
간략하게 동작에 관여하는 부분을 살펴 보면 PICO에서는 미세먼지, HTTP로 크게 2단계로 나눌 수 있습니다.
미세먼지 센서 처리
미세먼지 센서로 사용하는 PMS7003M의 경우 UART 통신을 지원하며 센서에 전원이 인가되면 주기적으로 센싱 데이터를 송출하는 방식을 이용합니다.
데이터는 다음과 같이 32byte이며 9600의 보더 레이트를 사용합니다.
우선 pms 센서와 UART 통신을 위한 class를 선언 하고 위 데이터 시트에서 확인 한 보더레이트 속도를 맞춥니다.
응답 데이터는 총 32 Byte의 데이터가 들어오므로 데이터가 들어오게 되면 조건문을 이용해 총 32개의 데이터를 행렬에 대입합니다.
각 대입된 위치는 정해져 있으므로 각 위치 행렬을 8bit shfit 연산과 OR연산을 통해서 정수형으로 데이터를 받아 옵니다.
이 데이터를 통해서 APM server에 업로드 하거나, LED의 상태를 제어하는데 사용합니다.
HTTP 통신
2개의 주소를 통해서 현재 모드(미세먼지 감지모드, 무드등 모드)를 판별한후
미세먼지 감지 모드에서는 이전에 측정된 센서 데이터를 HTTP통신을 통해서 데이터를 업로드 합니다.
무드등 모드에서는사용자가 지정해둔 R G B 데이터를 받아와 LED의 색상 데이터로 사용합니다.
APPLICATION(FLUTTER)
어플리 케이션의 경우 위 PICO와 유사하게 HTTP를 통해서 저장된 데이터를 받아오거나, COLOR 선택을 APM server에 업로드를 진행합니다.
Main page에서는 주기적인 시간동안 지정된 주소에 접속하여 미세먼지 농도 데이터를 받아오고 이를 chart 위젯에 하나씩 추가합니다. 이때 업데이트 시간은 PICO 업데이트와 동일한 시간대를 사용하여 실시간으로 데이터를 확인 합니다.
두번째 색상 선택기에서는 지정된 색을 사용자가 취사 선택한후 적용 버튼을 입력하였을때 선택된 색의 RGB 데이터를 추출하여 서버에 색상을 업데이트 하는 경로에 접속합니다.
이를 통해서 사용자가 기기의 모드와 색상을 취사 선택할 수 있는 어플 또는 인터페이스를 획득 할 수 있습니다.
위 작품들의 동작 결과는 다음과 같이 확인 할 수 있습니다.
혹 코드나 데이터가 필요하실 분들을 위해서 github link를 같이 첨부 합니다.
https://github.com/MAKER-park/PICOW_MINI_PROJECT.git
-후기 ...
본 프로젝트를 통해서 PICO 시리즈를 처음 다뤄 보게 되었는데.. 다양한 PICO board의 특성들을 파악 할 수 있었습니다.
CORTEX M 포지션에서 저렴한 보드로써 ESP32와 비슷한 포지션에 있다는 느낌을 많이 받을 수 있었습니다. 약간 사적으로 보면 ESP8266 과 ESP32 사이 느낌이 강하게 들었습니다.
짧은 기간 PICO 보드를 사용해본것이 생각보다 인상 깊었고 이과정에서 부족했던 부분을 보완해서 다른 프로젝트에서도 다양하게 활용해보고 싶어졌습니다.
로그인 후
참가 상태를 확인할 수 있습니다.