Índice:

Distribuidor automático de medicamentos: 5 etapas
Distribuidor automático de medicamentos: 5 etapas

Vídeo: Distribuidor automático de medicamentos: 5 etapas

Vídeo: Distribuidor automático de medicamentos: 5 etapas
Vídeo: 5 Tips de Almacenamiento de Medicamentos 💊 2024, Novembro
Anonim
Dispensador Automático de Medicamentos
Dispensador Automático de Medicamentos

Este projeto é para uso na área médica, onde pacientes idosos devem ter uma forma confiável de dosar e dispensar os medicamentos. Este dispositivo permite que a medicação seja distribuída com até 9 dias de antecedência e dispensada automaticamente no horário desejado. A tampa também pode ser travada com a etiqueta RFID, garantindo que apenas o cuidador tenha acesso ao medicamento.

Suprimentos:

Existem os materiais necessários para construir este projeto:

  • Arduino UNO
  • Módulo Motorista
  • SG90 9G Servo
  • Motor de passo
  • Módulo RTC DS1302
  • Vários cabos de ligação
  • IIC 1602 LCD
  • Acesso à impressora 3D
  • Pernas como cavilhas de madeira
  • Módulo RFID e etiqueta
  • Dois botões
  • Ferro de solda
  • Tábua de pão
  • Super cola
  • Parafusos de madeira
  • Caixa de madeira inacabada com tampa articulada
  • Fita dupla face

Etapa 1: Modificando a caixa

Modificando a caixa
Modificando a caixa
Modificando a caixa
Modificando a caixa
Modificando a caixa
Modificando a caixa
Modificando a caixa
Modificando a caixa

A caixa primeiro terá que ser modificada. Existem vários furos que devem ser perfurados. O primeiro orifício será na frente da caixa, onde a caixa do painel de controle está impressa. O segundo orifício fica na parte traseira da caixa, para a passagem do cabo USB. O último orifício fica no fundo da caixa, por onde o medicamento cairá depois de dispensado. Por último, as pernas devem ser fixadas na parte inferior. Usei pés de borracha que encontrei na minha casa como pernas, mas também podem ser usados tarugos de madeira.

Etapa 2: peças impressas em 3D

Peças impressas em 3D
Peças impressas em 3D
Peças impressas em 3D
Peças impressas em 3D
Peças impressas em 3D
Peças impressas em 3D

Existem muitas peças impressas em 3D necessárias para este projeto.

Eles são:

  • Carrossel que contém medicamentos
  • Base para carrossel
  • Funil para a medicação
  • Braço para servo motor para travar a tampa
  • Base para servo motor
  • Trava para braço servo
  • Painel de controle
  • Copo para a medicação a ser dispensada

A base do carrossel é colada na caixa com fita dupla-face. A base do servo motor e a trava do braço são parafusadas na caixa com parafusos curtos de madeira. A caixa do painel de controle é colada na frente da caixa com super cola, após os componentes terem sido inseridos.

Etapa 3: Eletrônica

Eletrônicos
Eletrônicos

Os componentes eletrônicos agora precisam ser colocados na caixa. Primeiro, o motor de passo é conectado à base do carrossel com parafusos e porcas M3. O servo é então super colado à sua base. Em seguida, o controlador do motor, Arduino, placa de ensaio, módulo RFID e módulo RTC são todos fixados na caixa com fita dupla-face. O LCD é inserido no orifício da caixa de controle. É necessária alguma solda. Para os botões de pressão, os cabos de jumper devem ser soldados aos conectores em espada. Para o leitor RFID, os pinos devem ser soldados à placa.

Etapa 4: Código

Abaixo está o código comentado:

Bibliotecas para o servo, LCD, RTC, RFID e motor de passo estão incluídas neste código.

/////////////////// Bibliotecas e variáveis

