传感网应用开发(高级)课件75NBIoT通信应用开发(代码部分讲解).ppt

上传人(卖家):晟晟文业 文档编号:4046298 上传时间:2022-11-06 格式:PPT 页数:25 大小:4.39MB
下载 相关 举报
传感网应用开发(高级)课件75NBIoT通信应用开发(代码部分讲解).ppt_第1页
第1页 / 共25页
传感网应用开发(高级)课件75NBIoT通信应用开发(代码部分讲解).ppt_第2页
第2页 / 共25页
传感网应用开发(高级)课件75NBIoT通信应用开发(代码部分讲解).ppt_第3页
第3页 / 共25页
传感网应用开发(高级)课件75NBIoT通信应用开发(代码部分讲解).ppt_第4页
第4页 / 共25页
传感网应用开发(高级)课件75NBIoT通信应用开发(代码部分讲解).ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、01全局变量、自定义函数的声明02自定义函数功能解析03主函数功能代码目录目录CONTENTS01掌握工程文件的添加02掌握变量定义及函数声明方式03掌握NB模块的基本配置步骤技能技能知识点知识点CONTENTS04掌握光照控制灯及模式切换应用开发1全局变量、自定义函数的声明全局变量、自定义函数的声明知识链接01STM32CubeMX生成工程介绍02函数声明和头文件添加STM32CubeMX生成工程介绍01 通过前次课程的学习,大家已经掌握了使用STM32CubeMX快速生成项目的方法。通过STM32CubeMX新建工程,快捷、方便,比使用keil5更加易于理解,不抽象。1、头文件的添加2、自

2、定义变量的添加3、自定义函数的声明02(1)、打开main.c 文件(2)、头文件,变量及函数声明处1、头文件的添加2、自定义变量的添加3、自定义函数的声明02(1)、添加新增的头文件引用,内容如下:#include user_cloud.h#include user_oled.h#include user_usart1.h#include user_usart2.h#include key.h#include oled.h(2)、添加变量声明 uint8_t usart1RxBuf;/串口1接收缓存 uint8_t usart2RxBuf;/串口2接收缓存(3)、添加自定义函数声明 int

3、fputc(int ch,FILE*f);/定向输出函数float get_illumination_value();/ADC采集并转化为光照值void control_light(uint8_t status);/控制灯亮灭功能函数void automatic_mode(int value,int*light_flag);/根据光照强度自动控制灯亮灭的功能函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef*huart);/串口中断服务程序void HAL_UART_ErrorCallback(UART_HandleTypeDef*huart);

4、/串口错误处理程序2自定义函数功能解析自定义函数功能解析任务要求任务要求 本任务要求用户编写功能函数,实现以下函数功能(1)串口的定向输出程序(2)光照强度采集及处理程序(3)灯的亮灭控制程序(4)根据光强自动控制程序(5)串口中断服务程序(6)串口中断错误处理程序功能函数01fputc02Floatget_illumination_value03control_light04automatic_mode05HAL_UART_RxCpltCallbackHAL_UART_ErrorCallback06101此处调用了UART串口写函数,函数功能将字符通过串口1发出HAL_UART_Transm

5、it函数原型如下在main.c文件添加函数:(此处添加位置任意,前面已经声明)int fputc(int ch,FILE*f)HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,10);return ch;02Floatget_illumination_value函数:使用stm32 ADC功能,采集光照产生的模拟电压信号值,利用相关公式计算,将电压值转化为光照强度,作为返回值输出float get_illumination_value()float adcValue;float illumination_value;HAL_ADC_Start(&hadc);H

