查看: 24968
回复: 50
告别久坐,健康工作,创佳健康助手(2016年10月30日更新,进度100%)已完结

主题

回复
发表于2016-09-28 18:59:59 | 只看该作者
1# 电梯直达

立创君11月7日晚21点插楼提示:该作品已荣获首届立创商城电子制作节三等奖,点我查看6强完整名单。

立创君11月3日晚21点插楼提示:该作品已进入首届立创商城电子制作节15强,点我投票参与公投,选出最终6强!





3、系统构架图

用图框和箭头的形式,描述您的电子制作作品的组成构架。即方案图。

 


4、原理图和PCB图纸

电路板PCB图纸.zip

 

5、 实物图材料清单(BOM列表)

创佳BOM表.zip





6、软件部分的描述(扩展选项,可不写)

如果您的作品涉及到软件或者固件,欢迎也介绍介绍。比如列出软件流程图、精彩

或关键部分的例程、源码或者全部源码(如果是您想开源的话)。



            

7、作品演示(扩展选项,可不写)

操作方法见亮点,其他的一看就知道了。

视频演示请到42楼观看 

 

8、总结

这个是作品文章的结尾,比如可讲讲您在完成这个作品的过程中的一些体会、碰

到的技术问题或调试经验、作品的未来规划、对我们主办方的建议和意见等等。

首先,感谢立创商城给的这次机会!


硬件方面:

硬件方面方面主要是我有AD软件画出来的,最主要的问题是在淘宝上买的晶振频率对不上,浪费我几天时间,希望各位网友注意!

硬件到此结束。

 

软件方面:

软件用KEIL来编写ARM的程序,界面很难做,都是我用ps软件先设计界面,在一步一步的调试功能,这调试大概花费十几天的时间,去实现功能的同时,又具备了性能。




,

主题

回复
发表于2016-09-28 19:04:33   |  只看该作者
2#
原理图正在绘制中,本人学生党一名,请大家多多请教。

主题

回复
发表于2016-09-29 00:09:00   |  只看该作者
3#
这个产品最好集成到电脑椅里面,用分布压力传感器检测久坐时间以及坐姿。。这就是智能办公椅。哇哈哈

主题

回复
发表于2016-09-29 09:40:18   |  只看该作者
4#

相比电脑里的那些提醒软件,我更倾向于有个外置硬件来提醒哪些在电脑旁久坐的人群。

每隔固定的一个时间(可设置,比如1小时),电脑外置的提醒器就强制震动或声光语音等提示一下。这样,键盘侠就知道真是要“中场休息”一下了。





主题

回复
发表于2016-09-29 10:18:10   |  只看该作者
5#
谢谢大家的支持,作品我觉得放在办工桌上好,可以很方便的使用,要是集成到电脑椅子上,产品成本将会上升。

主题

回复
发表于2016-09-29 10:23:24   |  只看该作者
6#

  作品实现功能大纲已经确立,

  提醒时间是智能的,不是固定的哦,采用传感器,监测人体,按照用户设定的时间进行语音提醒,如果用户中途离开凳子,会自动等到用户坐下重新计时哦。

  还有丰富的功能,环境微粒质量监测,温湿度监测(话说空调病对办公室人群也是很严峻的哦)。



主题

回复
发表于2016-09-29 10:31:09   |  只看该作者
7#
发表于2016-09-29 10:23:24  6# 作品实现功能大纲已经确立,提醒时间是智能的,不是固定的哦,采用传感器,监测人体,按照用户设定的时间进行语音提醒,如果用户...


功能不错,也实用!


主题

回复
发表于2016-09-29 11:56:31   |  只看该作者
8#
赞一个

主题

回复
发表于2016-09-29 12:19:54   |  只看该作者
9#

谢谢



主题

回复
发表于2016-09-29 14:49:45   |  只看该作者
10#

  之前画好的原理图,做了些修改,PCB也正在修改中,很快就好了。


主题

回复
发表于2016-09-29 15:00:51   |  只看该作者
11#

http://pan.baidu.com/s/1c1Esjmg

在此分享我的画图软件收藏,PADS9.5、AD10、DXP2004,希望需要的不用麻烦去找了。



主题

回复
发表于2016-09-30 11:33:53   |  只看该作者
12#

这是PCB的正面二维图

这是PCB的正面三维图

这是PCB的背面三维图


主题

回复
发表于2016-09-30 11:36:08   |  只看该作者
13#
国庆学校放假了,而且板也正在打样中,就不出PCB焊接图那些的,等国庆后在实时更新,最后谢谢大家的支持!!

