如何使用Arduino在椅子上添加触觉?

这个Arduino光电晶体管项目的想法来源于我在FabLab的一个朋友分享的想法。他谈到了他的实验室是如何让人们坐下来的。由于非常不舒服,这个人就会感到不适,然后站起来四处走动。在我们的案例中,我们有舒适的躺椅坐着和躺着,这会让你变得懒惰,甚至昏昏欲睡。

在这个项目中,我想通过创建一个光滑的小工具来解决这个问题,当它被插入到我们的椅子上时,如果用户连续坐着超过10分钟,它会提示用户起床。它通过使用触觉反馈电机来实现这一点,它只会通知坐在椅子上的人,而不是干扰他周围的人(如果我使用其他方式,比如声音/灯光)。

这个Arduino光电晶体管项目包括三个阶段:

  • 在Modella的帮助下准备电子产品。
  • 编程
  • 设计和印刷它使用的最后的。

NPN型光电晶体管在没有光的情况下发出信号(当一个人坐在椅子上时)。之后控制器启动一个计时器。如果计时器超过10分钟,那么它就会立即激活haptic motor,它会提示用户起床。

所需的材料

  1. NPN plcc 2光电晶体管
  2. ATtiny44控制器,(Arduino的作品)
  3. 20 mhz的晶体
  4. 10 k电阻
  5. 6引脚(3x2)头2nos。
  6. 1ufSMD电容
  7. 9 v电池和剪辑
  8. 触觉电动机

电子和编程

我使用本教程了解光电晶体管。NPN光电晶体管将与一个浮动的基体和与地面连接的发射器一起使用。收集器需要通过一个电阻器将其拉到Vcc(我用内部的拉升电阻来做这个)。当光电晶体管检测到光(收集器和发射器被短路)时,当没有光时,它输出一个逻辑低电压和一个逻辑高电压。配置:

我开始用我的。HelloWorld董事会从莫德雷拉(Modella)那里研磨,然后从它的按钮上焊接。然后我把光电晶体管连接起来。ATtiny销不:7。我发现光电晶体管封装中的凹槽代表集电极终端。我从VEMT3700F NPN晶体管学到了这个。数据表(PDF)。另一个值得检查的资源是TT电子。Optek技术资源指南。你也可以使用Arduino板,将光电晶体管连接到Arduino的数字pin 7上,并使用如下所示的代码。

在焊接NPN光电晶体管后,我用Arduino检查了它。我使用下面的代码连续打印:“没有光”,当光电晶体管没有暴露在光和“光检测”的时候,它被曝光:

#include 
int v;
SoftwareSerial mySerial(0,1); // RX, TX

void setup() {
// Open serial communications and wait for port to open:
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
pinMode(7,INPUT_PULLUP);
pinMode(8, OUTPUT);

}

void loop() { // run over and over
//mySerial.println(digitalRead(7));
//delay(200);
if(digitalRead(7)==0)
{
mySerial.println("Light detected");
delay(200);
}
else if(digitalRead(7)==1)
{
mySerial.println("No Light");
delay(200);
}
}

接下来,我使用了一个打捞的电话触觉马达来连接它。ATtiny pin no 5 (Arduino pin 8)在没有光线的情况下,在没有灯的情况下,对电机进行电源测试。

一个LazyMax 100行动的视频!


用于Arduino光电晶体管的代码:

#include 
int v;
SoftwareSerial mySerial(0,1); // RX, TX

void setup() {
// Open serial communications and wait for port to open:
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
pinMode(7,INPUT_PULLUP);
pinMode(8, OUTPUT);//Motor
}

void loop() { // run over and over
//mySerial.println(digitalRead(7));
//delay(200);

if(digitalRead(7)==0)
{
mySerial.println("Light detected");
digitalWrite(8,LOW);
delay(200);
}
else if(digitalRead(7)==1)
{
mySerial.println("No Light");
digitalWrite(8,HIGH);
delay(200);
}
}

接下来,如果一个人坐的时间太长,我就写代码来激活电机。理想情况下,值应该是10分钟,但是为了便于测试,我使用了10秒。在这里,如果控制器检测不到10秒钟的光线,电机就开始振动,并指示用户需要离开座椅。代码:

#include 
int v;
SoftwareSerial mySerial(0,1); // RX, TX
unsigned long time;
int i;

void setup() {
// Open serial communications and wait for port to open:
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
pinMode(7,INPUT_PULLUP);
pinMode(8, OUTPUT);//Motor
}

void loop() { // run over and over
//mySerial.println(digitalRead(7));
//delay(200);

if(digitalRead(7)==0)
{
mySerial.println("No one is using me");
digitalWrite(8,LOW);
delay(200);
i=0;
}
else if(digitalRead(7)==1)
{
while(i==0)
{time = millis();
i++;}

mySerial.println("You have been sitting for more than 10 mins! Get up and work!");
if((millis()-time)>10000)
digitalWrite(8,HIGH);
delay(200);
}
}

接下来,我决定添加一个5V 1A电压调整器,用9V电池给电路板供电。为了这个,我用了。ZLDO1117调节器(PDF)。然后,我为9V电池添加了剪辑,它看起来是这样的:

另一个测试视频!

,

然后我删除了ISP和FTDI大头针,使董事会圆滑:

测试Arduino光电晶体管板的临时设置:

设计和印刷本案例。

在我整理了电子学和编程部分之后,我又开始设计可以夹在椅子上的板子。我用犀牛来设计这个。

我开始测量椅子边缘的直径(14.15毫米),然后是板的尺寸(33 x23.5mm)。基于这些,我开始使用折线设计案例。之后,我将闭合曲线转换成一个从3到4的曲面,然后将其挤压到一个高度。5毫米

接下来,我为这个案例设计了挂钩。我用折线和圆函数画出了它然后把它变成了一条闭合曲线。接下来,我用“平面曲线”函数将其转换为曲面,然后将其挤压出来。20毫米。这就是它的样子:

接下来,我将使用Cura打印出导出的.stl文件。



相关文章