
【IT168 评测】3月初,一款叫做CoWatch的智能手表走进了人们的视野。开售那天,666台现货9分钟就被一抢而空,无论它的外观、它的配置、还是它的应用,都深深地吸引了很多人。但是,这块手表到底表现如何呢?相信很多人都很期待。笔者提前从爱魔客拿到了这款产品,下面,笔者就来为大家分享一下这款产品的使用感受!
配置参数:豪华
从上面参数可以看出,这款产品配置堪称豪华,特别是以下几点,值得重点说明:
1、超低功耗CPU:CoWatch采用的是Ingenic的Newton2 M200双核1.2GHz处理器,超低功耗再配合AMOLED在功耗上的先天优势以及CoWatch自身的SLPT超低功耗长亮模式,让CoWatch在。从目前笔者试用情况来看也的确如此,而且它还兼顾了整个系统 *** 作的流畅度。
2、8G+1G搭配方案: CoWatch将存储空间和系统内存分别提升到了8G和1G,类似于手机的硬件更新,这种方案配置想必会在今年成为主流。
3、九轴传感器和心率传感器:CoWatch采用的心率传感器为原相PAH8001EI-QG,应该是目前性价比最高的动态心率传感器,检测准确可靠运动传感器采用的是InvenSense MPU-9255的九轴Sensor,不仅仅对于方位、速度的感应非常精确,而且还能够感应地球磁场,从而实现指南针应用。
外观:大气时尚
首先评估一款智能手表的好坏肯定在于这款手表的外观。一款产品的外观是否好看,做工是否精细,直接决定了一款产品的成败。CoWatch的设计没有让我们失望,整体看起来时尚大气,再加上304L不锈钢金属机身,米兰尼斯不锈钢编织表带,和非常精细的做工,让CoWatch绝对可以和任何大牌产品相媲美。需要指出的是,这块手表的下壳采用了陶瓷材质(每一片陶瓷配件要经历8道工序40天的等待才能形成),也就是小米5手机背壳所用的材料,它既不会影响信号,又十分具有质感,值得称道。
屏幕:室外清晰可见
智能手表中最重要的当然还是屏幕,无论是显示的效果,还是耗电、交互等都与屏幕息息相关。CoWatch采用的是1.4英寸分辨率400x400的AMOLED屏幕,像素密度达到了286PPI,也就是视网膜的水平。另外,AMOLED屏在显示效果和功耗上有着天然的优势,这也是苹果Apple Watch也采用了AMOLED屏幕的原因。正因为CoWatch采用了此种屏幕,所以它在功耗上有着很强劲的表现,在下文中,笔者会专门介绍。
另外,这块屏幕无论是在室内,还是在室外阳光下,都清晰可见。所以,购买的时候,大家不需要担心应用场景的问题。
系统:绚丽好用
系统是一块智能手表的灵魂,系统稳定度如何,是否好用,对于整块智能手表都至关重要。CoWatch在系统上分为两个版本,一个是海外版本,一个是国内版本,这次笔者拿到的是国内版本,采用的是基于Android定制的CoWatch OS。
从美观度上而言,这款系统还是非常不错的,虽然有点模仿苹果的痕迹,但是无伤大雅,整个系统都显得比较精美时尚。特别是这款手表内置了很多精美的表盘,可以自由更换,这就极大地提升了一款手表的新鲜感。起码,笔者自己在使用的过程中,每天都会根据自己的穿着更换一套表盘。换一套表盘,就是一种心情
在交互上,CoWatch OS采用了CardFlow卡片式交互方式,这是一款以划动手势 *** 作为主的交互方式,并且极大地减少了系统 *** 作的层级,虽然上手需要简单的学习,但是,一旦上手以后,使用将会非常简单,体验非常好,各种应用的调出退出、信息查看都得心应手。就比如,CoWatch在表盘界面下,从上下左右四个方向滑动,就可以轻松调出日常最常应用的一些功能,大大缩减了 *** 作步骤。
表盘界面从上下左右朝反方向滑动分别调出快捷功能菜单、闹钟菜单、音乐播放和系统程序菜单。
日常应用实测:实用+好用
1)通话和信息推送
也许很多人觉得这个功能很鸡肋,但是其实使用以后,就会发现它其实很实用,起码有了它以后,你再也不用将手机掏出来查看信息和接打电话了,特别是在一些双手不方便的情况下,比如在运动的时候,就是如此。
在信息的推送上,CoWatch无论是对于最为原始的短信,还是微信等的信息推送,都非常及时,提醒也比较明确,通过震动和快捷设置菜单提醒,感受很明确。
其次,在应用通话上,通过手表就能够直接拨打和接听电话,而且,利用手表的麦克风和外放喇叭,效果非常不错。不过,由于手表的体积比较小,所以外放喇叭的音量自然不是很大,所以,在很嘈杂的环境中,还是要利用耳机。
2)运动健康:智能手表杀手锏
对于智能手表而言,目前最为实用的功能可能就是运动健康功能了,CoWatch在运动健康上,主要包括记步、锻炼和心率监测功能,功能设置上基本已经面面俱到。
记步
记步功能能够自主设定目标,并且准确地记录步数和计算出录成和卡路里,这对于每天了解自己的身体运动状况而言,非常重要。笔者在应用一段时间后,就会不自主的形成了随时查看步数的习惯。
锻炼
Cowatch 锻炼功能支持的运动一共有4项跑步、骑车、登山、散步。在打开其中一项进入倒计时后,传感器便会自动工作。在运动结束后还可以得到一个专业的数据,同时把数据保存下来。这些数据可以为自己的日常锻炼提供非常有用的参考,避免盲目锻炼。
心率监测
心率监测对于随时了解自己的身体状况非常有用,特别是在锻炼的时候,随时查看自己的心率,有助于保障自己合理健康地进行健身。另外,这个功能对于老人而言,实用性也很大。测试过这个功能后,笔者自己都有买一个的想法了。
指南针
除了上述功能外,这款手表由于内置了九轴传感器,是能够感应地球磁场的,所以,它能够支持指南针这个功能。虽然这个功能对于笔者而言是没什么用,但是,对于经常进行远足甚至是冒险的同志来说,可能就是救命的功能了。
其它
另外这款手表还支持闹钟、录音机、计算器,甚至是爱奇艺等功能和其它软件拓展,但是,由于笔者不常用,最多的只用到了闹钟(震动唤醒,很可靠),所以笔者就不多说了。
总结&建议
Cowatch智能手表应该是目前国产品牌中功能最齐全、技术最先进的智能手表之一了,绚丽的屏幕可360°无死角显示,让你在任何地方任何角度都能够阅读智能手表中的信息先进的传感器让你在日常锻炼时,可以获得更加精确的运动信息急时地消息推送,让你在日常中不落下任何信息......总之,CoWatch已经走到了智能手表的前列。不过,作为一款新生的手表,售后和后期软件服务才是决定成败的关键,希望CoWatch可以继续坚持下去,为每一个支持它的人提供最好的体验。
这个是主程序和部分代码由于字数限制所以你还是留个邮箱吧void main(void)
{
unsigned char i
sys_init()
beep = 1
LCD12864_DisplayOneLine(0x80,ucStr1)//显示信息1
LCD12864_DisplayOneLine(0x90,ucStr2)//显示信息2
LCD12864_DisplayOneLine(0x88,ucStr3)//显示信息3
LCD12864_DisplayOneLine(0x98,ucStr4)//显示信息4
while(1)
{
sendDataToProcessing('S', Signal)// 发送并处理原始脉搏传感器数据
if (QS == true){ // 确定发现一个心跳
fadeRate = 255 // Set 'fadeRate' Variable to 255 to fade LED with pulse
sendDataToProcessing('B',BPM) // 发送一个'B'和心率
sendDataToProcessing('Q',IBI) // send time between beats with a 'Q' prefix
QS = false // reset the Quantified Self flag for next time
LCD_disp_list_char(2,4,DisBuff)//在LCD12864上显示BPM
}
delay(138)// 延时 19.6ms
LCD_disp_list_char(4,4,DisBuff2)
//ledFadeToBeat()
if(Pressure<100){
for(i=0i<8i++){
delay(1000)}
if (Pressure<100){
beep = 0}}
if(BPM<60|BPM>100){
for(i=0i<9i++){
delay(1000)}
if(BPM<60|BPM>100){
beep = 0}
for(i = 0i<16i++) //依次执行写入 *** 作
{
putchar(ucStr1[i])
}
for(i = 0i<16i++) //依次执行写入 *** 作
{
putchar(ucStr2[i])
}
for(i=0i<3i++)
{
putchar(DisBuff[i])}
for(i = 0i<16i++) //依次执行写入 *** 作
{
putchar(ucStr3[i])
}
for(i = 0i<16i++) //依次执行写入 *** 作
{
putchar(ucStr4[i])
}
for(i=0i<4i++)
{
putchar(DisBuff2[i])}
}
}
//void ledFadeToBeat(){
//fadeRate -= 15// set LED fade value
//fadeRate = constrain(fadeRate,0,255) // keep LED fade value from going into negative numbers!
//analogWrite(fadePin,fadeRate) // fade LED
// }
/******************************************************************************
函数名称:GetADCResult
函数功能:获取AD转换结果函数
入口参数:BYTE ch(通道选择)
返回值:result(A/D转换结果)
备注:无
*******************************************************************************/
unsigned int GetADCResult(BYTE ch)
{ unsigned int result //AD转换结果result
ADC_CONTR&=0xf8 //清除ADC控制寄存器ADC CONTR的CHS2、CHS1、CHS0(清除通道选择)
_nop_() //设置ADC CONTR控制寄存器后,要加4个空 *** 作延时才可以正确读到ADC CONTR寄存器的值
_nop_()
_nop_()
_nop_()
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START//开ADC电源,选择AD转换速率,并选择AD通道,开始AD转换
_nop_() //设置ADC CONTR控制寄存器后,要加4个空 *** 作延时才可以正确读到ADC CONTR寄存器的值
_nop_()
_nop_()
_nop_()
while (!(ADC_CONTR &ADC_FLAG))//等待AD转换结束
ADC_CONTR &= ~ADC_FLAG//关闭ADC
result=ADC_RES//将AD转换结果的高两位赋给result
result=result<<8 //将result循环左移8位
result+=ADC_RESL //将AD转换结果的底8位加高两位共10位给result
return result //返回10位AD转换结果
}
void sendDataToProcessing(char symbol, int dat ){
putchar(symbol) // symbol prefix tells Processing what type of data is coming
printf("%d\r\n",dat) // the data to send culminating in a carriage return
}
void UART_init(void)
{
TMOD = 0x20 //定时器工作在定时器1的方式2
PCON = 0x00 //不倍频
SCON = 0x50//串口工作在方式1,并且启动串行接收
TH1 = 0xFd//设置波特率 9600
TL1 = 0xFd
TR1 = 1 //启动定时器1
}
char putchar(unsigned char dat)
{
TI=0
SBUF=dat
while(!TI)
TI=0
return SBUF
}
void _nop_ (void)
{}
void T0_init(void){
// Initializes Timer0 to throw an interrupt every 2mS.
TMOD |= 0x01//16bit TIMER
TL0=T0MS
TH0=T0MS>>8
TR0=1 //start Timer 0
ET0=1 //enable Timer Interrupt
EA=1// MAKE SURE GLOBAL INTERRUPTS ARE ENABLED
}
void T1_init(void){
// Initializes Timer0 to throw an interrupt every 2mS.
TMOD |= 0x01//16bit TIMER
TL1=T0MS2
TH1=T0MS2>>8
TR1=1 //start Timer 0
ET1=1 //enable Timer Interrupt
EA=1// MAKE SURE GLOBAL INTERRUPTS ARE ENABLED
}
void ADC_init(unsigned char channel)
{
P1ASF=ADC_MASK<<channel//选择P1. channel作为A/D输入来用
ADC_RES=0//清除ADC结果寄存器RES
ADC_RESL=0//清除ADC结果寄存器RESL
AUXR1 |= 0x04//调整ADC格式的结果
}
void Timer1_rountine(void) interrupt 1
{}
unsigned int analogRead(unsigned char channel)
{
unsigned int result
while (!(ADC_CONTR &ADC_FLAG))//Wait complete flag
ADC_CONTR &=!ADC_FLAG//clear ADC FLAG
result=ADC_RES
result=result<<8
result+=ADC_RESL
// ADC_CONTR|=channel|ADC_POWER|ADC_SPEEDLL|ADC_START
return result
}
// Timer 0中断子程序,每2MS中断一次,读取AD值,计算心率值
void Timer0_rountine(void) interrupt 1
{
int N
unsigned char i
// keep a running total of the last 10 IBI values
unsigned int runningTotal = 0 // clear the runningTotal variable
EA=0 // 关定时器中断
TL0=T0MS
TH0=T0MS>>8 //重装16位定时器初值
Pressure = (GetADCResult(PressurePin)) //****************
DisBuff2[3] = Pressure%10+48//取个位数
DisBuff2[2] = Pressure%100/10+48//取十位数
DisBuff2[1] = Pressure%1000/100+48 //百位数 ***************
DisBuff2[0] = Pressure/1000+48//取千位数
Signal = GetADCResult(PulsePin) // 读脉搏传感器
sampleCounter += 2// 使用这个值跟踪记录脉搏时间间隔在ms级
N = sampleCounter - lastBeatTime // 减上个节拍的时间来避免噪声
// 找到脉搏波的波峰和波谷
if(Signal <thresh &&N >(IBI/5)*3){ // 如果脉搏传感器输出小于电源电压一半 并且 消除噪声时间小于 3/5个脉搏时间间隔
if (Signal <Trough){// 如果脉搏传感器输出小于波谷
Trough = Signal// 跟踪脉搏波的最低点
}
}
if(Signal >thresh &&Signal >Peak){ // 如果输出大于电源电压一半并且大于波峰
Peak = Signal// 将新值设为波峰
}// 跟踪脉搏波的波峰
if (N >250){ // 避免高频噪声
if ( (Signal >thresh) &&(Pulse == false) &&(N >(IBI/5)*3) ){
Pulse = true // 当检测到一个脉搏时将脉搏标志设为真
blinkPin=0 // 点亮脉搏灯
IBI = sampleCounter - lastBeatTime// 测量两个脉搏的时间in mS
lastBeatTime = sampleCounter // 跟踪脉搏时间
if(secondBeat){// 如果这是第二个脉搏
secondBeat = false // 清除标识
for(i=0i<=9i++){ // 全部的数据作为真实脉搏BMP
rate[i] = IBI
}
}
if(firstBeat){ // 如果是第一个脉搏
firstBeat = false // 清除标志
secondBeat = true // 设置第二脉搏标志
EA=1 //开中断
return // IBI 值是不可靠的所以抛弃
}
for(i=0i<=8i++){// 移动数据在rate数组中
rate[i] = rate[i+1] // 顶替旧值
runningTotal += rate[i] // 加上第九个新值
}
rate[9] = IBI // 加最后的IBI到rate数组中
runningTotal += rate[9] // 加上一个IBI到runningTotal
runningTotal /= 10// 取平均值
BPM = 60000/runningTotal // 一分钟可以检测到多少个心跳及 BPM!
if(BPM>200)BPM=200 //限制BPM最高显示值
if(BPM<30)BPM=30 //限制BPM最低显示值
DisBuff[2] = BPM%10+48//取个位数
DisBuff[1] = BPM%100/10+48//取十位数
DisBuff[0] = BPM/100+48 //百位数
if(DisBuff[0]==48)
DisBuff[0]=32
QS = true // 设置QS标志
// QS FLAG IS NOT CLEARED INSIDE THIS ISR
}
}
if (Signal <thresh &&Pulse == true){ // 当电压归零节拍结束
blinkPin=1 // 熄灭脉搏灯
Pulse = false// 重置脉搏标识我们可以重新测
amp = Peak - Trough // 得到脉搏波的峰峰值
thresh = amp/2 + Trough // 设置thresh位脉搏峰峰值的一半
Peak = thresh // 为下一次测试重置波峰
Trough = thresh
}
if (N >2500){ //如果超过2.5秒没有检测到一个脉搏
thresh = 512 // 重新设置波谷
Peak = 512 // 重新设置波峰
Trough = 512 // 重新设置间隔
lastBeatTime = sampleCounter // 把最后的节拍时间更新
firstBeat = true // 重新设置标志避免噪声
secondBeat = false // 当我们得到心跳的时候
}
EA=1 // 开中断
}// end isr
1. 点击【应用程序】。 2. 点击【S健康】。 3. 点击【下一步】。 4. 勾选“我同意”,再点击【下一步】。 5. 根据您所需选择是否登录三星账户或跳过。 6. 输入您的基本信息(姓名、性别、生日),点击【下一步】。 7. 输入您的身高与体重,点击【下一步】。 8. 设置您的活动程度,点击【下一步】。 9. 点击【开始】。 10. 点击【心率】。 11. 阅读使用说明后,点击【确认】。 以上 *** 作完毕后,将您的手指放在机身背面的传感器上,测量将自动开始,完成后即可显示测量数据。 注:在测量结果中,点击【更多】,可查看静息心率范围表。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)