제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
| ||||
| ||||
|
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
|
왜 이 프로젝트를 합니까?
현재 시장에는 비전기 및 자동의 두 가지 유형의 알약 디스펜서가 있습니다. 그들 중 대부분은 알림 메커니즘이 있지만(시각 또는 감각 장애가 있는 사람들에게 항상 적합한 것은 아님) 두 유형 모두 일반적으로 매일 또는 매주 다른 구획에 알약을 정리하는 사람이 필요하므로 환자를 의존적인 사람으로 만듭니다. 요즘은 코로나19로 인해 가족이나 노인 보조원이 부양 가족을 돌보는 데 더 많은 어려움을 겪고 있습니다.
그렇기 때문에 수제 알약 정리가 필요하지 않고 장애인이 이용할 수 있으며 환자가 보다 독립적으로 생활할 수 있도록 도와주는 스마트 알약 디스펜서를 만들어야 할 필요성을 알게 되었습니다.
아래에서 2020년 최고의 알약 디스펜서 10가지를 보여드리겠습니다.
보시다시피, 필박스의 세계에는 개선할 점이 많습니다. 그리고 이것이 바로 SmartPill이 해결하고자 하는 것입니다.
어떻게 작동합니까?
SmartPill 시스템은 2개의 하위 시스템으로 구성됩니다.
<울>친절하고 친숙한 사용자 인터페이스가 있는 웹 응용 프로그램의 도움으로 의사는 각 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 프린터로 모든 부품을 인쇄하세요! 이 프로젝트는 완전히 오픈 소스입니다.
다음 섹션에서는 디스펜스 시스템을 조립하는 방법을 단계별로 설명합니다.
조립
<울>전자제품
주요 전자 두뇌는 알약을 분배하는 서보 모터와 Nextion 터치 스크린, 실시간 시계(RTC), 음향 효과 및 AVR-IoT 통신 보드를 제어하는 Arduino Mega입니다.
<울>프로젝트를 복제하려면 프로토보드 또는 자체 제작한 PCB를 사용하여 회로도에 설명된 대로 모든 연결을 수행해야 합니다. 위의 그림과 같이 일종의 나무판에 회로를 장착하는 것을 강력히 권장합니다.
회로도는 페이지 끝에서 찾을 수 있습니다.
SmartPill 웹 앱
SmartPill 웹 앱은 전자 장치를 설정하고 다른 사람의 약을 제어하는 경험을 용이하게 하는 것을 목표로 합니다.
<울>어떻게 개발되었나요?
처음부터 웹을 개발하려면 프로그래밍의 기본 영역인 백엔드와 프론트엔드를 사용합니다. Smartpill WebApp은 다음으로 생성되었습니다:
<울>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 앱의 가장 중요한 파일은 다음과 같습니다.
<울>const 경로:경로 =[
{
경로:'',
redirectTo:'페이지 로그인',
pathMatch:'전체'
},
{
경로:'페이지 구성',
loadChildren:() => import('./page-config/page-config.module').then(m => m.PageConfigPageModule)
},
{
경로:'페이지 상태',
loadChildren:() => 가져오기('./페이지 상태/페이지- status.module').then(m => m.PageStatusPageModule)
},
...
<울> 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의 도움으로 해당 기능을 수행합니다.
<울>{
경로:'pill/edit/:postId',
loadChildren:() => import('./page-edit-pill/page-edit-pill.module ').then(m => m.PageEditPillPageModule)
},
<울> 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?
'업데이트':
'자신의 생성'
}} 보증금
<울>
{{편집 ? '업데이트':'제출'}}
"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 테이블을 등록하는 것입니다.
<울>테이블 생성 클릭:
정확한 이름을 지정하고 기본 키로 "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' 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="코드">제조공정
구성품 및 소모품 Arduino Nano R3 × 1 라즈베리 파이 제로 무선 × 1 이 프로젝트 정보 스마트 부표 요약 블로그 게시물 안녕하세요 여러분! 이것은 우리의 스마트 부표 프로젝트에 대한 간략한(ish) 요약입니다. 기술 빌드를 전자 제품, 3D 프린트 및 대시보드와 같은 별도의 게시물로 나누어 설명하겠습니다. 당신은 필요 완전한 스마트 부표 제작을 위해서는 많은 것들이 필요합니다. 관련 튜토리얼에서 빌드의 각 단계에 필요한 특정 재료에 대한 분석을
구성품 및 소모품 Arduino Mega 2560 × 1 NEO 6 GPS × 1 Adafruit SD 카드 실드 × 1 Adafruit SD 카드 실드 × 1 Seeedstudio gprs 방패 V2.0 × 1 시드 GPRS Shield V2.0 × 1 점퍼 와이어(일반) × 1 9V 배터리(일반) × 1 상자 × 1 상자 × 1 이 프로젝트 정