主题

回复
发表于2016-10-01 17:25:16   |  只看该作者
14#
这个产品造价很高啊,,,

主题

回复
发表于2016-10-02 10:37:03   |  只看该作者
15#

算上模块不打包装·不超过130元



主题

回复
发表于2016-10-02 10:37:31   |  只看该作者
16#

祝大家国庆快乐



主题

回复
发表于2016-10-09 09:53:01   |  只看该作者
17#
发表于2016-10-02 10:37:31  16# 祝大家国庆快乐


Good Job! 目测楼主也用了不少心思


主题

回复
发表于2016-10-09 17:44:23   |  只看该作者
18#


大家好,样板已经到手了,大家可以看看,有什么不足可以讨论。

这是样板正面



  这是反面

  先说说我们样板的功能

  一、主要来讲,单片机产品设计都是围绕这最小系统板而开发的,这块板主要电路有1、STM32单片机电路。2、晶振电路。3、复位电路。4、AT24c02和FLASE电路(用来储存液晶触摸校正和久坐时间和天数的记录)

  5、PM2.5,人体红外,红外快关,蓝牙,温湿度,语音模块接口

  板子大小:100mm*80mm

 而样板弄出来后,我的队友正在绘制产品初代3D模型和亚克力外包装的CAD制图。(因为我们学校有激光切割亚克力的机器)

 板子正在焊接当中,敬请期待。



主题

回复
发表于2016-10-11 09:43:36   |  只看该作者
19#
楼主是学生? 

主题

回复
发表于2016-10-12 15:13:49   |  只看该作者
20#

是,我还是在校生,下面就是我焊接好的PCB图和队友设计的模型和亚克力制图,使用CAD软件设计的,程序烧写进去了,就是J-LINK下载口没有买到弯角,只能用直插的。下面上图


主题

回复
发表于2016-10-12 15:17:07   |  只看该作者
21#
还有板子在烧写测试程序是,用串口通信时总是出现乱码,搞了好久,最后才发现是在淘宝买的晶振频率没有到8M左右,只达到7.7M,最后换了学校直插的晶振才行。

主题

回复
发表于2016-10-12 15:18:36   |  只看该作者
22#
用CAD画3D总觉得不好用,觉得UG和soldwork好用点

主题

回复
发表于2016-10-12 15:21:07   |  只看该作者
23#
程序采用32的库函数开发,目前现在正在码代码中。最后谢谢版主支持。

主题

回复
发表于2016-10-16 17:01:03   |  只看该作者
24#

亚克力外壳切出来了,学校机器切的,不用钱,嘻嘻。


主题

回复
发表于2016-10-16 17:06:02   |  只看该作者
25#

这是我这几天移植的程序,主要都是采用库函数,需要的外设和模块程序有的自己写和移植别人的程序。


主题

回复
发表于2016-10-16 17:06:52   |  只看该作者
26#
程序移植代码挺大的,就不一一贴出来了,谢谢大家和板子支持!!

主题

回复
发表于2016-10-18 09:46:42   |  只看该作者
27#
发表于2016-10-16 17:01:03  24# 亚克力外壳切出来了,学校机器切的,不用钱,嘻嘻。
亚克力外壳,切割得不错! 学校里有这个机器,学生真幸福~

主题

回复
发表于2016-10-20 11:09:18   |  只看该作者
28#

初步程序已经调出来了,能显示时间日期,温湿度,其他功能还在开发,全程采用电阻触摸屏控制。


主题

回复
发表于2016-10-20 11:11:37   |  只看该作者
29#
图一正中有两个红外开关和一个人体红外,作品右侧边还有一个PM2.5传感器,左侧变为dht11温湿度传感器和一个语音提示的喇叭。

主题

回复
发表于2016-10-23 14:20:08   |  只看该作者
30#

主题

回复
发表于2016-10-23 14:26:33   |  只看该作者
31#

  这是PM2.5功能实现流程图。

  传感器的输出是一个模拟电压成正比的测量粉尘密度,具有0.5V/0.1mg/m3的灵敏度。

 


主题

回复
发表于2016-10-23 14:27:46   |  只看该作者
32#

这是健康数据的实现流程图


主题

回复
发表于2016-10-23 14:29:12   |  只看该作者
33#

这是久坐提醒的实现流程图


主题

回复
发表于2016-10-23 14:37:43   |  只看该作者
34#

