Mục lục:

Máy rút thuốc tự động: 5 bước
Máy rút thuốc tự động: 5 bước

Video: Máy rút thuốc tự động: 5 bước

Video: Máy rút thuốc tự động: 5 bước
Video: Hướng dẫn sử dụng bút tiêm Insulin điều trị tiểu đường 2024, Tháng mười một
Anonim
Máy phân phối thuốc tự động
Máy phân phối thuốc tự động

Dự án này được sử dụng trong lĩnh vực y tế, nơi bệnh nhân cao tuổi phải có một cách đáng tin cậy để phân chia và cấp phát thuốc. Thiết bị này cho phép chia phần thuốc trước tối đa 9 ngày và được phân phát tự động vào thời điểm mong muốn. Nắp cũng có thể khóa được bằng thẻ RFID, đảm bảo rằng chỉ người chăm sóc mới có thể tiếp cận thuốc.

Quân nhu:

Có những vật liệu cần thiết để xây dựng dự án này:

  • Arduino UNO
  • Mô-đun điều khiển động cơ
  • SG90 9G Servo
  • Động cơ bước
  • Mô-đun RTC DS1302
  • Nhiều loại dây nhảy
  • IIC 1602 LCD
  • Quyền truy cập máy in 3D
  • Chân chẳng hạn như chốt gỗ
  • Mô-đun và thẻ RFID
  • Hai nút bấm
  • Hàn sắt
  • Breadboard
  • keo siêu dính
  • Vít gỗ
  • Hộp gỗ chưa hoàn thiện có nắp bản lề
  • Băng keo hai mặt

Bước 1: Sửa đổi hộp

Sửa đổi hộp
Sửa đổi hộp
Sửa đổi hộp
Sửa đổi hộp
Sửa đổi hộp
Sửa đổi hộp
Sửa đổi hộp
Sửa đổi hộp

Hộp đầu tiên sẽ phải được sửa đổi. Có nhiều lỗ phải được khoan. Lỗ đầu tiên sẽ ở mặt trước của hộp, nơi hộp bảng điều khiển được in. Lỗ thứ hai ở phía sau hộp để cáp USB đi qua. Lỗ cuối cùng ở dưới cùng của hộp, nơi thuốc sẽ rơi xuống sau khi được phân phối. Cuối cùng, chân phải được gắn vào phía dưới. Tôi đã sử dụng chân cao su mà tôi tìm thấy xung quanh nhà của mình để làm chân, nhưng chốt bằng gỗ cũng có thể được sử dụng.

Bước 2: Các bộ phận in 3D

Bộ phận in 3D
Bộ phận in 3D
Bộ phận in 3D
Bộ phận in 3D
Bộ phận in 3D
Bộ phận in 3D

Có rất nhiều bộ phận in 3D cần thiết cho dự án này.

Họ đang:

  • Băng chuyền giữ thuốc
  • Cơ sở cho băng chuyền
  • Phễu chứa thuốc
  • Cánh tay cho động cơ servo để khóa nắp
  • Cơ sở cho động cơ servo
  • Chốt cho cánh tay servo
  • Bảng điều khiển
  • Cốc để phân phối thuốc vào

Phần đế cho băng chuyền được dán vào hộp bằng băng dính hai mặt. Cả chân đế cho động cơ servo và chốt cho cánh tay đều được vặn vào hộp bằng các vít gỗ ngắn. Hộp bảng điều khiển được dán vào mặt trước của hộp bằng keo siêu dính, sau khi các linh kiện đã được lắp vào.

Bước 3: Điện tử

Thiết bị điện tử
Thiết bị điện tử

Các thiết bị điện tử bây giờ cần được đặt vào trong hộp. Đầu tiên, động cơ bước được gắn vào đế băng chuyền bằng bu lông và đai ốc M3. Servo sau đó được dán siêu dính vào đế của nó. Sau đó, bộ điều khiển động cơ, Arduino, breadboard, mô-đun RFID và mô-đun RTC đều được gắn vào hộp bằng băng dính hai mặt. Màn hình LCD được lắp vào lỗ trên hộp điều khiển. Có một số hàn được yêu cầu. Đối với các nút nhấn, cáp jumper phải được hàn vào các đầu nối hình chóp. Đối với đầu đọc RFID, các chân phải được hàn vào bo mạch.

Bước 4: Mã

Dưới đây là mã nhận xét:

Các thư viện cho động cơ Servo, LCD, RTC, RFID và Stepper được bao gồm trong mã này.

///////////////// Thư viện và biến

