Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Slimme pildispenser

Componenten en benodigdheden

Microchip-technologie AVR-IoT WA-ontwikkelbord
× 1
Arduino Mega 2560
× 1
SG90 Micro-servomotor
× 4
Itead Nextion NX8048T070 - Generic 7.0" HMI TFT LCD-aanraakscherm
× 1
Adafruit 16-Channel 12-bit PWM/Servo Driver I2C
× 1
Luidspreker:0,25 W, 8 ohm
× 1
Adafruit Photo Transistor IR-lichtsensor
× 4
Adafruit 5 mm IR LED - 940nm
× 4
Ultrasone sensor - HC-SR04 (algemeen)
× 1
Parallax Feedback 360° High-Speed ​​Servo
× 1
Adafruit 5V 2A schakelende muurvoeding
× 1

Benodigde gereedschappen en machines

3D-printer (algemeen)
Soldeerbout (algemeen)
Soldeerdraad, loodvrij

Apps en online services

Microchip-technologie MPLAB X IDE
Arduino IDE
Autodesk Fusion 360
Amazon Web Services AWS IoT
Amazon Web Services AWS DynamoDB
Amazon Web Services AWS API Gateway
Amazon Web Services AWS Lambda
Microsoft VS-code

Over dit project

Waarom dit project?

Momenteel zijn er twee soorten pillendispensers op de markt:niet-elektrische en automatische. Hoewel de meeste van hen een herinneringsmechanisme hebben (niet altijd geschikt voor mensen met visuele of zintuiglijke beperkingen), vereisen beide typen normaal gesproken een persoon die de pillen dagelijks of wekelijks in verschillende compartimenten organiseert, waardoor de patiënt een afhankelijke persoon wordt. Door Covid-19 hebben familieleden of assistenten van ouderen tegenwoordig meer moeite om voor afhankelijke personen te zorgen.

Daarom zagen we de noodzaak om een ​​slimme pillendoos te maken die geen handgemaakte pillendoos nodig heeft, toegankelijk is voor mensen met een handicap en die de patiënten kan helpen onafhankelijker te worden.

Hieronder laten we je de 10 beste pillendispensers van 2020 zien:

Zoals je kunt zien, valt er veel te verbeteren in de wereld van bunkers. En dit is precies wat SmartPill gaat oplossen.

Hoe het werkt?

SmartPill-systeem bestaat uit 2 subsystemen:

  • Smartpill-dispenser: Fysiek apparaat dat de pillen organiseert, bewaart en afgeeft. Het zal fungeren als de belangrijkste interface voor de patiënt.
  • Smartpill-webapp: Webgebruikersinterface waarmee de arts of de verantwoordelijke persoon voor de patiënt de opnames van de patiënt kan configureren en volgen.

Met behulp van de webapplicatie met een mooie gebruiksvriendelijke interface, kan de arts tot 4 verschillende pillen configureren voor elke Smartpill Dispenser en zal hij tot 3 innames per dag voor elke pil selecteren. Hierdoor kan de arts de dosering op afstand wijzigen wanneer dat nodig is zonder tussenkomst van de patiënt zelf.

Het SmartPill-systeem is ontworpen rekening houdend met de moeilijkheden die een patiënt met seniele dementie, Alzheimer of visuele of auditieve beperkingen kan hebben. Om deze reden heeft de dispenser een groot formaat scherm waarmee de patiënt de pillen op een comfortabele manier kan vullen, evenals een hoorbare en lichte feedback die de patiënt eraan herinnert de pillen precies op het juiste moment in te nemen.

De gebruiker hoeft zich geen zorgen te maken over waar of hoe de verschillende pillen moeten worden geplaatst. Dat komt omdat er een slim mechanisme is dat de pillen in de pillendispenser verdeelt en de benodigde dosis op het juiste moment afgeeft.

SmartPill Dispenser heeft een draadloze internetverbinding met de AWS Cloud dankzij de wifi-verbinding van het Microchip AVR-IoT-bord, zodat deze op afstand kan worden gecontroleerd en geconfigureerd via de webapplicatie.