#include #include // biblioteca padrão do Arduino #include #include virtuabotixRTC myRTC (2, 3, 4); // Definir pinos #define servopin 8 const int buttonup = 6; const int buttondown = 7; int hr = 0; int minn = 0; int sel = 0; estado int = 0; declarado int = 0; int statesel = 0; espera interna = 0; armário interno = 0; // Configurar servo Servo servo; ângulo interno = 180; #include // use a biblioteca de passo modificada com sequência de disparo magnético 1000/0100/0010/0001. Coloque a biblioteca em sua pasta de biblioteca. #define gearratio 64 // relação de engrenagem 1: 64 const int stepsPerRevolution = 2048; // o motor do Arduino Kit é reduzido. Por experiência, determinei que 2.048 degraus giram o eixo em uma rodada. etapas int = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // instancia um stepper de 4 fios nos pinos 8 a 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Cria instância MFRC522. int deg = 10; void setup () {lcd.init (); // inicializa o lcd lcd.backlight (); // A linha abaixo dela é usada para definir a hora atual. Só tem que ser feito uma vez, e depois o código // deve ser carregado novamente com ele comentado. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (buttonup, INPUT_PULLUP); pinMode (buttondown, INPUT_PULLUP); Serial.begin (9600); // Inicia uma comunicação serial SPI.begin (); // Inicia o barramento SPI mfrc522. PCD_Init (); // Iniciar MFRC522 myStepper.setSpeed (0.15 * gearratio); // o motor parece estar reduzido a 1/64, o que significa que a velocidade precisa ser ajustada 64x. // inicializa a porta serial: servo.attach (servopin); } void loop () {///////////////// Código LCD // Atualiza constantemente o display com a hora atual e o tempo de dispensação. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Hora:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutos); lcd.setCursor (0, 1); lcd.print ("Dispensar:"); lcd.setCursor (10, 1); lcd.print (hr); lcd.print (":"); lcd.print (minn); ///////////////// Read Button States // Lê os estados dos botões para alterar o tempo de dispensação. stateup = digitalRead (buttonup); declarouown = digitalRead (buttondown); atraso (100); ///////////////// Lógica de dispensação // Se a hora atual coincidir com a hora de dispensação selecionada, gire o motor de passo. // A cada 9 vezes que o dispositivo dispensa, o motor gira uma distância extra para garantir uma rotação completa. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9) {myStepper.step (227); etapas = etapas +1; atraso (60100); myRTC.updateTime (); } else if (myRTC.hours == hr && myRTC.minutes == minn && steps == 9) {myStepper.step (232); etapas = 0; atraso (60100); myRTC.updateTime (); ///////////////// Alteração do tempo de dispensação // Altere o tempo de dispensação com base no botão pressionado. // O tempo retorna a zero quando as horas chegam a 24 e os minutos chegam a 60.} if (stateup == LOW && hr <23) {hr = hr + 1; atraso (50); } else if (stateup == LOW && hr == 23) {hr = 0; atraso (50); } if (declarado == BAIXO && minn <59) {minn = minn + 1; atraso (50); } senão se (declarado == BAIXO && minn == 59) {minn = 0; atraso (50); } /////////////////// Código RFID // Lê a etiqueta RFID quando apresentada. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Selecione um dos cartões if (! Mfrc522. PICC_ReadCardSerial ()) {return; } String content = ""; letra de byte; para (byte i = 0; i <mfrc522.uid.size; i ++) {//Serial.println(mfrc522.uid.uidByte <0x10? "0": ""); //Serial.println(mfrc522.uid.uidByte, HEX); content.concat (String (mfrc522.uid.uidByte <0x10? "0": "")); content.concat (String (mfrc522.uid.uidByte , HEX)); armário = 1; } content.toUpperCase (); /////////////////// LOCK CODE // Quando a etiqueta RFID correta for lida, mova o servo para a posição aberta quando estiver fechado, // e mova o servo para a posição fechada quando estiver abrir. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// mude aqui o UID do (s) cartão (s) que deseja dar acesso {switch (deg) {case 180: servo.write (deg); deg = 10; armário = 0; Serial.print ("movendo"); atraso (1000); pausa; caso 10: servo.write (deg); deg = 180; armário = 0; atraso (1000); pausa; }}} else {Serial.println ("Acesso negado"); atraso (1000); }}}

Etapa 5: configuração final

A última etapa é preparar o projeto para uso. Primeiro carregue o código com a linha de configuração de hora não comentada, para carregar a hora atual para o RTC. Em seguida, comente o código e recarregue o código. Isso garantirá que, se o dispositivo for desconectado, ele ainda manterá a hora correta. Agora, basta colocar o medicamento nas ranhuras, colocar o copo sob a abertura de dispensação e definir um horário de dispensação. O dispositivo dispensará com segurança no mesmo horário todos os dias.

Recomendado: