当前位置: 首页 > news >正文

佛山网站制作公司住房和城乡建设岗位证书查询官网

佛山网站制作公司,住房和城乡建设岗位证书查询官网,pe管网站建设 中企动力,wordpress建站企业目录 一、风扇调速 二、通讯协议 三、净化器运行逻辑 一、风扇调速 单片机是不能直接驱动电机的#xff0c;因为主芯片的驱动电流比较小(50mA左右)#xff0c;他们之间正常还要有个电机驱动器#xff0c;常用的有TB6612、L298和L9110等#xff0c;目前项目用的这个电机它… 目录 一、风扇调速 二、通讯协议 三、净化器运行逻辑 一、风扇调速 单片机是不能直接驱动电机的因为主芯片的驱动电流比较小(50mA左右)他们之间正常还要有个电机驱动器常用的有TB6612、L298和L9110等目前项目用的这个电机它是内置了驱动器的什么型号不清楚作为应用层只要给个PWM信号就行了。 PWM基本原理就是通过控制开关的时长进行调速STM32通过定时器发生器可以把开关周期控制在毫秒以内这样我们宏观上就不会有卡顿的感觉了。 下面是具体的代码这些代码都比较常规要注意的是PWM输出要手动开启TIM_CtrlPWMOutputs(TIM1, ENABLE)可能是PA8引脚与串口1的初始化有冲突了。 /* 描述 : 风扇电机初始化 输入 : 输出 : */ void app_motor_init(void) { // 使能TIM1时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);// 使能GPIOA时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 设置GPIOA_8为复用功能推挽输出GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure);// 初始化TIM1 PWM模式TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;TIM_TimeBaseStructure.TIM_ClockDivisionTIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_Period PWMPeriodValue-1; // 周期为10kTIM_TimeBaseStructure.TIM_Prescaler 720 - 1; // 预分频器设置为7199确保计数器的频率为1MHzTIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up;TIM_TimeBaseInit(TIM1, TIM_TimeBaseStructure);TIM_OCStructInit(TIM_OCInitStructure);TIM_OCInitStructure.TIM_OCIdleState TIM_OCIdleState_Reset; TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1;//选择PWM模式1TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_High;//输出比较极性选择TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable;//输出使能TIM_OC1Init(TIM1, TIM_OCInitStructure);//初始化 TIM1 OC1TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);//使能CCR1自动重装TIM_ARRPreloadConfig(TIM1,ENABLE);//开启预装载 TIM_CtrlPWMOutputs(TIM1, ENABLE);//手动开启,防止与串口1冲突后不启动// 使能TIM1的输出比较预装载寄存器TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);// 使能TIM1TIM_Cmd(TIM1, ENABLE); printf(app_motor_init ok!\n); } 在使用上就很简单了就是不断改变PWM值就行了如下所示。这里还有个系数0.6主要是为了防止电流过大影响主控设备稳定。 /* 描述 : 设置速度 输入 : speed 0~255,速度分为256级 输出 : */ void app_motor_set_speed(u8 speed) {g_sAirWork.fan_speedspeed;u16 valuespeed*PWMPeriodValue/255*0.6;//系数主要是防止电机电流过大影响设备稳定printf(pwm val%d\n, value);TIM_SetCompare1(TIM1, value); }二、通讯协议 这里的通讯协议是指在MQTT之上的应用层通讯协议属于我们自定义的内容由此我们也可以知道协议也是一层一层堆起来的每个场景有各自适合的协议。通讯协议在物联网系统里是最重要的如果交流语言都不通了还谈什么联网。 自定义协议满足自己的要求即可但是我们的要求也不能太低至少要满足以下几个要求 1、二进制传输比较高效、省流量这在使用4G流量卡的时候就很关键了 2、易检索可以在一堆数据包里找到明显特征并解析可以解决粘包问题 3、正确性要有校验码确保数据正确 4、方便代码书写这样可以在各类系统中使用 5、没有网络大小端问题这是早期很多人用结构体传输时候经常碰到的问题。 上图是基本的协议框架包含了帧头、数据长度、设备码、命令和校验码等关键通用的信息需要注意的是这里整形数据都采用高字节先传输的原则比如数据总长Len先传输Len的高8位再传输低8位具体的整合代码如下 这里面有个入口参数cmd_type根据这个项目的定义如下。 在实际使用的时候举例如下把自己应用层的数据按你自己的顺序要求打包好发送就行了。 细心的同学会发现上图中在传输温度数据时候比较特别先把数值乘以10再加1000为什么要这么操作主要是为了保证传输的数据都是正整数避免了网络大小端的问题这里的乘以10是保留小数点后一位传感器返回的数据最小是-45.0乘以10就是-450再加上1000就可以保证这个数值是正整数最后再把这个正整数高8位、低8位依次存进数组内。对于接收端解析就是一个逆向过程了具体如下图所示获取到原始数据后先减1000再除以10.0这里要记得是10.0而不是10这样才能保持小数。 对于接收端就是按照协议一步步解析即可代码很简洁、模式很固定的具体的可以工程项目打开来看看。 /* 描述 : 设备解析服务器下发的数据 输入 : 输出 : */ void app_air_recv_parse(u8 *buff, u16 len) {u8 head[2]{0xAA, 0x55};u8 *pDatamemstr(buff, len, head, 2);if(pData!NULL){u16 total_lenpData[2]8 | pData[3];u16 crcValuepData[total_len]8 | pData[total_len1];if(crcValuedrv_crc16(pData, total_len)){pData4;u32 device_snpData[0]24|pData[1]16|pData[2]8|pData[3];pData4;if(device_sn!g_sAirWork.device_sn)//识别码确认return;u8 cmd_typepData[0];pData;switch(cmd_type){case AIR_CMD_HEART://心跳包{break;}case AIR_CMD_DATA://数据包{break;}case AIR_CMD_SET_SPEED://设置风速{u8 speedpData[0];pData1;app_motor_set_speed(speed);break;} case AIR_CMD_SET_SWITCH://设置开关{u8 statepData[0];pData1;g_sAirWork.switch_statestate;if(state0){app_motor_set_speed(100);//启动风扇}else{app_motor_set_speed(0);//停止风扇}app_air_send_status();break;}}}} } 三、净化器运行逻辑 到目前为止嵌入式端的各个模块基本上讲解完成了剩下的就是如何把他们整合起来的问题了。从任务上来讲就三个部分一是通讯连接二是传感数据采集和发送三是风速和开关控制。这里面任务最繁忙的要数通讯连接了要驱动WiFi连接以及MQTT的运行比较庞大理论上要用RT-Thread单独为它创建个任务但是这里由于传感数据采集内容较为简单这里就不那么麻烦了直接放一起就好了。对于风扇和开关控制属于被动的其实已经在数据解析里完成了即跟MQTT主程序同一个任务。总的来讲就是下图这个任务了对照着注释看很简单。 这样整个项目的嵌入式部分就讲解完成了接下来继续讲解的是手机端开发的内容了。 本项目的交流QQ群:701889554 写于2024-4-1
http://www.hkea.cn/news/14588097/

