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

Health Band - 노인을 위한 스마트 도우미

구성품 및 소모품

인피니언 DPS310
× 1
Arduino Nano R3
× 1
Espressif ESP8266 ESP-01
× 1
점퍼 와이어(일반)
× 1
3.7V LiPo 배터리
× 1

필요한 도구 및 기계

납땜 인두(일반)

앱 및 온라인 서비스

Arduino IDE
블링크

이 프로젝트 정보

사랑하는 사람이 늙어서 혼자 살고 있습니까? 걱정할 필요 없어. Infineon의 DPS310 압력 센서를 사용하여 밴드 형태로 팔에 깔끔하게 맞는 가상 비서를 개발했습니다. 이 가상 비서는 사랑하는 사람을 떠나는 이 시간 소모적인 작업을 처리하여 안전한 손입니다!

"노인은 현재 약 미국 인구의 14.5% , 그리고 2030년에는 약 7,400만 명의 노인이 될 것입니다. 의료 비용이 증가하고 의료 기관이 적절한 치료를 제공해야 하는 압력이 가해짐에 따라 노인 건강 관리를 위한 새로운 솔루션이 필수적입니다."

빠른 검색과 충격적인 숫자를 본 후 이것은 노인을 돕기 위한 우리의 시도입니다!

스토리

할머니가 알츠하이머 초기 증상으로 고생하신지 몇 년이 지났는데 불행히도 할머니의 상태가 악화되고 있는 것 같습니다. 이로 인해

와 같은 일련의 예기치 않은 문제가 발생했습니다.

1) 일터로 떠돌아다닌다(하지 말라는 권고를 받았음에도 불구하고)

2) 식사를 거르거나 때때로 두 끼를 먹기

3) 운동을 하지 않음

이 모든 것은 기억력이 부족하고 자신의 상태를 알지 못하기 때문입니다.

이로 인해 어머니는 일주일 내내 거의 하루 종일 어머니와 함께 있어야 했습니다. 이 작업은 매우 피곤하고 시간이 많이 소요되는 것으로 판명되었습니다. 그때 우리는 할머니의 행동과 활동을 모니터링할 수 있는 가상 비서를 만들고 필요한 경우 가족 구성원에게 비상 상황을 알릴 수 있다는 아이디어를 얻었습니다. 엄마에게 휴식을 주는 동시에 환자를 안전하게 지켜주는 것!

시스템/개념의 구성요소

이 시스템은 주로 알츠하이머 환자가 직면한 문제에 초점을 맞추고 있지만, 우리는 프로젝트에서 모든 노인의 삶에 영향을 미치는 다른 많은 시스템을 주입하여 그들이 일상 생활의 장애물을 독립적으로 헤쳐 나갈 수 있도록 돕습니다.

Infineon 압력 센서의 주요 기능 중 하나는 크기입니다! 이를 통해 주요 구성 요소를 휴대하고 다용도로 사용할 수 있습니다. 우리 시스템의 핵심에는 I2C 버스를 통해 DPS310 압력 센서에 연결된 Arduino Nano가 있습니다. 행동 및 행동은 환자의 라이브 모션을 시뮬레이션하도록 코딩됩니다. 이 그래프나 값을 사용하여 환자의 상태를 파악하고 응급 상황 발생 시 회원에게 알립니다. 생성된 데이터는 Blynk를 사용하여 작은 앱에 표시됩니다.

이 전체 시스템은 작지만 보기 좋은 웨어러블 밴드에 통합되어 이 기술을 환자의 삶에 매끄럽게 통합합니다.

기능 및 기능

다음은 우리 밴드가 분석/탐지할 수 있는 주요 기능과 움직임입니다.

가을 - 연구에 따르면 노인의 가장 큰 문제는 균형을 잃고 넘어지는 것입니다. 종종 환자들은 무기력하며 도움이 오기 위해서는 어느 정도 시간이 지나야 합니다. 이것은 압력의 급격한 강하를 감지하여 Health Band를 사용하여 쉽게 피할 수 있습니다. 감지되면 부상이 악화되는 것을 방지하기 위해 자동으로 친척에게 메시지가 전송됩니다.

