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

스마트 알약 디스펜서

구성품 및 소모품

Microchip Technology AVR-IoT WA 개발 보드
× 1
Arduino Mega 2560
× 1
SG90 마이크로 서보 모터
× 4
Itead Nextion NX8048T070 - 일반 7.0" HMI TFT LCD 터치 디스플레이
× 1
Adafruit 16채널 12비트 PWM/서보 드라이버 I2C
× 1
스피커:0.25W, 8옴
× 1
Adafruit 포토 트랜지스터 IR 광 센서
× 4
Adafruit 5mm IR LED - 940nm
× 4
초음파 센서 - HC-SR04(일반)
× 1
시차 피드백 360° 고속 서보
× 1
Adafruit 5V 2A 스위칭 벽면 전원 공급 장치
× 1

필요한 도구 및 기계

3D 프린터(일반)
납땜 인두(일반)
납땜 와이어, 무연

앱 및 온라인 서비스

Microchip Technology MPLAB X IDE
Arduino IDE
오토데스크 퓨전 360
Amazon Web Services AWS IoT
Amazon 웹 서비스 AWS DynamoDB
Amazon Web Services AWS API 게이트웨이
Amazon Web Services AWS Lambda
Microsoft VS 코드

이 프로젝트 정보

왜 이 프로젝트를 합니까?

현재 시장에는 비전기 및 자동의 두 가지 유형의 알약 디스펜서가 있습니다. 그들 중 대부분은 알림 메커니즘이 있지만(시각 또는 감각 장애가 있는 사람들에게 항상 적합한 것은 아님) 두 유형 모두 일반적으로 매일 또는 매주 다른 구획에 알약을 정리하는 사람이 필요하므로 환자를 의존적인 사람으로 만듭니다. 요즘은 코로나19로 인해 가족이나 노인 보조원이 부양 가족을 돌보는 데 더 많은 어려움을 겪고 있습니다.

그렇기 때문에 수제 알약 정리가 필요하지 않고 장애인이 이용할 수 있으며 환자가 보다 독립적으로 생활할 수 있도록 도와주는 스마트 알약 디스펜서를 만들어야 할 필요성을 알게 되었습니다.

아래에서 2020년 최고의 알약 디스펜서 10가지를 보여드리겠습니다.

보시다시피, 필박스의 세계에는 개선할 점이 많습니다. 그리고 이것이 바로 SmartPill이 해결하고자 하는 것입니다.

어떻게 작동합니까?

SmartPill 시스템은 2개의 하위 시스템으로 구성됩니다.

