温湿度检测系统_第1页
温湿度检测系统_第2页
温湿度检测系统_第3页
温湿度检测系统_第4页
温湿度检测系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

郑州轻工业大号

实训报告实训名称: 嵌入式软件工程实践姓名: 院(系): 专业班级: 学号: 指导教师:_实习时间:一、实训目的(一)实习目的本实训课程是针对嵌入式软件专业学生专门设计的,通过本课程设置的几个嵌入式综合项目的系统学习,可以使学生由浅入深的对嵌入式Linux系统进行全面学习,能够独立胜任嵌入式Linux应用开发、系统开发、驱动开发等多方面工作,并注重敬业团队精神培养。1)增强学生的理论联系实际的能力2)通过实训了解企业项目开发流程和学习新技术的方法3)通过实训项目了解企业项目开发过程中文档的整理方法和问题的分析方法4)通过实训项目加强学生对基础课程的运用能力,使其认识到基础知识的重要性5)通过实训争强学生对本专业和未来工作岗位的理解,端正心态,明确就业目标6)通过实训争强学生的编程技能,培养其良好的编码风格和编码习惯(二)方法本实训课程安排在学校实验室统一进行实训,学生上机独立完成规定实训项目。(三)任务要求每位同学独立完成实训题目的编程、调试、优化与测试,并交付使用。要求强化编程思维、编程能力和代码优化的能力,撰写《实训报告》(含:需求分析、总体设计、算法分析及设计中遇到的主要问题和解决方法,设计中尚存的不足与心得体会)。上交完成的所有源程序及相关文件。二、实训安排时间实训内容第一凋实现DHT11数字温湿度传感器获取温湿度,并且把DHT11数字温湿度传感器获取温湿度传输到stm32开发板上。第二周实现LinuxUbuntu的环境搭建,模块编程A9开发板,移植NRF24L01无线通1信模块第三周实现创建阿里云产品和设备,并A9开发板链接阿里云第四周实现Android获取阿里云端数据三、实训报告31项目名称项目名称:嵌入式远程监测实训内容1、嵌入式远程监测与语音控制系统包括智能网关(A9内核,LinuxUbuntu操作系统)1个,无线通信节点1个,包含常用的物联网传感器DHH1,STM32开发板,A9开发板。2、系统每个节点都采用ARMCoitex-M3架构的MCU,可以外接多种传感器以及控制设备。3、同时把传感器的数据以及控制设备的状态在2.8寸LCD屏上进行显示。4、节点通过NRF24L01无线通信模块,把节点的数据传输到网关。5、网关再把数据传输到云服务器。实训过程及相关结果一、采用STM32F103ZE为硬件开发平台,裸板开发驱动程序:1)关于STM32开发板的介绍核心处理器:STM32F103ZET6、主频:72MHZ、引脚:144、GPIO口的管脚个数1122)GPIO口GPIO口是可配置的输入输出口GPIO口的8种工作模式输入:上拉输入下拉输入浮空输入模拟输入输出:推挽输出开漏输出复用推挽输出复用开漏输出3)系统滴答定时器框架:参考时钟系统时钟Reforoncc参考时钟系统时钟Reforoncc配置系统滴答定时器所需配置的寄存器表D.2SysTick控制及状态寄存器(地址:OxEoee.Eeie)位段名称类蟹复位值描述16COUNTFLAGR0如果在上次次取本本存存后,SysTick已经数到re.则该位为1.如果读取该位,该位将门动济等2CLKSOURCER/W00■外部时钟源(STCLK)1■内核时钟(FCLK)1TICKINTR/W0l=Sy$Tick例数到0时产生SysTick异常请求机数到0时无动作0ENABLER/W0SysTick定时器的使能位表D.3SysTick不装载数值寄存器(地址:0xE000_E014)位段名称类型究位值描述23:0RELOADR/W0当倒数至零时.将被重装载的值知4SysTick当前数值寄存器(地址:0xE000_E018)位段名称类型复位值描述23:0CURRENTR/Wc0读取时返回因前例计数的值,写它则使之清零,同时还会清除在SysTick控制及状态寄存器中的COUNTFLAG标志表D.5SysTick校准数值密行器(丽:0xE&80_E01C)位段名称类里复位值描述31NOREFR■1=没行外郃参考时钟(STCLK不可用)0■外都参考时钟可用30SKEWR.1=校准值不是准确的10ms。,校址值是准确的10ms3)点亮一盏LED灯,实现流水灯程序;4)使用PW驱动蜂鸣器程序实现。二、基于stm32节点板采集温湿度数据1、DHT11数字温湿度传感器获取温湿度2、把DHT11数字温湿度传感器获取温湿度传输到stm32节点板上DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。1.通讯过程如下图所示

\——*DHT响应I怆出—主机发开\——*DHT响应I怆出—主机发开I始信号数据W总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉氤VCC-GND单族线—*1DHTVCC-GND单族线—*1DHT拉高=-I80us侑号线说明:主机信号DHT主机信号DHT信号图二总线为低电平,说明DHT11发送响应信号DHT11发送响应信号后,再把总线拉高80iis,准备发送数据,每一bit数据都以50iis低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHTH拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。数字0信号表示方法如下图所示26us-28us表示,0, L信号线说明:26us-28us表示,0, L信号线说明:主机信号DHT信号数字1信号表示方法.如下图所示VCCGNDVCCGND单总线信号线说明:主机信号DHT主机信号DHT信号把DHT11数字温湿度传感器获取温湿度传输到stm32节点板上代码实现#include''mauih"#defiiieDHT_DATA(x)x9(GPIOG->ODR|=(0x01«15)):(GPIOG->ODR&=~(0x01«15))#defiiieDHT_DATA_STATA(!!(GPIOG->IDR&(0x01«15)))imsigiiedchaidlit_data[5]={0};imsigiiedchaitemp_value=20;voidDHT_OUT_MODE(void)GPIOG->CRH&=~(OxFUL<<4*7»/清零GPIOG->CRH|=(0x03«28);//推挽输出)voidDHT_IN_MODE(void)(GPIOG->CRH&=-(OxFu1«4*7);//tW^GPIOG->CRH|=(0x01«30);//浮空输入)#defhieTIME_OUT_MAXOxffifchaicoiifig_dlit11(void)(chai1=0,j=0;umt32ttuneout=TIMEOUTMAX;RCC->APB2ENR|=(0x01 G端口的时钟DHT_OUT_MODE0;〃推挽输出DHT_DATA⑴;〃拉高DHT_DATA(0);〃拉低Delay_ms(20);〃延时20nisDHT_DATA⑴;〃拉高Delay_us(30);//延时30usDHT_IN_MODE0;//浮空输入wlule(DHT_DATA_STAIA)tuneout--;双!timeout)return1;Delay_us(l);}〃等待拉低tuneout=TIME_OUT_MAX;wliiie(!DHT_DATA_STArA)(tuneout--;if(!tuneout)retiim1;Delay_us(l);}〃等待拉高(fbi(j=O;j<8;j-H-)(tuneout=TIMEOUTMAX;while(DHT_DAIA_STATA)//等待拉低(timeout-;if(!timeout)return1;Delay_us(l);)tuneout=TIMEOUTMAX;while(!DHT_DAIA_STArA)〃等待拉高timeout-;if(!tmieout)return1;Delay_us(l);)Dek%us(40);if(DHT_DArA_STATA)(〃代表数据1dlit_data[i]«=l;dlit_data[i]+=l;}else(〃代表数据0dlit_data[i]«=l;))}if(clht_data[4]==(dlit_data[0]+dlit_data[l]+dlit_data[2]+dlit_data[3]))(pnnrf("数据正确\r\n”);pnnrf("温度=%而\1】”,4丘_(1@回2]);pnntf(“湿度=%很1\1』,4丘_(k1@[0]);}elsepnntff数据错误\r\n)}ieturn0;)三、把传感器的数据以及控制设备的状态在2.8寸LCD屏上进行显示通过汉字取模和图片取模软件,把所需要使用汉字和图片转换代码可以调用,并把DHT11数字温湿度传感器获取温湿度数据传输到LCD屏上。DHT11数字温湿度传感器驱动程序:if(dhtll_nuitmie[O]>dlitll_nuitune[l])(dlitll_nintnne[0]=0;if(config_dlitllO)Diaw_Text_8_l6_Sti(100,150^ED.BLUE,(unsignedchar*)nDHTllReadDataEnorH);else(sprmtf(m-Ctx_cIata_bufJrTem=%2d,Hum=%2d,\cIlit_data[2],dlit_data[0]);mf_tx_data_buf[15]=NO;Diaw_Text_8_l6_Str(100,150^ED.BLUE,(unsignedchai*)mf_tx_data_buf);NRF24L0l_TxPacket((u8*)mf_tx_data_buf);四、通过NRF24L01无线通信模块将数据传输到A9开发板上。1、环境搭建(1)安装交叉编译器(2)uboot烧写启动(3)内核的制作、编译,烧写(4)文件系统的搭建及securtCRT软件的应用(5)学习linux系统的基本操作,vim编辑器使用,shell命令使用,熟练使用VI编辑命令和linux常用操作命令。(6)学习linux系统下驱动开发的基础知识,挂载卸载驱动模块,掌握字符设备驱动程序设计方法。2、NRF24L01无线通信模块是使用SPI总线协议,。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。SPI是一个环形总线结构,由ss(cs)>sck>sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。1]上升沿发送、下降沿接收、高位先发送。上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。启动SPI总线协议程序:voidSPI2_Init(void)(GPIO_InitTypeDefGPIO_InitStructure;SPI_InitTypeDefSPI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPI0B,ENABLE);〃P0RTB时钟使能RCC_APBlPeriphClockCmd(RCC_APBlPeriph_SPI2,ENABLE);〃SPI2时钟使能GPIOInitStructure.GPIOPin=GPIOPin13|GPIOPin14|GPIOPin15;GPIO_InitStructure.GPIOJfode=GPIO_Mode_AF_PP;//PB13/14/15复用推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50\IHz;GPI0_Init(GPI0B,&GPIO_InitStructure),/初始化GPIOBGPIOSetBits(GPIOB,GPIOPin131GPIOPin141GPIOPin15);//PB13/14/15上拉SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;〃设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工SPI_InitStructure.SPI_Mode=SPI_Mode_Master;〃设置SPI工作模式:设置为主SPISPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;〃设置SPI的数据大小:SPI发送接收8位帧结构SPIJnitStructure.SPI_CPOL=SPI_CPOL_High; 〃串行同步时钟的空闲状态为高电平SPIJnitStructure.SPI_CPHA=SPI_CPHA_2Edge;〃串行同步时钟的第二个跳变沿(上

升或下降)数据被采样SPIJnitStructure.SPI_NSS=SPI.NSS.Soft;//NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制SPIInitStructure.SPIBaudRatePrescaler=SPIBaudRatePresca1er256; //定义波特率预分频的值:波特率预分频值为256SPIJnitStructure.SPI_FirstBit=SPI_FirstBit_MSB;〃指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始SPIJnitStructure.SPI_CRCPolynomial=7;〃CRC值计算的多项式SPIJnit(SPI2,&SPI_InitStructure);〃根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器SPI_Cmd(SPI2,ENABLE);〃使能SPI外设SPI2_ReadWriteByte(Oxff);〃启动传输)3、移植NRF24L01无线通信模块驱动4、使用securtCRT软件的查询的数据J篇强吁诚码=-[ 97.080000]Datareceived1[ 97.0SOOOO]rece^ved:tnp=2S,t叫>=28,hum=3499.0900001Datareceded: 99.090000]received:trp228.hun=35tnp=28,hum=35'[设赛嬲濡总鬻;4235I,tffp=2S.hum-55i£歌撰翠襦giLi翳接魏湍的热m|亡”・28,i£歌撰翠襦gi五、把A9开发板上的数据传输到云服务器1、在阿里云创建产品和设备及c-sdk的使用1)创建产品:2)创建设备:•• 19 «■X8Tt3W«63 0 3 ⑦QS**»N 8电曰FB -X*比加scMfRAH2 *c^E/•1•电曰FB -X*比加scMfRAH2 *c^E/•1•tnM- ▼JPtiMI v(tviVal开裔6■,8“,7KS2G$・mMS和四•❶U«¥»<“C.ein以F*七七:.门三/ner**<»FmtAMKCHTMTOC\o"1-5"\h\z■extMM atY O** *禽9”8如《4 Sk 不就第0I |。)inCOJD31fAM Wli-2、建立设备与平台的连接1)登录Linux虚拟机。2)获取LinkKitSDK。3)使用unzip命令解压压缩包。hqf@hqf-vm:~/Linux$cdc-sdk-v3.0.1/hqf@hqf-vm:~/Linux/c-sdk-v3.0.1$Iscerts external_libsLICENSE model.jsonsrconfig.batextract.bat makefile output toolscoreextract•shmake•settingsREADME•mdwrappers4)设备身份信息将通过HAL调用返回给SDK。因此,需要将wiappeis/os/ubunmHAL_OS_hiiux.c中的设备证书信息修改为创建产品与设备步骤中创建的设备证书,完成后保存退出。Ubuntu系统上传的数据格式>{> "CurrentTemperature":20,> ,,CurrentHumidity,1:25■此时阿里云显示设备处于在线状态Dev以!Name由注心弥谀总所.履产品节点类空状获向田«忑,IB后上线时间操作0HT11两关•在爱一201职306150139的除himitureSmanPhcne•篇收2019/09,232158:34最后修改Makefile使用交叉编译工具链编译程序挂载到开发板运行即可,前提开发板需要能链接网络建立规则引擎规则引掌«e及与产昆外a规则引掌«e及与产昆外a付-6&R名率 KMVK 现miorRj«Cfa 45ONIOg* J5ON依况出4卷不引门eOMR,trtr中.1・■■2«1BXn(2ftO<11X•«n*103、通过mqtt协议把A9开发板上的数据传输到云服务器4、数据上传到阿里云端并在云端物理模型显示数据bism5■44o*wm•C9yfygC-DHSebism5■44o*wm•C9yfygC-DHSe六、并使用AndioidAPP获取云端数据1、JA\么环境搭建安装JDK并添加JDK环境变量C:V?ython2AG\Fython27\SoiptsG:\Pf。9ramFJciSEspreiUftESP-DFToob5Konf-tdfG'Ho^theHe/EwrussiRESPRfTcok^ook'.binCAWindoA5\sy5tem32CAWindOASCAWWSoa《卜户tanJAWbomCAWW>dOM\Syitem3Z\Wrdow5Pgu1Sb±irw1.6eiWnaoAs'.SyiteniSZvapenSSHYCJQogwT*期—>^6ANVCIACorptxM;on\的火KomrronC徐叼[所Fij'NSOlACorptxetkMAN/ClANvDUSRCAFTOQMFiMIggSQL562130\T<X>KUt*w>\CARogrmFil«\84nf1d%SyitemRoot%'iSy4tOT32,,户tmRoot/%Sy?tc«nfto5%,Sy5lE02Wbc*n,SYSTEMROOTWS件mmwbdUQS”岭SIWg,m%SVSTEMROOT*\Sy«fifnl2>Pp«n&SH\DAP/oyam□"仪86^6A17M^nxG4\Mn命令行测试JA\公环境是否搭建成功2、创建Android工程框架APPAiidioid开发环境搭建下载aiidioid-studio-ide-191.5791312-wuidows安装包安装转后新建工程口CreateMewProject XConfigureyourprojectI0TPackagenamecomexampIe.iotSavelocationD:\Deiktop\IOTDevice\IOTLanguageJavaEmptyActivityMinimumAPIlevelAPI24:Android7.0(Nougat)OYourappvdllrunonapproximately37.1%ofdevices.CreatesanewemptyactivityHelpmechooseCreatesanewemptyactivityThisprqje(twillsupportinstantdppsPreviousNextCancelFinish£1♦idit^t<w»W693cCodeAmlyg BaldRunJoelsVCS湖ndewUctpMxApp appiw<hin»4M> j*“hicomf anv1Mppq ▼actrt'ityjrw*n.«mJ PreviousNextCancelFinish£1♦idit^t<w»W693cCodeAmlyg BaldRunJoelsVCS湖ndewUctpMxApp appiw<hin»4M> j*“hicomf anv1Mppq ▼actrt'ityjrw*n.«mJ <M4oActrailyj<Mocolo<vwrtlM 一■""'xeIt?s2VV3V£QCHU号lreJC3、yrvnds7.!OXJ2★Q-?Q—I•・卬▼・川▼tl<om.«wT4»W.nT^wpf•M»^ActvityCMyUyout♦I<OE.e»<tmp'»— fl►*G9提袁八pts9A18M51213IS・T161718192922222324252628293GArdkoidM^nHvttxmlInportinportpublicandroldx.annotatlor.Nullable;androidx.appcorpat.app.AppCo<rpatActivity;classMyLayoutextendsAppCowpatActlvity{^JOverrideprotectedvoidonCreate(BundlesavedlnstanceState)<super.onCrQato(4avQdInstancQStato);«etContentVlew(R.layout.ttyiayovt);Threadtirecrs-neThread。(publicvoidrun()try($l"p(millis.3600);}catch(InterruptedExceptlone)<c.printStackTraee();}finally{Xnttntoperative■nenXnt«nt(on"android.lnt«nt.actloo.MainActlvity");startActivity(operative);tiners.start();■Grwc. ,• I; . ,• I; •«> 1 1WK OvtccmrPpjectGodlemodelveB8-54,1,MXvcomSJKNO/NgmiNegc)OEventL09eUTF-e,、新建一个界面WdpHyA«»opp*•w<:mmrmI«r®*<“,”“,,2ce:ccAoruml 'U,EO>rrf■・r^«WdpHyA«»opp*•w<:mmrmI«r®*<“,”“,,2ce:ccAoruml 'U,EO>rrf■・r^«F•1,8►・▼MHw▼tS<4<Af*ancArA**f<•WinviMvMcnc27K与S,"8T<*^Vhunit-i<eeu»»ncieE.

温馨提示

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

评论

0/150

提交评论