- 필수 구성 요소
- Arduino가있는 MAX30205 – 회로도
- MAX30205 체온 센서와 Arduino 인터페이스
- Arduino로 MAX30205 프로그래밍
- Arduino 체온 측정기 – 테스트
의료 또는 임상 응용 분야의 경우 인체 온도 측정 은 개인의 건강 상태를 결정하는 중요한 매개 변수입니다. 그러나 온도를 감지하는 방법은 여러 가지가 있지만 모든 것이 임상 체온 측정 사양을 충족 할 수있는 정확도가있는 것은 아닙니다. MAX30205 온도 센서는이 애플리케이션을 위해 특별히 설계되었습니다. 이 센서는 비접촉식 온도 센서가 아닙니다. 비접촉식 IR 온도 측정을 찾고 있다면 이전에 설계 한 MLX90614 온도계를 확인하십시오.
이 프로젝트에서는 피트니스 밴드와 쉽게 연결하거나 의료용으로 사용할 수있는 MAX30205 인체 온도 센서를 인터페이스합니다. Arduino Nano를 메인 마이크로 컨트롤러 장치로 사용하고 감지 된 온도를 화씨로 표시하기 위해 7-Segment 디스플레이를 사용합니다. 센서 사용 방법을 알고 나면 원하는 애플리케이션을 사용할 수 있으며, MAX30205와 결합 된이 Arduino Smartwatch 프로젝트를 통해 개인의 온도를 모니터링 할 수 있습니다.
필수 구성 요소
- Arduino 나노
- 7-Seg 디스플레이 공통 음극-3pcs
- 74HC595-3 개
- 680R 저항-24pcs
- MAX30205 모듈 보드
- 5V 전원
- 브레드 보드
- 많은 훅업 와이어
- Arduino IDE
- 마이크로 USB 케이블
Arduino가있는 MAX30205 – 회로도
Arduino를 체온 센서 MAX30205 와 연결하는 전체 회로도 가 아래에 나와 있습니다. 회로는 매우 간단하지만 7 세그먼트 디스플레이를 사용했기 때문에 조금 복잡해 보입니다. Arduino를 사용한 7 세그먼트 디스플레이는 매우 저렴한 비용으로 크고 밝게 가치를 표시 할 수있는 좋은 방법입니다. 그러나 원하는 경우 이러한 값을 OLED 또는 LCD에 표시 할 수도 있습니다.
Arduino Nano는 3 개의 74HC595와 연결됩니다. 3 개의 74HC595는 3 개의 7-Seg 디스플레이를 연결하기 위해 Arduino Nano의 추가 출력 핀을 절약하기 위해 함께 계단식으로 연결됩니다. 우리는 이전에 Arduino Clock, LED Board Display, Arduino 뱀 게임 등과 같은 다른 많은 프로젝트에서 Arduino와 함께 74HC595를 사용했습니다.
MAX30205 모듈 보드는 I2C 프로토콜 과 통신하므로 추가 풀업 저항이 필요 합니다. 그러나 풀업 저항이 이미 모듈 내부에 제공되므로 추가 풀업이 필요하지 않은 모듈 보드는 거의 없습니다. 따라서 모듈 보드에 내부 풀업 저항이 있는지 또는 추가로 외부 풀업이 필요한지 확인해야합니다. 이 프로젝트에서 사용되는 보드는 이미 모듈 보드 내부에 풀업 저항이 내장되어 있습니다.
MAX30205 체온 센서와 Arduino 인터페이스
여기에서 사용되는 센서는 Maxim Integrated의 MAX30205입니다. MAX30205 온도 센서는 0.1 ° C 정확도 (37 ° C ~ 39 ° C)로 온도를 정확하게 측정 합니다. 센서는 I2C 프로토콜과 함께 작동합니다.
모듈 보드는 5 또는 3.3V에서 작동 할 수 있습니다. 그러나 보드는 5V 작동 전압으로 사용되도록 구성됩니다. 센서 자체가 전력 또는 데이터 통신 관련 목적으로 최대 3.3V를 지원하기 때문에 로직 레벨 시프터도 포함됩니다.
출력에서 3 개의 74HC595, 8 비트 시프트 레지스터는 Arduino NANO와 3 개의 7-Segment 디스플레이를 인터페이스하는 데 사용됩니다. 핀 다이어그램은 아래 이미지에서 볼 수 있습니다.
74HC595의 핀 설명은 아래 표에서 볼 수 있습니다.
QA-QH는 7-Seg 디스플레이와 연결된 데이터 출력 핀입니다. 3 개의 74HC595가 함께 캐스케이드되어 있기 때문에 첫 번째 시프트 레지스터의 데이터 입력 핀 (PIN14)이 Arduino NANO에 연결되고 직렬 데이터 출력 핀이 데이터를 다음 시프트 레지스터에 제공합니다. 이 직렬 데이터 연결은 세 번째 74HC595까지 계속됩니다.
Arduino로 MAX30205 프로그래밍
이 튜토리얼의 전체 프로그램은이 페이지 하단에서 찾을 수 있습니다. 이 코드에 대한 설명은 다음과 같습니다. 먼저 표준 Arduino I2C 라이브러리 헤더 파일을 포함합니다.
#포함
위의 줄에는 protocentral의 Arduino 제공 라이브러리가 포함됩니다. 이 라이브러리에는 MAX30205 센서와 통신하기위한 중요한 기능이 있습니다. 라이브러리는 아래 GitHub 링크에서 가져옵니다.
https://github.com/protocentral/ProtoCentral_MAX30205
라이브러리를 가져온 후 아래와 같이 MAX30205 객체 데이터를 정의합니다.
#include "Protocentral_MAX30205.h"MAX30205 tempSensor;
다음 두 줄은 매개 변수를 설정하는 데 중요합니다. 아래 줄은 참으로 설정된 경우 화씨 온도를 제공합니다. 결과를 섭씨로 표시하려면 행을 false로 설정해야합니다.
const bool fahrenheittemp = true; // 온도를 화씨로 표시하고 있습니다. 온도를 섭씨로 표시하려면이 변수를 false로 설정하십시오.
일반적인 음극 유형 7- 세그먼트 디스플레이가 하드웨어에서 사용되는 경우 아래 라인을 구성해야합니다. 공통 양극을 사용하는 경우 거짓으로 만드십시오.
const bool commonCathode = true; // 공통 Anode를 사용하는 경우 공통 Cathode 7 세그먼트를 사용하고 값을 false로 변경합니다. const byte digit_pattern = {// 74HC595 7 세그먼트 디스플레이를 사용한 아웃 핀 연결. // Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 // abcdefg DP 0b11111100, // 0 0b01100000, // 1 0b11011010, // 2 0b11110010, // 3 0b01100110, // 4 0b10110110, // 5 0b10111110, // 6 0b11100000, // 7 0b11111110, // 8 0b11110110, // 9 0b11101110, // A 0b00111110, // b 0b00011010, // C 0b01111010, // d 0b10011110, // E 0b10001110, // F 0b00000001 //. };
위의 배열은 7-Segment 디스플레이의 숫자 패턴을 저장하는 데 사용됩니다.
설정 기능에서 74HC595 핀의 핀 모드를 설정 한 후 I2C 프로토콜 및 온도 센서 판독 값이 초기화됩니다.
void setup () {// 설정 코드를 여기에 입력하여 한 번 실행합니다: // 직렬 포트를 9600으로 설정 Serial.begin (9600); 지연 (1000); // 74HC595 제어 핀을 출력으로 설정 pinMode (latchPin, OUTPUT); // 74HC595의 ST_CP pinMode (clkPin, OUTPUT); // 74HC595의 SH_CP pinMode (dtPin, OUTPUT); // DS of 74HC595 // I2C Libs 초기화 Wire.begin (); // 연속 모드에서 MAX30205 온도 읽기 시작, 활성 모드 tempSensor.begin (); }
루프에서 온도는 tempSensor.getTemperature () 함수가 읽고 temp 라는 부동 변수에 저장됩니다. 그 후 화씨 온도 모드를 선택하면 데이터가 섭씨에서 화씨로 변환됩니다. 그런 다음 변환 된 감지 된 온도 데이터의 세 자리가 세 자리로 더 분리됩니다. 이를 위해 아래 코드 줄이 사용됩니다.
// 현재 온도에서 3 자리 숫자를 저장합니다 (예: temp = 31.23c,) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp % 10; // digit2 1 int dispDigit3 = (temp * 10)-((int) temp * 10); // digit3 2
이제 분리 된 세 자리가 74HC595 시프트 레지스터를 사용하여 7- 세그먼트 디스플레이로 전송됩니다. LSB가 세 번째 74HC595를 통해 세 번째 7 세그먼트 디스플레이에 처음 표시되었으므로 세 번째 숫자가 먼저 전송됩니다. 이를 위해 래치 된 핀은 로우로 풀링되고 데이터는 shiftOut () 함수에 의해 74HC595에 제출됩니다 .
같은 방식으로 나머지 두 번째 및 첫 번째 숫자도 각각의 74HC595로 전송되어 나머지 2 개의 7 세그먼트 디스플레이로 전송됩니다. 모든 데이터를 전송 한 후 래치 핀이 해제되고 데이터 전송 종료를 확인하기 위해 하이로 당겨집니다. 각 코드는 아래에서 볼 수 있습니다.
// 3, 7 세그먼트 디스플레이에 숫자를 표시합니다. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Arduino 체온 측정기 – 테스트
회로는 아래에서 볼 수 있듯이 두 세트의 브레드 보드로 구성됩니다. 센서에 손가락을 대면 온도가 감지되고 출력이 7 세그먼트 디스플레이에 표시됩니다. 여기서 값은 92.1 * F입니다.
프로젝트의 전체 작업은 아래 링크 된 비디오에서 찾을 수 있습니다. 프로젝트 구축을 즐겼고 유용한 것을 배웠기를 바랍니다. 질문이 있으시면 아래 댓글 섹션에 남겨 주시거나 포럼을 사용하십시오.