운동 - 노인의 경우 운동을 하거나 산책을 하는 것이 건강하고 건강하게 유지되기는 하지만 다소 어려울 수 있습니다. 우리는 그들에게 동기를 부여하는 방법이 그들이 걸은 걸음 수나 걸은 시간을 보여 주어 그들이 운동하도록 부추기는 무언가가 있을 수 있다고 생각했습니다.

그리고 제 할머니의 경우 의사가 그녀에게 1000보 정도 걸으라고 했습니다. 하지만 그녀는 카운트를 잃습니다. 카운터도 그녀를 도와줍니다!

Health Band가 "파도" 움직임을 감지하면 환자가 운동을 시작한 것으로 간주합니다. 마루에서 마루로 또는 트로프에서 트로프가 한 주기를 표시합니다. 걸음 수에 따라 주기 수가 생성된 다음 표시되어 자신만의 걸음 수 카운터를 만듭니다.

발열 - 이것은 매우 간단합니다. 센서도 온도를 제공합니다. 팔에 닿는 밴드가 환자의 체온을 알려줍니다. 급증 또는 감소는 친척에게 메시지를 통해 자동으로 다시 알려집니다.

상태 - 환자의 생존 상태를 친척에게 알려줍니다. 예를 들어 건강 밴드가 압력 변화를 많이 감지하지 못한다면 환자는 잠을 잘 수 있습니다.

수면, 각성 및 운동의 세 가지 상태가 있습니다. (때때로 잘못된 "상태"를 수신했기 때문에 아직 이 기능을 완성하지 못했다고 합니다. 또한 더 많은 상태를 추가할 계획입니다)

회로

Infineon의 강력한 DPS310 센서는 Bluetooth를 사용하여 앱에 동기화할 수 있습니다. 앱은 센서의 실시간 시각적 표현을 생성합니다. 유용하긴 했지만 우리의 개념에는 한계가 있었습니다.

따라서 센서의 데이터 스트림을 활용하기 위해 I2C 버스를 통해 Arduino Nano를 연결했습니다. 이를 통해 데이터를 계산하여 환자가 있었던 다양한 시나리오를 추론할 수 있었습니다.

일단 그 비트가 정리되면 Arduino를 ESP8266 WiFi 모듈에 연결하여 모바일 앱과 통신할 수 있는 수단을 제공했습니다.

설정

모든 것을 설정하기 전에 센서에 핀을 추가해야 합니다. 7개의 핀을 2개 길이로 잘라서 납땜합니다. 브레드보드를 ​​사용하면 일을 더 쉽게 할 수 있습니다.

