版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多情况下没有时间照看宠物。另外,随着我国经济水平的提升,人们对于精神文化也有一定要求,希望能拥有一个属于自己的空间,然而宠物作为一种特殊的休闲娱乐工具,自然受到更高的重视。有时候过年要回老家,有时候又要到外面去,宠物在健康管理、防出逃上都存在着很大问题。为了解决这个问题,本文提出一个方案,可以很好地解决宠物的健康管理以及防逃问题。为了适应市场需求,这个健康管理与防出逃系统被设计出来,还是以蜜袋鼯为例,可以GPS,温度检测,重量检测、心跳检测等,大大解决了宠物健康管理问题。对宠物健康管理的设计的研究,我认为关键在于可以直观看到我国行业发展现状,方便我们去预测现在的趋势以及未来的趋向,精确把握国内外在宠物行业相比之下竞争力你强我弱的问题REF_Ref30870\w\h[8],在多方竞争力的角度中提出有效且科学的对策和适宜的意见。现如今人们开始越来越多的去选择饲养宠物来丰富生活,相关政府也会逐渐去关注宠物行业,宠物也会给城市GDP带来提升,也大大地缩短了我国和国外宠物健康管理和防出逃设计的差距。该装置结构简单,成本低廉,能够轻松监控宠物的状态,因此本发明对于检测宠物的健康状况及防逃具有重要意义和广阔的应用前景。1.3研究目标和内容预期实现目标如下:1GPS定位信息,可以在物联网平台看到经纬度,或者通过经纬度查询位置。2心跳检测,也可以在物联网平台看到心跳次数。3温度检测,通过DS18B20检测温度,一般适宜温度为25-30度,如果温度低于25度会进行加热,到达25度一分钟后停止加热,如果温度大于30度会用风扇进行降温,当温度到了30度一分钟后风扇停止。4体重检测,通过体重秤秤蜜袋鼯的体重,每秤一次就能记录一次数据,通过次数的累加,最后形成一个图(因为显示屏的分辨率不够,每一次就是一个点),通过点的趋势分析健康状况。5通过超声波测距仪测高度,数值设置为50厘米,超过50厘米就通过电磁锁关闭笼子,防止出逃。第2章系统整体方案设计2.1设计需求采用单片机设计了蜜袋鼯健康管理与防出逃系统装置的线路及其外围电路,该系统由信号监测模块经4G把宠物的位置与环境温度等数据直接传输到云平台上,云平台服务器经数据采集模块采集到数据并在经过算法模块识别后由统计分析模块大数据分析,最终宠物主人做出结论。2.2设计思路该系统组成结构,其中包括GPS、按键设置、DS18B20、继电器、显示模块、心跳模块、称重模块和单片机。该系统工作过程如下:通过OLCD显示屏一级显示是三个菜单,二级菜单的第一个显示温度,风扇状态,加热状态以及健康状况,温度显示高了通过风扇降低温度,低了通过加热装置升高温度,风扇或者加热装置都是到达一定温度一分钟后停止,目的是为了保持一下温度;通过HX711压力传感器检测体重,称一次通过按键储存一次数据,多次后就能看到点式曲线,判断胖瘦情况;再就是可以通过物联网平台查看GPS的经纬度和心跳,最后综合数据作出判断。图2.1系统结构图2.3关键硬件选型2.3.1主控芯片模块STM32F103C8T6是一款微处理器,归属与STM32F103系列单片机,拥有73728KHz的CPU速度和高达1MB的闪存容量。它还包含电动机控制外设和CAN、USB全速接口。作为一款ARMCortex-M332位闪存微控制器REF_Ref31122\w\h[4],STM32系列具有低功耗、低电压的特点,并且结合了实时功能,具有出色的性能。图2.2STM32F103C8T6芯片2.3.2按键功能模块因为矩阵键盘的价格较高,所以在设计该系统时,将软件程序与其结合起来变得更加困难。此外,为了降低成本,该设备的设计只是运用了几个按键。本系统将采用独立按键式,通过采用I/O线连接组成单独的按键电路,系统正常工作的时候,一个按键采用一根I/O线,每一个按键都不会影响其他其他按键正常工作的工作状态。2.3.3显示屏模块OLED,也称为有机电致发光显示(OrganicElectroluminescenceDisplay,OELD),它翻译过来就是一种有机的发光二极管。它具有小巧且低功耗的特点,在2003年的时候,OLED就已经广泛应用于显示工业,应用于MP3播放器等显示设备。然而,对于数码类产品中的DC和手机等设备来说,以前只有在部分展会中展出使用OLED屏幕的项目样本。但自2008年以来,OLED的寿命得到大大提高,拥有了众多LCD无法比拟的优点。图2.3OLED显示屏2.3.4重量检测模块压力传感器HX711模块通常通过模拟输出来实现其功能。如图2.4所示,该传感器利用应变片的形变会引起微小的电阻变化,从而产生微小的电压输出,从而实重量和电压成正比的输出。满足电压输出范围(0-5V)才可以使单片机工作,有利于单片机实现检测。图2.4HX711模块2.3.5继电器模块继电器模块指的是一种将继电器封装在模块中的电子设备。继电器模块通常包括一个或多个继电器、控制电路以及其他必要的电子元件。它可以实现在电路中使用继电器进行开关控制的功能,同时也可以提高电路的稳定性和可靠性。继电器模块广泛应用于工业控制、自动化设备、智能家居等领域,例如,它可以用于控制电机的启停、灯光的开关、空调的控制等。相比于手动控制,继电器模块可以实现自动化控制,提高了生产效率和生活便利性。2.3.6温度模块图2.5显示的是采用数字式传感器DS18B20。DS18B20其测量范围广泛且精度较高。在将数据传输给单片机时,可以通过数据线将DS18B20连接到单片机,从而避免使用A/D模块,使得系统电路操作更方便,看起来更便捷。图2.5DS18B20温度传感器2.3.7心率检测模块MAX30102为整合脉搏血氧仪与心率监测模块。由内部发光二极管、光电探测器、光学元件和低噪声电子设备组成。MAX30102为移动及可穿戴设备设计过程的简化提供了一套系统解决方案REF_Ref31638\w\h[11]。MAX30102模块是使用单独5.0V电源和1.8V电源来驱动内置的发光二极管。另外,该模块还可以与其他模块集成在一起,从而形成一个完整的系统,通信采用的是通过I2C兼容接口进行。在此设计中,该模块具有一个独立的控制单元,它能够根据要求对每个发光二极管进行管理并将它们连接到相应的通讯协议上。另外利用软件关断零备用电流的方法,该模块可以实现低功耗情况下运行。图2.6MAX30102模块2.3.84G模块EC800系列核心板是一款排针式接口的迷你尺寸4GCAT1核心开发板。它的尺寸是3.2cm乘以3cm乘以1.234cm,方便携带且工艺精巧。其上EC800系列模块是移远通信新近发布的LTECat1无线通信模块之一,支持最高下行速率为10Mbps、最高上行速率为5Mbps、性价比极高REF_Ref31886\w\h[5]。EC800系列内置丰富的网络协议,支持包括DFOTA、短消息等在内的多种功能,集持多种系统软件驱动。其中EC800MCNGA是内置GNSS版本,EC800MCNLC纯数据版本。EC800系列核心板主要优势:排针接口、CAT1速率、超小尺寸设计、内置GNSS、超高性价比图2.74G模块2.3.9测距模块HC-SR04是一种常用的超声波测距传感器,可以通过向目标发射超声波并测量其返回时间来计算目标与传感器之间的距离。它通常由四个引脚组成:VCC(电源正极)、GND(电源负极)、Trig(触发信号输入)和Echo(回波信号输出)。其中,Trig引脚用于触发超声波的发射,Echo引脚用于接收返回的超声波信号。HC-SR04的工作原理是测量超声波从传感器到目标物体的距离,然后将这个距离转换成数字信号输出。由于它具有测量范围广、精度高、响应速度快等优点,所以被广泛应用于机器人、智能家居等领域。图2.8HC-SR04超声波测距传感器2.3.10电磁锁模块电磁锁是一种电子锁具,由电磁铁和锁体组成,它通过控制电磁铁的通断来控制锁体的开关状态。在通电状态下,电磁铁产生磁场,将锁体吸住,从而实现锁定状态;在断电状态下,电磁铁不再产生磁场,锁体则可以自由开启。因此,电磁锁可以通过控制电源的通断来控制开关状态,具有便捷、安全、可靠等特点,常常被应用于门禁系统、安防系统等场合。图2.9电磁锁实物图第3章系统硬件设计3.1单片机最小系统设计STM32F103C8T6是一款由意法半导体STMicroelectronics公司生产的32位ARMCortex-M3内核微控制器。并采用48脚LQFP封装。它具备高性能的RISC内核,运行频率可以达到72MHz,并且内置高速存储器,增强了输入输出和外部连接至两个APB总线的能力。STM32F103C8T6还配备了12位模数转换器、计时器、PVM计时器、标准及高级通讯接口等功能,可满足不同应用的需求。该产品属于集成电路器件归属于嵌入式微控制器家庭其芯体尺寸为32位工作时钟速度为72兆赫兹使用ARM®Cortex-M3™架构的处理器该产品支持USB等多种通信接口程序存储器容量为64Kx8,类型为FLASH温度范围为零下40度到85度46引脚低模塑型封装电源2V~3.6V16路输入、12位分辨率的模数转换器图3.1STM32F103C8T6引脚图3.2按键电路设计当按键的数目最多为4个时,我们最佳的接口方案当然是独立式接法了,即每一个I/0口上只接一个按键,按键的另一端接电源或接地(一般接地)。占用的I/O口数最大为4条独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。例如,我们将常开按键的一端接地,另一端接一个I/0口,程序开始时将此I/0口置于高电平,平时无键按下时I/0口保护高电平。当有键按下时,此I/0口与地短路迫使I/0口为低电平。按键释放后,单片机内部的上拉电阻使I/0口仍然保持高电平。我们所要做的就是在程序中查寻此I/0口的电平状态就可以了解我们是否有按键动作了。图3.2按键电路3.3显示屏电路OLED显示器的工作电路通常由以下几部分组成:电源:提供OLED显示器所需的电压和电流。驱动电路:将输入的信号转换为OLED显示器所需的信号显示屏:根据OLED发光二极管组成的显示屏模块,用于将电信号转换为光信号并显示在屏幕上。控制电路:用于控制OLED显示器的各项参数,例如显示模式、显示内容等。在OLED显示器的工作电路中,驱动电路是其中最为关键的部分。驱动电路通常由多个电路模块组成,包括时钟电路、扫描电路、行列选通电路、数据驱动电路等。其中,时钟电路用于控制数据信号的传输速度和时序,扫描电路用于控制OLED显示器的扫描行为,行列选通电路用于选择要显示的像素点,数据驱动电路用于将输入的数据信号转换为OLED显示器所需的信号。OLED显示器的工作电路具有复杂性和高度集成性,需要精确的设计和制造技术。为了保证OLED显示器的稳定性和可靠性,需要注意设计电路的功耗、电压、电流等参数的匹配,并采用优质的电子元器件和高效的制造工艺。GND:连接电源地。VCC:连接2.2V至5.5V的电源。SCL:连接时钟信号线,高电平范围为2.2V至5.5V。SDA:连接数据信号线,高电平范围为2.2V至5.5V。图3.3显示电路3.4重量检测电路对比相似的类型芯片,这个芯片具有高度集成化的特性,包括修改供电电路,不需其他的同类型芯片支持。其好处在于反应迅速、具有较强的抗干扰能力的特性,在降低电子秤成本的同时实现了优化设计,提升了更多的性能。电源电路设计:HX711的电源电压范围为2.6V到5.5V,因此需要设计合适的电源电路,以确保电路能够正常运行。时钟电路设计:HX711需要接入一个外部时钟源,以确保ADC转换的准确性和稳定性。在设计时钟电路时,需要考虑时钟源的稳定性、精度和噪声等因素。信号放大电路设计:HX711需要接入称重传感器,因此需要设计合适的信号放大电路,以放大传感器输出的微弱信号。数字信号处理电路设计:HX711内部集成了24位ADC,可以将模拟信号转换为数字信号。因此需要设计合适的数字信号处理电路,以处理ADC输出的数字信号。通信接口设计:HX711可以通过串口与微控制器进行通信,因此需要设计合适的通信接口电路,以实现HX711与微控制器之间的数据传输。管脚功能:1VSUP电源稳压电路供电电源:2.6~5.5V(不用稳压电路时应接AVDD)2BASE模拟输出稳压电路控制输出(不用稳压电路时为无连接)3AVDD电源模拟电源:2.6~5.5V4VFB模拟输入稳压电路控制输入(不用稳压电路时应接地)5AGND地模拟地6VBG模拟输出参考电源输出7INA-模拟输入通道A负输入端8INA+模拟输入通道A正输入端9INB-模拟输入通道B负输入端10INB+模拟输入通道B正输入端11PD_SCK数字输入断电控制(高电平有效)和串口时钟输入12DOUT数字输出串口数据输出13XO数字输入输出晶振输入(不用晶振时为无连接)14XI数字输入外部时钟或晶振输入,0:使用片内振荡器15RATE数字输入输出数据速率控制,0:10Hz;1:80Hz16DVDD电源数字电源:2.6~5.5V图3.4HX711电路3.5温度模块电路DS18B20是一种数字温度传感器,可以实现高精度、低功耗的温度测量。电路连接:将DS18B20传感器的VDD引脚连接到电源的正极,将GND引脚连接到电源的负极。将DQ引脚连接到电容和4.7K欧姆电阻的交接处,再将电阻的另一端连接到电源的正极。将电容的另一端连接到电源的负极。工作原理:DS18B20传感器使用单线总线协议进行通信。在读取温度值之前,需要先发送复位脉冲,以启动传感器。接着发送读取温度命令,并等待一段时间,直到传感器将温度数据发送回来。温度数据是一个16位的二进制数,需要通过相应的算法将其转换为实际温度值。图3.5温度模块电路3.6心率模块电路设计电路连接:将MAX30102模块的VCC引脚连接到电源的正极,将GND引脚连接到电源的负极。将SCL引脚连接到微控制器的SCL引脚上,将SDA引脚连接到微控制器的SDA引脚上。工作原理:MAX30102模块使用红外光和LED发光二极管,通过反射测量皮肤下的血液流动情况,从而实现心率和血氧测量。在工作时,MAX30102模块会发送红外光和LED光到皮肤上,并通过光电探头测量反射回来的光信号。微控制器可以通过I2C总线读取MAX30102模块发送的数据,并进行处理和显示。图3.6心率模块电路3.7复位电路复位电路用于在电子设备启动或出现故障时将设备的电路状态恢复到初始状态。在许多电子设备中,复位电路是必不可少的,因为它可以保证设备在启动时处于相对稳定的状态,如果出现故障,它可以进行自我修复操作。通常情况下,复位电路由一个复位电路和一个复位信号源构成。复位信号源可以是手动开关、自动检测电路或其他传感器。当复位信号源被触发时,它会向复位电路发送一个信号,指示设备需要进行复位。复位电路会对设备的各个部分进行重置,包括处理器、存储器和输入/输出接口。复位电路的实现方式有很多种,包括简单的RC电路、基于门电路的电路、集成电路和微控制器等。在设计复位电路时,需要考虑到电路的灵敏度、稳定性和可靠性等因素,以确保设备在复位时能够正常运行。图3.7复位电路图3.84G模块电路4G模块是一种能够实现高速数据通信的设备,可以将单片机连接到互联网,并实现远程数据传输和控制。在单片机应用中,将4G模块作为通信模块,可以实现单片机与互联网之间的通信,为物联网应用提供了更加便捷和高效的解决方案。选型:首先需要选择一款适合单片机应用的4G模块,常见的有SIM7600、SIM7600CE、EC20、EC25等,根据需求选取合适的型号。硬件连接:4G模块一般使用UART串口进行通信,需要将4G模块的串口连接到单片机的IO口中,并根据模块的使用说明书中的相关内容去设置串口位置、修改数据传输速率、奇调整校验位设置和调整数据长度等参数。引脚1VIN(5-16V)外部供电引脚2GND地3POWER_EN电源使能引脚,默认使能,拉低关闭4DTR睡眠唤醒引脚5RXD串口收引脚,3.3V电平6TXD串口发引脚,3.3V电平7GND地8BAT电池供电引脚(3.4V-4.2V),不可与VIN同时供电图3.84G模块电路3.9测距模块电路设计电路连接:将HC-SR04模块的VCC引脚连接到电源的正极,将GND引脚连接到电源的负极。将Trig引脚连接到单片机的GPIO引脚上,将Echo引脚连接到10K欧姆电阻的一端上,将电阻的另一端连接到单片机的GPIO引脚上。工作原理:HC-SR04模块使用超声波发送器和接收器,通过发送超声波并测量返回的信号,计算出目标物体到HC-SR04模块的距离。在工作时,单片机向HC-SR04模块发送一个高电平脉冲信号,触发HC-SR04模块发送超声波信号。当超声波信号碰到目标物体并反弹回来时,HC-SR04模块将信号转换为电信号,并通过Echo引脚输出。单片机可以通过GPIO引脚读取Echo引脚的电信号,并计算出目标物体到HC-SR04模块的距离。图3.9测距模块电路3.10电磁锁电路设计5V2A以上电源或者3000毫安以上5V锂电池。电磁锁工作原理控制电磁锁两条线通断电,通电锁舌缩回,断电锁舌弹出,注意控制好通电时间图3.10电磁锁电路设计第4章系统软件设计软件设计就是用计算机编写语言,并进行有关开发,建立一个软件应用程序。软件开发人员必须在理解要求,分析需求及系统功能之后才能完成一个完整的软件设计项目。这一过程通常由下列阶段组成:1.分析:确定软件的功能和要求,能够将其转化为可以理解的意思,以确保软件的开发方向正确。2.设计阶段:在需求分析的基础上,设计软件的架构、模块、算法等,并进行详细的设计文档编写。这个阶段的目标是确保软件可以满足需求,并且易于维护和扩展。3.编写程序阶段:在设计阶段完成之后,开始写程序的工作。在编写程序的时候,要求根据设计文档的需求进行编写程序操作,要注意的是程序的可调性,可以随时改动。4.调试阶段:在程序操作完成后,按照要求完成软件测试以确保软件能够正常工作。5.软件开发不是一次性的活动,软件在使用过程中可能会出现问题,需要进行维护和更新。这个阶段通常包括修复缺陷、添加新功能等。4.1主要的程序设计4.1.1OLED程序设计OLED显示屏程序设计,把它命名为一个菜单,然后分为三个等级;一级菜单打开屏幕就是,参数显示、温度设置、体重设置。二级菜单就是进入一级菜单以后的东西,比如第一个的二级菜单就是显示具体参数,温度,风扇状态,加热状态健康状态。三级菜单就是具体的数值设置。图4.1OLED程序4.1.24G程序设计EC800M链接阿里云的步骤1.使用AT指令查看是设备是否通信成功2.使用AT+CPIN查看是否有插卡3.使用AT+CSQ查看当前信号4.使用AT+QMTCFG="rcv/mode",0,0,1配置为接收模式5.使AT+QMTCFG="AT+QMTCFG="aliauth",0,"productkey","ProductName","Secret""配置阿里云设备信息6.使用AT+QMTOPEN=0,"",1883MQTT客户端打开网络7.使用AT+QMTCONN=0,"clientExample"客户端链接MQTT服务器8.当收到应答时才会执行下一条语句,当超时时会重启EC800M模块从头开始发送一次,连续三次失败后,红灯常量亮。图4.24G程序4.1.3HX711程序设计1.确定输入和输出引脚:HX711具有四个引脚,其中两个用于电源(VCC和GND),另外两个用于数据输入和输出(DT和SCK)。在编写程序之前,确定将使用哪些引脚,使用的是11和P12引脚,以及它们的连接方式。2.安装HX711库:为了方便程序设计,安装HX711的库。这些库提供了函数和指令,可以读取HX711的数据。3.初始化HX711:在程序开始时,需要初始化HX711。这通常包括设置输入和输出引脚,以及校准HX711的偏移和增益。4.处理数据:成功读取数据,可以根据需要对其进行处理。包括将数据将它们显示在屏幕上。图4.3HX711程序4.1.4温度程序设计1.确定输入引脚:DS18B20只需要一个引脚用于通信,通常称为数据线(DQ)。在编写程序之前,确定将使用引脚连接DS18B202.初始化:在程序开始时,需要初始化。3.发送指令:指令向DS18B20发送指令。最常用的指令是“读取温度”,它会触发DS18B20测量温度并将结果发送回微控制器。4.接收数据:发送了读取温度指令,DS18B20将返回一个的温度值。5.处理数据:成功读取温度值,包括将数据存储到变量中、将它们显示在屏幕上。图4.4DS18B20程序4.1.5心跳模块软件设计1.确定输入和输出引脚:MAX30102具有多个引脚,使用电源引脚和数据引脚。2.初始化MAX30102:在程序开始时,需要初始化MAX30102。3.读取数据:MAX30102初始化完成,指令读取数据。4.处理数据:成功读取数据,将它们发送到云端。图4.5I2C的启动信号程序4.1.6测距模块软件设计1.在代码中初始化Trig引脚为输出引脚,Echo引脚为输入引脚,并调用相应的库函数来控制HC-SR04的工作。2.在代码中向HC-SR04发送一个触发信号,即向Trig引脚写入一个高电平脉冲,持续时间至少为10微秒。3.等待Echo引脚输出一个高电平信号,并记录此时的时间戳。4.等待Echo引脚恢复到低电平,并记录此时的时间戳。5.计算超声波从HC-SR04发射到目标物体并返回的时间差,即回波时间。回波时间可以通过时间戳计算得出。6.计算目标物体与HC-SR04之间的距离。距离可以通过回波时间和声速的乘积再除以2得到。图4.6测距模块程序4.2KeiluVision5概述KeiluVision5是一款针对ARM微控制器的集成开发环境(IDE),由KeilSoftware公司开发。它被允许使用多种多样的语言,有C、C++、汇编语言,便于开发嵌入式系统中的应用程序。KeiluVision5提供了一个全面的开发环境,包括代码编辑器、编译器、调试器、仿真器和分析工具。Keil还全面提供不同先进的矩阵式只读存储器,其中有更多的处理器。Keil还包括很多相关的例子和数据库,以帮助开发人员加快开发速度并提高软件质量。它是一个强大的工具,可用于开发各种应用程序,例如嵌入式系统、自动化控制、机器人、智能家居、医疗设备等。KeiluVision5可以用于编写STM32单片机的程序。Keil5是一个直接采用先进的矩阵式只读存储器的单片机设计,进而集成开发,支持多种先进的矩阵式只读存储器处理器系列,包括STM32系列单片机。Keil提供了一系列的STM32器件支持包,其中包含了针对不同型号STM32单片机的设备支持文件、启动代码、库文件等,可以方便地进行开发。KeiluVision5还提供了一个强大的调试器和仿真器,可以帮助开发人员进行调试和验证程序。因此,KeiluVision5是开发STM32单片机程序的常用工具之一。4.3下载工具FlyMcuFlyMcu是一款基于STM32F103C8T6修改微控制器程序的开源开发板,它具有易于使用、灵活性高、功能强大等特点,广泛应用于物联网、机器人、智能家居等领域。FlyMcu开发板的主要特点包括:使用32位操作系统STM32的单片机,主频为73728KHz,具有高性能、低功耗等特点。具有许多外围设备接口,如通用异步收发传输器、串行外设接口、I2C、脉宽调制等,能够便捷地与各个传感器、模块、设备等进行通信和控制。支持USB接口,可以方便地进行程序下载、调试和串口通信。支持安卓环境的开发,使用安卓集成环境开发进行编写程序,同时也支持Keil、IAR等其他开发工具。采用开源硬件设计,可以自由修改、定制,并且具有丰富的社区资源和技术支持。其主要作用包括:提供硬件支持:FlyMcu为各种物联网、机器人、智能家居等应用提供了硬件支持,包括各种外设接口和传感器连接接口,方便开发者进行硬件组装和连接。提供控制和通信能力:FlyMcu通过各种外设接口和传感器连接接口,可以实现对各种设备和传感器的控制和数据采集,同时提供了丰富的通信接口,方便与其他设备进行通信和传输数据。提供软件支持:FlyMcu支持Arduino开发环境,可以使用ArduinoIDE进行编程,同时也支持Keil、IAR等其他开发工具,方便开发者进行软件开发和调试。提供开源硬件设计:FlyMcu采用开源硬件设计,可以自由修改、定制,并且具有丰富的社区资源和技术支持,方便开发者进行二次开发和定制。4.4画图软件AltiumDesigner是一款集成电路的设计型软件,具有强大功能,且简单操作的PCB设计软件。AD提供了多方位的PCB设计的解决办法,比如原理图的规划、2D或者3DPCB板子、验证和制造文件输出等强大功能。AD的主要特点包括以下几个方面:集成度高的特点:AD能够提供比较全面的PCB板的解决办法,有原理图规划、PCB布局、仿真、设计验证和制造文件输出等功能,能够满足从设计到生产的全过程。易于使用:AltiumDesigner拥有友好的用户界面和直观的操作方式,能够快速学习和掌握,加快设计所需的时间。强大的创造功能:AD提供了无数种满足客户的设计功能,有多层板设计、封装管理、信号完整性分析、电源管理等,能够满足各种复杂电子电路的规范与需求。全方位的仿真功能:AD提供了大多数的仿真,包括电子线路的仿真功能、完整的信号仿真功能、完整的功率仿真功能等等,能够对电子电路进行全方位的仿真操作和验证操作。支持大多数的输出模式:AD能够提供用户想要的多种输出模式,例如Gerb文件类型、NC文件类型、BOM表等,能够满足不同制造厂商的需求。灵活的扩展性:AD支持多种第三方扩展,包括模型库、封装库、脚本等,能够扩展软件的功能和应用范围。总的来说,AD是一个强功能、操作简单、上手速度快设计PCB板子的软件,可以提供人们对于多种复杂电路板的设计要求,并提供全面的设计解决方案和仿真工具,让电路设计变得更加高效和可靠。第5章调试与实现调试是查找和解决问题的过程,而实现是使用板子来完成所需的功能的过程。在这两个过程中,需要确保程序的正确性和稳定性,并且进行必要的测试和优化。5.1主显示菜单程序主要取自一个菜单程序,无按键的相关信息。所以在这个的基础上面,首先是对程序进行微小的改动,在保留原菜单所产生的程序的基础上,对主程序进行的编写,第一步将所有的IO口进行初始化编写,然后进入循环语句的步骤,当按键按下时,紧接着进入复位程序,显示页面,有三个选项参数显示、温度设置和体重设置。图5.1一级菜单参数显示里的二级菜单,能够实时显示温度,显示风扇的状态是开还是关,加热状态是开还是关,健康状态是差还是良。现在温度是21度,在适应的温度范围内所以风扇状态和加热状态都是关,因为没有称重所以健康状态是差,都显示在显示屏上。图5.2参数显示的二级菜单5.2温度设置菜单进入温度设置菜单,按下确认键,有高温阈值设置和低温阈值设置,能够通过按键的加减来改变高低温的设置参数。图5.3温度设置的二级菜单5.3体重设置菜单进入体重模式的二级标题,一个称重模式和一个体重查看;称重模式就是把东西放到压力传感器上,就能显示多少克,按下按键记录数值,每一次称重可以多记录几次。图5.4体重设置的二级菜单体重查看就是每次称重以后记录下的数据最终形成一个曲线图,如果体重变化不大可能就是直线图。图5.5称重曲线图5.4位置与心跳显示获取位置和心跳以后通过4G把数据传送放到阿里云平台。图5.6阿里云平台显示的数据当将程序导入到板子中后,我们需要确保程序的正确性和完整性。一旦程序被成功导入,我们可以开始测试并最终实现所需的功能。首先,我们需要连接板子到所需的设备,例如计算机或手机。接着,我们可以使用相应的软件来与板子进行通信,并配置板子以便实现所需的功能。如果需要的话,我们可以进行一些调试和优化操作,以确保程序正常运行并解决任何问题。这包括检查传感器或其他设备是否正确连接,以及确保程序逻辑正确,没有任何错误或漏洞。一旦程序被成功测试并调试,我们就可以开始使用板子来实现所需的功能了。这可能包括控制机器人、传感器或其他设备,或者运行一个特定的应用程序。总之,将程序导入板子后,最终实现所需的功能需要一系列的步骤,包括连接板子到设备、通信和配置板子、调试和优化程序,以及最终测试和实现所需的功能在焊接时要注意下面几个方面:1.选择合适的焊接工具:根据焊接元器件的面积和形状,选择适宜的工具,例如电烙铁、热风枪、烙铁头等。2.选择合适的焊锡:选择合适的焊锡线,一般选择直径为0.5mm左右的焊锡线,以保证焊接质量。3.准备好工作环境:在进行焊接前,应准备好干燥、通风良好的工作环境,避免焊接过程中出现意外的火灾等情况。4.注意安全:焊接时应注意安全,避免烫伤、电击等意外发生。同时,应使用符合标准的电烙铁,并保证接地良好。5.注意焊接时的温度和时间:因为这一步是确保焊接质量的好坏,应该掌握好焊接的温度。避免过高或过低,同时注意焊接时间,避免过长或过短。6.要注意焊锡丝的用量:焊锡丝的使用务必合适,不能过多或者过少,以避免焊接的乱七八糟,过少则容易导致焊接不牢固。7.检查焊接质量:焊接完成后,应检查焊点的质量,确保焊接牢固、无短路、无断路等问题。第6章心得体会首先,毕业论文的写作让我更加深入地理解了电气专业的知识。在研究过程中,我不断地学习和探索,不断地思考和总结,使我对电气专业有了更加潜在的理解和运用。同时,毕业论文的写作也让我更加熟练地运用了电气专业的分析工具和软件,提高了自己的实践能力。其次,毕业论文的写作也让我更加认识到学习的重要性。在电气专业这一领域,新的知识和技术层出不穷,如果你不一直的学习和掌握,就会被淘汰。因此,我深刻地认识到了学习的重要性,以及不断进步的必要性。在研究过程中,我使用了各种工具和技术,包括KeiluVision5,FlyMcu和AltiumDesigner等软件,这些工具和技术让我更加深入地理解了电气专业的知识和理论。在完成毕业论文的过程中,我也发现了自己的不足之处。例如,在使用某些软件和技术时,我可能需要更加深入地学习和理解。我也发现了自己在表达和组织论文内容方面的不足之处,这让我意识到了自己需要继续提高自己的写作能力和表达能力。最后,论文的写作使我真正的领悟到了毅力与耐力的重要性。在论文撰写的过程中,我遇到了许多困难和挫折,有时甚至感到失落和无力。但是,我依然坚持不懈地向前,不断地寻找解决问题的方法,不断地努力和奋斗。最终,我成功地完成了毕业论文。这让我深刻地明确持之以恒的关键性,同时也加强了我的信心和决心。总之,在电气专业的两年学习生涯中,我学到了许多知识和技能,也锤炼了自己的实践能力和思考能力。毕业论文的写作是我电气专业学习生涯中的一次重要经历。在这个过程中,我不但学到了很多知识和技能,还锤炼了自己的实践能力和思考能力。我也认识到了自己的不足之处,但同时也发现了自己的潜力和优势。在未来的工作和生活中,我将继续保持学习的热情,坚定自己的信心和决心,迎接更多的挑战和机遇。参考文献张杰斌,谢泽奇.基于STM32的宠物智能投喂装置的设计与实现[J].科技创新与应用,2021(10):93-95.郑昌庭,王俊,郑克.基于图像识别的变电站巡检机器人仪表识别研究[J].工业仪表与自动化装置,2020(05):57-61.齐明志.周莉.基于STM32单片机驱动的实时显示研究[J].电子世界,2020(08).吴江雪.LoRa的智能农业系统设计与实现[J].科技创新与应用,2020(07):98-99.刘玲,丁嘉辉,唐大卫,曹明瑞,刘白雪.基于无线通信的多卡尺数据采集系统设计[J].科技资讯,2020(06)江天亮.基于单片机和传感器的电子秤系统教学设计与实现[J].电子测试,2019(10).王怡,杨玉斌,韩家骏,谢帆.一种智能宠物居的设计[J].电子技术与软件工程,2021(05).冯宝亨.以宠物狗用品为例的宠物用品设计研究[D].广州大学,2021.邝华款.远程智能的宠物照料系统开发与应用[J].无线互联科技,2022(08).李俊娇,周志成,何俊康.宠物喂养远程控制系统设计[J].电子制作,2021(22).李向菊,郭小进,杨少华.带有砭石加热温感功能及健康监测的按摩椅设计研究[J].科技与创新,2022.19.055.殷凤梅,静育玉,陈鸿,孙元虎.互联网背景下宠物健康知识传播分析[J].电脑知识与技术,2021(17).李骞,乔芃喆,席磊.《生猪智能监测技术研究》[J].现代牧业,2019.郭丽丽,张琳琳,马文静.基于物联网技术的宠物健康监测系统[J].计算机工程与应用,2019,55(13):23-27.王鑫,王月,郭丽丽等.基于物联网的宠物健康监测与管理平台的设计与实现[J].计算机工程与设计,2018,39(2):455-460.Peoplewithpets:Understandingtheinfluenceofhuman-companionanimalattachmentonempathyandresilientcopinginadulthood
[D]
.
Stickle,KellyL.2021.ShahnawazKhan,ThirunavukkarasuK.,AymanAlDmour,SalamSalamehShreem.AStepTowardsSociety5.0:Research,Innovations,andDevelopmentsinCloud-BasedComputingTechnologies[M].CRCPress:2021-05-24.AgnesE.Rupley.WellnessManagementandEnvironmentalEnrichmentofExoticPets[J].VeterinaryClinicsofNorthAm:ExoticAnimalPractice,2015,18(2).CaoHaibo.ApplicationofSmartWearableFitnessEquipmentandSmartHealthManagementBasedontheImprovedAlgorithm[J].ComputationalIntelligenceandNeuroscience,2022.AlainMarcelRahetilahy.EditorialonHealthManagementInformationSystem[J].InternationalJournalofPublicHealthandSafety,2021,6(7).附录图1PCB小板图2PCB大板原理图程序1OLED程序#include"stm32f10x_gpio.h"#include"delay.h"#include"sys.h"#include"oled.h"#include"codetab.h"/******************************************函数名:IIC_Init参数:无返回值:无功能:I2C的引脚初始化******************************************/voidIIC_Init(void){ GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//设为推挽输出 GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStruct);// GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7); //}voidSDA_OUT(void){ GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//设为推挽输出 GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStruct);}voidSDA_IN(void){ GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;//设为推挽输出 GPIO_Init(GPIOB,&GPIO_InitStruct);}/******************************************函数名:IIC_Start参数:无返回值:无功能:I2C的起始信号。Start条件:当SCK线为高电平时DA由高变低。******************************************/voidIIC_Start(void){ SDA_OUT(); IIC_SDA_Out=1; IIC_SCL =1; delay_us(2); IIC_SDA_Out=0; delay_us(2); IIC_SCL=0;}/******************************************函数名:IIC_Stop参数:无返回值:无功能:I2C的停止信号Stop条件:当SCK线为高电平时DA由低变高。******************************************/voidIIC_Stop(void){ SDA_OUT(); IIC_SCL=1; IIC_SDA_Out=0; delay_us(2); IIC_SDA_Out=1; delay_us(2);}/******************************************函数名:IIC_Ack参数:无返回值:无功能:I2C的应答信号******************************************/voidIIC_Ack(void){ SDA_OUT(); IIC_SCL=0; IIC_SDA_Out=0; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0;}/******************************************函数名:IIC_NAck参数:无返回值:无功能:I2C的非应答信号******************************************/voidIIC_NAck(void){ SDA_OUT(); IIC_SCL=0; IIC_SDA_Out=1; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0;}/******************************************函数名:IIC_Wait_Ack参数:无返回值:无功能:I2C等待应答信号******************************************/unsignedcharIIC_Wait_Ack(void){ unsignedcharAckErrTime=0; SDA_OUT(); IIC_SDA_Out=1; SDA_IN(); delay_us(1); IIC_SCL=1; delay_us(1); while(IIC_SDA_In) { AckErrTime++; if(AckErrTime>250) { IIC_Stop(); return1; } } IIC_SCL=0; return0;}/******************************************函数名:IIC_Send_Data参数:传入的数据返回值:无功能:IIC发送一个字节数据******************************************/voidIIC_Send_Data(unsignedcharData){ unsignedcharbyte=0; SDA_OUT(); for(byte=0;byte<8;byte++) { IIC_SCL=0; if(Data&0x80) IIC_SDA_Out=1; else IIC_SDA_Out=0; IIC_SCL=1; delay_us(2); IIC_SCL=0; Data<<=1; }}/******************************************函数名:IIC_Read_Data参数:传入的数据返回值:无功能:IIC接收一个字节信号******************************************/unsignedcharIIC_Read_Data(unsignedcharAck){ unsignedcharbyte=0,recive=0; SDA_IN(); for(byte=0;byte<8;byte++) { IIC_SCL=0; delay_us(2); IIC_SCL=1; recive<<=1; if(IIC_SDA_In) recive++; delay_us(1); } if(Ack) IIC_Ack(); else IIC_NAck(); return recive;}/******************************************函数名:Oled_Write_Cmd参数:Cmd写入的指令返回值:无功能:IIC接收一个字节信号******************************************/voidOled_Write_Cmd(unsignedcharCmd){ IIC_Start();//启动信号 IIC_Send_Data(0x78);//地址 IIC_Wait_Ack();//应答信号 IIC_Send_Data(0x00); IIC_Wait_Ack(); IIC_Send_Data(Cmd); IIC_Wait_Ack(); IIC_Stop();}/******************************************函数名:Oled_Write_Data参数:Data写入数据返回值:无功能:IIC接收一个字节信号******************************************/voidOled_Write_Data(unsignedcharData){ IIC_Start();//启动信号 IIC_Send_Data(0x78);//地址 IIC_Wait_Ack(); //应答信号 IIC_Send_Data(0x40); IIC_Wait_Ack(); IIC_Send_Data(Data); IIC_Wait_Ack(); IIC_Stop();}/******************************************函数名:Oled_Init参数:无返回值:无功能:oled参数初始化******************************************/voidOled_Init(void){ delay_us(100);//这里的延时很重要 Oled_Write_Cmd(0xAE);//displayoff Oled_Write_Cmd(0x20); //SetMemoryAddressingMode Oled_Write_Cmd(0x10); //00,HorizontalAddressingMode;01,VerticalAddressingMode;10,PageAddressingMode(RESET);11,Invalid Oled_Write_Cmd(0xb0); //SetPageStartAddressforPageAddressingMode,0-7 Oled_Write_Cmd(0xc8); //SetCOMOutputScanDirection Oled_Write_Cmd(0x00);//setlowcolumnaddress Oled_Write_Cmd(0x10);//sethighcolumnaddress Oled_Write_Cmd(0x40);//--setstartlineaddress Oled_Write_Cmd(0x81);//--setcontrastcontrolregister Oled_Write_Cmd(0xff);//亮度调节0x00~0xff Oled_Write_Cmd(0xa1);//--setsegmentre-map0to127 Oled_Write_Cmd(0xa6);//--setnormaldisplay Oled_Write_Cmd(0xa8);//--setmultiplexratio(1to64) Oled_Write_Cmd(0x3F);// Oled_Write_Cmd(0xa4);//0xa4,OutputfollowsRAMcontent;0xa5,OutputignoresRAMcontent Oled_Write_Cmd(0xd3);//-setdisplayoffset Oled_Write_Cmd(0x00);//-notoffset Oled_Write_Cmd(0xd5);//--setdisplayclockdivideratio/oscillatorfrequency Oled_Write_Cmd(0xf0);//--setdivideratio Oled_Write_Cmd(0xd9);//--setpre-chargeperiod Oled_Write_Cmd(0x22);// Oled_Write_Cmd(0xda);//--setcompinshardwareconfiguration Oled_Write_Cmd(0x12); Oled_Write_Cmd(0xdb);//--setvcomh Oled_Write_Cmd(0x20);//0x20,0.77xVcc Oled_Write_Cmd(0x8d);//--setDC-DCenable Oled_Write_Cmd(0x14);// Oled_Write_Cmd(0xaf);//--turnonoledpanel Oled_Clear();}/******************************************函数名:Oled_SetPot参数:x,y设开始的点的坐标位置Y的取值小于0-8x的取值0-127返回值:无功能:oled参数初始化******************************************/voidOled_SetPot(unsignedcharx,unsignedy){ Oled_Write_Cmd(0xb0+y); Oled_Write_Cmd(((x&0xf0)>>4)|0x10); Oled_Write_Cmd((x&0x0f)|0x01); }/******************************************函数名:Oled_Fill参数:Data0或者1返回值:无功能:Data为0时点亮整个oledData为1时熄灭整个Oled******************************************/voidOled_Fill(unsignedcharData){ unsignedchari,n; for(i=0;i<8;i++) { Oled_Write_Cmd(0xb0+i); Oled_Write_Cmd(0x00); Oled_Write_Cmd(0x10); for(n=0;n<128;n++) Oled_Write_Data(Data); }}/******************************************函数名:Oled_Fill参数:Data0或者1返回值:无功能:Data为0时点亮整个oledData为1时熄灭整个Oled******************************************/voidOled_Clear(void){ Oled_Fill(0x00);}/******************************************函数名:Oled_Fill参数:Data0或者1返回值:无功能:Data为0时点亮整个oledData为1时熄灭整个Oled******************************************/voidOled_Pot(unsignedcharx,unsignedchary,unsignedchardot){ dot= dot%8; Oled_SetPot(x,y); Oled_Write_Data(0x80>>dot);}voidOLED_ShowChar(unsignedcharx,unsignedchary,unsignedcharchr,unsignedintSize){ unsignedcharc=0,i=0,j=0; if(Size==1) { if(chr!='\0') { c=chr-32; if(x>126) { y++; x=0; } Oled_SetPot(x,y); for(i=0;i<6;i++) { Oled_Write_Data(F6x8[c][i]); } } } elseif(Size==2) { if(chr!='\0') { c=chr-32; if(x>120) { x=0; y++; } Oled_SetPot(x,y); for(i=0;i<8;i++) Oled_Write_Data(F8X16[c*16+i]); Oled_SetPot(x,y+1); for(i=0;i<8;i++) Oled_Write_Data(F8X16[c*16+i+8]); x+=8; j++; } } }voidOled_ShowStr(unsignedcharx,unsignedchary,unsignedcharstr[],unsignedintSize){ unsignedcharc=0,i=0,j=0; if(Size==1) { while(str[j]!='\0') { c=str[j]-32; if(x>126) { y++; x=0; } Oled_SetPot(x,y); for(i=0;i<6;i++) { Oled_Write_Data(F6x8[c][i]); } x+=6; j++; } } elseif(Size==2) { while(str[j]!='\0') { c=str[j]-32; if(x>120) { x=0; y++; } Oled_SetPot(x,y); for(i=0;i<8;i++) Oled_Write_Data(F8X16[c*16+i]); Oled_SetPot(x,y+1); for(i=0;i<8;i++) Oled_Write_Data(F8X16[c*16+i+8]); x+=8; j++; } }}voidOLED_ShowCN(unsignedcharx,unsignedchary,unsignedcharN){ unsignedcharwm=0; unsignedintadder=32*N; Oled_SetPot(x,y); for(wm=0;wm<16;wm++) { Oled_Write_Data(F16x16[adder]); adder+=1; } Oled_SetPot(x,y+1); for(wm=0;wm<16;wm++) { Oled_Write_Data(F16x16[adder]); adder+=1; }}voidOLED_DrawBMP(unsignedcharx0,unsignedchary0,unsignedcharx1,unsignedchary1,unsignedcharBMP[]){ unsignedintj=0; unsignedcharx,y;if(y1%8==0) y=y1/8;else y=y1/8+1; for(y=y0;y<y1;y++) { Oled_SetPot(x0,y);for(x=x0;x<x1;x++) { Oled_Write_Data(BMP[j++]); } }}unsignedlongOled_Pow(unsignedcharm,unsignedcharn){ unsignedlongresult=1; while(n--) result*=m; returnresult;}voidOLED_ShowNum(unsignedcharx,unsignedchary,unsignedintNum,unsignedcharlen,unsignedcharSize){ unsignedchart=0,temp=0,enshow=0; for(t=0;t<len;t++) { temp=(Num/Oled_Pow(10,len-t-1))%10;//// if(enshow==0&&t<(len-1))//// {//// //// } if(Size==1) { OLED_ShowChar(x+(8)*t,y,temp+'0',1); } elseif(Size==2) { OLED_ShowChar(x+(16)*t,y,temp+'0',2); } }}24G程序#include"EC800M.h"#include"stm32f10x_usart.h"#include"string.h"#include"usart.h"RX_DATA EC800MDATA;MQTT_PROCESS MQTT;voidEC800MDATA_Send(constchar*buff,unsignedintlen);/******************************************函数名:EC800MDATA_Para参数:buff发送的数据current:当前的状态值返回值:无功能:将数据发送给EC800M******************************************/voidEC800MDATA_Para(char*buff,enumMQTT_STEPcurrent){ EC800MDATA_Send(buff,strlen(buff)); MQTT.CURRENT_STATUS=current; MQTT.STEP_PROCESS=Wait_P; if(MQTT.CURRENT_STATUS==OPE_P||MQTT.CURRENT_STATUS==CON_P||MQTT.CURRENT_STATUS==PUB_P) { MQTT.TIMER=120000; } else MQTT.TIMER=10000; }/******************************************函数名:MQTT_Operation参数:无返回值:无功能:EC800M链接阿里云的步骤1.使用AT指令查看是设备是否通信成功2.使用AT+CPIN查看是否有插卡3.使用AT+CSQ 查看当前信号4.使用AT+QMTCFG="rcv/mode",0,0,1配置为接收模式5. 使用AT+QMTCFG="AT+QMTCFG="aliauth",0,"productkey","ProductName","Secret""配置阿里云设备信息6. 使用AT+QMTOPEN=0,"",1883 MQTT客户端打开网络7. 使用AT+QMTCONN=0,"clientExample" 客户端链接MQTT服务器当收到应答时才会执行下一条语句当超时时会重启EC800M模块从头开始发送一次,连续三次失败后,红灯常量亮。******************************************/voidMQTT_Operation(void){ switch(MQTT.STEP_PROCESS) { caseAT_P: { EC800MDATA_Para(AT,AT_P); #ifPRINT_P printf("SENDAT\r\n"); #endif }break; caseCPIN_P:{ EC800MDATA_Para(ATCPIN,CPIN_P); #ifPRINT_P printf("SENDCPIN_P\r\n"); #endif }break; caseATE0_P: { EC800MDATA_Para(ATE0,ATE0_P); #ifPRINT_P printf("SENDATE0_P\r\n"); #endif }break; caseATE1_P: { EC800MDATA_Para(ATE0,ATE1_P); #ifPRINT_P printf("SENDATE1_P\r\n"); #endif }break; caseCSQ_P:{ EC800MDATA_Para(ATCSQ,CSQ_P); #ifPRINT_P printf("SENDCSQ_P\r\n"); #endif }break; caseTOKEN_P:{ EC800MDATA_Para(ATTOKEN,TOKEN_P); #ifPRINT_P printf("SENDTOKEN_P\r\n"); #endif }break; caseTOKENP_P:{ EC800MDATA_Para(ATTOKEN_P,TOKENP_P); #ifPRINT_P printf("SEND,TOKENP_P\r\n"); #endif }break; caseLATOR_P:{ EC800MDATA_Para(ATLATOR,LATOR_P); #ifPRINT_P printf("SEND,LATOR_P\r\n"); #endif }break; caseQLBS_P:{ EC800MDATA_Para(ATQLBS,QLBS_P); #ifPRINT_P printf("SEND,LATOR_P\r\n"); #endif }break; caseREV_P:{ EC800MDATA_Para(ATREV,REV_P); #ifPRINT_P printf("SENDREV_P\r\n"); #endif }break; caseALI_P:{ EC800MDATA_Para(ATALI,ALI_P); #ifPRINT_P printf("SENDALI_P\r\n"); #endif }break; caseOPE_P:{ EC800MDATA_Para(ATOEPN,OPE_P); #ifPRINT_P printf("SENDOPE_P\r\n"); #endif }break; caseCON_P:{ EC800MDATA_Para(ATCONN,CON_P); #ifPRINT_P printf("SENDCON_P\r\n"); #endif }break; casePUB_P:{ charTemp_PUB[100]; sprintf(Temp_PUB,ATPUB,MQTT.HeartRate,MQTT.Latitude,MQTT.Longitude); EC800MDATA_Para(Temp_PUB,PUB_P); #ifPRINT_P printf("SENDPUB_P\r\n"); printf("Temp_PUB=%s",Temp_PUB); #endif MQTT.Slepp_Flag=1; MQTT.STEP_PROCESS=CFUN_P; } caseWait_P:{ if(MQTT.MQTT_FLAG==2) //接收应答超时 { MQTT.MQTT_FLAG=0; if(MQTT.RESTART_FLAG!=2) //不是在重启的等待时间 { MQTT.STEP_PROCESS=MQTT.CURRENT_STATUS; MQTT.SEND_NUM++; if(MQTT.SEND_NUM==5) { if(MQTT.RESTART_FLAG==0) { MQTT.CSQ_ERROR_NUM=0; MQTT.RESTART_FLAG=1; MQTT.STEP_PROCESS=CFUN_P; MQTT.SEND_NUM=0; }
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中历史 第5单元 无产阶级革命家 第3课 第一个社会主义国家的缔造者列宁教学设计 新人教版选修4
- 一年级下册美术教学设计-动物的花衣裳-岭南版
- 山东省郯城县郯城街道初级中学初中信息技术 路径动画和遮罩效果教学设计
- 高中数学6.2.3平面向量的坐标及其运算教案
- 河北省新乐市第一中学高中地理 3.3自然地理环境的差异性教案 湘教版必修1
- 苏教版两、三位数除以一位数(首位不能整除)的笔算教学设计
- 一年级品社下册《丁丁的问题》教学设计 沪教版
- UL 1487 2025 中文版 电池防护壳体安全标准 内热失控抑制测试要求
- 你好新学期(教学设计)初三下学期教育主题班会
- 新人教版必修1第六章《生命的历程》教学设计
- 巨量千川-品牌广告(初级)营销师认证考试题库(附答案)
- 深基坑支护工程监理实施细则
- 湖南省长沙市一中金山桥学校2024-2025学年七年级上学期第一次月考数学试题(无答案)
- Be动词是个好妈妈她有三个乖娃娃(课件)英语三年级上册
- 水电站安全守护制度
- 退休保安人员聘用合同模板
- 环保设备运行与维护管理
- 英语四六级词汇汇总(带音标+免费下载)
- 秋冬季猪的饲养管理课件(模板)
- 重庆高新区“拥军门店”申请审批表
- 如愿三声部合唱简谱
评论
0/150
提交评论