相关文章:

  • 潍坊手机网站汕头seo不错
  • 怎么做企业销售网站如何在线上注册公司
  • 东莞做网站的公司有哪些互联网保险销售行为可回溯
  • 如何在百度做网站怎么用ajax做电商网站
  • 常州辉煌网络网站制作涿州市网站建设
  • 网站正在建设中 模版厂房验收 技术支持 东莞网站建设
  • 外贸自己建网站潜江资讯网招聘信息最新
  • 那些cps网站做的比较好网络培训平台有哪些
  • 网站信息服务费怎么做分录wordpress会员推广下载支付插件
  • 网站建设登录页面怎么写具有价值的网站建设
  • 网站建设必备的功能模块广告词
  • 巩义做网站的wordpress让小工具支持简码
  • wordpress 升级 xampp 无法定义根目录上海关键词排名手机优化软件
  • 国网北京电力建设研究院网站做网站的关键词是指
  • 源码分享网站网站暂时关闭 seo
  • 什么网站可做浏览器首页wordpress check_admin_referer
  • 企业网站开发定制网站开发过程前端后端
  • 上海网站开发制作公司做网站麻烦吗
  • 贤邦网站建设app开发做网站要服务器和什么软件
  • wordpress runcode高端网站建设seo
  • 公司网站建设申请书满天星建设网站
  • 简单网站制作代码做的网站打不开了
  • 电信电信网站备案系统工业设计网站排行榜前十名有哪些
  • 二手东西网站怎么做如何做网站app
  • 青岛做网站的公司建设银行么官方网站
  • 网站建设和网络维护网站建设公司费用
  • 旅游网站的建设的意义百度网站推广费用
  • 子网站如何做单位网站维护 网站建设岗位
  • 北京建设网站公司推荐黄埔网站建设 信科网络
  • 校园网站建设网asp网站建设代码