De app laat ook zien wanneer de pillen zijn ingenomen en stelt het gezinslid op de hoogte als de pil niet wordt ingenomen.

SmartPill-dispenser

Doseersysteem

U vraagt ​​zich misschien af, hoe werkt het doseersysteem? Dit gedeelte toont alle verschillende onderdelen en legt hun functionaliteit uit.

We moeten verduidelijken dat behalve het scherm, alles 3D is geprint met PLA Plastic. U kunt hieronder ook het .STL-bestand van de hele dispenser bekijken.

1. Basis :Het ondersteunt de rest van de dispenser. Het heeft twee gaten om de bewegingssensor functioneel te maken. Het bevat een flap die de pillen in de beker brengt.

2. Schuifregelaar :De bovenkant van de schuif ondersteunt de pillendoosjes. Daaronder is een helling waarin de pillen helemaal naar beneden gaan tot aan de flap. Aan de onderkant is een opening voorbereid om alle elektronica erin te stoppen.

3. Zijdelen :Wordt gebruikt om de hardware en pillen te beschermen tegen vochtigheid, temperaturen, vuil en stof.

4. Nextion NX8048T070 :Scherm gebruikt als interface tussen de dispenser en de gebruiker.

5. Topdelen :

  • Gebruikt om de hardware en pillen te beschermen tegen vocht, temperaturen, vuil en stof (Bovenkant).
  • Scheidt de trommel van de pillendoosjes (onderkant).

6. Parallax Servo 900-0005 :360º elektromotor die onderdeelnummer 7 in de juiste positie zet.

7. Trommel :Verbindingsslang tussen de buitenkant en de pillendoosjes. Hij draait om bij de juiste container te komen.

8. Achterdeur :Nodig om met de schuifregelaar in en uit de pillendoosjes te komen.

9. Sprekers :Ze zullen de gebruiker alle benodigde informatie meedelen.

10. Ultrasone sensor - HC SR04 :Dit apparaat detecteert of de beker is weggeschoven.

11. Pillendoosjes :Ze bevatten de pillen en verstrekken ze op het juiste moment met de juiste hoeveelheid. Als prototype hebben we de pillendispenser ontworpen met 4 containers. Het kan echter worden aangepast aan een grotere capaciteit.

Wil je je eigen SmartPill Dispenser? Ga onderaan de STL-bestanden downloaden en print alle onderdelen met je 3D-printer! Het project is volledig open-source.

In het volgende gedeelte leggen we stap voor stap uit hoe u het dispenser-systeem in elkaar zet.

