目录

  • 项目场景
  • 硬件准备
  • 实现过程
    • 实现缘由
    • 原理展现
  • 成果展现
    • USB-TTL模块有线数据展示
    • ZigBee模块远程传输数据展示
  • 最后总结

项目场景

本人在做STM32硬件开发项目中,传输数据这一块的通信模块基本都是ZigBee或者蓝牙HC-05模块,这两个模块引脚上都有TX/RX进行数据的输出与输入;在开发前会以为通信这方面应该会非常的难,但其实数据传输的原理在代码上非常的简单,本文主要以ZigBee模块进行详细解释。


硬件准备

本项目前期需要准备的硬件有:
STM32开发板(我这边主要用的是STM32F103ZET6精英版,后续的代码在STM32F1都是通用的):

ZigBee模块(两个):

USB-TTL模块:


实现过程

实现缘由

代码链接:https://pan.baidu.com/s/1b4SwmOc-bZfcHyeL5mNzLw
提取码:adeh
本项目使用的是正点原子的代码模板,打开工程后,可以看到在HAREWARW文件里多了timer.c和usart3.c两个C语言文件,而SYSTEM文件中本身也有一个usart.c文件。

而usart3.c就是ZigBee模块进行通信的关键。
在原本的代码中,我们可以直接通过prinf();函数将数据以串口1的方式通过USB_232接口传入到电脑中,通过串口调试助手直接打印显示,并且打印的数据中英文都可以适用(中文可能会有传输损耗)。
然而这个串口接口很多时候也可以用来烧录代码,有很多功能的复用。因此我们大多情况下不能通过这个串口1接入ZigBee/蓝牙模块实现数据的远程传输

而且prinf();这个应该是C语言自带的函数方法,在keil5编程软件中是找不到源头的。

因此我们需要启用其他的串口接口,参考串口1的传输方式,采用串口3的接口,自己另写一个新的u3_printf();使得数据能够通过串口3,接入ZigBee模块,使得数据能够打印到电脑的串口调试助手中,实现数据的远程传输。


原理展现

在usart3.c中有这样一段代码:

是对串口3的初始化,对应的引脚为PB10和PB11;我们首先通过USB-TTL模块进行引脚连接,连接方式如下:

PB10-RX
PB11-TX

主函数代码如下所示:

 int main(void){     delay_init();            //延时函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先usart3_init(9600); uart_init(115200);   //串口初始化为115200while(1){                   delay_ms(300);printf("\r\n串口1发出消息");//串口1发出消息 通过(正常RS232串口)引线delay_ms(300);u3_printf("\r\n串口3发出消息");//串口3发出消息 通过(PB10输出 PB11输入  连接USB-TTL模块)引线delay_ms(300);}
}

可以看到有两个printf进行数据打印;其中u3_printf();的代码原理体现在uasrt3.c中的:

void u3_printf(char* fmt,...)
{  u16 i,j; va_list ap; va_start(ap,fmt);vsprintf((char*)USART3_TX_BUF,fmt,ap);va_end(ap);i=strlen((const char*)USART3_TX_BUF);        //此次发送数据的长度for(j=0;j<i;j++)                           //循环发送数据{while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); //循环发送,直到发送完毕   USART_SendData(USART3,USART3_TX_BUF[j]); }
}

通过这样的写法,就可以将数据通过串口3进行展现了,代码为了突出效果,将串口1和串口3数据同步输出,进行展现。


成果展现

USB-TTL模块有线数据展示

首先按之前串口3的连接方式连接硬件,如下图所示:

另一端连接到电脑,若烧录好代码后,该模块中的TXD附近的LED等会不断的闪烁:

由于本人用的是串口烧录,因此串口1也可以输出数据,打开两个串口调试助手,分别设置对应的串口和波特率,打开后数据接收情况如下图所示:

可以看到数据能够同步在两个串口中进行显示。


ZigBee模块远程传输数据展示

将两个ZigBee模块通过以下方式进行对应的配置:

接下来将其中一个ZigBee模块同之前的USB-TTL模块连接STM32板子的方式对应连接(USB-TTL模块在连接时可以不连接电源和地 但是Zigbee必须连接电源和地);

PB10-RX
PB11-TX

另一个ZigBee模块和USB-TTL模块连接到电脑,呈现样式如下:

本人是将STM32一方的ZigBee模块设为A端(呈现为双红色),接入电脑的一端为B端(呈现为双绿色)
两边连接成功之后,STM32一方的ZigBee模块会变成一红一绿,并且图中两个标红框位置的地方会同步闪烁红光,说明数据正在实时传输。
全文到这个地方,便基本实现了添加串口接口来接入ZigBee模块实现数据的远程传输。


最后总结

至此,我们就基本完成了再STM32上搭建ZigBee/蓝牙模块来实现数据的远程传输,可以结合之前STM32——两个模块代码的合并的博客对传感器采集到的数据进行整合,通过这里的传输方式上传到电脑中!
过程中可能有些地方没有说明清楚,还请大家多多交流,记得点赞+关注哦!!

STM32F103学习记录——通过额外添加串口接口来接入ZigBee/蓝牙模块实现数据的远程传输相关推荐

  1. 树莓派中SIM7600G-H 4G DONGLE模块使用记录(二)使用花生壳服务器实现数据的远程传输

    项目场景: 在之前对树莓派进行PPP拨号上网/4G上网后,需要对树莓派中采集到的数据远程上传,并能接收云端软件下达的指令.然而在实现过程中,我们并不能够直接通过ITCP/IP通信实现数据的远程传输,还 ...

  2. ESP32学习记录<三>串口通信

    ESP32学习记录<三>串口通信 文章目录 ESP32学习记录<三>串口通信 前言 一.通过串口打印出数据 1.初始化串口 2.打印数据 二.串口控制LED亮灭 1.接收串口发 ...

  3. android蓝牙串口 hc06,Android手机通过蓝牙模块HC-06连接Arduino串口输出

    通过手机进行通信是可以实现很多遥控功能,虽然距离是比较短,一般是10米,但对于我这种新手做测试,比起买一个几百块的多通道遥控器成本要低很多. 实验目的:用Android实现蓝牙连接通过Arduino串 ...

  4. 20100506 学习记录:grdview添加新的一行数据

    目标: 每选择一个新的offercode,点按钮 把新记录添加进当前的grdview,并要记住之前添加的记录 思路: 从 offercode 取得该条记录信息 点击按钮添加时,给datatable创建 ...

  5. Java零基础学习记录11(抽象方法、接口、内部类)

    ** 1. 抽象类和抽象方法 ** (1) 简述抽象方法的特征 1.抽象方法中可有成员变量.成员方法.静态方法.final所修饰的方法.abstract所修饰的方法. 2.抽象方法只能声明在抽象类中( ...

  6. Axhub Charts学习记录贴-条形图添加正序排序/倒序排序功能

    axure中添加条形图与两个按钮,为方便操作,为按钮分别命名为"正序排序""倒序排序" 为按钮添加单击交互事件,选择"更新行",目标对象选择 ...

  7. (转)爱剪辑学习记录_2.快速添加、截取、删除视频片段

    一.添加视频 在软件主界面顶部点击"视频"选项卡,在视频列表下方点击"添加视频"按钮,在弹出的文件选择框添加视频片段. 图1:添加视频片段 二.通过" ...

  8. STM32F103学习记录-----GPIO篇

    GPIO端口配置 32bit配置寄存器 GPIOx_CRL GPIOx_CRH 32bit数据寄存器 GPIOx_IDR GPIOx_ODR 32bit置位/复位寄存器 GPIOx_BSRR 16bi ...

  9. 学习记录:py3百度翻译接口

    转-参考分析内容:https://blog.csdn.net/qq_16146103/article/details/108964249?utm_medium=distribute.pc_catego ...

最新文章

  1. 在Linux命令行下运行Matlab
  2. boost::geometry::detail::overlay::select_rings用法的测试程序
  3. HDU4302(map的用法)
  4. Ajax初体验(一)
  5. P1791-[国家集训队]人员雇佣【最大权闭合图】
  6. python的gui编程pyqt5_Python-GUI编程-PyQt5
  7. javascript指南_JavaScript的完整指南
  8. mysql哈希索引 kv_mysql8 参考手册--B树和哈希索引的比较
  9. C#.NET学习笔记1---C#.NET简介
  10. Hadoop学习记录(6)|Eclipse安装Hadoop 插件
  11. 多视几何_计算一副图像上的点在另一福图像上的对应点
  12. sql转义模块php,sql注入与转义的php函数代码_php技巧
  13. cad图形如何导入到奥维地图_如何将CAD图导入奥维地图
  14. 如何判断 msn 是否在线 [根据msn是否在线动态显示 msn 头像]
  15. polyval matlab 怎么用,matlab 中polyval的用法 最好能举个例子
  16. Day-3 文字排版
  17. hbase报错: ERROR: Can‘t get master address from ZooKeeper; znode data == null
  18. 网络中搜不到局域网内的其他计算机,局域网中搜不到其他计算机怎么修复
  19. ct是计算机软件分析报告吗,ct影像工作站|ct诊断报告系统|ct图文工作站|dicom软件系统|技易科技-医学影像软件网...
  20. HTTP权威指南与图解HTTP读书笔记

热门文章

  1. 复式、别墅、大户型无线wifi覆盖方案
  2. 基于3D等变图转换的条件抗体设计
  3. java8常见的stream流处理
  4. 网络编程——UDP协议的实践(词典翻译服务器(英译汉))
  5. oracle中句柄,释放句柄 – 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 13429648788 - 惜分飞...
  6. 试试基础的Spring Boot的面试题?(第一波)
  7. Ubuntu 各版本号和名称对照【转】
  8. ​2万字系统总结,带你实现Linux命令自由
  9. 宝塔开放php openssl,宝塔面板安装第三方插件 Encryption365™ SSL 证书宝塔客户端 – 可以申请IP证书...
  10. 白宫举办开源安全峰会,众多科技巨头参加