#include #include // Thư viện chuẩn Arduino #include #include VirtuabotixRTC myRTC (2, 3, 4); // Định nghĩa các chân #define servopin 8 const int buttonup = 6; const int Mongolondown = 7; int hr = 0; int minn = 0; int sel = 0; int stateup = 0; int fixedown = 0; int stateel = 0; int chờ = 0; int locker = 0; // Thiết lập servo Servo servo; góc int = 180; #include // sử dụng thư viện bước đã sửa đổi với trình tự bắn nam châm 1000/0100/0010/0001. Đặt thư viện vào thư mục thư viện của bạn. #define gearratio 64 // Tỷ số truyền 1: 64 const int stepsPerRevolution = 2048; // động cơ Arduino Kit bị giảm tốc độ. Bằng thực nghiệm, tôi xác định rằng 2048 bước quay trục một vòng. int bước = 0; Màn hình LCD LiquidCrystal_I2C (0x27, 16, 2); // khởi tạo một bước 4 dây trên các chân từ 8 đến 11: Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); // Tạo cá thể MFRC522. int deg = 10; void setup () {lcd.init (); // khởi tạo lcd lcd.backlight (); // Dòng bên dưới dùng để đặt thời gian hiện tại. Nó chỉ phải được thực hiện một lần và sau đó mã // phải được tải lên lại cùng với nó được nhận xét. //myRTC.setDS1302Time(40, 55, 11, 1, 7, 12, 2020); pinMode (nút bấm, INPUT_PULLUP); pinMode (mông, INPUT_PULLUP); Serial.begin (9600); // Khởi tạo một giao tiếp nối tiếp SPI.begin (); // Khởi tạo xe buýt SPI mfrc522. PCD_Init (); // Khởi tạo MFRC522 myStepper.setSpeed (0,15 * gearratio); // động cơ dường như giảm số 1/64, có nghĩa là tốc độ cần được đặt 64x. // khởi tạo cổng nối tiếp: servo.attach (servopin); } void loop () {/////////////////// Mã LCD // Liên tục cập nhật màn hình với thời gian hiện tại và thời gian phân phối. lcd.clear (); myRTC.updateTime (); lcd.setCursor (0, 0); lcd.print ("Thời gian:"); lcd.setCursor (6, 0); lcd.print (myRTC.hours); lcd.print (":"); lcd.print (myRTC.minutes); lcd.setCursor (0, 1); lcd.print ("Phân phối:"); lcd.setCursor (10, 1); lcd.print (giờ); lcd.print (":"); lcd.print (minn); /////////////////// Read Button States // Đọc trạng thái của các nút để thay đổi thời gian phân phối. stateup = digitalRead (nút lên); fixedown = digitalRead (mông); chậm trễ (100); /////////////////// Logic pha chế // Nếu thời gian hiện tại giống với thời gian pha chế đã chọn, hãy quay động cơ bước. // Cứ sau 9 lần thiết bị phân phối, động cơ quay thêm một khoảng để đảm bảo thực hiện được một vòng quay hoàn toàn. if (myRTC.hours == hr && myRTC.minutes == minn && step <9) {myStepper.step (227); step = các bước +1; chậm trễ (60100); myRTC.updateTime (); } else if (myRTC.hours == hr && myRTC.minutes == minn && step == 9) {myStepper.step (232); bước = 0; chậm trễ (60100); myRTC.updateTime (); /////////////////// Thay đổi thời gian pha chế // Thay đổi thời gian pha chế dựa trên nút nào được nhấn. // Thời gian trở về 0 khi giờ lên 24 và phút lên 60.} if (stateup == LOW && hr <23) {hr = hr + 1; chậm trễ (50); } else if (stateup == LOW && hr == 23) {hr = 0; chậm trễ (50); } if (fixedown == LOW && minn <59) {minn = minn + 1; chậm trễ (50); } else if (statementown == LOW && minn == 59) {minn = 0; chậm trễ (50); } /////////////////// Mã RFID // Đọc thẻ RFID khi thẻ được hiển thị. if (! mfrc522. PICC_IsNewCardPresent ()) {return; } // Chọn một trong các thẻ if (! Mfrc522. PICC_ReadCardSerial ()) {return; } Chuỗi nội dung = ""; ký tự byte; for (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)); tủ đựng đồ = 1; } content.toUpperCase (); /////////////////// MÃ KHÓA // Khi đọc đúng thẻ RFID, di chuyển servo đến vị trí mở khi nó được đóng, // và di chuyển servo đến vị trí đóng khi nó được mở ra. while (locker == 1) {if (content.substring (1) == "3B 21 D6 22") {// thay đổi ở đây UID của thẻ / thẻ mà bạn muốn cấp quyền truy cập {switch (deg) {case 180: servo.write (deg); độ = 10; tủ khóa = 0; Serial.print ("di chuyen"); chậm trễ (1000); nghỉ; trường hợp 10: servo.write (deg); độ = 180; tủ khóa = 0; chậm trễ (1000); nghỉ; }}} else {Serial.println ("Quyền truy cập bị từ chối"); chậm trễ (1000); }}}

Bước 5: Thiết lập cuối cùng

Bước cuối cùng là chuẩn bị dự án để sử dụng. Đầu tiên hãy tải mã lên với dòng cài đặt thời gian không được chú thích, để tải thời gian hiện tại lên RTC. Sau đó nhận xét mã ra và tải lại mã. Điều này sẽ đảm bảo rằng nếu thiết bị được rút phích cắm, thiết bị vẫn giữ được thời gian chính xác. Bây giờ, tất cả những gì bạn phải làm là đặt thuốc vào các khe, đặt cốc dưới lỗ phân phối và đặt thời gian phân phối. Thiết bị sẽ phân phối đáng tin cậy vào cùng một thời điểm mỗi ngày.

Đề xuất: