산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Edge Impulse 기반 ECG 분석기

구성품 및 소모품

Arduino Nano 33 BLE 감지
× 1
SparkFun 단일 리드 심박수 모니터 - AD8232
× 1
ElectroPeak 0.96" OLED 64x128 디스플레이 모듈
× 1

필요한 도구 및 기계

납땜 인두(일반)
납땜 와이어, 무연
10 Pc. 점퍼 와이어 키트, 길이 5cm

앱 및 온라인 서비스

Edge Impulse Studio
MATLAB
Arduino IDE
Microsoft Visual Studio 2017

이 프로젝트 정보

급성 심장마비 및 사망률 증가:우려 증가

지난 10년 동안 급성 심장마비로 인한 사망이 엄청나게 증가했습니다.

특히 인도와 같은 개발 도상국에서는 유전 및 생활 방식을 제외하고 농촌 지역의 의료 자원 부족으로 인해 심장마비로 사망하는 경우가 대부분입니다.

이 글로벌 문제를 해결하기 위한 기술 기여:

저는 Edge Impulse로 구동되는 TinyML 애플리케이션을 개발하여 주머니에 쏙 들어갈 수 있고 클라우드 연결 없이 독립적으로 심장 질환을 진단할 수 있는 미니 진단 ECG 분석기 장치를 개발했습니다.

시장에 ECG 분석기 및 기능 소개

•현재 IoT 의료기기는 대량의 ECG 데이터를 모바일/서버로 전송하고 분석은 하이프로세서/모바일 앱에서 수행

•ECG 장치에서 신호를 수신하고 ECG 패턴을 분석하는 컴퓨터 기반 응용 프로그램

•모든 ECG 분석 장치는 인터넷 또는 고성능 컴퓨터/모바일 애플리케이션에 의존합니다.

따라서 아래 차트로 요약할 수 있습니다.

핵심 솔루션

•Edge Impulse로 구동되는 ECG Analyzer는 인터넷에 의존하지 않고 ECG 데이터를 분석합니다.

•IoT 기기에 비해 지연 시간이 가장 짧습니다.

•15Kb Rom - TinyML을 분석하는 ECG 모델은 모든 TinyML 지원 마이크로컨트롤러에서 실행할 수 있습니다.

• 이 장치는 ECG 패턴을 분석하고 정상, 심방 세동 및 1도 심장 차단으로 분류합니다.

건축

ECG 분석기는 다음을 포함합니다.

1. AD8232를 사용한 ECG 판독

2. 다양한 심장 질환 ECG 패턴 시뮬레이션

3. 품질 데이터세트를 생성하기 위한 새로운 접근 방식

4. 모델 교육

5. 모델 테스트 정확도 및 통합 배포된 애플리케이션 코드 라이브러리

ECG 그래프에 대해 알아보기

기술 작업을 진행하기 전에 먼저 ECG 그래프의 몇 가지 기본 사항을 살펴보겠습니다.

ECG 그래프는 P, Q, R, S 및 T 파의 5개의 Wave로 분할되었습니다.

심방 세동

1급 심장 차단

ECG 분석기를 구축할 수 있습니다.

1. AD8232를 사용한 ECG 판독

아래 연결 다이어그램에 따라 ECG 센서 AD8232를 Arduino Nano 33 BLE 감지에 연결합니다.

아래 코드를 플래시한 다음 "Ctrl+Shift+L"을 눌러 그래픽 스트리밍 데이터를 시각화합니다.

void setup() {
// 직렬 통신 초기화:
Serial.begin(115200);
pinMode(2, INPUT); // 리드 오프 감지 설정 LO +
pinMode(3, INPUT); // 리드 오프 감지 설정 LO -

}

void loop() {

if((digitalRead(2) ==1) ||(digitalRead(3) ==1)){
Serial.println('!');
}
else{

// 값을 보냅니다. 아날로그 입력 0:
Serial.println(analogRead(A0));
}
//직렬 데이터가 포화되지 않도록 잠시 기다리십시오.
delay(5);
}

1.1 ECG 전극의 배치

ECG 전극은 위의 다이어그램에서 언급한 대로 RA, LA 및 LL에 배치되고 잭을 ECG 분석기의 AD8232 센서에 연결합니다.

2. Matlab 신호 빌더를 사용하여 다양한 ECG 패턴 시뮬레이션

단계 2.1 :일반 ECG 데이터를 Excel에 저장

먼저 시리얼 모니터 데이터를 아래 템플릿과 같이 엑셀 파일에 복사하여 저장합니다. ECG 값은 'Y' 아래의 두 번째 열에 있어야 합니다. 첫 번째 열은 시계열입니다. ( * 0.005) 5ms로 증가해야 합니다.

