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

手机,蓝牙开发板,TTL/USB模块,电脑四者之间的通讯

一,意图

通过手机蓝牙连接WeMosD1R32开发板,开发板又通过TTL转USB与电脑连接.手机通过蓝牙控制开发板上的LED灯的开,关,闪等动作,在电脑上打开串口监视工具观察其状态.也可以通过电脑上的串口监视工具来控制开发板上LED灯的动作,而在手机蓝牙监测工具中显示灯的状态.

二,原料:

手机,TTL转USB转换器模块,WeMosD1R32开发板,电脑,杜邦线

三,连线

1,实物连线图

2,逻辑连线图

连线时注意:

  1. 一定要连接5V线,因为要为开发板供电.3V3可能无法工作.
  2. TXD和RXD连接时一定要交叉.

四,操作

1,连接好USB转TTL模块和WeMosD1R32开发板;

2,将USB插入电脑;

3,在电脑设备管理器中端口项目中,找到CH340对应的端口;

4,打开串口检测工具(通讯猫, sscom,等等);此实验采用的是arduino IDE的串口检测接口.

5,打开手机蓝牙,连接WeMosD1R32.设置好相关参数.

         本实验设置如下:

             发送                                          H.

             发送1                                        L.

             发送2                                        F.

             发送3                                        B.

6,点击手机蓝牙工具按钮,观察电脑串口显示界面中的信息.

(切图有误,下面的红色方框内应该是:H.L.F.B.)

五,程序代码

/*WeMos D2 R32将蓝牙输入信息转换为电脑串口输出信息将蓝牙输出信息转换为电脑串口输入信息通过RS485连线,控制WoMos的板载LED灯,然后返回相关的信息本程序只是简单地从串口接收命令."H"	open"L"	close"F" 	flicker"B"	blink*/
#include "BluetoothSerial.h"
#include <Ticker.h>#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endifBluetoothSerial SerialBT;Ticker flipper;#define LED_BUILTIN 2   // Set the GPIO pin where you connected your test LED or comment this line out if your dev board has a built-in LED
void flip() {int state = digitalRead(LED_BUILTIN);  // get the current state of GPIO1 pindigitalWrite(LED_BUILTIN, !state);     // set pin to the opposite state
}void setup()
{Serial.begin(9600);SerialBT.begin("WeMosD1R32"); //Bluetooth device nameSerialBT.println("The device started, now you can pair it with bluetooth!");pinMode(LED_BUILTIN, OUTPUT);//Serial.println();//Serial.println("Device is ready...");
}void loop()
{String cstr = "";                			// 用来保存客户端发来的数据//直接读取一行//String str=Serial.readString();//按指定字符分割读取比如‘.’//String str=Serial.readStringUntil('.');String BTLine,PCLine;if (SerialBT.available()) {		// 检查蓝牙串口缓存是否有数据等待传输 BTLine = SerialBT.readStringUntil('.');SerialBT.print("BT:");SerialBT.println(BTLine);//Serial.print("BT:");//Serial.println(BTLine);cstr = BTLine;}if (Serial.available()) {		// 检查电脑串口缓存是否有数据等待传输 PCLine = Serial.readStringUntil('.');//Serial.print("PC:");//Serial.println(PCLine);SerialBT.print("PC:");SerialBT.println(PCLine);cstr = PCLine;}if(cstr.length()>0) {if (cstr.startsWith("H")) {flipper.detach();//Serial.println("--开灯");digitalWrite(LED_BUILTIN, HIGH);} else if (cstr.startsWith("L")) {flipper.detach();//Serial.println("--关灯");digitalWrite(LED_BUILTIN, LOW);} else if (cstr.startsWith("F")) {//Serial.println("--闪烁");flipper.attach(0.5, flip);} else if (cstr.startsWith("B")) {//Serial.println("--眨眼");flipper.attach(0.1, flip);} else {//Serial.print("不知道的命令:");//Serial.println(cstr);}// 以下两句为了向另一开发板的串口发送相同的命令Serial.print(cstr);Serial.print(".");}
}

后记:

本实验的最终目的是将TTL/USB模块换为RS485/USB模块,需要考虑连线。后经努力,也成功实现了同样的功能。

http://www.lryc.cn/news/234368.html

相关文章:

  • Springboot更新用户头像
  • Express.js 与 Nest.js对比
  • 总结 CNN 模型:将焦点转移到基于注意力的架构
  • 2023.11.16 hivesql高阶函数之开窗函数
  • QTableWidget常用信号的功能
  • Vue理解01
  • 4、FFmpeg命令行操作8
  • 【MySQL】索引与事务
  • 切换为root用户后,conda:未找到命令
  • Qt退出界面
  • 【数据标注】Label Studio用于机器学习标注
  • py字符串转字符串数组
  • 强化学习各种符号含义解释
  • Axure基础详解二十:中继器随机抽奖效果
  • 企业信息化与电子商务>供应链信息流
  • 【Proteus仿真】【STM32单片机】防火防盗GSM智能家居设计
  • 快速入门ESP32——开发环境配置PlatformIO IDE
  • Oxygen XML Editor 26版新功能
  • Pikachu漏洞练习平台之SSRF(服务器端请求伪造)
  • WPF异步编程
  • 同态加密定义,四大发展阶段总结,FHE系统正式定义-全同态加密
  • 网上的搜索
  • 【算法-哈希表2】快乐数 和 两数之和
  • MR外包团队:MR、XR混合现实技术应用于游戏、培训,心理咨询、教育成为一种创新的各行业MR、XR形式!
  • 【P1008 [NOIP1998 普及组] 三连击】
  • 机器学习算法——集成学习
  • java springboot在当前测试类中添加临时属性 不影响application和其他范围
  • 原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!由于工作量大,准备整8个系列完事,-----系列5
  • milvus数据库的数据管理-插入数据
  • 系列一、请谈谈你对JVM的理解?Java8的虚拟机有什么更新?