×

3D打印项目之Covid旅行包

消耗积分:0 | 格式:zip | 大小:2.53 MB | 2022-12-14

鼠爱米

分享资料个

描述

一个 3D 打印项目,其中包含一些您在这个时代外出旅行时需要的工具——抓手、消毒剂和面罩室——一个包装。

第一步:3D打印

该设计是使用 Autodesk Fusion360 完成的。主要部分将采用盒子的形式。有手柄、夹具、面罩室和一个无需电源即可锁定夹具位置的钥匙。

poYBAGOYGBSADm9CAABTQKKCm4o490.jpg
底壳
 
poYBAGOYGBeARD3oAAA_yWXqubM487.jpg
大写
 
poYBAGOYGBqAK8YsAAA6GDGUDSg361.jpg
夹持器
 
pYYBAGOYGB6AIp2uAABCleXGQd8979.jpg
处理
 
pYYBAGOYGCOAc-OGAAAX51Vdm3M910.jpg
锁定抓手的钥匙
 
集会
 

我们对设计进行了一些修改,因为打印后的尺寸计算有一些错误。与印刷产品相比,按钮、USB 端口和泵孔的孔尺寸按比例放大。

第二步:电子产品

保持简单和小巧是重中之重,因此电子产品的空间不大。因此,使用的电子设备并不多。

这是在 EasyEDA 软件上创建的电子设备示意图。

poYBAGOYGCuAV0RwAADz9AtW4Tc704.png
项目示意图
 

作为主微控制器的Arduino MKR1010将为手机和 Firebase 提供 Wi-Fi 连接。

两个迷你 5V DC 泵将向手部和面罩室分配消毒剂。

一个步进电机 + ULN2003驱动器将控制夹具的运动。

四个触觉开关将提供以下控制:

  • 两个用于顺时针/逆时针转动夹具的开关
  • 分配每个消毒剂的两个开关(手和面罩室)
  • 所有开关都将作为外部中断将 MKR1010 从睡眠模式唤醒以节省电力。

PC817光电耦合器充当开关,将信号从 Arduino (3.3 V) 转移到电机和泵 (5V)。

升压模块将 3.3 V 转换为 5 V。

用于下拉信号的电阻器和电池分压器以按比例降低电压,使其与 MKR1010 兼容。

3.7 V 锂聚合物电池作为主电源。它应该连接到 MKR1010 JST 连接器,并且可以通过将 USB 插入 MKR1010 来充电。

第三步:Arduino代码

我们使用了 3 个库:FirebaseArduino 将 arduino 与 firebase 连接,ArduinoLowPower 以保持电池寿命,Stepper 用于控制步进电机。

//Libraries
#include "Firebase_Arduino_WiFiNINA.h"
#include "ArduinoLowPower.h"
#include "Stepper.h"

替换“XXX”您的 Firebase 和 WiFi 凭据。

//Credentials
#define FIREBASE_HOST "XXX"  //your-database.firebaseio.com
#define FIREBASE_AUTH "XXX"  //Firebase Secret Key
#define WIFI_SSID "XXX" //Wi-Fi SSID
#define WIFI_PASSWORD "XXX" //Wi-Fi Password

在引脚声明上,它不一定应该相同。关键是按钮(sw)的引脚必须是外部中断引脚。

//Pins
#define sw1 0
#define sw2 6
#define sw3 7
#define sw4 8
#define EN 1
#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 5
#define battPin A1
#define pump1 9
#define pump2 10
#define STEPS 2048

我们将使用 MKR1010 的内部上拉电阻,并为每个开关分配一个中断功能。

//PinModes
pinMode (sw1, INPUT_PULLUP);
pinMode (sw2, INPUT_PULLUP);
pinMode (sw3, INPUT_PULLUP);
pinMode (sw4, INPUT_PULLUP);
pinMode (battPin, INPUT);
pinMode (pump1, OUTPUT);
pinMode (pump2, OUTPUT);
pinMode (EN, OUTPUT); //Motor power

//Wake Up Functions
LowPower.attachInterruptWakeup(sw1, closeGripper, LOW);
LowPower.attachInterruptWakeup(sw2, openGripper, LOW);
LowPower.attachInterruptWakeup(sw3, sanit_hand, FALLING);
LowPower.attachInterruptWakeup(sw4, sanit_chamber, FALLING);

循环内部非常简单,它只是将数据上传到 Firebase 服务器,如果不使用则关闭电机。此外,等待腔室中的消毒剂干燥所需的时间估计约为 2000 毫秒 * 100 = 200 秒,或约 3 分钟。