단계 2.2 :Matlab의 시그널 빌더

Matlab에서 새 Simulink 모델 생성

그런 다음 작업 공간에 'signal builder'를 입력하고 선택하십시오. 또한 삽입

신호 빌더에 연결하는 '스코프'. 아래 스크린샷을 참조하세요.

저장된 엑셀 데이터를 불러오려면 시그널 빌더를 열고 '파일에서 가져오기' 옵션을 선택하세요.

데이터를 가져오려면 언급된 옵션을 선택하십시오.

그런 다음 선택을 확인하고 모델을 저장하지 않고 가져옵니다. 몇 가지 단계가 더 필요하기 때문입니다.

2.3 : 신호 빌더의 ECG 데이터 시각화

A 60초 ECG 데이터는 신호 빌더 보기에서 다음과 같이 표시됩니다. 수동 편집의 경우 데이터를 5초 동안 확대하고 '드래그' 하십시오. ECG 파형을 편집합니다.

확대/축소 후 마우스 포인터를 ECG 파동 가까이에 놓으면 ECG의 모든 지점을 선택하고 응용 프로그램 요구 사항에 따라 끌 수 있습니다.

2.4 :AV Block 1 Case의 Signal builder에서 P-R 간격 데이터 편집

수동으로 P 파를 아래로 드래그하고 P 파를 R 파보다 훨씬 앞서 이동하여 P-R 간격이 200ms를 초과합니다.

신호 빌더 데이터의 다른 타임라인에서 이 단계를 반복합니다.

편집 후 데이터를 매트 파일로 내보냅니다. 신호 빌더에서 이 옵션을 찾을 수 있습니다. 매트 파일이 저장되면 아래 단계를 따르세요.

따라야 할 단계 --> 먼저 매트 파일을 더블 클릭하고 1x1 데이터셋을 더블 클릭--> Data:1 아래에서 수정된 데이터를 볼 수 있습니다.

데이터를 복사하여 새 Excel 파일에 붙여넣습니다.

2.5단계 :엑셀 데이터를 Array로 내보내기

엑셀 데이터를 배열로 변환할 수 있는 스크립트를 작성했습니다.

Matlab에서 이 스크립트를 실행하고 실행하기 전에 ExcelFilename을 로컬 저장된 파일 이름으로 바꾸고 ExcelSheetName을 해당 시트 이름으로 바꿉니다.

data=xlsread('ExcelFilename.xlsx','ExcelSheetName');

ECGExtract=(data(1:end,1)); %%Column A data

fid=fopen('test.txt','wt');%opening은 Windows에서 \n을 \r\n으로 자동 변환합니다.
fprintf(fid,'{');
FormatSpec=[repmat('%i ',1,size(ECGExtract,2)) ','];%또는 \r\n이 되어야 합니까?
fprintf(fid,FormatSpec, ECGExtract);
fprintf(fid,'}')
fclose(fid);

텍스트 파일은 현재 디렉토리 위치에 생성됩니다.

배열 내용을 복사하여 심방 세동 및 1도 심장 차단을 시뮬레이션하기 위한 ECGAnalyzer.c 코드에 붙여넣습니다.

3. 고품질 데이터 세트를 생성하기 위한 새로운 접근 방식

ECG 데이터를 보면 더 짧은 윈도우 시간(예:3초)에서 다른 심장 상태 ECG 데이터와 정상적인 ECG 데이터를 구별하기가 정말 어렵습니다.

심방 세동, 정상 및 1도 심장 차단을 위해 필터링된 ECG 데이터만으로 모델을 훈련할 때 정확도는 23% 미만이었습니다. 그 이유는 모델이 차이를 구분할 수 없는 더 짧은 창에 있기 때문입니다.

더 긴 윈도우 시간으로 가면 처리 시간과 최대 RAM 사용량이 상당히 증가했습니다. 정확도조차 없었습니다.

새로운 접근 방식의 배경:

언제 의사 또는 숙련된 사람이 ECG 그래프를 분석하려고 시도합니다. R에서 R 파동, P에서 R 간격 사이의 작은 상자를 세고 그래프에 기록하거나 계산을 위해 기억합니다.

필터링된 ECG 데이터에서 별도의 파형을 생성했습니다.

새 파형:

<울>
  • R-R 간격
  • 홍보 간격
  • 정상 ECG에 대해 생성된 데이터 세트 데이터:

    디코딩된 R-R 간격 및 PR 간격 데이터는 정상 ECG 데이터의 경우 항상 100 및 50입니다.

    심방 세동을 위해 생성된 데이터 세트 - ECG 데이터:

    언제든지 이전 R-R 간격과 현재 R-R 간격 사이에 편차가 있습니다. R-R 간격 데이터는 -100 으로 떨어집니다. 한 주기 동안

    1도 심장 차단-ECG에 대해 생성된 데이터 세트 데이터:

    언제든지 P에서 R 간격이 200ms를 초과하면 PR 간격 데이터가 -50으로 떨어집니다. 한 주기 동안

    이 접근 방식을 통해 내 모델 정확도가 90% 이상으로 향상되었습니다.

    4. Edge Impulse에서 모델 훈련

    Edge Impulse 교육 ML을 시작하기 전에 시뮬레이션 및 실시간 ECG 센서 판독을 위해 라이브러리 파일에서 일부 매개변수를 구성해야 합니다.

    4.1단계 :SIMULATION을 0으로 구성, 데이터 수집이 실시간 ECG 센서 판독에서 발생한 경우

    또는

    데이터 수집이 심방 세동 및 1도 심장 차단에 대한 시뮬레이션된 ECG 데이터에서 나온 경우 SIMULATION을 1로 구성합니다(Matlab 세션 이후).

    4.2단계 :필수 데이터 주석 처리/해제 시뮬레이션용 버퍼

    4.3단계 :데이터 수집

    정상, 심방 세동 및 1도 심장 차단의 세 가지 레이블로 ECG 데이터를 수집합니다.

    https://docs.edgeimpulse.com/docs/arduino-nano-33-ble-sense

    주파수를 202로 선택

    $ edge-impulse-daemon --주파수 202 

    4.4단계:충동 생성

    임펄스 섹션 생성, 창 크기는 3000ms, 창 증가는 2999ms, k-평균 이상 감지 선택

    4.5단계:스펙트럼 기능

    스펙트럼 기능을 사용하려면 필터 유형을 없음으로 선택하십시오.

    4.6단계:NN 분류기:

    40번의 훈련 주기와 학습률을 0.005로 설정했습니다. 92.9의 정확도를 얻었습니다.

    이상 감지를 위해 PR 간격 RMS와 RR 간격 RMS를 선택했습니다.

    5. 모델 테스트 정확도 및 통합

    모델 테스트 정확도에서는 약 97%의 정확도를 보였습니다.

    5.1 배포:

    선택 배포로서의 Arduino;

    다운로드한 EI 배포 파일을 Arduino 라이브러리에 추가

    참고: GitHub 링크에서 Arduino 라이브러리에도 ECG_Analyzer 라이브러리 추가

    이것은 내 ECG 디코딩 알고리즘 코드를 통합하여 EI 생성 모델과 통합하는 데 도움이 됩니다.

    5.2 핵심 생성 EI 코드에 애플리케이션 코드 통합

    응용 프로그램 코드를 "nano_ble33_sense_accelerometer_continuous 배포된 EI에 병합했습니다. "를 입력하고 ECGAnalyzer.ino로 저장했습니다.

    첨부된 GitHub 링크에서 사용 가능합니다. 기기의 ECG_Analyzer.c에서 SIMULATION을 0으로 사용하여 코드를 플래시합니다.

    하드웨어:

    fritzing 도표에 따라 연결하십시오:

    조립 :

    최종 제품:

    여기에서 최종 제품과 테스트 데이터의 정확도 수준!!!

    크레딧:

    ECG :https://geekymedics.com/how-to-read-an-ecg/

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    https://github.com/Manivannan-maker/ECGAnalyzer
    ECGAnalyzer.zipCode를 Flash:EI_Deployed_Library\examples\ECGAnalyzer\ECGAnalyzer.inoLibrary로 압축을 풀어 시뮬레이션을 편집합니다. signalbuilder.slxhttps://github.com/Manivannan-maker/ECGAnalyzer

    회로도

    다이어그램에 따라 연결하십시오. ecgdefault_SjMMcgW8jY.fzz

    제조공정

    1. 티아라
    2. 철조망
    3. 화장실 추적기(Walabot 제공)
    4. reTerminal 기계 학습 데모(Edge Impulse 및 Arm NN)
    5. Raspberry Pi로 구동되는 장난감 트럭
    6. MOSMusic
    7. 엣지 컴퓨팅 혁명을 주도할 6가지 조직 유형
    8. 육각 철망 기계
    9. 와이어 커팅 소개
    10. CNC 와이어 컷이란 무엇입니까?