<울>
  • 스마트필 디스펜서: 알약을 정리, 저장 및 분배하는 물리적 장치입니다. 이는 환자의 주요 인터페이스 역할을 합니다.
  • Smartpill 웹 앱: 의사나 환자 담당 담당자가 환자 섭취량을 구성하고 추적할 수 있는 웹 사용자 인터페이스입니다.
  • 친절하고 친숙한 사용자 인터페이스가 있는 웹 응용 프로그램의 도움으로 의사는 각 Smartpill 디스펜서에 대해 최대 4개의 다른 알약을 구성할 수 있으며 각 알약에 대해 하루에 최대 3개의 섭취를 선택할 수 있습니다. 이를 통해 의사는 환자 자신의 개입 없이 필요할 때마다 원격으로 용량을 변경할 수 있습니다.

    SmartPill 시스템은 노인성 치매, 알츠하이머 또는 시각 또는 청각 장애가 있는 환자가 겪을 수 있는 어려움을 고려하여 설계되었습니다. 이러한 이유로 디스펜서에는 환자가 편안한 방식으로 알약을 채울 수 있는 대형 화면과 적절한 시간에 알약을 복용하도록 환자에게 상기시키는 가청 및 가벼운 피드백이 있습니다.

    사용자는 다양한 알약을 어디에, 어떻게 넣어야 하는지에 대해 걱정할 필요가 없습니다. 알약 디스펜서 내부에 알약을 분배하고 필요한 양을 적시에 분배하는 스마트 메커니즘이 있기 때문입니다.

    SmartPill Dispenser는 Microchip AVR-IoT 보드의 WiFi 연결 덕분에 AWS 클라우드에 무선 인터넷 연결을 제공하므로 웹 애플리케이션을 통해 원격으로 모니터링 및 구성할 수 있습니다.

    또한 앱은 알약을 언제 복용했는지 표시하고 알약을 복용하지 않으면 가족에게 알립니다.

    SmartPill 디스펜서

    분배 시스템

    분배 시스템이 어떻게 작동하는지 궁금할 수 있습니다. 이 섹션에서는 다양한 부분을 모두 보여주고 그 기능을 설명합니다.

    화면 외에 모든 것이 PLA 플라스틱으로 3D 인쇄되었음을 분명히 해야 합니다. 아래에서 전체 디스펜서의 .STL 파일을 확인할 수도 있습니다.

    1. 베이스 :디스펜서의 나머지 부분을 지지합니다. 모션 센서를 작동시키기 위해 두 개의 구멍이 있습니다. 알약을 컵에 넣는 덮개가 있습니다.

    2. 슬라이더 :슬라이더 상단이 알약 용기를 지지합니다. 그 아래에는 알약이 플랩까지 내려가는 경사가 있습니다. 바닥에는 모든 전자 제품을 넣을 수 있는 틈이 있습니다.

    3. 측면 부품 :습기, 온도, 오물 및 먼지로부터 하드웨어 및 알약을 보호하는 데 사용됩니다.

    4. 넥스티온 NX8048T070 :디스펜서와 사용자 사이의 인터페이스로 사용되는 화면입니다.

    5. 상단 부분 :

    <울>
  • 습도, 온도, 오물 및 먼지로부터 하드웨어 및 알약을 보호하는 데 사용됩니다(상단).
  • 드럼을 알약 용기에서 분리합니다(하단).
  • 6. 시차 서보 900-0005 :부품 번호 7을 올바른 위치에 배치하는 360º 전기 모터.

    7. 드럼 :외부와 알약 용기를 연결하는 연결관입니다. 올바른 컨테이너에 도달하기 위해 회전합니다.

    8. 뒷문 :슬라이더로 알약 용기를 드나들 때 필요합니다.

    9. 스피커 :필요한 모든 정보를 사용자에게 전달합니다.

    10. 초음파 센서 - HC SR04 :이 장치는 컵이 옮겨졌는지 감지합니다.

    11. 알약 용기 :알약이 들어있어 적시에 적당량을 덜어줍니다. 프로토타입으로 4개의 용기가 있는 알약 디스펜서를 설계했습니다. 그러나 더 큰 용량에 맞게 조정할 수 있습니다.

    나만의 SmartPill 디스펜서를 원하십니까? 맨 아래에 있는 STL 파일을 다운로드하고 3D 프린터로 모든 부품을 인쇄하세요! 이 프로젝트는 완전히 오픈 소스입니다.

    다음 섹션에서는 디스펜스 시스템을 조립하는 방법을 단계별로 설명합니다.

    조립

    <울>
  • 슬라이더를 3d 인쇄하려면 (2부 - 일반 도면) 우리는 그것을 세 부분으로 나누었습니다. 그래서 우선 조립을 합니다. 견과류 선택(2.3.2 - 슬라이더 그리기 ) 슬라이더(2.2 - 슬라이더 그리기 ) 용접기로. 그런 다음 두 부품(2.3.1 &2.2 - 슬라이더 그리기 ). 캡을 놓을 때까지 기다리십시오. (2.4 - 슬라이더 그리기) 전자가 연결될 때까지.
  • <울>
  • 을(를) 포함하여 슬라이더의 틈 안에 전자 제품을 넣습니다. 초음파 센서 - HC SR4 (10부 - 일반 도면) 슬라이더 덮개(2.4)를 조입니다.
  • 약 용기 조립(약 용기 도면 참조) ) 각각 SG90 서보로. 먼저 파트 1과 파트 7에 참여 SG90을 파트 7에 나사로 고정합니다. . 그런 다음 파트 3을 파트 4(휠 베어링)와 결합하고 마지막으로 파트 2를 추가합니다. 그런 다음 알약 용기를 슬라이더의 상단에 나사로 고정합니다. (파트 2 - 일반 도면) .
  • <울>
  • 스크린을 조입니다. (4부 - 일반 도면) 적절한 측면 부분에 연결하고 플러그를 끼웁니다. 그런 다음 Sider 부품을 함께 맞춥니다. (3부 - 일반 도면) 클릭할 때까지 베이스로 이동합니다.
  • 두 개의 상단 부분이 있습니다( (파트 5 - 일반 도면) . 너트를 다시 따서 부품에 끼워 조립합니다. 이번에는 용접기가 필요하지 않습니다. 드럼 맞추기(7부 - 일반 도면) 및 Parallax Servo (6부 - 일반 도면) 그들 사이에 그리고 우리는 두 상단 부분을 함께 나사로 조입니다.
  • 마지막으로 뒷문을 조입니다 (8부). - 일반 도면) 상단 부품 어셈블리에.
  • 전자제품

    주요 전자 두뇌는 알약을 분배하는 서보 모터와 Nextion 터치 스크린, 실시간 시계(RTC), 음향 효과 및 AVR-IoT 통신 보드를 제어하는 ​​Arduino Mega입니다.

    <울>
  • AVR-IoT는 직렬 UART 연결을 통해 Arduino Mega에 연결됩니다.
  • 서보 모터는 PWM으로 제어됩니다.
  • RTC는 I2C로 Arduino Mega에 연결됩니다.
  • 알약을 감지하기 위한 IR 차단 센서는 Arduino 보드의 아날로그 핀에 연결됩니다.
  • 프로젝트를 복제하려면 프로토보드 또는 자체 제작한 PCB를 사용하여 회로도에 설명된 대로 모든 연결을 수행해야 합니다. 위의 그림과 같이 일종의 나무판에 회로를 장착하는 것을 강력히 권장합니다.

    회로도는 페이지 끝에서 찾을 수 있습니다.

    SmartPill 웹 앱

    SmartPill 웹 앱은 전자 장치를 설정하고 다른 사람의 약을 제어하는 ​​경험을 용이하게 하는 것을 목표로 합니다.

    <울>
  • 환자 정보, 복용해야 하는 알약, 필요한 복용량 및 시간 간격이 포함된 간편한 SmartPill 디스펜서 설정
  • 알약 섭취 모니터링.
  • 어떻게 개발되었나요?

    처음부터 웹을 개발하려면 프로그래밍의 기본 영역인 백엔드와 프론트엔드를 사용합니다. Smartpill WebApp은 다음으로 생성되었습니다:

    <울>
  • 백엔드. AWS API 게이트웨이(HTTT API 나머지).
  • 프런트엔드. 아이오닉 &앵귤러. 처음부터 웹을 개발하려면 프로그래밍의 기본 영역인 백엔드와 프론트엔드를 사용합니다.
  • Ionic은 iOS 및 Android용 기본 구성 요소 라이브러리를 통해 플랫폼별 UI 요소를 제공하는 AngularJS를 기반으로 하는 완전 무료 오픈 소스 NodeJS 프레임워크입니다. 애플리케이션 개발을 위해 HTML, CSS, JavaScript 및 Angular와 같은 프론트 엔드 기술을 사용합니다. Ionic은 Angular CLI(명령줄 인터페이스)를 사용하여 완벽하게 작동하는 모바일 애플리케이션을 만들 수 있습니다.

    Ionic으로 웹을 시작하기 전에 Node.js가 작동하도록 설치해야 합니다. Ionic은 대규모 JavaScript 에코시스템의 일부이기 때문입니다.

    Ionic Framework Documentation 페이지는 앱 시작 내에서 문제 없이 안내할 수 있습니다. 그러나 Smartpill 앱을 만들기 위해 따라야 하는 첫 번째 단계를 간략하게 언급하겠습니다.

    1. 코드 편집기의 명령줄로 이동하여 npm을 사용하여 ionic CLI를 설치합니다.

    $ npm install -g @ionic/cli 

    2. 새 앱 만들기:

    $ ionic start smartpill-webui 공백 

    3. 프론트엔드 폴더로 이동하여 실행합니다.

    $ cd smartpill-webui
    $ 이온 서브

    앱을 실행하면 기기의 브라우저에서 앱을 테스트할 수 있습니다. 이 Ionic 기능은 디버깅 및 테스트에 필수적입니다.

    Smartpill 웹 앱 기본 구조.

    Smartpill Web App은 탐색을 단순화하기 위해 간단한 방식으로 구성되어 있습니다. 앱의 폴더 내에서 앱 라우팅 모듈, 앱 구성 요소 파일, "services" 폴더 및 각 경로에 대한 폴더를 찾을 수 있습니다.

    프론트엔드 기술을 접한 적이 없다면 이 코드의 개요에서 다른 언어가 서로 상호 작용하는 방식을 알 수 있습니다. 그러나 작동 방식을 간략하게 설명하면 웹에서 볼 수 있는 부분은 폴더의 html 파일이고 typescript 파일은 사용자가 페이지와 상호 작용할 때 실행되는 기능입니다. module.ts는 라우팅을 위한 것입니다.

    Smartpill 앱의 가장 중요한 파일은 다음과 같습니다.

    <울>
  • app-routing.module.ts. 이를 통해 사용자는 사용 가능한 모든 다른 경로를 탐색할 수 있습니다. 특정 경로를 사용하면 웹 개발자가 한 경로에서 다른 경로로 변수를 전달할 수 있습니다.
  • const 경로:경로 =[
    {
    경로:'',
    redirectTo:'페이지 로그인',
    pathMatch:'전체'
    },
    {
    경로:'페이지 구성',
    loadChildren:() => import('./page-config/page-config.module').then(m => m.PageConfigPageModule)
    },
    {
    경로:'페이지 상태',
    loadChildren:() => 가져오기('./페이지 상태/페이지- status.module').then(m => m.PageStatusPageModule)
    },
    ...
    <울>
  • post.service.ts. API와 통신합니다. 여기서 기본 인터페이스는 PostService 클래스와 함께 정의됩니다(Post, Dep 및 Log). PostService에는 API와 통신하기 위한 주요 기본 기능이 있습니다. API에서 정보를 수신하는 get 기능; API에서 새 기사를 작성하기 위해 게시합니다. 삭제, 기사를 삭제하기 위해; 인터페이스에서 기존 기사를 편집하지만 여기에 포함된 이전 데이터는 삭제합니다.
  • getPosts() {
    return this.http.get(this.API);
    }

    getDeposit() {
    return this.http.get(this.DEPOSIT);
    }


    getLogs(){
    return this.http.get (this.LOGS);
    }

    createPost(pill:string, 보증금:string, weight:string, 아침:불리언, 오후:불리언, 밤:불리언) {
    return this.http.post(this.API, {
    알약,
    보증금,
    체중,
    아침,
    오후,
    밤,
    });
    }

    removePost(id:string) {
    return this.http.delete(` ${this.API}/${id}`);
    }
    ...

    알약 페이지 구성 및 수정
    Smartpill에는 "page-config"라는 프로그래밍된 모든 게시물을 표시하기 위한 전용 경로가 있습니다. 알약을 구성하기 위한 새 게시물을 작성하려면 사용자가 오른쪽 하단 모서리에 있는 버튼을 눌러야 편집 페이지 "page-edit-pill"로 경로가 변경됩니다. 그러나 그들이 생성하기를 원하지 않고 편집하기를 원할 경우 이미 생성된 게시물의 편집 버튼을 누르면 웹에서도 게시물의 id를 포함하지만 "page-edit-pill"로 리디렉션됩니다. 이 두 문장은 다음과 같이 정의됩니다.

    <울>
  • 새 게시물 만들기 버튼




  • <울>
  • 게시물 수정 버튼


  • 수정

    "page-edit-pill" 페이지는 사용자가 id 유무에 관계없이 경로를 입력했는지 인식하고 간단한 ifs의 도움으로 해당 기능을 수행합니다.

    <울>
  • 경로 모듈에 ID가 정의된 경로
  • {
    경로:'pill/edit/:postId',
    loadChildren:() => import('./page-edit-pill/page-edit-pill.module ').then(m => m.PageEditPillPageModule)
    },
    <울>
  • 경로에 ID가 있는지 읽기
  • ngOnInit() {
    this.actiavtedRoute.paramMap.subscribe((paramMap) => {
    if(ParamMap.get("postId")) {
    this. postService
    .getPostById(paramMap.get("postId"))
    .subscribe((res) => {
    this.post =res;
    this.editing =true;
    });
    }
    });
    }
    <울>
  • 표시 예

  • {{editing?
    '업데이트':
    '자신의 생성'
    }} 보증금
    <울>
  • If 버튼의 예

  • {{편집 ? '업데이트':'제출'}}

    "edit-pill-page"는 입력 및 선택과 같은 이온 UI 구성 요소로 사용자와 상호 작용하며 나중에 API로 전송됩니다.

    <울>
  • 시간 다중 선택

  • 시간을 선택하려면 여기를 클릭하십시오.
    cancelText="취소" okText="Submit">
    아침
    오후


    <울>
  • 알약 투입

  • 알약 이름:

    "config-page"는 Angular Life Cycle로 프로그래밍되었으므로 "page-edit-pill"이나 다른 페이지에서 돌아올 때 페이지가 새로 고쳐지고 게시물이 다시 로드되어 변경 사항이 자동으로 업데이트됩니다. <울>

  • 게시물 로드 기능
  • loadPosts(){
    this.postService.getPosts().subscribe(
    (res) => {
    this.posts =res;
    },
    (err) => console.log(err)
    );
    this.postService.getDeposit().subscribe(
    (res) => {
    this .dep =res;
    console.log(this.dep);
    };
    (err) => console.log(err)
    );

    "구성 페이지"에는 사용자가 알약을 삭제할 수 있는 버튼도 있습니다. 이 동작을 확신하는지 확인하기 위해 메시지 알람을 표시하는 비동기 기능입니다.

    <울>
  • 게시물 삭제
  • async removePost(id:string){
    const alert=await this.alertController.create({
    header:"Alert",
    subHeader:"정말 하시겠습니까? 이 보증금을 삭제하시겠습니까?",
    메시지:"복구할 수 없습니다.",
    버튼:[
    "취소",
    {
    텍스트:"예",
    핸들러:() => {
    this.postService.removePost(id).subscribe(
    (res) => {
    console.log (res);
    this.loadPosts();
    },
    (err) => console.log(err)
    );
    },
    },
    ],
    });
    alert.present()를 기다립니다;
    }

    로그 페이지

    로그 페이지는 조제된 알약의 정보를 가져와 이력 경로에 로그로 표시합니다. "config-page"와 유사하게 작동하지만 API에 있는 정보만 로드합니다.

    <울>
  • 로그 가져오기
  • loadPosts() {
    this.postService.getLogs().subscribe(
    (res) => {
    this.log =res;
    콘솔. log(this.log);
    },
    (err) => console.log(err)
    );
    }

    ngOnInit() {
    this.loadPosts();
    }

    ionViewWillEnter(){
    this.loadPosts();
    }
    <울>
  • 로그 표시








  • {{ log.date | 날짜:'dd/MM/yyy' }} - {{ log.date | 날짜:'HH_mm' }}시간


    {{log.patient_name}}


    {{log.pills}}






    아마존 웹 서비스

    AWS는 동일한 에코시스템 내에서 광범위한 서비스를 제공하므로 완전한 서버리스 접근 방식을 취할 수 있도록 SmartPill System을 배포하기로 선택한 서비스 제공업체입니다. 이렇게 하면 애플리케이션이 사용자의 필요에 따라 에스컬레이션되고 사용한 만큼만 비용을 지불할 수 있습니다.

    스마트필 클라우드 아키텍처

    Smartpill 시스템은 Amazon Web Services를 사용하는 완전한 서버리스 아키텍처를 사용합니다. 이를 통해 사용자의 요구에 맞게 애플리케이션을 확장 및 축소할 수 있습니다. 아키텍처는 아래 다이어그램에 설명되어 있습니다.

    Smartpill 디스펜서는 WiFi 기능이 있는 Microchip AVR-IoT 보드를 사용하여 AWS 에코시스템과 통신합니다. AVR-IoT는 MQTT 프로토콜을 통해 AWS IoT Core를 통해 연결됩니다. 이를 통해 클라우드 생태계와 하드웨어 자체 간의 양방향 연결이 가능합니다. 이 통신은 디스펜서에 디스펜서 메시지를 보내고 디스펜서에서 클라우드로 확인 이벤트를 보내는 데 사용됩니다.

    Ionic Angular NodeJS 프레임워크를 사용하여 개발된 웹 애플리케이션 프론트엔드가 컴파일되고 정적 파일이 AWS S3 스토리지 서비스에 업로드됩니다. 웹 애플리케이션의 백엔드는 Lambda 함수를 호출하는 AWS API Gateway로 개발된 HTTT API Rest 서비스입니다. 이러한 Lambda 함수는 알약 구성 및 섭취 로그를 저장하는 DynamoDB 데이터베이스와 통신합니다.

    AWS Event Bridge는 정확한 시간에 분배 이벤트를 트리거하기 위해 스케줄러로 사용됩니다. 이 이벤트는 각 섭취에 필요한 알약을 데이터베이스에서 검색하고 IoT Core를 통해 이 정보를 SmartPill 디스펜서로 보내는 Lambda 함수를 트리거합니다.

    AWS-IoT 핵심

    AWS IoT Core로 AVR-IoT 보드를 실행하기 위해 가장 먼저 해야 할 일은 보드를 AWS 계정에 연결하는 것입니다. 이 프로세스는 AWS용 IoT 개발자 안내서에서 Microchip에 의해 설명되어 있습니다.

    이를 통해 AVR-IoT 보드를 AWS 계정에 등록할 수 있습니다. 관리 아래의 AWS IoT Core에서 이를 확인할 수 있습니다. 사물 탭.

    그런 다음 시작 안내서에 설명된 대로 WiFi 자격 증명으로 구성하여 AVR-IoT 보드가 인터넷에 액세스할 수 있는지 확인하십시오.

    AWS DynamoDB

    그런 다음 웹 애플리케이션을 구성하고 싶을 것입니다. 이를 위해 가장 먼저 해야 할 일은 웹 앱에 필요한 DynamoDB 테이블을 등록하는 것입니다.

    <울>
  • smartpill-history:복용한 알약에 대한 모든 로그를 저장합니다.
  • smartpill-pills:구성된 알약을 저장합니다.
  • 테이블 생성 클릭:

    정확한 이름을 지정하고 기본 키로 "id"를 선택하십시오.

    AWS 람다

    AmazonDynamicDBFullAccess가 연결되어 있는지 확인합니다. Lambda 함수가 DynamoDB 데이터베이스에서 읽기/쓰기를 할 수 있도록 합니다. 이를 위해 권한 탭으로 이동하십시오.

    그리고 역할 이름을 클릭합니다. 그러면 이 Lambda 함수에 대한 실행 역할로 리디렉션됩니다. 각 Lambda 함수에는 고유한 실행 역할이 있는 것이 좋습니다.

    정책 연결을 클릭하고 "dynamodb"를 검색하지 않는 경우 AmazonDynamoDBFullAccess가 나타나야 합니다.

    Lambda 함수에 전체 DynamoDB 액세스 권한을 부여하는 것은 이 자습서의 목적을 위해서만 안전하며 프로덕션 환경에서는 수행되지 않습니다.

    이제 구성으로 이동하여 Github 저장소(아래 링크)에서 기능 코드를 추가합니다.

    리포지토리의 모든 Lambda 함수에 대해 이 작업을 반복합니다.

    그런 다음 보드에서 메시지를 보낼 때 적절한 기능이 실행되도록 Lambda와 IoT Core 간의 통합을 구성합니다.

    AVR-IoT에서 보낸 디스펜스 메시지 확인을 데이터베이스에 해당 로그 항목 및 알림이 생성될 수 있도록 구성합니다.

    AWS-IoT Core로 이동하여 Add and Rules를 클릭하여 규칙을 구성합니다.

    새 규칙 만들기를 클릭하고 이름 지정:smartpill_confirmationpill 및 간단한 설명

    그런 다음 다음 쿼리 문을 입력합니다.

    SELECT * FROM 'confirmationpill' 

    이전에 생성된 'smartpill-confirmationpill'을 가리키도록 'Lambda 함수에 메시지 보내기' 작업을 구성합니다.

    다음 부분으로 이동할 준비가 되었습니다.

    AWS 이벤트 브리지

    Event Bridge는 정확한 시간에 알약을 분배하기 위해 SmartPill 디스펜서에 메시지를 보내는 람다 기능 시작을 처리합니다. 이를 위해 3개의 트리거 예약 이벤트를 구성합니다. 아침에 하나, 오후에 하나, 야간에 하나.

    AWS Event Bridge 서비스로 이동하여 "규칙 생성"을 클릭합니다.

    이름을 지정하고 일정 이벤트 패턴을 cron 표현식으로 구성합니다.

    NOTE:Take into account that these cron expressions are in UTC time.

    Select the 'smartpill-dispensepill' Lambda function as a Target:

    This Lambda function will be executed at the defined time.

    Define two more Rules for the desired time on morning, afternoon and night intakes.

    AWS API Gateway

    Go to AWS API Gateway and click on Create API. Choose HTTP API and click on Build:

    Give it "smartpill-webui" as a name (or whatever you want, this do not really matters)

    And configure all the Lambda functions as Integrations:

    Click Next and configure all the routes as specified in table below:

    Finally, deploy the API to get a HTTP endpoint.

    Alternatively you can import the JSON file 'smartpill-api.json' on the repository down below.

    AWS S3

    AWS S3 storage service is made for storing files but it can also act as a static web server for example a web page. In order to do so, you first need to create a Bucket.

    Go to S3 and Click on "Create a Bucket":

    Give a friendly name (this will be your DNS).

    Now you will have to activate Static website hosting feature. Go to properties and go straight to the bottom. You will find this:

    Click on "Edit" and Enable the Static website hosting feature and select 'index.html' as your index and error document:

    Then upload your website static files that Angular has compiled and access your DNS. You are ready to go!

    AVR-IoT Board

    AVR-IoT board from Microchip is used as a communication interface in order to provide connectivity to the Cloud to the Dispenser. It is connected to the Main Arduino Board by means of a Serial interface.

    Firmware for the AVR-IoT WA Development Board based on the original example

    The already implemented CLI have been extended including the command "pill" , its corresponding callback pill_command() that parses the message and sends th confirmation JSON by MQTT to the topic "confirmationpill". Also, the message in case of unknown message is customized as well as in the callback in case of incorrect parameter.

    The original CLI used the USART2, which is connected to the debugger by the PCB but is not accessible. For this version, the CLI structure and the funtionality printf() are now implemented on the USART1, which is avaliable with the pin conectors RX and TX . This alows us to use this CLI with any external device, taking into account the following configuration:

    We have also managed to add a custom MQTT topic subscription with a JSON parser. On the aplication_manager.c could be found the modified version of subscribeToCloud() to subscribe to "dispensepill" custom topic and how it is linked to a custom callback receiveddispenseFromCloud() in which the data from the JSON is extracted.

    On IoTPill.h header are defined the main structures used to control the data received and sent.

    In order to enable communication between the Main Arduino board and the AVR-IoT we have developed a simple communication bidirectional protocol that has two messages.

    <울>
  • dispensepill: Will be triggered by AWS Event Bridge at the right time and will send the event to the Dispenser to dispense a pill
  • confirmationpill :Will be send by the AVR-IoT board when the pill has been correctly dispensed in order to announce it to the AWS, which will log into the database.
  • 'dispensepill' message (AWS → IoT Board → Arduino)

    Event Bridge will trigger the smartpill-dispensepill Lambda function to send by MQTT to IoT Board a JSON formated string that has this fields:

    {
    "cmd":"dispensepill",
    "npills":2,
    "intake":{
    "time":"morning"
    },
    "pills":{
    "1":{
    "pill":"Ibuprofeno",
    "qty":1,
    "deposit":1,
    "weight":200
    },
    "2":{
    "pill":"Paracetamol",
    "qty":2,
    "deposit":2,
    "weight":500
    }
    }
    }

    and the IoT board will send by USART to the Arduino:

    D Ibuprofeno 1 1 200 D Paracetamol 2 2 500 \n 

    'confirmationpill' messageArduino → IoT Board → AWS

    The arduino will send to the command "pill " and, if the delivery was incorrect or correct, it will add a ' 1 ' if it was okay:

    pill 1 

    This message will be processed by the custom CLI of the IoT Board taking into account the intake previusly send ( specifying the corresponding "time") and it will send the following JSON to AWS:

    {
    "time":"morning",
    "state":"ok"
    }

    AWS will send the log with Lambda functions triggered to the Web service

    Any questions? Leave a comment below and we will do our best to help you!

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

    코드

    Smartpill Web Application
    Frontend code for the webapp user interfacehttps://github.com/makers-upv/smartpill-webui
    Smartpill Backend Lambda functions
    https://github.com/makers-upv/smartpill-lambda
    Smartpill AVR-IoT Code
    https://github.com/makers-upv/smartpill-avriot
    Smartpill Arduino Code
    https://github.com/makers-upv/smartpill-arduinofw

    맞춤형 부품 및 인클로저

    Thingiverse Repository
    Thingiverse Repository for SmartPill DispenserCAD file on thingiverse.com Pill Dispenser Mechanism that will take care of dispensing the correct quantity of pills. It is controlled by a servo.SmartPill Dispenser enclousureThe full assembly of the project. It's in STEP format so it can be modified by everyone. smartpill_full_assembly_ybV7DD7ehX.step

    회로도

    SmartPill Electronics HW connections

    제조공정

    1. 수면제
    2. 피임약
    3. Smart Bartender
    4. 스마트 신호등
    5. 스마트 쓰레기통
    6. 스마트 플랜트 IoT
    7. UnifiedWater v1
    8. 스마트 블라인드
    9. 오토데스크 스마트 제조
    10. 스마트 제조란 무엇입니까?