Table des matières:
- Étape 1: Modification de la boîte
- Étape 2: Pièces imprimées en 3D
- Étape 3: Électronique
- Étape 4: Coder
- Étape 5: configuration finale
Vidéo: Distributeur automatique de médicaments : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Ce projet est destiné à être utilisé dans le domaine médical, où les patients âgés doivent disposer d'un moyen fiable de doser et de dispenser leurs médicaments. Ce dispositif permet de doser les médicaments jusqu'à 9 jours à l'avance et d'être distribués automatiquement à l'heure souhaitée. Le couvercle est également verrouillable avec l'étiquette RFID, garantissant que seul le soignant peut accéder au médicament.
Fournitures:
Il y a les matériaux nécessaires pour construire ce projet:
- Arduino UNO
- Module de commande de moteur
- Servomoteur SG90 9G
- Moteur pas à pas
- Module RTC DS1302
- Divers cavaliers
- LCD IIC 1602
- Accès imprimante 3D
- Jambes telles que des chevilles en bois
- Module et étiquette RFID
- Deux boutons poussoirs
- Fer à souder
- Planche à pain
- super colle
- Les vis à bois
- Boîte en bois non finie avec couvercle à charnière
- Ruban adhésif double face
Étape 1: Modification de la boîte
La boîte devra d'abord être modifiée. Il y a plusieurs trous qui doivent être percés. Le premier trou sera sur le devant de la boîte, là où la boîte du panneau de commande est imprimée. Le deuxième trou se trouve à l'arrière du boîtier, pour le passage du câble USB. Le dernier trou se trouve au bas de la boîte, où le médicament tombera une fois distribué. Enfin, les jambes doivent être attachées au fond. J'ai utilisé des pieds en caoutchouc que j'ai trouvés autour de ma maison pour les jambes, mais des chevilles en bois peuvent également être utilisées.
Étape 2: Pièces imprimées en 3D
De nombreuses pièces imprimées en 3D sont nécessaires pour ce projet.
Elles sont:
- Carrousel qui contient des médicaments
- Base pour carrousel
- Entonnoir pour le médicament
- Bras pour servomoteur pour verrouiller le couvercle
- Base pour servomoteur
- Loquet pour bras servo
- Panneau de commande
- Tasse pour le médicament à distribuer dans
La base du carrousel est collée à la boîte avec du ruban adhésif double face. La base du servomoteur et le loquet du bras sont tous deux vissés dans la boîte avec des vis à bois courtes. Le boîtier du panneau de commande est collé à l'avant du boîtier avec de la super colle, après l'insertion des composants.
Étape 3: Électronique
L'électronique doit maintenant être placée dans la boîte. Tout d'abord, le moteur pas à pas est fixé à la base du carrousel avec des boulons et des écrous M3. Le servo est alors super collé à sa base. Ensuite, le contrôleur de moteur, l'Arduino, la maquette, le module RFID et le module RTC sont tous fixés à la boîte avec du ruban adhésif double face. L'écran LCD est inséré dans le trou du boîtier de commande. Il y a de la soudure qui est nécessaire. Pour les boutons poussoirs, les câbles de démarrage doivent être soudés aux cosses plates. Pour le lecteur RFID, les broches doivent être soudées à la carte.
Étape 4: Coder
Ci-dessous le code commenté:
Les bibliothèques pour les moteurs Servo, LCD, RTC, RFID et Stepper sont incluses dans ce code.
///////////////// Bibliothèques et variables
#include #include //Bibliothèque standard Arduino #include #include virtuabotixRTC myRTC(2, 3, 4); // Définir les broches #define servopin 8 const int buttonup = 6; const int buttondown = 7; int h=0; int min=0; int sel=0; état int=0; état int=0; int étatsel=0; attente int = 0; casier int = 0; // Configurer le servo Servo servo; angle entier = 180; #include //utiliser la bibliothèque pas à pas modifiée avec la séquence de tir magnétique 1000/0100/0010/0001. Mettez la bibliothèque dans votre dossier de bibliothèque. #define gearratio 64 //1:64 gear ratio const int stepsPerRevolution = 2048; //le moteur du kit Arduino est démultiplié. Par expérience, j'ai déterminé que 2048 pas font tourner l'arbre d'un tour. int pas = 0; LiquidCrystal_I2C lcd (0x27, 16, 2); // instancie un moteur pas à pas à 4 fils sur les broches 8 à 11: Stepper myStepper(stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // Créer une instance MFRC522. entier deg = 10; void setup() { lcd.init(); // initialise l'écran lcd lcd.backlight(); // La ligne en dessous est utilisée pour définir l'heure actuelle. Cela ne doit être fait qu'une seule fois, et ensuite le code // doit être à nouveau téléchargé avec son commentaire. //myRTC.setDS1302Time (40, 55, 11, 1, 7, 12, 2020); pinMode (bouton, INPUT_PULLUP); pinMode(bouton, INPUT_PULLUP); Serial.begin(9600); // Initie une communication série SPI.begin(); // Lancer le bus SPI mfrc522. PCD_Init(); // Lancer MFRC522 myStepper.setSpeed(0.15*gearratio); // le moteur semble être démultiplié de 1/64, ce qui signifie que la vitesse doit être réglée 64x. // initialise le port série: servo.attach(servopin); } void loop(){ ///////////////// LCD Code // Met constamment à jour l'affichage avec l'heure actuelle et l'heure de distribution. lcd.clear(); monRTC.updateTime(); lcd.setCursor(0, 0); lcd.print("Heure:"); lcd.setCursor (6, 0); lcd.print(myRTC.hours); lcd.print(":"); lcd.print(myRTC.minutes); lcd.setCursor(0, 1); lcd.print("Dispense:"); lcd.setCursor (10, 1); lcd.print(h); lcd.print(":"); lcd.print(min); ///////////////// Lire les états des boutons // Lit les états des boutons pour modifier le temps de distribution. stateup = digitalRead(buttonup); statedown = digitalRead (bouton enfoncé); retard (100); ///////////////// Logique de distribution // Si l'heure actuelle est la même que l'heure de distribution sélectionnée, tourner le moteur pas à pas. // Toutes les 9 fois que l'appareil distribue, le moteur tourne sur une distance supplémentaire pour assurer une rotation complète. if (myRTC.hours == hr && myRTC.minutes == minn && steps <9){ myStepper.step(227); étapes = étapes +1; retard (60100); monRTC.updateTime(); } else if (myRTC.hours == hr && myRTC.minutes == minn && steps ==9){ myStepper.step(232); pas = 0; retard (60100); monRTC.updateTime(); ///////////////// Modification du temps de distribution // Modifiez le temps de distribution en fonction du bouton enfoncé. // Le temps revient à zéro lorsque les heures passent à 24 et les minutes à 60. } if (stateup == LOW && hr<23){ hr=hr+1; retard (50); } else if (stateup == LOW && hr ==23){ hr=0; retard (50); } if (statedown == LOW && minn <59){ minn=minn+1; retard (50); } else if (statedown == LOW && minn ==59){ minn=0; retard (50); } ///////////////// Code RFID // Lit l'étiquette RFID lorsqu'elle est présentée. if (! mfrc522. PICC_IsNewCardPresent()) { return; } // Sélectionnez une des cartes if (! mfrc522. PICC_ReadCardSerial()) { return; } String content=""; lettre d'octet; for (octet 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)); casier = 1; } content.toUpperCase(); //////////////// CODE DE VERROUILLAGE // Lorsque l'étiquette RFID correcte est lue, déplacez le servo en position ouverte lorsqu'il est fermé, // et déplacez le servo en position fermée lorsqu'il est ouvert. while (locker == 1){ if (content.substring(1) == "3B 21 D6 22"){ //changez ici l'UID de la ou des cartes auxquelles vous souhaitez donner accès { switch (deg){ case 180: servo.write(deg); degrés = 10; casier = 0; Serial.print("moving"); retard(1000); Pause; cas 10: servo.write(deg); degrés = 180; casier=0; retard(1000); Pause; } } } else { Serial.println("Accès refusé"); retard(1000); } } }
Étape 5: configuration finale
La dernière étape consiste à préparer le projet à l'utilisation. Téléchargez d'abord le code avec la ligne de réglage de l'heure sans commentaire, pour télécharger l'heure actuelle sur le RTC. Ensuite, commentez le code et téléchargez à nouveau le code. Cela garantira que si l'appareil est débranché, il conservera toujours l'heure correcte. Maintenant, tout ce que vous avez à faire est de placer le médicament dans les fentes, de placer le gobelet sous le trou de distribution et de définir un temps de distribution. L'appareil distribuera de manière fiable à la même heure chaque jour.
Conseillé:
Distributeur automatique de désinfectant pour les mains DIY : 6 étapes
Distributeur automatique de désinfectant pour les mains : Dans ce projet, nous allons construire un distributeur automatique de désinfectant pour les mains. Ce projet utilisera Arduino, un capteur à ultrasons, une pompe à eau et un désinfectant pour les mains. Un capteur à ultrasons permet de vérifier la présence de mains sous la sortie de la machine de désinfection
Distributeur automatique d'alcool en gel avec Esp32 : 9 étapes
Distributeur automatique d'alcool gel avec Esp32: Dans le tutoriel, nous verrons comment faire un prototype complet, pour assembler un distributeur automatique d'alcool gel avec esp32, il comprendra l'assemblage étape par étape, le circuit électronique et également le code source expliqué étape par étape étape
DISTRIBUTEUR AUTOMATIQUE DE NOURRITURE POUR ANIMAUX DE COMPAGNIE : 9 étapes
DISTRIBUTEUR AUTOMATIQUE DE NOURRITURE POUR ANIMAUX DE COMPAGNIE : Avez-vous déjà eu envie de perdre trop de temps à nourrir votre animal de compagnie ? Avez-vous déjà dû appeler quelqu'un pour nourrir vos animaux de compagnie pendant vos vacances ? J'ai essayé de résoudre ces deux problèmes avec mon projet scolaire actuel : Petfeed
Distributeur de médicaments à base d'Arduino : 5 étapes (avec photos)
Distributeur de médicaments à base d'Arduino : c'est super facile à faire et super utile
Distributeur automatique--Distributeur de bonbons-- Arduino Bluetooth contrôlé--DIY : 11 étapes (avec photos)
Distributeur automatique||Distributeur de bonbons|| Arduino Bluetooth Controlled||DIY: Dans ce instructable, je montre comment construire un distributeur automatique à l'aide d'un Arduino.FAIRE COMMENTER CE QUE VOUS PENSEZ À CE POINT D'INSTRUCTION, AFIN QUE JE PUISSE AMÉLIORER DANS MON AUTRE INSTRUCTABLEVoir le didacticiel vidéo pour une meilleure compréhension de l'ent