u16 Get_Adc(u8 ch)   
{
                                                                    //设置指定ADC的规则组通道,一个序列,采样时间
ADC_RegularChannelConfig(ADC2, ch, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADC通道,采样时间为239.5周期      
  
ADC_SoftwareStartConvCmd(ADC2, ENABLE);  //使能指定的ADC1的软件转换启动功能
 
while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC ));//等待转换结束

return ADC_GetConversionValue(ADC2); //返回最近一次ADC1规则组的转换结果
}
void GetGP2Y(void)
{ float   adc12;
  static u8 jie[20],zie[20];
  float pm;
  float pm1=0.0356;

GP2Y_Low; 
delay_us(280);
ADC_GetConversionValue(ADC2);
adc12=(float)ADC_GetConversionValue(ADC2)/4096*3.3-0.55;
if(adc12<0){adc12=-adc12;}
  delay_us(40);
GP2Y_High;
delay_us(9680);
  pm1=(float)(adc12-0.0356)*120000*0.035;
  pm = (float)adc12*0.17-0.1;
if(pm1<0){pm1=-pm1;}if(pm<0){pm=-pm;}
om=om+pm1;
om1=om1+pm;
a++;
if(a==100)
{
pm1=om/100.0;pm=om1/100.0;
  if(pm1<=300){Lcd_GramScan(1);LCD_Clear(170,130, 240,50, BACKGROUND);LCD_DispStrCH(190,140, (uint8_t *)"好", RED);LCD_DispStrCH(30,170, (uint8_t *)"今天的空气质量挺好哟", RED);}
else if(pm1>=300&&pm1<=1050){Lcd_GramScan(1);LCD_Clear(170,130, 240,50, BACKGROUND);LCD_DispStrCH(190,140, (uint8_t *)"一般", RED);LCD_DispStrCH(30,170, (uint8_t *)"今天的空气质量一般哦", RED);}
else if(pm1>=1050&&pm1<=3000){Lcd_GramScan(1);LCD_Clear(170, 130, 240,50, BACKGROUND); LCD_DispStrCH(190,140, (uint8_t *)"差", RED);LCD_DispStrCH(30,170, (uint8_t *)"今天的空气质量不好哟", RED);}
else if(pm1>=3000){Lcd_GramScan(1);LCD_Clear(170, 130, 240,50, BACKGROUND); LCD_DispStrCH(190,140, (uint8_t *)"很差", RED);LCD_DispStrCH(30,170, (uint8_t *)"今天的空气质量很差", RED);}
LCD_DispEnCh(10,110, (uint8_t *)"微粒浓度:", RED);
LCD_DispEnCh(10,140, (uint8_t *)"空气质量:", RED);
LCD_DispEnCh(140, 110, (uint8_t *)"毫克/立方米",RED);
sprintf(jie,"%.2f",pm);
sprintf(zie,"%.2f",pm1);
LCD_DispStr(90,140, (uint8_t *)zie, RED);
  LCD_DispStr(90,110, (uint8_t *)jie, RED);
 
Delay(0xfffff); 
a=0;
om=0;
om1=0;
  }
if(lanya==3){printf("PM2.5=%f\n",pm);lanya=0;}

}
这是PM2.5实现的C文件

主题

回复
发表于2016-10-23 14:39:25   |  只看该作者
35#
/*
 函数名:     Renti(void)
 函数作用:  久坐提醒
 输入:无
 输出:无
 返回:无
 */
