拿什么拯救你,我的颈椎

2016-03-032.2万
精华项目
AI 快速预览详细 收起
本文介绍了一种使用超声波测距和红外测距开关的坐姿矫正装置。通过监测坐姿变化并发出警报,帮助用户保持正确的坐姿,适用于办公室等场景。材料包括超声波测距、Beetle主控板、红外测距开关、蜂鸣器、充电宝等。首先将超声波测距固定在椅子背面,调整红外测距开关的有效距离,然后编写代码实现坐姿监测和警报功能。


最近颈椎腰椎告急,于是决定要开始矫正坐姿。

知乎说好的椅子很重要。我一看Herman Miller Embody要5位数。呵呵。

但是人体工学椅子好一点的上千,似乎会有用。但是!!

我曾经特地观察过。在某高大上办公楼里面,办公椅清一色Herman Miller Aeron,正确使用推荐坐姿的,不到5%。几乎全部都弓背前倾,程度不一。

注意正确坐姿:
拿什么拯救你,我的颈椎图4


请问正在看帖子的你,是不是这样的:
拿什么拯救你,我的颈椎图5



被我说中的继续往下看,坐姿正确的可以点右上角了。

没事的我觉得你还可以抢救一下



于是,我决定做个小东西提醒我自己:

材料:
超声波测距 x1
Beetle 主控板 x1
红外测距开关 x1
蜂鸣器 x1
充电宝 x1
震动马达 (可选)(店长推荐)
导线、铅丝、焊接工具不一而足

先把测距用铅丝固定到椅子背面,最好和自己的后脑保持水平。
拿什么拯救你,我的颈椎图3

把七七八八的东西绑到椅子边上。注意红外测距(右上角黄色部分)要调整好有效距离,能测出人是否坐着。
拿什么拯救你,我的颈椎图1

蜂鸣器和震动马达、电池、beetle放一起。
所以为什么要用震动马达?蜂鸣器不够么?
因为场景是办公室。蜂鸣器会吵同事啊。你喜欢鄙视的眼神是不是?

我知道,我也觉得丑。无路赛。


拿什么拯救你,我的颈椎图2



如果不想用充电宝,一根线连电脑也可以。

听说有人要视频。
没有视频。

勉强画了个图。

首先没人坐上去是不会触发警报的。没图。

然后你坐直了也是不会触发警报的。如图。

拿什么拯救你,我的颈椎图7


但是你坐姿有变就会触发警报。大概如图。
拿什么拯救你,我的颈椎图6





大致代码如下,参数可调整。

  1. #define trigPin 4
  2. #define echoPin 5
  3. #define irPin 3
  4. #define warnPin 2
  5. int count = 0;
  6. int countThreshold = 5;
  7. int warnTime = 200;
  8. int postureDistance = 20; //cm
  9. int maxDistance = 3000;
  10. void setup() {
  11.   Serial.begin (9600);
  12.   pinMode(trigPin, OUTPUT);
  13.   pinMode(echoPin, INPUT);
  14.   pinMode(irPin, INPUT);
  15.   pinMode(warnPin, OUTPUT);
  16. }
  17. void loop() {
  18.   long duration, distance;
  19.   // for ultra sound distance sensor
  20.   digitalWrite(trigPin, LOW);  
  21.   delayMicroseconds(2);
  22.   digitalWrite(trigPin, HIGH);
  23.   delayMicroseconds(10);
  24.   digitalWrite(trigPin, LOW);
  25.   // head position
  26.   duration = pulseIn(echoPin, HIGH);
  27.   distance = (duration / 2) / 29.1;
  28.   Serial.print(distance);
  29.   Serial.println(" cm");
  30.   // ir 0 means object detected, so someone is sitting
  31.   int ir = !digitalRead(irPin);
  32.   digitalWrite(13, ir);
  33.   Serial.print("ir: ");
  34.   Serial.println(ir);
  35.   if (ir && distance > postureDistance && distance < maxDistance) {
  36.     // accumulate count when person detected
  37.     count++;
  38.   } else {
  39.     // cool down
  40.       count = 0;
  41.   }
  42.   Serial.print("count:");
  43.   Serial.println(count);
  44.   
  45.   delay(1000);
  46.   if ( count >= countThreshold ) {
  47.     // need to warn you
  48.     digitalWrite(warnPin, HIGH);
  49.     Serial.println("###########Warning!!#############");
  50.     count = 0;
  51.     delay(warnTime);
  52.     digitalWrite(warnPin, LOW);
  53.   } else {
  54.     digitalWrite(warnPin, LOW);
  55.   }
  56. }
复制代码







创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(14)
派大星ym
派大星ym
,,,
派大星ym
派大星ym
牛牛牛牛牛
酒酒樱桃
酒酒樱桃
哈哈哈哈可以
酒酒樱桃
酒酒樱桃
哈哈哈哈可以
健健撒啦嗨
健健撒啦嗨
能用就好
爱吃柠檬的兔子
爱吃柠檬的兔子
楼主的创意很好啊,在办公室坐一天,真的会崩溃啊,可是参考做一个,拯救一下自己咯
杨洋
杨洋
这 个可以有
virtualwiz
virtualwiz
很好玩的作品呀:lol而且不丑,极客风格
我桌子前面是个自制的热释电感应灯,必须每隔3分钟活动一下脖子,否则灯就会灭2333;P
virtualwiz
virtualwiz回复iooops
眼前一片漆黑呗:lol
下礼拜搞完学校比赛来一波教程
iooops
iooops回复virtualwiz
活动脖子……啊哈哈哈哈哈哈你不动会怎样 - -
visionsl
visionsl
话说会不会不小心绊倒
hnyzcj
hnyzcj
你们的椅子这下高大上了。
shinkpad
shinkpad
原来跳D是干这个的
heinau
heinau
嗯的确有点丑,说无路赛也没有用哈哈哈哈哈哈哈哈!
话说撸主这个用起来是什么样子啊?
Ash1
Ash1回复rexpie
有图了也没有用 我想看传感器的灵敏度和卤煮被震的频率
heinau
heinau回复rexpie
哇楼主这图画的真是,神型俱在,展现了灰常高超的绘画技巧
但是还是想知道喇个椅子会肿么哔哔怎么办
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
Ash1
Ash1
既然不让说 那我就不提丑这件事儿了
话说卤煮能上个演示视频,让我们知道这货怎么work的么
dsweiliang
dsweiliang
哈哈哈,这个可以有,可惜我的凳子没有靠背
- 没有更多了 -