信盈达智能手环实验报告_第1页
信盈达智能手环实验报告_第2页
信盈达智能手环实验报告_第3页
信盈达智能手环实验报告_第4页
信盈达智能手环实验报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《电子设计策划与创新实践》报告---基于STM32的智能手环设计专业:电子信息工程班级:电子1821姓名:檀厚泽学号:1830106105指导教师:姜莉2021年7月1.实训目的 1.1巩固和加深对单片机原理和接口技术知识的理解; 1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力; 1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法; 1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法; 1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。2.实训要求2.1熟练使用C语言编程2.2能看懂电路图、数电时序图2.3能看懂CPU数据手册和传感器数据手册2.4能够熟练使用ST系列CPU开发2.5熟练掌握CPU下常见外设:IO、中断、定时2.6熟练掌握常见的通信协议:I2C、SPI、串口2.7具备常见的硬件排错能力和软件调试能力2.8熟悉嵌入式产品的开发流程3.硬件设计3.1硬件实物图介绍1)主控芯片:STM32F411(Cortex-M4)2)LED(2个):GPIO输出3)KEY(1个):GPIO输入ADC五向按键4)OLED屏:SPI通信,编程实现自由显示字符+图片5)直流电机:PWM调速(TIM)6)SHT20(温湿度传感器):单总线,有特定的驱动方法7)MPU6050:计步算法8)HP-6:心率、血压9)W25Q64:存储芯片,对数据(温湿度、步数、心率、血压)的存储3.2主要元器件介绍(1)主控cpu:内核:内核:ARMCORTEX-M4片上/片内外设:CPU里面---CPU数据手册中描述的片外外设:外接的传感器IO口:熟悉开发环境、下载方式、CPU手册查看方式中断:解放CPU,提高CPU执行效率---代码优化定时:CPU内部自带时基单元通信:CPU和外界传感器数据交流的协议规范显示:界面交流(2)SHT20温湿度传感器SHT20是瑞士SensirionSHT20是瑞士Sensirion(盛思锐)进口温湿度传感器,1.通讯接口为IIC接口。2.测量范围:湿度:0~100%,温度-40~+25°C。3.湿度误差为:正负3%,温度误差为:正负0.3°C。4.供电范围:2.1v~3.6v。最大功耗为300uA,不测时自动进入低功耗模式。(3)OLED显示设备项目板OLED屏特性1.屏幕自带LCD驱动芯片:型号SH1106项目板OLED屏特性1.屏幕自带LCD驱动芯片:型号SH11062.分辨率/像素点:132*64(理解成XY坐标)3.OLED支持4种通信通信,具体采用哪种,和硬件连接有关驱动原理CPU----->把要显示的数据传递给LCD显示控制器(驱动芯片)LCD显示控制器---->要显示的内容内部处理后--->送到屏幕上(4)HP6心率血压传感器HP6是深圳市维亿魄科技公司的心率血压传感器。内部自带心率血压算法,心率准确度为90%,血压准确度为70%。通讯接口为IIC接口。支持读取脉搏波形数据进行算法研究,硬件上对脉搏信号进行动态滤波和放大。HP6模块的血压、心率测量是通过光电脉搏波获得的,它对光学设计有严格的要求。HP6适用于IIC接口通讯,7bite硬件地址:0x66;IIC通讯速率为100K。HP6是深圳市维亿魄科技公司的心率血压传感器。内部自带心率血压算法,心率准确度为90%,血压准确度为70%。通讯接口为IIC接口。支持读取脉搏波形数据进行算法研究,硬件上对脉搏信号进行动态滤波和放大。HP6模块的血压、心率测量是通过光电脉搏波获得的,它对光学设计有严格的要求。HP6适用于IIC接口通讯,7bite硬件地址:0x66;IIC通讯速率为100K。3.3功能电路介绍(1)CPU原理图:在STM32中选用IO模式浮空输入:可以做KEY识别,RX1上拉输入:IO内部上拉电阻输入下拉输入:IO内部下拉电阻输入模拟输入:应用ADC模拟输入,或者低功耗下省电开漏输出:IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能。推挽输出:IO输出0-接GND,IO输出1-接VCC,读输入值是未知的复用功能的推挽输出:片内外设功能(例如I2C的SCL,SDA)复用功能的开漏输出:片内外设功能(例如I2C的SCL,SDA)(2)SHT20温湿度传感原理图:当传感器在执行测量任务时,SCL线仍然保持开放状态,可进行其他通讯。非主机模式允许传感器进行测量时在总线上处理其他I2C总线通讯任务。(3)OLED原理图:SPI控制器的初始化步骤有以下几步:1SPI控制器的初始化步骤有以下几步:1.使能SPI复用功能所映射的GPIO口时钟。2.SPI控制器时钟使能。3.配置GPIO为复用功能。(MOSI/MISO/CLK)4.GPIO复用功能为第几复用功能(AFx)。5.配置GPIO输出速率为50MHz。 6.配置SPIx->CR1寄存器。 (4)HP6心率血压传感器HP6的测试原理是绿色发光二极管发光,照射到皮肤,再反射到光电二极管,随着脉搏的跳动,光电二极管产生强弱变化的电流,电流经过电阻就能产生强弱变化的电压,强弱变化的电压经过放大,再经过AD采样,就可以获得脉搏波数字信号,数字信号输入到算法函数,即可得到计算结果。上面的原理流程都是在HP6内部完成。我们使用HP6时,只需要发指令打HP6的测试原理是绿色发光二极管发光,照射到皮肤,再反射到光电二极管,随着脉搏的跳动,光电二极管产生强弱变化的电流,电流经过电阻就能产生强弱变化的电压,强弱变化的电压经过放大,再经过AD采样,就可以获得脉搏波数字信号,数字信号输入到算法函数,即可得到计算结果。上面的原理流程都是在HP6内部完成。我们使用HP6时,只需要发指令打开测量,发指令读取测量状态以及结果,测量完成后,发送指令去关闭测量。注意:HP6绝对不允许绿色发光二极管的光直接照射到光电二极管!4.软件设计4.1主要功能1、通过OLED屏显示时间日期、温湿度和各工作界面2、通过按键进行开机唤醒和各功能之间的切换3、采用SHT20温湿度芯片显示当前的温湿度4、采用MPU6050并结合计步算法进行计步操作5、采用HP-6进行心率/血压的测量6、采用蓝牙HC-06和手机app端相连,实现手机端控制7、采用ucos_ii系统处理各模块任务之间的流畅运行4.2核心传感器主要功能代码介绍(1)LED原理图:点亮LED灯的程序代码:#include"stm32f4xx.h"voiddelay(void){u32i;for(i=10000000;i>0;i--);}intmain(){RCC->AHB1ENR|=1<<0;//PA端口时钟使能。第六章GPIOA->MODER&=~(3<<14);//32bit,清零GPIOA->MODER|=1<<14;//配置PA7IO口,为通用输出功能GPIOA->OTYPER&=~(1<<7);//配置PA7为推挽输出GPIOA->OSPEEDR&=~(3<<14);GPIOA->OSPEEDR|=2<<14;//配置PA7的输出速度50MHZwhile(1){GPIOA->ODR&=~(1<<7);//PA7输出低电平delay();GPIOA->ODR|=1<<7;//PA7输出高电平delay();}}(2)KEY原理图按键初始化,并检测按键是否按下:#include"key.h"#defineKEY((GPIOA->IDR&1<<0)&&1)//PA0高有效voiddelay(u32t){while(t){t--;}}voidkey_init(){RCC->AHB1ENR|=1<<0;//PA时钟使能GPIOA->MODER&=~(3<<0);//PA0通用输入GPIOA->PUPDR&=~(3<<0);//PA0无上下拉}u8key_scan(){staticu8key_sta=1;if(key_sta&&(KEY==1))//按键按下,且状态锁处于解锁状态{key_sta=0;//锁上按键状态锁delay(60000);//去抖动if(KEY==1)//去抖动后,按键的输入电平为高电平,则按键按下{return1;//按键按下,返回1}}elseif(KEY==0){key_sta=1;}return0;}(3)SPI1控制器驱动OLED屏初始化代码:voidSpi1_init(void){RCC->AHB1ENR|=1<<1;//PB时钟使能RCC->APB2ENR|=1<<12;//SPI1控制器时钟使能GPIOB->MODER&=~(0X3F<<6);//配置PB3/4/5的GPIO功能为复用功能GPIOB->MODER|=0X2A<<6;GPIOB->AFR[0]&=~(0XFFF<<12);//PB3/4/5AF5功能GPIOB->AFR[0]|=0X555<<12;GPIOB->OSPEEDR&=~(0X3F<<6);//io输出速度50MHZGPIOB->OSPEEDR|=0X2A<<6;/*SPI1配置,大部分位使用默认值*/SPI1->CR1=0;SPI1->CR1|=3<<8;//SSMSSISPI1->CR1|=1<<2;//主模式//SPI1->CR1|=4<<3;//速度100/64MHZSPI1->CR1|=1<<6;//使能SPI1}(4)读取SHT20温湿度的驱动代码#defineREAD_TEMP_COMD0xf3//读取温度命令#defineREAD_HUMI_COMD0xf5//读取湿度命令#defineSHT20ADDR0x80//SHT20地址floatSHT20_readTemOrHum(u8commod){floattemp;//温度u8ack=1;u8MSB,LSB;//温度、相对湿度的寄存器数据floatHumidity,Temperature;//温湿度的转换结果SHT20_setResolution();//设置帧率8bit,9bit,10bit,11bit,12bit,13bit,14bitIIC_start();//iic开始信号ack=SHT20_writeOneByte(SHT20ADDR&0xfe);if(ack==ACK)//写地址,并等待ACK{if(SHT20_writeOneByte(commod)==ACK)//写命令{do{delay_ms(6);//延时IIC_start();//发送开始信号}while(SHT20_writeOneByte(SHT20ADDR|0x01)==NACK);//无应答则整形,还在测量中,如果有应答,则结束当前循环MSB=SHT20_readOneByte(ACK);//读Data(MSB),给应答ACKLSB=SHT20_readOneByte(ACK);//读Data(LSB),给应答ACKSHT20_readOneByte(NACK);//读Checksum,不给应答NACKIIC_stop();//StopI2CSB&=0fc;Daa(S)0’temp=MSB*256+LSB;//十六进制转成十进制if(commod==((u8)READ_HUMI_COMD))//命令为读取湿度的命令{/*--calculaterelativehumidity[%RH]--*/Humidity=(temp*125)/65536-6;//公式:RH%=-6+125*SRH/2^16returnHumidity;//返回值:humidity}elseif(commod==((u8)READ_TEMP_COMD))//命令为读取温度的命令{--cacuaeemperaure[]--/Temperature=(temp*175.72f)/65536-46.85f;//公式:T=-46.85+175.72*ST/2^16returnTemperature;//返回值:temperature}}}returnFAIL;}(5)HP-6心率、血压ADC获取代码staticuint8_ttx_buf[24]={0};staticuint8_trx_buf[24]={0};uint8_t*ad_buf;tx_buf[4]=0x91;timeout_cnt=0;//1血压大包ADC数据分32次读取for(i=0;i<32;){tx_buf[5]=i;//包号tx_buf[6]=id;//需要按协议有求填写crc=Crc16(&tx_buf[4],18);//数据校验*(uint16_t*)(&tx_buf[22])=crc;I2cWrite(tx_buf,24);//发送命令到血压模块delay_ms(5);//读写间隔延时I2cRead(rx_buf,24);//读取返回值crc=*(uint16*)(&rx_buf[22]);//校验确定都回来的是否为有效数据check_sum=Crc16(&rx_buf[4],18);if(check_sum==crc)//如果读取上来的数据是正确的{//这里需要判断返回的包续是否为0xFF,具体见协议内容for(j=0;j<16;j++){ad_buf[j+(i*16)]=rx_buf[6+j];//提取ADC数据保存的ad_buf}i++;timeout_cnt=0;}else{timeout_cnt++;}if(timeout_cnt>10){break;}delay_ms(5);//延时}5.调试运行5.1LED灯调试现象烧入程序后,按下复位键,烧入程序后,按下复位键,LED灯开始以较快频率闪烁5.2KEY调试现象烧入程序后,按住功能键烧入程序后,按住功能键,LED亮,松开后灭。5.3滴答定时器调试现象按下复位键,LED按下复位键,LED开始以2s的频率闪烁5.4按键消抖调试现象按下一次按下一次复位键,LED灯快速闪烁(亮灭)一次5.5OLED屏显示现象1.按下1.按下复位键,oled屏幕显示组内成员姓名;2.按下复位键,oled屏幕先显示学校校徽图片,随后立刻出现信盈达开机广告;3.按下复位键,oled屏幕上显示姓名和班级以相反方向上下循环移动。5.6温湿度测试现象按下复位键,显示当前温度和湿度,当温度超过21摄氏度且湿度超过60%RH按下复位键,显示当前温度和湿度,当温度超过21摄氏度且湿度超过60%RH时,下方出现图片提示。5.7心率、血压测量现象(1)显示提示,随后把传感器放在手腕,实时显示心率。(2)显示提示,遵照提示操作,一分钟后显示血压值。(3)当血压、心率过高或过低时,均会显示提示。6.实训心得体会 本次项目从开始到完成共用时一个多星期,时间紧,任务重。我相信大家的项目感受和我的差不多,每个人为了这第一项目都付出了不少的努力。但当我们看到自己的胜利果实时,心中的喜悦无法用语言形容。临近项目接收阶段,回头看看自己度过的这些天,虽然有些辛苦但也是值得付出的。从项目初期的无所适从到项目中期的重拾信心再到项目收官阶段的欣喜激动。其中的苦与乐也有不小,虽然瑕疵很多但毕竟是自己亲手做的项目,但每当看到自己做的项目都会感到很欣慰。 最后感谢老师与同学们的无私帮助,正因为如此我们才可以在规定的时间内完成任务。参考书目:[1]阎石,《数字电子技术基础》,北京,高等教育出版社,2004年[2]周立功,《ARM嵌入式系统基础教程》,北京,北京航空航天大学出版社,2008年[3]邱祎、朱天龙,《嵌入式实时操作系统》,北京,机械工业出版社,2019年[4]肖金球、黄伟军,《单片机原理与应用技术》,北京,清华大学出版社,2019年实训课程设计成绩评定表学生姓名:檀厚泽学号:1830106105年级/班:电子1821所属学院:智能制造学院所在专业:电子信息工程项目分值优秀(100≥x≥90)良好(90>x≥80)中等(80>x≥70)及格(70>x≥60)不及格(x<60)得分学习态度15学习态度认真,科学作风严谨,严格保证设计时间并按任务书中规定的进度开展各项工作学习态度比较认真,科学作风良好,能按期圆满完成任务书规定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论