<울>
  • DPS310 압력 센서 - Arduino Nano(I2C)
  • 참고 :센서의 방향은 그림과 같습니다.

    핀 1(SDA) on sensor => 아날로그 핀 4 아두이노

    핀 2(SCL) on sensor => 아날로그 핀 5 아두이노

    8번 핀(GND) 센서 => GND 아두이노

    <울>
  • Arduino Nano-ESP8266(WiFi 모듈)
  • 참고 :모듈의 방향은 그림과 같습니다.

    핀 1 WiFi 모듈 => 디지털 핀 11 아두이노

    2번 핀 WiFi 모듈 => 디지털 핀 10 아두이노

    핀 7(GND) WiFi 모듈 => GND 아두이노

    핀 8(전원) WiFi 모듈 => 3v3 아두이노

    밴드 만들기

    작은 모든 구성 요소는 손목에 깔끔하게 맞습니다. 실제 밴드를 만들기 위해 Canvas를 사용했습니다. 및 거품 구성 요소를 포함합니다. 그런 다음 벨크로로 스트랩을 만듭니다.

    DIY 건강 밴드를 시작하려면 손 너비의 거품을 자르십시오. 그런 다음 다양한 센서를 정렬하고 최종 크기를 잘라냅니다. 모서리를 둥글게 처리하여 깔끔한 느낌을 줍니다. 폼에 핀을 누르고(보호 및 그립 제공) 배터리를 작은 슬롯에 삽입합니다.

    이제 밴드를 뒤집고 연결을 납땜하면 핀이 튀어나와야 합니다...테스트를 실행하여 모든 것이 제대로 작동하는지 확인하십시오.

    벨크로 스트립을 추가하여 스트랩을 만듭니다. 밴드를 캔버스에 감싼 후 핫 글루로 붙이면 깔끔한 마무리감과 느낌을 줍니다!

    3D 프린터가 없기 때문에 앞으로 이 프로토타입을 3D 인쇄로 업그레이드할 계획입니다. 이 프로토타입에는 모든 구성 요소를 위한 완벽한 슬롯이 있어 Health Band에 인체 공학적인 디자인을 제공합니다!

    ***최종 3d 인쇄 모델을 인쇄할 때 이 프로젝트를 사진과 인쇄 파일과 함께 업데이트할 예정입니다.***

    다양한 알고리즘 코딩

    시스템 프로그래밍을 시작하기 전에 프로그램이 작동하기 위해 설치해야 하는 특정 라이브러리가 있습니다. 다운로드해야 하는 라이브러리는 다음과 같습니다.

    <울>
  • Wire 라이브러리 (보통 사전 설치된 상태로 제공되며 이는 Arduino Nano와 DPS310 압력 센서 간의 통신을 담당합니다.) https://github.com/PaulStoffregen/Wire
  • <울>
  • DPS310 압력 센서 라이브러리 https://github.com/Infineon/DPS310-압력 센서
  • <울>
  • Blynk 라이브러리 (Arduino Nano가 Blynk 클라우드와 통신할 수 있도록) https://github.com/blynkkk/blynk-library
  • 각 라이브러리를 다운로드했으면 각각에 대한 설치가 동일한 프로세스를 따릅니다. Arduino IDE를 엽니다. 스케치로 이동 (창 상단). 그런 다음 드롭다운 목록에서 라이브러리 포함을 클릭합니다. . 다음으로 .ZIP 라이브러리 추가를 클릭합니다. . 이제 다운로드한 파일을 저장한 위치로 이동하고 열기를 클릭합니다. 세 개의 라이브러리 모두에 대해 이 과정을 반복합니다.

    이제 평가판 코드를 다운로드할 수 있습니다. 컴파일 여부를 확인합니다. Arduino Nano에 업로드하고 직렬 모니터 를 열어 실시간 데이터를 가져오는지 확인하십시오. (IDE의 오른쪽 상단 모서리에 있는 모니터 아이콘으로 표시됨).

    제대로 작동하면 메인 코드를 업로드하고 앱 빌드를 시작할 수 있습니다.

    앱 빌드

    인터넷에 연결하기 위해 우리는 안드로이드 플레이 스토어(아래 링크)에서 다운로드할 수 있는 Blynk라는 사전 구축된 플랫폼을 사용합니다. 파일로 이동하면 모두 사용할 수 있는 Arduino와 함께 앱을 사용하는 방법에 대한 수많은 예가 있습니다. Arduino IDE에서 예시 Blynk 목록 아래에 있습니다.

    blynk 앱 링크 :https://play.google.com/store/apps/details?id=cc.

    우리는 앱을 사용하여 사용자 친화적인 방식으로 데이터를 표현했습니다.

    Arduino Nano 선택 마이크로 컨트롤러 및 ''연결 유형'' WiFi . 그런 다음 코드에 입력해야 하는 "인증 토큰" 메일을 받게 됩니다(코드에 언급됨).

    게이지와 같은 여러 위젯을 추가했습니다. 실시간 온도를 나타내기 위해 값 표시 만보기 및 LCD 디스플레이용 현재 상태를 보여줍니다. 이것들은 다른 특정한 경우에 더 많은 기능을 추가할 수 있는 기본 빌딩 블록입니다.

    결론, 전체적으로 성공적!

    프로젝트에는 약간의 오류와 오독이 있었습니다. 하나는 체온이었다. HealthBand에서 판독한 값은 섭씨 36°(손목 온도)인 반면 의료용 온도계는 섭씨 36.8°(겨드랑이 온도)로 판독했습니다.

    단계에 대한 알고리즘은 처음에는 잘못된 카운트를 제공하는 것으로 판명되었지만 수정을 여러 번 시도한 후에는 오히려 정확하게 작동했습니다. 또 다른 문제는 상태 기능에 있었습니다. 다른 상태를 더 잘 이해할 수 있도록 더 많은 변수와 명령문을 추가했습니다.

    결국 우리는 재교정을 통해 문제를 해결할 수 있었고 HealthBand는 필요한 데이터를 성공적으로 수집했습니다. 우리 할머니는 지난 2주 동안 조수 없이 지내셨고 밴드는 잘 해냈어요!

    현재로서는 가을이나 발열 메시지가 테스트되지 않았으므로 그러한 상황은 없었지만 이론적으로는 작동합니다!

    이것은 훌륭한 프로젝트였으며 오히려 쉽게 구현할 수 있습니다. 이 밴드가 생명을 구하고 노인들을 안전하게 보호할 수 있기를 바랍니다!

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

    코드

    <울>
  • 데이터 테스트 생성
  • Blynk 애플리케이션이 포함된 HealthBand
  • 데이터 테스트 생성Arduino
    다양한 라이브러리가 설치되면 이 프로그램을 실행하여 모든 것이 작동하는지 확인하십시오. 직렬 모니터에서 데이터 또는 값의 라이브 스트림을 가져와야 합니다.
    #include void setup(){ Serial.begin(9600); 동안 (! 직렬); //초기화를 위한 호출 시작 ifxDps310 //매개변수 0x76은 버스 주소입니다. 기본 주소는 0x77이며 제공할 필요가 없습니다. //ifxDps310.begin(와이어, 0x76); //기본 I2C 주소를 사용하려면 대신 아래 주석 처리된 줄을 사용하십시오. ifxDps310.begin(와이어); // 중요 참고 사항 //DPS310이 약 60C의 온도를 표시하는 문제가 발생하면(실온) 약 20C여야 하지만 퓨즈 비트 문제가 있는 IC가 있는 것일 수 있습니다. //다음 함수를 직접 호출 이 문제를 해결하기 위해 begin() 이후에(시작 후 한 번만 호출해야 함) //ifxDps310.correctTemp(); //온도 측정 비율(0에서 7 사이의 값) //2^temp_mr 초당 온도 측정 결과 int temp_mr =2; //온도 오버샘플링 비율(0에서 7 사이의 값) //2^temp_osr 결과당 내부 온도 측정 //값이 높을수록 정밀도가 높아집니다. int temp_osr =2; //압력 측정 비율(0에서 7 사이의 값) //2^prs_mr 초당 압력 측정 결과 int prs_mr =2; //압력 오버샘플링 비율(0에서 7 사이의 값) //2^prs_osr 결과당 내부 압력 측정 //값이 높을수록 정밀도가 높아집니다. int prs_osr =2; //startMeasureBothCont는 백그라운드 모드를 활성화합니다. //온도와 압력은 자동으로 측정됩니다. //높은 정밀도와 hgh 측정 속도는 동시에 사용할 수 없습니다. //자세한 내용은 데이터시트(또는 시행착오)를 참조하십시오. int ret =ifxDps310.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr); //온도 또는 압력만 측정하려면 아래 주석 처리된 줄 중 하나를 대신 사용합니다. //int ret =ifxDps310.startMeasureTempCont(temp_mr, temp_osr); //int ret =ifxDps310.startMeasurePressureCont(prs_mr, prs_osr); if (ret !=0) { Serial.print("초기화 실패! ret ="); Serial.println(ret); } else { Serial.println("초기화 완료!"); }}void 루프(){ 부호 없는 char pressureCount =20; 긴 정수 압력[pressureCount]; unsigned char temperatureCount =20; long int 온도[temperatureCount]; //이 함수는 연속 측정 결과를 매개변수로 주어진 배열에 기록합니다. // 매개변수 temperatureCount 및 pressureCount는 함수가 호출될 때 배열의 온도 및 압력의 크기를 유지해야 합니다. //함수 종료 후, temperatureCount 및 pressureCount 배열에 기록된 값의 수를 유지합니다. //참고:Dps310은 32개 이상의 결과를 저장할 수 없습니다. 결과 버퍼가 가득 차면 새로운 측정 결과를 저장하지 않습니다. int ret =ifxDps310.getContResults(temperature, temperatureCount, pressure, pressureCount); if (ret !=0) { Serial.println(); 직렬.println(); Serial.print("실패! ret ="); Serial.println(ret); } else { 직렬.println(); 직렬.println(); Serial.print(온도 카운트); Serial.println(" 찾은 온도 값:"); for (int i =0; i  
    Blynk 애플리케이션이 포함된 HealthBandArduino
    이것은 최종 프로그램이며 건강 밴드가 잘 작동하고 의견을 따르고 조정하기 위해 수동으로 입력해야 하는 몇 가지 변수와 임계값이 필요합니다. 필요에 따라 Blynk 앱에서 위젯을 설정하면 어시스턴트가 활성화됩니다!
    #include #include #include #define BLYNK_PRINT Serialchar auth[ ] ="YourAuthToken";// WiFi 자격 증명.// 열린 네트워크의 경우 암호를 ""로 설정하십시오.char ssid[] ="YourNetworkName";char pass[] ="YourPassword";const unsigned char pressureLength =50;unsigned char pressureCount =0;long int pressure[pressureLength];unsigned char temperatureCount =0;const unsigned char temperatureLength =50;long int temperature[temperatureLength];/*이 임계값은 현재 위치에 따라 변경되며 이 값은 우리의 평균 온도가 섭씨 34도인 해안 지역*/int pressureFallingThresh =1;int pressureSleepingThresh =4;int tempFeverThresh =39;int pressureJogThresh =5;void setup(){ Serial.begin(9600); Blynk.begin(인증, ssid, 통과); 동안 (! 직렬); ifxDps310.begin(와이어); int ret =ifxDps310.setInterruptPolarity(1); ret =ifxDps310.setInterruptSources(1, 0, 0); //인터럽트 플래그를 클리어 ifxDps310.getIntStatusFifoFull(); 정수 인터럽트 핀 =3; 핀모드(인터럽트핀, 입력); attachInterrupt(digitalPinToInterrupt(interruptPin), onFifoFull, RISING); // 전과 같이 연속 측정 시작 int temp_mr =3; 정수 temp_osr =2; 정수 prs_mr =1; 정수 prs_osr =3; ret =ifxDps310.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr); if (ret !=0) { Serial.print("초기화 실패! ret ="); Serial.println(ret); } else { Serial.println("초기화 완료!"); }}무효 루프(){ Blynk.run(); Serial.println("루프 실행"); 지연(500); if (pressureCount ==pressureLength &&temperatureCount ==temperatureLength) { //결과 출력 Serial.println(); 직렬.println(); Serial.print(온도 카운트); Serial.println(" 찾은 온도 값:"); for (int i =0; i  tempFeverThresh){ 발열이메일(); } Serial.println("섭씨 온도"); } 직렬.println(); Serial.print(압력카운트); Serial.println(" 압력 값을 찾았습니다:"); for (int i =0; i   

    회로도


    제조공정

    1. 스마트 가전제품의 안전 표준 이해
    2. 스마트 블라인드
    3. IOT - ESP8266, Arduino 및 초음파 센서를 사용하는 스마트 항아리
    4. 아이언맨
    5. 나를 찾기
    6. Arduino를 사용하여 지구의 질량을 측정하는 방법
    7. Arduino 가습기 제어
    8. 스마트 제조를 위한 투자 회수 찾기
    9. 스마트 팩토리를 위한 소프트웨어:하드웨어 독립 소프트웨어의 장점
    10. 모든 경우에 사용할 수 있는 수동 밴드쏘