查看:
24958
回复: 50 |
告别久坐,健康工作,创佳健康助手(2016年10月30日更新,进度100%)已完结
|
|||
|
发表于2016-09-28 18:59:59
|
只看该作者
1#
电梯直达
立创君11月7日晚21点插楼提示:该作品已荣获首届立创商城电子制作节三等奖,点我查看6强完整名单。 立创君11月3日晚21点插楼提示:该作品已进入首届立创商城电子制作节15强,点我投票参与公投,选出最终6强!
3、系统构架图 用图框和箭头的形式,描述您的电子制作作品的组成构架。即方案图。
4、原理图和PCB图纸
5、 实物图材料清单(BOM列表)
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 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#
|
|||
|
发表于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#
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-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 22:56:05
|
只看该作者
40#
你软件延迟真多,除非上OS,否则实时控制不能用
|
|||
|
发表于2016-10-24 09:31:39
|
只看该作者
41#
那个是PM2.5的电平控制采集要求,最后谢谢,最近也在学UCOS
|
|||
|
发表于2016-10-26 10:44:34
|
只看该作者
42#
这是创佳健康助手的BOM元器件表和设计文档,是我和队友一起整理出来的。 关于开源,等比赛结束后,和队友讨论是否开源。 下面是讲解视频,要是有问题请提出来,目前进度已经完成,谢谢大家支持!! |
|||
|
发表于2016-10-26 15:46:33
|
只看该作者
43#
这个设想非常好,最好自带按摩功能
|
|||
|
发表于2016-10-30 21:18:05
|
只看该作者
44#
作品到此已经完结,谢谢版主,谢谢大家支持!
|
|||
|
发表于2016-10-31 10:25:17
|
只看该作者
45#
你这系统向办公室推估计不乐观,办公室特别是电脑久坐的,我弄个软件提醒不就得了?或者手机APP提醒
|
|||
|
发表于2016-10-31 20:28:06
|
只看该作者
46#
要是目标不存在,或者离开没有带手机,你能确定精度够好,没有误差,还是你能确定你一定就能坐你设置的时间? 但是靠一个定时器来实现一个手机APP,那你觉得这个这个APP的活力有多大。 |
|||
|
发表于2016-11-01 10:44:51
|
只看该作者
47#
你把产品做到坐垫上那才有意义,用压力传感器直接搞定
|
|||
|
发表于2016-11-01 10:45:47
|
只看该作者
48#
没必要整得像被摄像头偷拍那种效果
|
|||
|
发表于2016-11-01 15:45:04
|
只看该作者
49#
我也有这样想过,但是看以后有没有时间弄,但是仁者见仁智者见智,每一个人的看法都不一样,加上我一个人不可能去设置的很完善的作品出来,说到底这只是个参赛作品,离量产不知道有多远,最后谢谢你的指导!
|
|||
|
发表于2016-11-09 20:22:50
|
只看该作者
50#
能够用这个,应该对健康比较重视的,所以有个简单的提醒也不错。当然不用电脑,有些麻烦,因为不知道坐了多久,工作了多久。。 我个人认为,以坐垫的形式比较好,好的坐垫本身就有价值。 价格合适,我都会买。 |
|||
|
发表于2018-02-05 23:51:44
|
只看该作者
51#
关于ee_Delay,老酒有何好的建议?
|
|