Assemblage

  • Om de schuifregelaar (deel 2) in 3D te printen - Algemene tekening) we hebben het in drie delen gesplitst. Dus eerst monteren we het. Pluk de noten (2.3.2 - Slider Tekening ) en plaats ze in de schuifregelaar (2.2 - Slider Tekening ) met een lasser. Schroef vervolgens beide delen vast (2.3.1 &2.2 - Slider Tekening ). Wacht met het plaatsen van de dop (2.4 - Slider Tekening) totdat de elektronica is aangesloten.
  • Plaats de elektronica in de opening van de schuifregelaar, inclusief de Ultrasone sensor - HC SR4 (Deel 10- Algemene tekening) en schroef het deksel van de schuifregelaar (2.4) vast.
  • De pilcontainers in elkaar zetten (bekijk de tekening van de pillencontainers ) met elk een SG90-servo. Doe eerst mee aan Deel 1 met Deel 7 en schroef de SG90 op Part 7 . Voeg dan deel 3 samen met deel 4 (wiellager) en voeg tenslotte deel 2 toe. Schroef vervolgens de pillencontainers op de bovenkant van de schuif (deel 2 - algemene tekening) .
  • Schroef het scherm (Deel 4 - Algemene tekening). op het juiste zijdeel en monteer de plug. En dan pas de Sider onderdelen in elkaar (Deel 3 - Algemene tekening) naar de basis totdat ze klikken.
  • Er zijn twee bovenste delen ( (Deel 5 - Algemene tekening) . We assembleren ze door de moeren opnieuw te plukken en in de onderdelen te monteren. Deze keer is er geen lasser nodig. Plaats de drum (deel 7 - Algemene tekening) en de Parallax Servo (Deel 6- Algemene tekening) tussen hen en we schroeven beide bovenste delen aan elkaar.
  • Eindelijk de achterdeur vastschroeven (Deel 8 - Algemene tekening) naar de montage van het bovenste deel.

Elektronica

Het belangrijkste elektronicabrein is een Arduino Mega die zorgt voor de aansturing van de servomotoren die de pillen afgeven, evenals het Nextion-aanraakscherm, de Real-Time Clock (RTC), de geluidseffecten en het AVR-IoT-communicatiebord.

  • AVR-IoT is verbonden met de Arduino Mega door middel van een seriële UART-verbinding.
  • Servomotoren worden aangestuurd door PWM.
  • RTC is via I2C verbonden met de Arduino Mega.
  • IR-barrière Sensor voor het detecteren van de pillen is aangesloten op de analoge pinnen van het Arduino-bord.

Om het project te repliceren, moet u alle verbindingen maken zoals beschreven in het schema met behulp van een protoboard of zelfgemaakte PCB. We raden ten zeerste aan om de schakeling in een soort houten plaat te monteren zoals op de afbeelding hierboven.

Het schema is te vinden aan het einde van de pagina.

SmartPill-webapp

De SmartPill Web App is bedoeld om de ervaring te vergemakkelijken die gepaard gaat met het opzetten van een elektronisch apparaat en het controleren van andermans medicatie.

  • Een eenvoudige SmartPill Dispenser opgezet, met de informatie van de patiënt, de pillen die moeten worden ingenomen, de benodigde dosering en het tijdsinterval.
  • De inname van pillen volgen.

Hoe is het ontwikkeld?

Om vanaf het begin een web te ontwikkelen, werk je met de fundamentele gebieden van programmeren:backend en frontend. De Smartpill WebApp is gemaakt met:

  • Back-end. AWS API Gateway (HTTT API Rest).
  • Frontend. Ionisch en hoekig. Om vanaf het begin een web te ontwikkelen, werk je met de fundamentele gebieden van programmeren:backend en frontend.

Ionic is een volledig gratis en opensource NodeJS-framework op basis van AngularJS dat platformspecifieke UI-elementen biedt via een bibliotheek met native componenten voor iOS en Android. Het maakt gebruik van front-end-technologieën zoals HTML, CSS, JavaScript en Angular voor applicatie-ontwikkeling. Ionic kan Angular CLI (Command-Line Interface) gebruiken om volledig functionele mobiele applicaties te maken.

Houd er rekening mee dat voordat u uw internet met Ionic start, Node.js moet zijn geïnstalleerd om te kunnen functioneren, aangezien Ionic deel uitmaakt van een groot JavaScript-ecosysteem.

De Ionic Framework-documentatiepagina kan u probleemloos begeleiden bij het starten van uw app. Ik zal echter kort de eerste stappen noemen die zijn gevolgd voor het maken van de Smartpill-app:

1. Ga naar de opdrachtregel van uw code-editor en installeer ionische CLI met npm:

$ npm install -g @ionic/cli 

2. Maak een nieuwe app:

$ ionische start smartpill-webui leeg 

3. Ga naar de map van je frontend en voer het uit:

$ cd smartpill-webui
$ ionic serve

Als u uw app uitvoert, kunt u deze testen in de browser van uw apparaat. Deze Ionische functie is essentieel voor het debuggen en testen.

Smartpill Web App basisstructuur.

De Smartpill Web App is op een eenvoudige manier georganiseerd, om de navigatie te vereenvoudigen. In de mappen van de app kunnen we de app-routeringsmodule, de app-componentenbestanden, een map "services" en een map voor elke route vinden.

Als je nog nooit frontend-technologieën hebt aangeraakt, zul je in het overzicht van deze code zien hoe de verschillende talen met elkaar omgaan. Maar als we kort zouden beschrijven hoe het werkt, dan is het deel van het web dat u ziet het html-bestand van de map, terwijl het getypte bestand de functies zijn die worden uitgevoerd wanneer de gebruiker met de pagina communiceert. De modules.ts zijn voor routeringsdoeleinden.

De meest essentiële bestanden van de Smartpill-app zijn:

  • app-routing.module.ts. Het stelt de gebruiker in staat om door alle verschillende beschikbare routes te navigeren. Met bepaalde paden kan de webontwikkelaar variabelen van de ene route naar de andere brengen.
const routes:Routes =[
{
path:'',
redirectTo:'page-login',
pathMatch:'full'
},
{
pad:'page-config',
loadChildren:() => import('./page-config/page-config.module').then( m => m.PageConfigPageModule)
},
{
pad:'page-status',
loadChildren:() => import('./page-status/page- status.module').then( m => m.PageStatusPageModule)
},
...
  • post.service.ts. Het communiceert met de API. Hier worden de belangrijkste interfaces gedefinieerd (Post, Dep en Log), samen met de klasse PostService. PostService heeft de belangrijkste basisfuncties om met de API te communiceren:functie ophalen, om informatie van de API te ontvangen; post, om een ​​nieuw artikel in de API te maken; verwijderen, om een ​​artikel te verwijderen; en zet, om een ​​bestaand artikel in de interface te bewerken, maar de eerdere gegevens die het bevatte te verwijderen.
getPosts() {
return this.http.get(this.API);
}

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


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

createPost(pil:string, deposit:string, gewicht:string, ochtend:boolean, middag:boolean, nacht:boolean) {
return this.http.post(this.API, {
pil,
storting,
gewicht,
ochtend,
middag,
nacht,
});
}

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

Pagina configureren en bewerken.
Smartpill heeft een speciale route om alle geprogrammeerde berichten met de naam “page-config” te tonen. Om een ​​nieuw bericht te maken om de pillen te configureren, moet de gebruiker op een knop drukken in de rechterbenedenhoek die hen zal omleiden naar de bewerkingspagina "page-edit-pill". Als ze echter niet willen maken maar willen bewerken, door op de bewerkknop van een reeds gemaakt bericht te drukken, zal het web ze ook doorverwijzen naar de "pagina-edit-pil" maar met de id van het bericht. Die twee uitspraken worden als volgt gedefinieerd:

  • Maak een nieuwe berichtknop




  • Berichtknop bewerken


Bewerken

De pagina-edit-pill-pagina herkent of de gebruiker de route met of zonder id heeft ingevoerd en voert de bijbehorende functies uit met behulp van eenvoudige ifs.

  • Pad met ID gedefinieerd in routemodule
{
path:'pill/edit/:postId',
loadChildren:() => import('./page-edit-pill/page-edit-pill.module ').then( m => m.PageEditPillPageModule)
},
  • Lezen of de route een id draagt
ngOnInit() {
this.activavtedRoute.paramMap.subscribe((paramMap) => {
if(ParamMap.get("postId")) {
this. postService
.getPostById(paramMap.get("postId"))
.subscribe((res) => {
this.post =res;
this.editing =true;
});
}
});
}
  • Als voorbeeld

{{editing?
'Update Your':
'Create your'
}} Storting
  • Voorbeeld van If-knop

{{editing ? 'Update':'Submit'}}

De "edit-pill-pagina" communiceert met de gebruiker met ionische UI-componenten zoals invoer en selectie, die later naar de API worden verzonden:

  • Time multiple select

Klik hier om het tijdstip van de dag te kiezen.
cancelText="Cancel" okText="Submit">
Ochtend
Middag
Nacht

  • Pilinvoer

Pilnaam:

De "configuratiepagina" is geprogrammeerd met Angular Life Cycle, dus wanneer u terugkeert van de "pagina-edit-pil" of van een andere, wordt de pagina vernieuwd en worden de berichten opnieuw geladen, waarbij de wijzigingen automatisch worden bijgewerkt.

  • Postfunctie laden
loadPosts(){
this.postService.getPosts().subscribe(
(res) => {
this.posts =res;
},
(err) => console.log(err)
);
this.postService.getDeposit().subscribe(
(res) => {
dit .dep =res;
console.log(this.dep);
};
(err) => console.log(err)
);

De "config-pagina" heeft ook een knop waarmee de gebruiker elke pil kan verwijderen. Het is een asynchrone functie die een alarmbericht weergeeft om te controleren of ze zeker zijn van deze actie.

  • Een bericht verwijderen
async removePost(id:string){
const alert=wait this.alertController.create({
header:"Alert",
subHeader:"Weet je zeker dat je wil je deze storting verwijderen?",
bericht:"Je kunt het niet terugkrijgen.",
knoppen:[
"Annuleren",
{
tekst:"Ja",
handler:() => {
this.postService.removePost(id).subscribe(
(res) => {
console.log (res);
this.loadPosts();
},
(err) => console.log(err)
);
},
},
],
});
wacht alert.present();
}

Logboekpagina

De logboekpagina krijgt de informatie van de afgegeven pillen en geeft deze weer als een logboek op de geschiedenisroute. Het werkt vergelijkbaar met "config-page", maar het laadt alleen de informatie die zich in de API bevindt:

  • Logboeken ophalen
loadPosts() {
this.postService.getLogs().subscribe(
(res) => {
this.log =res;
console. log(this.log);
},
(err) => console.log(err)
);
}

ngOnInit() {
this.loadPosts();
}

ionViewWillEnter(){
this.loadPosts();
}
  • Logboeken weergeven








{{ log.date | datum:'dd/MM/jjj' }} - {{ log.datum | datum:'HH_mm' }}u


{{log.patient_name}}


{{log.pills}}






Amazon-webservices

AWS is de serviceprovider die is gekozen om het SmartPill-systeem in te zetten, omdat het een breed scala aan services biedt binnen hetzelfde ecosysteem, waardoor we kunnen kiezen voor een volledig serverloze aanpak. Hierdoor kan de applicatie escaleren naar de behoeften van de gebruiker en alleen betalen voor wat het wordt gebruikt.

Smartpill Cloud-architectuur

Het Smartpill-systeem maakt gebruik van een volledig serverloze architectuur met behulp van Amazon Web Services. Hierdoor kan de applicatie op- en afschalen om aan te passen aan de behoeften van de gebruiker. De architectuur wordt beschreven in het onderstaande diagram:

De Smartpill Dispenser gebruikt een Microchip AVR-IoT-kaart met WiFi-mogelijkheden om te communiceren met het AWS-ecosysteem. AVR-IoT is verbonden via AWS IoT Core via het MQTT-protocol. Dit maakt bidirectionele connectiviteit tussen het Cloud-ecosysteem en de hardware zelf mogelijk. Deze communicatie wordt gebruikt om het uitgiftebericht naar de dispenser te sturen, evenals de bevestigingsgebeurtenissen van de dispenser naar de cloud.

De frontend van de webtoepassing die is ontwikkeld met behulp van het Ionic Angular NodeJS-framework wordt gecompileerd en hun statische bestanden worden geüpload naar de AWS S3-opslagservice. De backend van de webapplicatie is een HTTT API Rest-service ontwikkeld met AWS API Gateway die Lambda-functies aanroept. Deze Lambda-functies communiceren met de DynamoDB-database die de pillenconfiguratie en innamelogboeken opslaat.

AWS Event bridge wordt gebruikt als planner om de uitgiftegebeurtenissen op het juiste moment te activeren. Deze gebeurtenis activeert een Lambda-functie die de database doorzoekt naar de pillen die nodig zijn bij elke inname en deze informatie door middel van de IoT Core naar de SmartPill Dispenser stuurt.

AWS-IoT Kern

Het eerste dat u moet doen om aan de slag te gaan met het AVR-IoT-bord met AWS IoT Core, is door verbinding te maken met het bord met uw AWS-account. Dit proces wordt beschreven door Microchip in de IoT Developer Guides for AWS

Hiermee heb je je AVR-IoT Board klaar voor gebruik in je AWS-account. U kunt dit zien in AWS IoT Core onder Beheer Tabblad Dingen.

Zorg er vervolgens voor dat uw AVR-IoT-kaart internettoegang heeft door deze te configureren met uw WiFi-inloggegevens zoals beschreven in de Handleiding Aan de slag:

AWS DynamoDB

Dan wilt u de webapplicatie configureren, hiervoor moet u eerst de DynamoDB-tabellen registreren die de webapp nodig heeft:

  • smartpill-geschiedenis:slaat alle logboeken op voor ingenomen pillen
  • smartpill-pills:slaat uw geconfigureerde pillen op

Klik op tabel maken:

Geef het de exacte naam en selecteer "id" als de primaire sleutel.

AWS Lambda

Zorg ervoor dat AmazonDynamicDBFullAccess is aangesloten. Zodat de Lambda-functie kan lezen/schrijven vanuit de DynamoDB-database. Ga hiervoor naar het tabblad Rechten:

En klik op de Rolnaam. Hiermee wordt u doorverwezen naar de uitvoeringsrol voor deze Lambda-functie. We raden aan dat elke Lambda-functie zijn eigen uitvoeringsrol heeft.

AmazonDynamoDBFullAccess moet verschijnen, zo niet, klik dan op Beleid bijvoegen en zoek naar "dynamodb":

De Lambda-functie volledige DynamoDB-toegang geven is alleen veilig voor het doel van deze tutorial, niet voor een productieomgeving.

Ga nu naar configuratie en voeg de functiecode toe uit de Github-repository (link hieronder):

Herhaal dit voor alle Lambda-functies in de repository.

Vervolgens zullen we de integraties tussen Lambda en IoT Core configureren, zodat de juiste functie wordt uitgevoerd wanneer het bericht door het bord wordt verzonden.

We zullen het bevestigingsbericht van de uitgifte configureren dat door de AVR-IoT wordt verzonden, zodat de bijbehorende logboekinvoer en -melding in de database kan worden gegenereerd.

We gaan naar AWS-IoT Core, klik op Toevoegen en regels om een ​​regel te configureren:

Klik op Nieuwe regel maken en geef een naam:smartpill_confirmationpill en een korte beschrijving

Voer vervolgens de volgende vraaginstructie in:

SELECTEER * VAN 'bevestigingspil' 

en configureer een actie 'Stuur een bericht naar een Lambda-functie' om te verwijzen naar de eerder gemaakte 'smartpill-confirmationpill':

U bent klaar om naar het volgende deel te gaan.

AWS Event Bridge

Event Bridge zorgt voor het starten van de lambda-functie die het bericht naar de SmartPill Dispenser stuurt om de pil op het juiste moment af te geven. We zullen 3 geplande triggergebeurtenissen configureren om dat te doen. Een voor de ochtend, een voor de middag en een voor de nachtopnames.

Ga naar de AWS Event Bridge-service en klik op "Een regel maken".

Geef het een naam en configureer het Schedule event-patroon als een cron-expressie:

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!

Code

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

Aangepaste onderdelen en behuizingen

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

Schema's

SmartPill Electronics HW connections

Productieproces

  1. Slaappil
  2. Birth Control Pil
  3. Slimme barman
  4. Slim verkeerslicht
  5. Slimme afvalbak
  6. Smart Plant IoT
  7. UnifiedWater v1
  8. Slimme jaloezieën
  9. Echt slimme doos
  10. Slimme productie van Autodesk
  11. Wat is slimme productie?