手机,蓝牙开发板,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.)

五,程序代码

cpp 复制代码
/*
	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
#endif

BluetoothSerial 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 pin
  digitalWrite(LED_BUILTIN, !state);     // set pin to the opposite state
}

void setup()
{
	Serial.begin(9600);

	SerialBT.begin("WeMosD1R32"); //Bluetooth device name
	SerialBT.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模块,需要考虑连线。后经努力,也成功实现了同样的功能。

相关推荐
limingade2 小时前
手机通话语音离线ASR识别商用和优化方向
智能手机·语音识别·funasr离线识别·android做asr·手机断网离线asr·asr语音转文字识别
AirDroid_cn2 小时前
OPPO手机怎样被其他手机远程控制?两台OPPO手机如何相互远程控制?
android·windows·ios·智能手机·iphone·远程工作·远程控制
AIminminHu3 小时前
数字图像处理(番外篇:软件设计思想和屏幕原理的藕断丝连):从LED冬奥会、奥运会及春晚等等大屏,到手机小屏,快来挖一挖里面都有什么
智能手机
PHOSKEY10 小时前
闪测仪应用案例丨手机中框如何突破「尺寸检测」瓶颈?
运维·智能手机·自动化
码码哈哈0.012 小时前
电脑电压过高的影响与风险分析
电脑
三维频道12 小时前
XTOM工业级蓝光三维扫描仪用于笔记本电脑背板模具全尺寸检测
电脑·需求分析·数字图像相关(dic)技术·自动化焊接变形测量·机械臂焊接过程监测·高温环境下的非接触式测量·焊接工艺优化与应变分析
电脑能手1 天前
[保姆级教程] 解决不同局域网电脑无法SSH的问题
运维·ssh·电脑
limingade1 天前
手机无网离线使用FunASR识别SIM卡语音通话内容
智能手机·funasr·funasr无网识别通话语音·手机asr识别sim卡通话·手机asr识别通话声音
Rverdoser1 天前
手机内存融合是什么意思
智能手机
前端若水1 天前
通过 Windows 共享文件夹 + 手机访问(SMB协议)如何实现
windows·智能手机