void Renti(void)
{ static u8 a=0,b=0;
static u16 Qbit=0;

if(HOURBIAO==0)          //开机首次进入需要读取存储久坐时间数
{  
if (ee_CheckOk() == 0){while (1);}
       ee_Delay(0x0FFFFF);
   if (ee_ReadBytes((void*)HOUR2,6, sizeof(HOUR2)) == 0)
  {return;}
HOURBIAO=1;          //正常后开标志位
//  printf("%d", HOUR2[0]);

}
  if(HOURBIAO==1)       //正常后进入久坐函数下面为久坐过程中的处理
{
    if((KAIGUA==0||KAIGUA1==0)&&Zbit==0)
{  i=0;
  if(KAIGUA==0||KAIGUA1==0){Qbit++; delay_ms(1000);}
if(Qbit==3)

 Zbit=1;  
      Qbit=0;
}
LED2(OFF);
}
    else if(KAIGUA==1&&KAIGUA1==1){delay_ms(1000);i++;if(i==15){qingling();}}
 else if((KAIGUA==0||KAIGUA1==0)&&Zbit==1)
   {i=0; 
if(DUAN==0){TIM_Cmd(TIM2, ENABLE);}
if(Jshi>10){Jshi=0;}
if(Jshi==10)
{ bian++;
Jshi=0;
Lcd_GramScan(1);
LCD_DispEnCh(30,180,(uint8_t *)"久坐时间:",RED);
LCD_DispEnCh(170,180,(uint8_t *)"分钟",RED);
LCD_DispChar(150,180,(bian/6)%10+'0',RED);
LCD_DispChar(134,180,(bian/6)/10%10+'0',RED);
LCD_DispChar(118,180,(bian/6)/100+'0',RED);

if(bian==HOUR2[0]) 
{
LED1(OFF);
Lcd_show_bmp(120,0,"/led/tu1.bmp");
rt1=1;
LED4(ON);
E1(OFF);
delay_ms(1000);
LED4(OFF);
E1(ON);
bian=0;
}

}
if(HOUR2[0]>=60)   //人体红外函数,检查在作品面前是人体还是物体,避免误差
  {  renhongwai();
if(banxiao==(HOUR2[0]*10/2)&&HONG==0&&a==0){TIM_Cmd(TIM2,DISABLE);banxiao=0;DUAN=1;b=1;bian=0;shiduflag=0;WKUP_Init();}
else b=0;
   if(banxiao==(HOUR2[0]*10/2)&&HONG>0&&b==0){banxiao=0;HONG=0;dingshi1=0;shibiao1=0;yanshi=0;BK(ON);a=1;shiduflag=0;}
else a=0;
}
     }
}

}
人体久坐实现函数部分

主题

回复
发表于2016-10-23 14:41:26   |  只看该作者
36#
void Management(u8 dat,u8 mon)
{ //k1是取今天的日期,k4是取今天的月份
  u8 k1[1]={0},k4[1]={0},c_flag=0;
//k2为开机从eeprom取得保存日期,k3为开机从eeprom取得保存月份
u8 k2[1]={0},k3[1]={0};
  u16 tian[1]={0},tian1[1]={0};
k1[0]=dat;k4[0]=mon;

if (ee_CheckOk() == 0){while (1);}
ee_Delay(0x0FFFFF);
 
if (ee_ReadBytes((void*)k2, 1, sizeof(k2)) == 0)//取保存日期
{

return;
}
else
{

}
ee_Delay(0x0FFFFF);
if (ee_ReadBytes((void*)k3, 0, sizeof(k2)) == 0)//取保存月份
{

return;
}
else
{

}
/*
k1是取今天的日期 ,k4是取今天的月份
k2为开机从eeprom取得保存日期,k3为开机从eeprom取得保存月份
*/

/*****************************************/
//情况一,当月份相同,保存日期小于当前日期,标志位置一
 if(k4[0]==k3[0]){ if(k2[0]<k1[0]){c_flag=1;
           if (ee_ReadBytes((void*)tian1, 3, sizeof(tian1)) == 0)//取出保存久坐天数
         {return;}
             ee_Delay(0x0FFFFF);
tian[0]=tian1[0]+1;                                   //久坐天数加一
if (ee_WriteBytes((void*)tian, 3, sizeof(tian)) == 0)//写入当前久坐天数
            { return;}
                                 }
               } 
 ee_Delay(0x0FFFFF);  //延时
//情况二,当前月份 大于保存月份 或者反过来 而且保存日期大于当前日期    
 if(k4[0]>k3[0]||k4[0]<k3[0]){
             if(k2[0]>k1[0]){c_flag=1;
           if (ee_ReadBytes((void*)tian1, 3, sizeof(tian1)) == 0)
         {return;}
             ee_Delay(0x0FFFFF);
tian[0]=tian1[0]+1;
if (ee_WriteBytes((void*)tian, 3, sizeof(tian)) == 0)
            { return;}
               ee_Delay(0x0FFFFF);  
                if (ee_WriteBytes((void*)k4, 0, sizeof(k4)) == 0)  //写入当前月份
            { return;}  
}
}
  if(k4[0]<k3[0]||(k4[0]>k3[0])){
             if(k2[0]<k1[0]){c_flag=1;
           if (ee_ReadBytes((void*)tian1, 3, sizeof(tian1)) == 0)
         {return;}
             ee_Delay(0x0FFFFF);
tian[0]=tian1[0]+1;
if (ee_WriteBytes((void*)tian, 3, sizeof(tian)) == 0)
            { return;}
               ee_Delay(0x0FFFFF);  
                if (ee_WriteBytes((void*)k4, 0, sizeof(k4)) == 0)
            { return;}  
}
}
/*****************************************/
if(c_flag==1){ 
ee_Delay(0x0FFFFF);
if (ee_WriteBytes((void*)k1, 1, sizeof(k1)) == 0)
         {return;}
         
 c_flag=0;
            }

/*****************************************/

}

