최근 이 주제에 대해 깊이 생각하며, 세상이 급변하는 상황에서 변화를 일으키고 우리를 번영하게 할 해결책을 찾기 위해 몇 시간을 보냈습니다.
저는 약한 형태의 바이러스에 감염된 환자 돌보기를 살펴보았습니다. 이 환자들은 종종 간과되는 범주입니다. 이들은 바이러스에 감염되었지만 운 좋게도 약한 증상만 가진 불운한 사람들입니다. 하지만 이들의 건강은 극도로 불안정하며 몇 시간 만에 악화될 수 있습니다. 이들의 건강은 세밀하게 모니터링되어야 합니다.
국가마다 이 환자들을 돌보는 접근 방식이 다릅니다: 일부는 입원 치료를 하고(병원 과밀 초래), 다른 일부는 자가 격리를 시킵니다. 하지만 두 번째 옵션에는 문제가 있습니다. 이 환자들의 건강이 급격히 악화될 수 있으므로 모니터링이 필요합니다.
무겁고 부피가 큰 장비는 존재하지만, 문제는 명백합니다. 대다수 환자가 약한 증상을 보이므로, 이 비싸고 불편한 장비는 가격과 부피 때문에 전체 인구에 배포할 용량이 없습니다. 또한 일부 환자는 격리 수칙을 어기고 외출하여 자신과 사회에 위험을 초래하므로, 이들이 집을 떠나지 않는지 모니터링해야 합니다.
스마트 손목밴드(SmartWristband)는 환자의 생체 신호와 지리적 위치를 모니터링하는 손목 착용 장치로, 환자가 집에서 바이러스와 싸우는 동안 안전을 보장합니다. 이 장치는 아두이노 MKR GSM 1400으로 구동되며 적외선 온도 센서와 심박수 센서를 갖추고 있어 환자의 건강에 대한 중요한 정보를 수집합니다. 체온 상승과 불규칙한 심박수는 바이러스 진행의 징후입니다. 환자는 이러한 변화를 즉시 알아차리지 못할 수 있지만, 스마트 손목밴드는 이를 감지하여 데이터를 실시간으로 안전하게 환자를 모니터링하는 병원으로 전송합니다.
이 장치는 사용자의 위치를 추적하여 항상 집에 있는지 확인합니다. 모든 데이터는 확장 가능한 데이터베이스에 중앙 집중화되어 수천 개의 장치를 국제적으로 배포할 수 있습니다.
병원은 대시보드에 액세스하여 모니터링 중인 모든 환자의 건강을 한눈에 파악하고 각 환자의 상세 상태를 확인할 수 있습니다.
머신러닝 알고리즘도 애플리케이션에 구현되어 환자의 향후 체온과 심박수를 예측하므로 병원은 무엇을 예상하고 언제 입원시켜야 할지 알 수 있습니다.
환자도 모바일 대시보드에 액세스하여 자신의 심박수, 체온, 손목밴드 충전 시기를 확인할 수 있습니다.
이 장치는 환자가 밤낮으로 착용해도 불편하지 않을 만큼 편안합니다. 스마트 손목밴드는 사용자가 장치를 벗었는지 감지하여 병원에 알립니다.
스마트 손목밴드는 약한 형태의 바이러스로 자가 격리된 환자를 돌보기 위한 저비용, 확장 가능, 오픈 소스 솔루션으로, 머신러닝과 사용하기 쉬운 대시보드 경험을 통해 환자 상태의 발전을 모니터링하고 의료진에게 알림을 보냅니다.
프로젝트 요약
수집 데이터
데이터는 5분 간격으로 수집됩니다. 이는 가능한 한 실시간에 가까운 환자 상태 뷰를 제공하면서 배터리 소모를 최소화하기 위함입니다. 장치는 생체 데이터와 위치 데이터 두 가지 유형을 수집합니다.
생체 데이터는 환자의 심박수와 체온을, 위치 데이터는 환자의 지리적 위치를 의미합니다. 장치는 이 데이터를 로컬에서 처리하지 않고 단순히 애저(Azure)로 릴레이하여 처리합니다.
데이터 수집 이유
체온과 심박수 데이터는 추세 분석을 통해 환자의 현재 상태가 악화되고 있는지 나타낼 수 있습니다. 연구에 따르면 불규칙한 심박수와 고체온은 바이러스 존재의 징후입니다. 이러한 생체 신호가 시간이 지남에 따라 악화되면(예: 체온이 점진적으로 상승) 환자 상태가 나빠지고 있을 수 있습니다. 환자는 나중에야 이를 인지할 수 있지만, 장치는 이러한 징후가 나타나는 즉시 포착합니다.
지리적 위치 데이터는 환자가 격리 규칙을 준수하며 집에 머무르는지 확인하기 위해 수집됩니다. 애저는 사용자가 집에 있는지 확인하고 의사 대시보드에 보고합니다.
장치 살펴보기
프로토타입은 편안함을 염두에 두고 제작했습니다. 장치는 환자의 왼쪽 또는 오른쪽 손목에 쉽게 착용할 수 있습니다. 장치 하단에 돌출된 심박수 센서와 적외선 온도 센서가 환자의 피부에 닿습니다.
이 센서들은 불편함 없이 정밀한 측정을 제공합니다. 더 높은 온도 정밀도를 위해 센서를 겨드랑이 패드 아래에 배치하는 것이 좋습니다.
장치는 심박수 센서의 원시 데이터 출력을 사용하여 환자가 장치를 착용 중인지 확인합니다. 센서는 피부와 접촉할 때 매우 특정한 데이터 패턴을 출력하므로, 이 패턴이 없으면 장치를 착용하지 않은 것으로 간주합니다.
배터리 수명
엄격한 테스트를 통해 장치의 배터리 수명을 정확히 측정했습니다. 장치는 한 번 충전으로 총 8일간 작동합니다. 환자를 2주간 모니터링해야 한다면 배터리를 한 번 충전해야 합니다. 배터리는 장치를 착용한 상태에서도 충전 가능합니다.
또는 데이터를 10분 간격으로 수집하면 장치가 판독 사이에 잠자기 모드로 들어가 배터리 소모가 매우 적어 배터리 수명이 2배로 늘어납니다. 남은 배터리 수명과 남은 시간은 환자 및 의사 대시보드에 표시됩니다.
개발 비용
프로젝트 개발 비용은 일회성 비용과 반복 비용으로 구성됩니다. 장치 한 대당 개발 비용은 인클로저 포함 약 70유로입니다. 반복 비용은 백엔드에서 발생합니다. 홀로그램을 서비스 제공업체로 사용하여 장치당 2주 데이터 전송 비용이 5유로입니다. 데이터 스트리밍과 데이터베이스를 포함한 백엔드 비용은 2주 기준 30유로입니다.
100대 장치 총 비용은 약 7,035유로입니다. 이 장치들은 재사용 가능합니다.
백엔드 비용은 확장 가능하며 배포된 장치 수와 관계없이 동일합니다. 대량 구매와 맞춤 회로 사용으로 비용을 크게 절감할 수 있습니다.
의사 대시보드
병원이 자가 격리 환자의 건강을 상시 모니터링하고 문제가 있으면 알림을 받는 것은 매우 중요합니다. 병원은 모니터링 중인 모든 환자의 생체 신호를 보여주는 대시보드와 각 환자의 상세 보고서에 액세스할 수 있습니다. 이를 통해 의사는 환자가 도움이 필요한지 알림을 받고 상세히 살펴볼 수 있습니다.
의사는 이메일 알림과 대시보드 경고를 받습니다: 환자가 집에 없거나, 장치를 착용하지 않았거나, 체온/심박수가 비정상적인 경우.
보고서는 3개 섹션으로 나뉩니다: 환자(생체 신호 세부 정보), 위치(환자 위치 및 자택 여부), 장치(배터리 레벨, ID). 머신러닝도 사용하여 환자의 향후 건강을 예측하여 의사가 환자 건강이 시간이 지남에 따라 악화되는지 파악할 수 있게 합니다.
환자 대시보드
환자도 자신의 데이터를 확인하여 자기 인식을 높일 수 있어야 한다고 생각합니다. 데스크톱과 모바일 경험 모두 제공됩니다.
예측 데이터와 지리적 위치 데이터는 환자 대시보드에 표시되지 않습니다 (환자에게 불필요한 정보이므로).
대량 생산 및 확장성
이 장치는 저렴한 가격과 쉬운 구조로 대량 생산과 확장에 적합합니다. 셀룰러 커버리지가 있는 세계 어디에서나 작동하여 전 세계 사람들을 보호할 수 있습니다.
100% 오픈 소스
이 프로젝트 개발 시 사용된 모든 자산, 라이브러리 등이 오픈 소스인지 확인하여 관료주의 없이 가능한 한 빨리 애플리케이션을 개발하고 배포할 수 있도록 했습니다. 이 프로젝트는 완전히 오픈 소스이며 GitHub에서 확인할 수 있습니다.
데이터 수집
장치는 사용자의 지리적 위치 데이터를 수집하는데, 이는 기밀 정보입니다. 장치는 이 데이터를 로컬에서 처리하지 않고 클라우드에서 안전하게 처리하여 사용자 데이터가 탈취되지 않도록 합니다. 애저 데이터베이스와의 연결은 암호화되어 안전하며 데이터가 잘못된 손에 넘어가지 않습니다.
향후 발전 방향
이 프로젝트 개발 중 제품을 더욱 발전시키고 향상시킬 수많은 아이디어가 떠올랐습니다.
혈중 산소 포화도(SpO2) 수집은 기존 심박수 센서에서 이 값을 추출할 수 있으므로 하드웨어 변경 없이 구현 가능합니다. 혈중 SpO2 수치는 바이러스로 인한 손상 정도를 나타냅니다.
환자의 심박수를 가슴과 신체 다른 부위에 부착된 패드를 통해 수집하면 더 정밀한 온도 표현이 가능해 측정 정확도가 향상됩니다.
향후 버전에서는 3D 프린팅 인클로저 개발이 바람직합니다. 장치 크기도 크게 줄여 착용감을 더욱 높일 수 있습니다.
애플리케이션 프론트엔드
위 다이어그램은 장치에서 실행되는 애플리케이션 아키텍처를 보여줍니다. 이는 장치가 5분마다 수행하는 단계입니다. 장치는 모든 데이터를 수집, 사용자가 착용 중인지 확인, 패키징하여 GSM을 통해 백엔드로 전송합니다.
장치는 시간을 추적하며, 지정된 서버에서 시간을 가져와 처음 켜지거나 꺼졌다 켜질 때 온보드 RTC를 이 타임스탬프와 동기화합니다.
애플리케이션 백엔드
장치가 전송한 데이터는 애저 IoT 허브에서 안전하게 수신됩니다. 스트림 분석 작업이 이 데이터를 허브에서 추출하여 코스모스 DB(Cosmos DB) 데이터베이스로 푸시합니다. 환자 및 의사 파워 BI 리포트가 일정 간격으로 이 데이터를 쿼리하고 머신러닝 알고리즘을 실행한 후 표시합니다. 의사 대시보드는 모니터링 중인 모든 환자를 수집하여 건강 요약을 제공합니다.
왜 애저인가?
사용 편의성, 탐색 용이성, 개발용 훌륭한 무료 플랜 가용성 때문에 다른 대안보다 애저를 선호합니다. 사용자 인터페이스와 제가 사용하는 다른 마이크로소프트 제품과의 통합도 마음에 듭니다.
시장 조사
많은 국가에서 코로나바이러스 환자가 자가 격리 중일 때 모니터링하는 대안을 구현했습니다. 대만은 환자를 휴대폰으로 추적하여 집에 머무르도록 하는 혁신적인 추적 시스템을 구현했습니다.
다른 국가들도 자가 격리 중인 사람들의 건강을 모니터링하는 아이디어를 구현했고, 일부 시스템은 다른 것보다 더 잘 작동합니다. 하지만 환자 상태에 대한 중요한 정보와 위치를 작고 편안한 패키지로 모두 수집하는 제품은 없습니다.
타겟 대상
이 장치는 병원에서 자가 격리를 위해 집으로 보낸, 바이러스 약한 형태 양성 판정을 받거나 무증상인 사람들을 대상으로 합니다.
스마트 손목밴드 사용의 이점
자가 격리 환자가 집에 머무르는지 확인
병원에 가지 않고도 환자의 생체 신호 모니터링
중증 환자를 위해 병원 병상 확보
자가 격리 중인 모든 환자의 상태를 24/7 의사에게 알림
환자에게 편안한 모니터링 솔루션 제공
병원에 환자 건강 예측 제공
모바일 및 데스크톱 대시보드로 환자에게 건강 정보 제공
비용 효율적이고 확장 가능
프로젝트 수행
이 섹션에서는 프로젝트 구축 과정을 안내하고 이 애플리케이션 개발에 필요한 단계를 다룹니다.
1단계: 모든 것 준비하기
먼저 필요한 모든 구성 요소를 모아야 합니다. 아래에 구성 요소와 서비스가 나열되어 있습니다.
아두이노 MKR GSM 1400
GSM 안테나 (MKR GSM에 포함)
DFRobot 심박수 센서
적외선 온도 센서
3.7V 리포 배터리 (800mAh 사용)
홀로그램 SIM 카드
하드웨어 외에도 프로젝트 시작 전 설정해야 할 여러 서비스가 있습니다. 아래 링크된 튜토리얼을 따라 시작하세요.
아두이노 IDE 설치 또는 웹 에디터 사용
홀로그램 계정 생성 및 SIM 카드 연결
애저 계정 생성
파워 BI 계정 생성
2단계: MKR GSM 작업하기
프로젝트 자체를 만들기 전에 MKR GSM을 애저 IoT에 연결하도록 구성해야 합니다. 이를 위해 장치에 인증서를 생성하고 저장하여 백엔드와의 연결을 검증할 수 있어야 합니다.
MKR NB에 대한 이 과정을 다루는 Hackster 튜토리얼이 있습니다. 처음부터 따라가고 인증서 생성 후 중단하세요. SHA1 문자열을 저장해 두세요. 나중에 필요합니다. 튜토리얼은 여기에 있습니다.
3단계: 모든 것 연결하기
다음으로 모든 것을 배선해야 합니다. 아래 이미지는 이 프로젝트 생성을 위한 회로도를 보여줍니다. 사용자의 구성 요소는 회로도의 것과 다를 수 있습니다. 온도 센서를 장치의 A4에, 심박수 센서를 A5에 연결하세요. SIM 카드 장착을 잊지 마세요!
4단계: IoT 허브로 이동
이제 IoT 허브로 이동할 준비가 되었습니다. 다음 몇 단계 동안 백엔드에서 작업하여 먼저 끝내겠습니다. 애저 계정이 있는지 확인하세요.
먼저 콘솔(portal.azure.com)로 이동하여 화면 왼쪽 상단의 리소스 만들기 버튼을 클릭합니다. 이제 IoT Hub를 입력하고 드롭다운에서 선택합니다.
설정이 완료되면 만들기를 클릭합니다. 이 예제에서는 무료 티어 IoT 허브를 사용하여 사용 요금이 부과되지 않습니다. 이 솔루션을 배포하는 경우 S1 티어로 변경하는 것을 고려하세요 (규모에 따라 S2/S3).
새 리소스 그룹을 만들고 IoT 허브 이름을 지정하세요. 이제 위 단계에서 크기 및 규모 옵션을 클릭합니다. 아래와 같이 설정되어 있는지 확인하세요.
이제 검토 + 만들기를 클릭하고 리소스 배포합니다. IoT 허브가 생성될 때까지 기다렸다가 화면 오른쪽 메뉴의 모든 리소스를 클릭하여 여세요.
이제 장치를 생성하고 IoT 허브에 연결해야 합니다. 오른쪽 화면 메뉴의 IoT 장치 옵션으로 이동하여 클릭합니다. 새로 만들기 버튼을 클릭하여 IoT 허브에 새 장치 추가합니다. 다음 자격 증명을 입력하세요.
기본 지문과 보조 지문을 2단계에서 추출한 SHA1 값으로 교체해야 합니다.
저장을 클릭하면 준비 완료!
5단계: 코스모스 DB 데이터베이스 생성
이제 우리 장치가 전송한 데이터를 저장할 데이터베이스를 생성해야 합니다. 장치에서 JSON 파일을 전송하므로 JSON 파일 저장에 적합한 애저의 코스모스 DB를 사용합니다.
먼저 오른쪽 메뉴의 리소스 만들기 버튼으로 돌아가 클릭합니다. 코스모스 DB를 검색하고 옵션을 선택합니다.
IoT 허브와 함께 생성된 리소스 그룹을 선택하고 이름을 지정하세요. 나머지 설정은 동일하게 유지하세요. IoT 허브와 데이터베이스의 리전이 동일한지 확인하여 리전 간 전송 비용을 방지하세요.
그게 다입니다! 리소스 배포를 기다리면 다음 단계로 넘어갈 준비가 됩니다!
6단계: 스트리밍 분석 작업 생성
이제 IoT 허브와 데이터베이스가 설정되었으니, 두 가지를 연결하여 IoT 허브에 입력된 데이터가 수신될 때 데이터베이스로 스트리밍되도록 해야 합니다.
새 리소스 만들기에서 스트림 분석 작업을 입력합니다. 지금까지 사용한 리소스 그룹을 선택하고 스트리밍 단위 수가 1로 설정되어 있는지 확인하세요. 많은 장치를 제공하는 경우 더 많은 스트리밍 단위를 생성하여 더 많은 장치를 처리하는 것을 고려하세요.
리소스 배포를 기다렸다가 왼쪽 메뉴의 모든 리소스 버튼에서 선택하세요.
이제 리소스에 들어왔으니 왼쪽 메뉴의 입력 버튼을 선택하여 입력을 선택합니다. 스트림 입력 추가를 클릭하고 옵션 목록에서 IoT 허브를 선택합니다.
IoT 허브 이름을 입력하고 표시된 메뉴에서 선택합니다. 다른 설정은 변경하지 마세요. 저장을 클릭합니다. 이제 화면 왼쪽의 출력 옵션을 클릭하고 제공된 목록에서 코스모스 DB 옵션을 선택합니다.
출력 이름을 지정하고 제공된 옵션에서 데이터베이스를 선택합니다. 새로 만들기를 데이터베이스 아래에서 선택하고 데이터베이스 이름을 SmartWristband, 컨테이너 이름을 data로 설정합니다. 문서 ID는 비워 둡니다. 이제 저장 클릭.
마지막으로 옵션에서 쿼리를 클릭합니다. IoT 허브의 모든 데이터를 데이터베이스로 라우팅하는 코드를 서비스에 제공해야 합니다. 아래 코드를 복사하여 제공된 공간에 붙여넣으세요. 이 코드는 입력된 모든 값을 출력에 매핑하여 JSON 형식으로 코스모스 DB에 저장합니다.
SELECT
time as time,
id as name,
geoLat as latitude,
geoLng as longitude,
isWorn as isWorn,
heartrate as heartrate,
temperature as temperature,
battery as battery
INTO
[universum-smartwristband-db]
FROM
[universum-smartwristband-hub]
완료되면 화면 상단 메뉴의 쿼리 저장 버튼을 클릭하면 준비 완료입니다. 이제 왼쪽 메뉴의 개요로 돌아가 시작 버튼을 눌러 스트리밍을 시작하면 됩니다.
7단계: 필요한 라이브러리
이 프로젝트에서 사용된 모든 라이브러리는 오픈 소스입니다. 아래는 사용된 모든 라이브러리와 GitHub 저장소 링크 목록입니다. 계속하기 전에 다운로드하여 설치하세요.
이제 애플리케이션 프론트엔드에 집중할 수 있습니다. GitHub 저장소의 코드를 아두이노 IDE 또는 웹 IDE에서 열고 아래 단계에 따라 문서의 변수를 편집하여 MKR GSM이 애저 IoT에 연결할 수 있도록 하세요.
먼저 생성된 IoT 허브로 이동하여 표시된 호스트명을 복사합니다. 이제 프로젝트에서 secrets.h 파일을 열고 이 문자열을 SECRET_BROKER 필드에 입력하세요.
다음은 장치 이름입니다. 이는 IoT 허브에서 장치에 지정된 이름입니다. 표시된 이름을 복사하여 secrets.h 파일의 SECRET_DEVICEID 필드에 붙여넣으세요. 최종적으로 파일은 아래와 비슷해야 합니다.
마지막으로 DEVICE_ID를 변경해야 합니다. 이 기능을 포함하여 모든 장치가 배포 시 특정 ID를 갖도록 했습니다. 환자 이름이나 장치를 식별하고 구별할 수 있는 문자열로 ID를 설정할 수 있습니다.
마지막으로 MODE 옵션에 대해 이야기하고 싶습니다. 이 프로젝트를 만들 때 애플리케이션을 배포하기 전에 쉽게 테스트하고 문제 해결할 방법이 필요했습니다. 애플리케이션 모드가 이를 해결합니다. 애플리케이션을 설정할 수 있는 두 가지 모드가 있습니다:
DEVELOP_TIME은 개발 모드입니다. 여기서 장치는 시리얼에 상세 로그를 출력합니다(시리얼 모니터가 켜진 상태에서 컴퓨터에 연결된 경우에만 작동). 장치는 10초마다 깨어나 데이터를 수집합니다.
RELEASE_TIME은 릴리스 모드입니다. 여기서 애플리케이션은 예상대로 작동하며, 컴퓨터 연결 없이 현장에서 작동하고 10초 대신 5분마다 샘플을 채취합니다.
나중에 이 모드들을 전환할 예정입니다. 지금은 DEVELOP_MODE로 두세요.
9단계: 개발자 버전 플래싱
이제 모든 설정이 완료되었으니, 코드를 테스트하여 DEVELOP_MODE에서 실행되는지 확인해야 합니다. 위 단계를 모두 따랐다면 장치를 USB로 PC나 맥에 연결하고 스케치를 업로드하세요.
시리얼 모니터를 여세요 (Ctrl/Cmd+Shift+M) 그리고 상세 로그를 확인하세요. 처음엔 구성하는 데 시간이 걸립니다. 데이터가 IoT 허브로 올바르게 전송되는지 확인하세요. 그런 다음 IoT 허브를 방문하여 그래프를 확인하고 데이터가 수신되었는지 확인하세요. 이제 애플리케이션을 배포할 준비가 되었습니다! 문제 해결 도움이 필요하면 Hackster를 통해 연락하세요.
10단계: 릴리스 버전 배포
릴리스 버전으로 변경하려면 secrets.h 파일의 MODE 정의를 RELEASE_TIME으로 변경하기만 하면 됩니다. 이제 이 코드를 장치에 업로드하고 리포 배터리가 연결되어 있는지 확인한 후 컴퓨터에서 분리하세요.
장치의 온보드 LED가 10분마다 깜빡이는 것을 볼 수 있어야 합니다. 이는 사이클이 실행 중임을 나타냅니다. IoT 허브와 코스모스 DB 데이터베이스를 확인하여 데이터가 통과하는지 확인하세요. 이제 장치를 배포할 준비가 되었습니다!
대시보드 생성을 위해 백엔드로 일부 데이터를 전송했는지 확인하세요.
11단계: 대시보드로 이동
대시보드 생성은 세심한 작업이며 많은 시간이 걸립니다. 이 섹션에서는 파워 BI 대시보드와 리포트에서 데이터 작업을 설명하며, 대시보드 디자인 방법은 개인 취향에 달려 있으므로 자세히 다루지 않고 자세히 보여주는 튜토리얼을 링크하겠습니다.
의사 대시보드
의사 대시보드부터 시작하세요. PC에 파워 BI 데스크톱이 설치되어 있는지 확인하세요. 맥 사용자는 파워 BI 온라인 버전을 사용하여 이 리포트를 만들 수 있으며 기본적으로 동일합니다.
애플리케이션을 실행하고 데이터 가져오기 버튼을 클릭합니다. 이제 애저 옵션으로 이동하여 옵션에서 코스모스 DB를 선택합니다.
이제 코스모스 DB 리소스로 이동하여 URI 링크를 복사하고 파워 BI의 필드에 붙여넣으세요. 필요한 경우 로그인하세요.
이제 코스모스 DB 대시보드의 키 창으로 가서 기본 키를 복사하여 계정 키 필드에 붙여넣으세요. 데이터베이스를 탐색하여 data 파일이 체크되어 있는지 확인하세요. 로드 클릭하면 준비 완료!
이제 리포트에 들어왔으니 화면 상단 메뉴의 데이터 변환 버튼을 찾으세요. 클릭하여 데이터 테이블을 얻으세요.
테이블 제목 옆의 버튼을 클릭하고 위에 표시된 필드를 선택하세요. 테이블이 확장되어야 합니다.
이제 행의 데이터 타입을 변경해야 합니다. 화면 상단 메뉴의 데이터 타입 버튼을 찾아 값을 적절히 변경하세요.
이제 닫기 및 적용을 클릭하면 대시보드로 돌아갑니다. 대시보드는 아래와 비슷해야 합니다.
다음으로 측정값을 생성하여 데이터를 처리하고 리포트에서 다른 형태로 변환해야 합니다. GitHub 저장소의 스트림 분석 스크립트 폴더를 비주얼 스튜디오 코드에서 여세요. 파워 BI용 DAX라는 확장을 설치하여 컨텍스트 하이라이팅을 얻었습니다:
환자의 정보를 담고 있어 환자별로 구체적으로 편집해야 하는 파일들이 있습니다. 편집해야 할 파일 목록은 아래와 같습니다:
Address.dax
Age.dax
Gender.dax
이 파일들을 VS Code에서 열고 편집하세요.
이제 파워 BI에서 이 파일들을 사용하여 새 측정값을 생성합니다. 파워 BI 리포트를 열고 화면 상단 메뉴의 새 측정값 버튼을 클릭하세요.
첫 번째 파일의 내용을 텍스트 막대에 복사하여 붙여넣으세요. 형식과 데이터 범주가 적절히 설정되었는지 확인하세요 (예: 위도 데이터의 범주를 위도로 설정). 이제 다른 모든 파일에 대해 이 단계를 반복하여 각각 새 측정값을 생성하세요. 대시보드는 아래와 같아야 합니다:
이제 재미있는 부분인 대시보드 디자인으로 넘어갑니다. 인포그래픽 생성과 대시보드 스타일링 방법을 알아보려면 아래 튜토리얼을 참조하세요:
기본 파워 BI
파워 BI 완전 가이드
파워 BI 무료 유데미 강의
파워 BI에서의 예측 (ML) (체온, 심박수, 배터리 레벨에 사용)
최종적으로 제 대시보드는 이렇게 보였습니다:
대시보드 디자인이 완료되면 웹에 게시하여 어디서든 어떤 기기에서든 액세스할 수 있게 해야 합니다. 리포트의 데이터는 사용자가 열 때 자동으로 새로고침됩니다 (새로고침 버튼도 있음).
화면 상단 메뉴의 게시 버튼을 클릭하고 대상을 내 작업 영역으로 선택하세요. 대시보드 업로드를 기다리세요.
계속 작업하려면 브라우저에서 파워 BI 리포트를 여세요. 이제 모든 환자를 요약하는 대시보드 작업을 진행합니다. 환자 상태를 나타내는 타일을 클릭하면 메뉴가 나타납니다.
메뉴에서 시각적 개체 고정 버튼을 선택하고 새 대시보드 생성하세요. 이 시각적 개체가 대시보드에 고정됩니다. 다음 카드에 대해 이 단계를 반복하세요:
이름
상태
체온
심박수
의사는 이 대시보드에서 모니터링 중인 모든 환자의 상태를 한눈에 볼 수 있습니다.
마지막으로 대시보드의 체온 카드를 클릭하고 메뉴 버튼에서 경고 관리 버튼을 선택하여 시각적 개체에 대한 경고를 설정하는 메뉴를 여세요. 아래와 같이 구성하고 심박수에 대해서도 반복하세요 (임계값을 100으로 설정).
이제 환자 대시보드 작업을 진행합니다.
환자 대시보드
의사 대시보드를 복사하여 시작합니다. 거기에서 수집된 모든 측정값과 데이터를 사용하지만 다른 방식으로 표시합니다.
모든 데이터를 유지했지만 체온과 심박수 섹션의 예측을 제거했습니다 (환자가 너무 걱정하지 않게 하기 위해) 그리고 위치 섹션을 제거했습니다 (환자는 자신이 어디 있는지 알고 있으므로).
또한 이 대시보드의 모바일 버전을 개발했습니다. 이동하여 보기 메뉴에서 모바일 레이아웃을 선택하세요. 거기에서 기존 타일을 드래그 앤 드롭하여 모바일 전화기에 놓아 이 레이아웃을 만들기만 하면 됩니다.
이 작업이 완료되면 다시 대시보드를 온라인에 업로드합니다. 이 대시보드는 파워 BI 앱을 통해 환자와 공유할 수 있으며, 그들이 필요한 모든 정보를 보여주는 애플리케이션의 모바일 버전과 온라인 뷰를 얻을 수 있습니다.
12단계: 마침내 인클로저
이제 모든 것이 끝났으니 프로젝트용 인클로저를 만들어야 합니다. 이상적으로는 3D 프린팅이겠지만 3D 프린터가 없어서(정말 하나 장만해야 합니다) 플라스틱 조각을 잘라 조립했습니다. 프로토타입 인클로저용 3D 디자인은 있습니다.
이번 프로토타입에서는 장치가 꽤 큽니다. 향후 상용 버전은 분명히 크기가 줄어들 것입니다 (향후 프로젝트에서 구성 요소를 재사용하기 위해 PCB에 모두 납땜하지 않았습니다).
그게 다입니다! 프로젝트가 완료되었습니다!
회고
이 프로젝트를 만드는 것을 정말 즐겼습니다. 3월에 코로나바이러스에 대처할 아이디어를 브레인스토밍하는 데 몇 시간을 보냈고, 이 콘테스트가 발표되었을 때 커뮤니티에 진정으로 영향을 미칠 것이라고 믿었던 최고의 아이디어 중 하나인 스마트 손목밴드 작업을 시작했습니다.
저렴하고 확장 가능한 솔루션으로 세상을 돕기 위한 이 국제적 노력에 참여하게 되어 매우 자랑스럽습니다. 대만 정부의 스마트 추적 장치(바이러스 확진자가 집에 머물고 격리 수칙을 준수하도록 보장)에서 영감을 받았습니다. 이 시스템을 환자의 심박수와 체온도 집에서 모니터링하여 환자 안전을 더욱 강화하는 방식으로 개선할 수 있다고 느꼈습니다.
코로나바이러스는 극복하기 어려운 문제이며 많은 협력과 헌신이 필요합니다. 이 애플리케이션이 전 세계적으로 구현되어 약한 형태의 바이러스 확진 환자의 건강을 모니터링하여 집에서 지내게 하고, 더 긴급한 사례에 병원 병상을 할당할 수 있게 돕기를 바랍니다.
이 프로젝트 제작에서 가장 즐거웠던 부분은 대시보드였습니다. 디자인을 정말 즐겼습니다 (저는 시각적인 사람입니다). 아두이노 MKR GSM을 애저 IoT에 연결하는 데 문제가 있었습니다. 장치 인증서 만료 날짜를 2분 정도로 설정했던 것이 원인이었습니다 (알아차리는 데 시간이 걸렸습니다).