void loop() {
  //For battery readings, we use 2:3 voltage divider
  //Battery's max voltage = 4.2 V, scaled down to 2.8 V for Readings
  //Battery's min voltage = 3.7 V, scaled down to 2.46 V for Readings
  //Battery's max voltage translate to : 860 for 10 bits (2.8/3.3 * 1023)
  //Battery's min voltage translate to : 768 for 10 bits (2.46/3.3 * 1023)
  batt = map( analogRead (battPin), 768, 860, 0, 100 );
  
  if (chamber_start){
    process += 1;
    if (process >= 100){
      process = 0;
      chamber_start = 0;
    }
  }
  digitalWrite (EN,LOW); //Turn off motor if not used
  task();  //Comment this part if no app is used
  LowPower.sleep(2000);
}

对于泵功能,已经过测试,每个分配过程大约消耗总容量的 10%(用于手)和 30%(用于腔室)。之所以使用特定时间(2 秒和 5 秒),是因为泵需要一些时间才能将液体从容器中排出,而不是瞬间排出。

void sanit_hand(){
  //Dispense for 2 seconds
  digitalWrite (pump1, HIGH);
  delay (2000);
  hand_cap -= 10;
}

void sanit_chamber(){
  //Dispense for 5 seconds
  chamber_start = 1;
  digitalWrite (pump2, HIGH);
  delay (5000);
  chamber_cap -= 30;
}

Firebase 数据上传将使用单个 FirebaseData 对象来更改 4 个路径的值,其中包含数组中的 4 个值。

//Data upload function
void task(){
  String path[4] = {"/batt", "/sanitizer1", "/sanitizer2", "/process"};
  int data[4] = {batt, hand_cap, chamber_cap, process};
  for (uint8_t i = 0; i < 4; i++){
    if (Firebase.setInt(firebaseData, path[i] , data[i]))
    {
      Serial.println("----------Set result-----------");
      Serial.println("PATH: " + firebaseData.dataPath());
      Serial.println("TYPE: " + firebaseData.dataType());
      Serial.print("VALUE: ");
      Serial.println(firebaseData.intData());
    }
    else
    {
      Serial.println("----------Can't set data--------");
      Serial.println("REASON: " + firebaseData.errorReason());
      Serial.println("--------------------------------");
      Serial.println();
    }
  }
}

创建 Firebase 数据库的教程可以在我们的其他项目中看到:https ://www.hackster.io/ferozfernando56/low-budget-carriage-robot-9b29d1

第四步(可选):移动应用程序

移动应用程序利用 MKR1010 的 Wi-Fi 连接。其目的是显示旅行包的条件。

如上图,可以显示洗手液和面罩室的剩余百分比。此外,它还显示了室内消毒和干燥口罩的持续过程。

pYYBAGOYGDiACjOlAADcZGRoQ0I002.jpg
 

该应用程序作为附件提供。

结果

下面是 3D 打印零件的图片以及我们如何将它们组装在一起。

pYYBAGOYGViAVYr-AAPfF4ZXqm0915.png
整包
 

这张图片显示了底壳的底部是如何排列的。用两个小瓶子盛装液体,用步进电机控制爪子。

poYBAGOYGeSAGbQCAAvSOl1Vj_Q231.jpg
底壳内
 

所有电子设备都用热胶粘在上壳和一个小点 PCB 上。

poYBAGOYGjiAe9zDABLqRg5KEB0933.jpg
上套管内
 

该包可用作公共交通工具(例如火车或公共汽车,我们必须站立并抓住某物)的把手,以避免接触公共把手。

pYYBAGOYGleATkcRAAX1xYEKS-A959.png
用作抓握某物(在本例中为钢筋)
 

还有一个洗手液分配器,可以通过按下按钮来使用。

poYBAGOYGnqAFe34AAc5j_E7b2w441.jpg
分配洗手液
 

还有一个面罩室,可以用来存放一些面罩。

poYBAGOYGrCAQ9G_AAobTanaXaw175.jpg
将面罩放入室内
 

在腔室内,还有一个使用液体消毒剂对面罩进行消毒的过程。利用口罩的毛细特性,消毒剂可以散布在整个口罩上。

 
 
 
poYBAGOYGvGAA_6qAAwvyNe3s1w209.jpg
 
1 / 2口罩被消毒
 

腔室内的液体消毒剂释放后,用户需要等待大约 2-3 分钟,等待消毒剂的酒精干燥。

抓手可用于打开门和按下按钮。它可以通过按下外壳上的按钮来打开/关闭

就这样

我们希望这个简单的项目可以通过尽可能减少触摸活动来帮助人们更安全地外出。我们非常感谢社区的投入!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !