终于搞定了通过两路蓝牙接收数据

news2024/11/16 12:23:42

一直想做无线传感器,通过蓝牙来接收数据,无奈因为arduino接收串口数据的一些问题,一直搁到现在。因为学校里给学生开了选修课,所以手边有一些nano和mega可以使用,所以就做了用两个nano加上两个蓝牙模块来发射数据,用mega加两个蓝牙模块来接收数据。因为mega可以同时使用4路串口,所以考虑用mega来作为主控机,用来接收来自传感器的数据,每个传感器加一个nano和蓝牙来无线发射数据。

因为是测试,所以在nano中写了一个简单的发射信号的语句。以下四nano中的程序:

————————————————我是分界线——————————————————————

int i=1;
void setup() { 
  Serial.begin(9600);   }
  void loop(){
         Serial.print(i);
       Serial.print("$");
       delay(50);
       i++;        
    }

————————————————我是分界线——————————————————————

以下是mega中的程序:

——————————————————我是分界线————————————————————————

String comdata = "";
String shuju="";
String shuju2="";
int i;
void setup()
 {
     Serial.begin(9600);
     Serial1.begin(9600);
     Serial2.begin(9600);
 }

void loop()
 {
     while (Serial1.available() > 0) 
     {
         shuju += char(Serial1.read());
         delay(2);
     }
     while (Serial2.available() > 0)
     {
       shuju2 +=char(Serial2.read());
       delay(2);
     }
     if (shuju.length() > 0)
     {
         i=shuju.indexOf("$");
         if(i!=-1){
         comdata=shuju.substring(0,i);
         Serial.print("#1=");       
         Serial.print(comdata);
         Serial.println("$");
         shuju=shuju.substring(i+1,shuju.length());
         comdata = "";
         i=0;
         }
     }
       if (shuju2.length() > 0)
     {
         i=shuju2.indexOf("$");
         if(i!=-1){
         comdata=shuju2.substring(0,i);
         Serial.print("#2=");
          Serial.print(comdata);
          Serial.println("$");
         shuju2=shuju2.substring(i+1,shuju2.length());
         comdata = "";
         i=0;
         }    } }

——————————————我是分界线————————————————————

上篇忘记介绍蓝牙模块的设置了,如果想要利用两路蓝牙来接收数据,那么这两路蓝牙必须设置不同的密码,以下是蓝牙模块的设置方法,可以将蓝牙模块接到串口模块上,然后里哟你串口软件发指令给蓝牙模块,以下设置是针对DFrobot的蓝牙模块的,它上面有开关可以设置接收命令状态。如果不是DFrobot的蓝牙模块,只要将KEY针脚接高电平就是可以接受命令状态。将两个蓝牙模块设置为主,然后设置不同的密码。再将另外两个设置为从,设置对应主蓝牙的密码。以下是具体的命令设置:

在发送栏中输入AT(不分大小写),然后点击发送,可看见模块返回OK,这表示AT指令通讯正常。当AT指令设置完毕后,将2号开关AT Mode拨到2端退出AT命令模式,重新上电后设置才生效。

1.AT指令集如下:

指令响应参数
ATOK





2.模块重启指令:

指令响应参数
AT+RESETOK





3.设置和查询模块连接模式:

当模块无法被适配器、主机连接时,需配置该参数,配置为AT+CMODE=1。

指令响应参数
AT+CMODE=< Param >OKParam:

0 —— 指定蓝牙地址连接模式 (指定蓝牙地址由绑定指令设置)

1 —— 任意蓝牙地址连接模式 (不受绑定指令设置地址的约束)

默认连接模式:0

AT+CMODE?+CMODE: < Param > OK
















 

4.设置和查询模块角色:

当模块无法被适配器、主机搜索到时,需配置该参数,配置为从角色。


模块角色说明:

Slave(从角色) ——被动连接,可以和任意蓝牙适配器配对使用;

Master (主角色)——查询周围从设备,并主动发起连接,从而建立主、从蓝牙设备间的透明数据传输通道。

Slave-Loop(回环角色) ———被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙主设备;

5.设置和查询配对码:

6.设置和查询串口参数:

举例:设置串口波特率:115200,1位停止位,无校验

AT+ UART=115200,0,0\r\n

OK

AT+ UART?

+UART:115200,0,0

OK

注:在应用中,选择1位停止位,无校验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1909051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

solidity:构造函数和修饰器、事件

构造函数​ 构造函数&#xff08;constructor&#xff09;是一种特殊的函数&#xff0c;每个合约可以定义一个&#xff0c;并在部署合约的时候自动运行一次。它可以用来初始化合约的一些参数&#xff0c;例如初始化合约的owner地址&#xff1a; address owner; // 定义owner变…

web前端开发——标签一

今天我来针对web前端开发讲解标签一 Html标签_标题&段落&换行 注释标签&#xff1a;Ctrl/ Ctrl/ &#xff0c;用户可能会获取到注释标签 注释的原则: •和代码逻辑一致 •尽量使用中文 •正能量 标题标签&#xff1a;<h1></h1> h1-h6 标题标签有6…

Nacos2.X源码分析:服务注册、服务发现流程

文章目录 Nacos2.1.X源码源码下载服务注册NacosClient端NacosServer端 服务发现NacosClient端NacosServer端 Nacos2.1.X源码 源码下载 源码下载地址 服务注册 官方文档&#xff0c;对于NamingService接口服务注册方法的说明 Nacos2.X 服务注册总流程图 NacosClient端 一个…

2024年浙江省高考分数一分一段数据可视化

下图根据 2024 年浙江高考一分一段表绘制&#xff0c;可以看到&#xff0c;竞争最激烈的分数区间在620分到480分之间。 不过&#xff0c;浙江是考两次取最大&#xff0c;不是很有代表性。看看湖北的数据&#xff0c;580分到400分的区段都很卷。另外&#xff0c;从这个图也可以…

【Mac】Folder Icons for mac(文件夹个性化图标修改软件)软件介绍

软件介绍 Folder Icons for Mac 是一款专为 macOS 设计的应用程序&#xff0c;主要用于个性化和定制你的文件夹图标。以下是它的主要特点和使用方法&#xff1a; 主要特点&#xff1a; 个性化文件夹图标 Folder Icons for Mac 允许用户为 macOS 上的任何文件夹定制图标。你…

k8s集群如kubeadm init和kube-flannel.yam问题

查看k8s中角色内容kubectl get all (显示pod和server以及delment) 删除应用资源选择删除先删除部署查看部署和pod没了服务还在&#xff0c;但资源和功能以及删除&#xff0c;删除服务kubectl delete 服务名&#xff08;部署名&#xff09;&#xff0c;get pods 获取默认空间的容…

Android C++系列:Linux进程(二)

1. fork #include <unistd.h> pid_t fork(void);子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。 fork调用一次返回两次 父进程中返回子进程ID子进程中返回0读时共享,写时复制#include <sys/types.h> #include <unistd.h> #include <…

高颜值官网(4):酒店民宿网站12个,看着看着就醉了。

对于高星级酒店或者高端酒店来说&#xff0c;拥有一个高颜值的官方网站是非常重要的。一个精美、专业的网站设计可以有效地展现酒店的品牌形象和服务质量&#xff0c;吸引目标客户群体并提高预订转化率。 这次分享12个&#xff0c;都是超高颜值的。

机器学习中的可解释性

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 为什么我们需要了解模型如何进行预测 我们是否应该始终信任表现良好的模型&#xff1f;模型可能会拒绝你的抵押贷款申请或诊断你患…

break 和 continue 的区别与用法

break 和 continue 的区别与用法 1、break 语句2、continue 语句3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在JAVA中&#xff0c;break 和 continue 是两种常用的控制流语句&#xff0c;它们主要用于在循环结构中改变程序的执行…

怎样卸载电脑上自带的游戏?

卸载电脑上自带的游戏通常是一个简单的过程&#xff0c;以下是几种常见的方法&#xff0c;您可以根据自己的操作系统版本选择相应的步骤进行操作&#xff1a; 方法一&#xff1a;通过“设置”应用卸载&#xff08;适用于Windows 10和Windows 11&#xff09; 1. 点击开始菜单&…

【链表】- 链表相交

1. 对应力扣题目连接 链表相交 2. 实现思路 链表详情&#xff1a; 考虑使用双指针&#xff1a; 解法一&#xff1a; 具体代码&#xff0c;详见3. 实现案例代码解析&#xff1a; 思路&#xff1a;因为链表按照如图的箭头走向&#xff0c;走的总路程是相等的&#xff0c;一…

泰迪智能科技受邀北京物资学院共讨校企合作交流

为落实“访企拓岗促就业”专项行动工作要求&#xff0c;推动科研成果向实际应用转化&#xff0c;培养适应新时代需求的高素质人才&#xff0c;拓宽毕业生就业渠道&#xff0c;提升就业竞争力。7月1日&#xff0c;广东泰迪智能科技股份有限公司区域总监曹玉红到访北京物资学院开…

两张图片合并(右上角添加水印,兼容矢量图)保留原来的颜色

无缝合并两张图片&#xff08;封面右上角添加logo&#xff09;-- opencv &#xff1a; 进行添加logo(水印)由于使用了cv2.seamlessClone&#xff0c;cv2.seamlessClone使用了泊松克隆&#xff08;Poisson Cloning&#xff09;&#xff0c;会根据周围的颜色信息进行颜色调整&…

基于单片机的饲料搅拌机控制系统设计

摘要 &#xff1a; 文章主要从软件和硬件两个部分对基于单片机的饲料搅拌机控制系统进行研究设计 。 硬件部分主要由传感器模块 、 信号采集模块、 键盘接入模块 、 LED 显示模块 、 继电器模块以及看门狗模块组成 。 软件部分在 KeilC51 软件基础上重点对控制系统主程序 、…

Android - 云游戏本地悬浮输入框实现

一、简述 云游戏输入法分两种情况,以云化原神为例,分为 云端输入法 和 本地输入法,运行效果如下: 云端输入法本地输入法云端输入法 就是运行在云端设备上的输入法,对于不同客户端来说(Android、iPhone),运行效果一致。 本地输入法 则是运行在用户侧设备上的输入法,对…

sizeof跟strlen的用法及差异

sizeof是一个操作符&#xff0c;不是函数&#xff1b; 而strlen是一个库函数&#xff1b; sizeof是计算所占内存空间的&#xff0c;不管你内容是什么&#xff0c;只要知道占多少内存&#xff0c; 而strlen是跟内容有关的&#xff0c;它是计算字符串长度的&#xff08;字符数…

vue学习day01-vue的概念、创建Vue实例、插值表达式、响应式、安装Vue开发者工具

1、vue的概念 Vue是一个用于构建用户界面的渐进式 框架 &#xff08;1&#xff09;构建用户界面&#xff1a;基于数据动态渲染页面 &#xff08;2&#xff09;渐进式&#xff1a;循序渐进的学习 &#xff08;3&#xff09;框架&#xff1a;一条完整的项目解决方案&#xff…

[Java]Swing版坦克大战小游戏项目开发(1)——new出一个窗口

highlight: xcode theme: vuepress 前言 本系列文章带领 Java 初学者学习使用 Java 语言结合 Swing 技术以及设计模式开发一款经典小游戏——坦克大战。通过这个小游戏&#xff0c;你可以学会很多实用的设计模式思想&#xff0c;并且提高你的编码水平。 熟悉Frame Frame 类是 J…

C++ | Leetcode C++题解之第224题计算计算器

题目&#xff1a; 题解&#xff1a; class Solution { public:int calculate(string s) {stack<int> ops;ops.push(1);int sign 1;int ret 0;int n s.length();int i 0;while (i < n) {if (s[i] ) {i;} else if (s[i] ) {sign ops.top();i;} else if (s[i] …