物联网Lora模块从入门到精通(七)串口通讯

这篇具有很好参考价值的文章主要介绍了物联网Lora模块从入门到精通(七)串口通讯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

        在Lora模块的程序设计中,串口通信一定是一个极其重要且常用的通信方式,借助串口通信,我们不但可以向外传输我们获取的数据,还可以根据外部指令做出相应。

        同样的,在例程中,为我们提供了一个名为usart1-board.c的库,帮助我们更好更快的完成串口通信任务的开发。

物联网Lora模块从入门到精通(七)串口通讯

二、代码实现

        本文的任务是当取到的数据通过串口以ASCII格式向外发送,并通过串口调试助手接受来着上位机的指令做出对应的操作。

        具体任务如下:

        单片机间隔一秒向上位机发送光照数据,并记录发送次数,当收到来自上位机的复位指令FA 00 FB时,清空发送次数。

        通过分析usart1-board.c库,我们常会使用下列方法:

void USART1_Init(uint32_t bound);
//初始化串口 bound为波特率
void USART1_SendStr(uint8_t *Data, uint16_t length);
//发送uint8_t类型数据数组 length为发送的长度
uint16_t USART1_ReadRxBuffer( uint8_t *payload);
//接受来自串口的内容并存入传入的数据数组内 返回接受到的数据长度

        代码示例:

#include <string.h>
#include "board.h"
#include "hal_key.h"
#include "tim-board.h"
#include "timer_handles.h"
#include "led_light.h"
#include "adc_reader.h"
#include <math.h>          //library 
#include <stdio.h>
#include "stm32l1xx_hal.h" // controller register definitions 
#include "sht1x.h"         // controller register definitions 
#include "sht3x.h"
#include "usart1-board.h"

void Init() {
    BoardInitMcu();
    BoardInitPeriph();
    keys_init();//按键初始化
    setTimer2Callback(Time2Handler);
    Tim2McuInit(1);//定时器初始化,设置定时中断1ms中断一次
};

int count=0;//用于记录发送次数
float temp=0,hum=0,light=0;

uint8_t data[30];
int main( void )
{
    Init();
		ADCS_Init();//初始化ADC
		hal_temHumInit();//初始化温湿度模块
		USART1_Init(115200);
    while( 1 )
    {
				HAL_Delay(1000);//延时1000ms
				memset(data,'\0',30);//清空数组内容
				if(USART1_ReadRxBuffer(data)!=0)//如果接收到内容
				{
					if(data[0]==0xfa)//如果指令正确
						if(data[1]==0x00)
							if(data[2]==0xfb)
								count=0;//计数器清零
				}
				AdcScanChannel();//更新通道值
				light=((5.0/2.0)*AdcReadCh0())*100.0;//获取光照并通过公式计算
				call_sht11(&temp,&hum);//获取温湿度
				memset(data,'\0',30);//清空数组内容
				sprintf((char *)data,"Count=%d,Light=%.2f Lx",count+1,light);//将内容存入数组
				USART1_SendStr(data,30);//发送数据
				count++;//发送完一次数据计数器增加
    }
}

        效果展示:

物联网Lora模块从入门到精通(七)串口通讯        

        此时,我们已经完成了串口数据的接受与发送,但这仅仅是我们学习串口通信的基础。

        串口通信的数据一般有两种解析的方式:ASCII、Hex。但其本质上都是以二进制传输的,不过是对数据的处理不同。

三、关于数据的处理

        关于数据的处理,一般分为基础知识与数据解析,学习可以帮助我们完善编程的思维,更好更快的写出我们需要的程序。

        如果你想要掌握,下面两篇文章是你必须熟悉的:

Zigbee、STM32单片机串口收发必会数据传输-uint8、uint16等数据的解析-串口传输多数据与解析-物联网

数据传输中的数据转换与处理的常用方法-物联网开发-单片机通信文章来源地址https://www.toymoban.com/news/detail-480153.html

到了这里,关于物联网Lora模块从入门到精通(七)串口通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 物联网通讯协议NB-lot和LoRa差异分析

    像把大象装冰箱一样,物联网,万物互联也是要分步骤的。 一、感知层(信息获取层),即利用各种传感器等设备随时随地获取物体的信息; 二、网络层(信息传输层),通过各种电信网络与互联网的融合,将物体的信息实时准确地传递出去; 三、应用层(信息处理层),把感知层得

    2024年01月17日
    浏览(42)
  • 物联网国赛LORA模块开发教程(通用库)——LoRa点对点通信

            LoRa点对点通信与控制实现效果,本次实验主要对Lora点对点通信进行实验,发送端采集光照值显示到oled屏并发送至节点端进行控制,当光照值低于100 lx 时点亮Led2灯,反之熄灭。 LoRa点对点通信与控制实现效果 1、本次LoRa点对点实验用到的库    在main.c文件中添加

    2024年04月26日
    浏览(48)
  • [4]PCB设计实验|LPWAN物联网系统解决方案 |LoRa模块/LoRa网关/云平台/LoRa应用案例|9:30~10:00

    目录 1.LPWAN物联网系统解决方案                             LoRa模块/LoRa网关/云平台/LoRa应用案例 2.LoRaWAN网络部署情况 LoRaWAN网络架构 3.基于LPWAN技术的无线通信端到端解决方案  LoRa低功耗广域网智能终端 CY-LRW-102开关控制器 CY-LRB-101开关检测器 4.LoRa无线模块 4.1规格 4.2Lo

    2024年02月08日
    浏览(39)
  • [005] [蓝桥杯物联网] LoRa模块通信原理概述与API使用方法

    MCU型号: STM32L071KBU SDK:HAL库 工具:CubeMX + MDK LoRa ( Long Range , 远距离)模块收发器型号为 SX1278 ,可以完成 点对点 的数据通信功能,属于 半双工 通信,其原理图与引脚描述如下图所示: ▲ Lora模块原理图 ▲ Lora模块引脚描述 Lora竞赛板中引出了以下引脚: PA5~7:一般配置为

    2023年04月16日
    浏览(38)
  • Arduino| 串口通讯、入门示例

    串口通讯:串口通信是用来在不同电子设备之间交换数据用的技术,其实就是要实现不同电子设备之间的“通讯对话”。 串口给通讯应用例子:刚拿到Arduino进行Blink测试,程序通过引脚控制了小灯亮起,但是如果我们想要改变当前小灯的亮度,想要把这个“想法”传递给Ar

    2024年01月16日
    浏览(37)
  • 3个月快速入门LoRa物联网传感器开发

    在这里插入图片描述 LoRa作为一种LPWAN(低功耗广域网络)无线通信技术,非常适合物联网传感器和行业应用。要快速掌握LoRa开发,需要系统学习理论知识,并通过实际项目积累经验。 摘要: 先学习LoRa基础知识:原理、网络架构、协议等,大概需要2周时间。 然后选择LoRa开发板,编写简

    2024年02月14日
    浏览(47)
  • RabbitMQ从入门到精通之安装、通讯方式详解

    1.1 现存问题 服务异步调用: 服务A如何保证异步请求一定能被服务B接收到并处理 削峰: 海量请求,如何实现削峰的效果,将请求全部放到一个队列中,慢慢的消费,这个队列怎么实现? 服务解耦: 如何尽量的降低服务之间的耦合问题,如果在订单与积分和商家服务解构,需

    2024年02月09日
    浏览(43)
  • C#串口通信从入门到精通(14)——多个串口接收数据

    我们在开发串口通信程序时,有时候会需要连接不止一个串口,这时候该怎么写程序呢?本文就来介绍多个串口数据的接收 我们在之前的专栏中介绍了串口数据的发送,当时有提到过,我们是通过创建一个SerialPort类的对象,然后利用这个对象来实现对串口的访问,那么以此

    2024年02月05日
    浏览(81)
  • Keil5添加.c文件与.h文件的方法-导入支持库-新大陆物联网竞赛-Lora模块&NBIOT模块例程-添加导入文件

            在某些情况下,我们使用现用的物联网开发例程,例如新大陆物联网的Lora与NBIOT的例程,我们对其例程内目前所有的库不满意,不足以实现开发需要的功能,我们需要在原有工程上添加我们自己的库,以满足开发需要。         首先,打开文件夹选项,点击如下图所

    2024年02月12日
    浏览(46)
  • 【基于stm32】【附代码】两块蓝牙模块HC-05进行通讯,不占用串口一的代码教程

    目录 前言 一、两块hc-05蓝牙通讯的连接 二、使用步骤 1.hc-05从机,该教程主要是应用于【收数据】 usar.h代码 usart.c代码(只引用stm32的串口2,串口一用于烧程序) main.c 2.hc-05主机,该教程主要是应用于【发数据】 usar.h代码 usart.c代码(只引用stm32的串口2,串口一用于烧程序)

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包