查看:
24979
回复: 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 10:18:10
|
显示全部楼层
5#
谢谢大家的支持,作品我觉得放在办工桌上好,可以很方便的使用,要是集成到电脑椅子上,产品成本将会上升。
|
|||
|
发表于2016-09-29 10:23:24
|
显示全部楼层
6#
作品实现功能大纲已经确立, 提醒时间是智能的,不是固定的哦,采用传感器,监测人体,按照用户设定的时间进行语音提醒,如果用户中途离开凳子,会自动等到用户坐下重新计时哦。 还有丰富的功能,环境微粒质量监测,温湿度监测(话说空调病对办公室人群也是很严峻的哦)。 |
|||
|
发表于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-02 10:37:03
|
显示全部楼层
15#
算上模块不打包装·不超过130元 |
|||
|
发表于2016-10-02 10:37:31
|
显示全部楼层
16#
祝大家国庆快乐 |
|||
|
发表于2016-10-09 17:44:23
|
显示全部楼层
18#
大家好,样板已经到手了,大家可以看看,有什么不足可以讨论。 这是样板正面 这是反面 先说说我们样板的功能 一、主要来讲,单片机产品设计都是围绕这最小系统板而开发的,这块板主要电路有1、STM32单片机电路。2、晶振电路。3、复位电路。4、AT24c02和FLASE电路(用来储存液晶触摸校正和久坐时间和天数的记录) 5、PM2.5,人体红外,红外快关,蓝牙,温湿度,语音模块接口 板子大小:100mm*80mm 而样板弄出来后,我的队友正在绘制产品初代3D模型和亚克力外包装的CAD制图。(因为我们学校有激光切割亚克力的机器) 板子正在焊接当中,敬请期待。
|
|||
|
发表于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-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 21:08:17
|
显示全部楼层
39#
谢谢
|
|||
|
发表于2016-10-24 09:31:39
|
显示全部楼层
41#
那个是PM2.5的电平控制采集要求,最后谢谢,最近也在学UCOS
|
|||
|
发表于2016-10-26 10:44:34
|
显示全部楼层
42#
这是创佳健康助手的BOM元器件表和设计文档,是我和队友一起整理出来的。 关于开源,等比赛结束后,和队友讨论是否开源。 下面是讲解视频,要是有问题请提出来,目前进度已经完成,谢谢大家支持!! |
|||
|
发表于2016-10-30 21:18:05
|
显示全部楼层
44#
作品到此已经完结,谢谢版主,谢谢大家支持!
|
|||
|
发表于2016-10-31 20:28:06
|
显示全部楼层
46#
要是目标不存在,或者离开没有带手机,你能确定精度够好,没有误差,还是你能确定你一定就能坐你设置的时间? 但是靠一个定时器来实现一个手机APP,那你觉得这个这个APP的活力有多大。 |
|||
|
发表于2016-11-01 15:45:04
|
显示全部楼层
49#
我也有这样想过,但是看以后有没有时间弄,但是仁者见仁智者见智,每一个人的看法都不一样,加上我一个人不可能去设置的很完善的作品出来,说到底这只是个参赛作品,离量产不知道有多远,最后谢谢你的指导!
|
|