6、AL_ADC_PollForConversion(&hadc,10);adcValue=HAL_ADC_GetValue(&hadc);adcValue=adcValue*3.3/4096.0;illumination_value=pow(10,(1.78-log10(33/adcValue-10)/0.6);/将电压值转换为光照强度 oled_display_illumination(illumination_value);HAL_ADC_Stop(&hadc);return illumination_value;通过通过IO口输出高低电平控制继口输出高低电平控制继电器开关,进而控制灯的亮灭

7、电器开关,进而控制灯的亮灭。此处使用的。此处使用的IO引脚为引脚为PA8,oled_display_light_status为为LED屏幕显示函数,显示灯的亮灭屏幕显示函数,显示灯的亮灭状态状态03void control_light(uint8_t status)if(status=LIGHT_OPEN)HAL_GPIO_WritePin(Light_GPIO_Port,Light_Pin,GPIO_PIN_SET);oled_display_light_status(LIGHT_OPEN);else HAL_GPIO_WritePin(Light_GPIO_Port,Light_Pin,G

8、PIO_PIN_RESET);oled_display_light_status(LIGHT_CLOSE);04automatic_mode(int value,int*light_flag)Value 采集的光照强度值采集的光照强度值light_flag 当前灯的状态标志当前灯的状态标志0为灭,为灭,1为亮为亮now_ill_value 存储的用于比较的光照强度存储的用于比较的光照强度当检测到光照强度低于当检测到光照强度低于3时且灯灭时,打开灯,时且灯灭时,打开灯,并记录下当前光照强度。当检测到灯的强度比并记录下当前光照强度。当检测到灯的强度比之前存储的强度值高于之前存储的强度值高于1以上(

9、表示外界光照变以上(表示外界光照变强),且灯亮时,关闭灯。强),且灯亮时,关闭灯。void automatic_mode(int value,int*light_flag)static int now_ill_value;if(value3)&(*light_flag=0)control_light(LIGHT_OPEN);*light_flag=1;HAL_Delay(10);now_ill_value=(int)get_illumination_value();else if(now_ill_value+1ErrorCode);huart-ErrorCode=HAL_UART_ERROR_

10、NONE;if(huart=&huart1)HAL_UART_Receive_IT(&huart1,&usart1RxBuf,1);/重新打开串口1接收中断 if(huart=&huart2)HAL_UART_Receive_IT(&huart2,&usart2RxBuf,1);/重新打开串口2接收中断3主函数功能代码添加主函数功能代码添加知识链接01参数介绍02初始化03主流程介绍04开发流程演示参数介绍参数介绍ill_value:经AD转换后得到的光照强度值mod_flag:=1表示自动控制模式,=0表示手动按键模式mod_flag:=1表示当前灯亮,=0表示当前灯灭0102在main主函

11、数,硬件初始化部分添加相关外设初始化代码。主要包含1、oled屏初始化2、按键初始化 3、初始屏显信息4、开串口中断5、nb模块初始化6、nb模块链接服务器7、相关变量的定义OLED_Init();keys_init();oled_display_information();oled_display_connection_status(LINKING);oled_display_light_status(LIGHT_CLOSE);oled_show_mode(MANUAL);HAL_UART_Receive_IT(&huart1,&usart1RxBuf,1);HAL_UART_Receive

12、_IT(&huart2,&usart2RxBuf,1);wait_nbiot_start();nbiot_config();link_server();int i,ret,ill_value,lightStatus,int link_flag=0,send_count;uint8_t mod_flag=0,c=0;03在main.c主文件中添加右侧代码03代码主要实现了,间隔1.5s(i+14)采集传感器数据(get_illumination_value(),当为自动模式时,调用automatic_mode()控制灯的亮灭,将数据上传至云平台send_data_to_cloud(),同时对云平台返回的数据进行接收和处理rcv_data_deal(),switch(ret);主函数中包含扫描按键的代码,对key2和key3进行扫描,当key2按下时,灯的亮灭切换。当key3按下时,灯的控制模式切换(手动和自动)04NB配置nbiot_config在user_cloud.c文件中添加1、nbiot_config()的nb配置代码2、get_time_from_server()函数304程序编译完成以上代码添加后,保存并编译工程,如下图所示

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(传感网应用开发(高级)课件75NBIoT通信应用开发(代码部分讲解).ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|