实现久坐天数和久坐总时间实现函数


主题

回复
发表于2016-10-23 14:43:55   |  只看该作者
37#
  作品到这里已经差不多的实现了,这些日子多谢大家的支持,也希望大家对我多多支持,最后面还有作品的文档和视频都在有序的进行中。

主题

回复
发表于2016-10-23 17:37:18   |  只看该作者
38#
厉害~!支持下!!!!

主题

回复
发表于2016-10-23 21:08:17   |  只看该作者
39#
发表于2016-10-23 17:37:18  38# 厉害~!支持下!!!!
谢谢

主题

回复
发表于2016-10-23 22:56:05   |  只看该作者
40#
发表于2016-10-23 14:37:43  34# u16Get_Adc(u8ch){//设置指定ADC的规则组通道,一个序列,采样时间ADC_RegularChannel...
你软件延迟真多,除非上OS,否则实时控制不能用

主题

回复
发表于2016-10-24 09:31:39   |  只看该作者
41#
那个是PM2.5的电平控制采集要求,最后谢谢,最近也在学UCOS

主题

回复
发表于2016-10-26 10:44:34   |  只看该作者
42#

电路板PCB图纸.zip

创佳BOM表.zip

创佳健康助手文档.zip

这是创佳健康助手的BOM元器件表和设计文档,是我和队友一起整理出来的。

关于开源,等比赛结束后,和队友讨论是否开源。

下面是讲解视频,要是有问题请提出来,目前进度已经完成,谢谢大家支持!!


主题

回复
发表于2016-10-26 15:46:33   |  只看该作者
43#
发表于2016-09-29 00:09:00  3# 这个产品最好集成到电脑椅里面,用分布压力传感器检测久坐时间以及坐姿。。这就是智能办公椅。哇哈哈
这个设想非常好,最好自带按摩功能

主题

回复
发表于2016-10-30 21:18:05   |  只看该作者
44#
作品到此已经完结,谢谢版主,谢谢大家支持!

主题

回复
发表于2016-10-31 10:25:17   |  只看该作者
45#
你这系统向办公室推估计不乐观,办公室特别是电脑久坐的,我弄个软件提醒不就得了?或者手机APP提醒

主题

回复
发表于2016-10-31 20:28:06   |  只看该作者
46#
发表于2016-10-31 10:25:17  45# 你这系统向办公室推估计不乐观,办公室特别是电脑久坐的,我弄个软件提醒不就得了?或者手机APP提醒

要是目标不存在,或者离开没有带手机,你能确定精度够好,没有误差,还是你能确定你一定就能坐你设置的时间?

但是靠一个定时器来实现一个手机APP,那你觉得这个这个APP的活力有多大。


主题

回复
发表于2016-11-01 10:44:51   |  只看该作者
47#
发表于2016-10-31 20:28:06  46# 要是目标不存在,或者离开没有带手机,你能确定精度够好,没有误差,还是你能确定你一定就能坐你设置的时间?但是靠一个定时器来...
你把产品做到坐垫上那才有意义,用压力传感器直接搞定

主题

回复
发表于2016-11-01 10:45:47   |  只看该作者
48#
没必要整得像被摄像头偷拍那种效果

主题

回复
发表于2016-11-01 15:45:04   |  只看该作者
49#
发表于2016-11-01 10:45:47  48# 没必要整得像被摄像头偷拍那种效果
我也有这样想过,但是看以后有没有时间弄,但是仁者见仁智者见智,每一个人的看法都不一样,加上我一个人不可能去设置的很完善的作品出来,说到底这只是个参赛作品,离量产不知道有多远,最后谢谢你的指导!

主题

回复
发表于2016-11-09 20:22:50   |  只看该作者
50#

能够用这个,应该对健康比较重视的,所以有个简单的提醒也不错。当然不用电脑,有些麻烦,因为不知道坐了多久,工作了多久。。

我个人认为,以坐垫的形式比较好,好的坐垫本身就有价值。

价格合适,我都会买。


主题

回复
发表于2018-02-05 23:51:44   |  只看该作者
51#
发表于2016-10-23 22:56:05  40# 你软件延迟真多,除非上OS,否则实时控制不能用
关于ee_Delay,老酒有何好的建议?

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部