手机,蓝牙开发板,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模块,需要考虑连线。后经努力,也成功实现了同样的功能。

相关推荐
一个人旅程~4 小时前
旧电脑的“拯救者”?Linux Mint20.3是怎样适配软件硬件以及兼顾兼容与性能的平衡的?
linux·经验分享·电脑
꯭爿꯭巎꯭8 小时前
python下载手机版(python3手机版(免费))
开发语言·python·智能手机
一个人旅程~2 天前
linuxmint如何使用iphone手机上网以及如何管理iphone手机的照片和文件?需要下载哪些基础包和依赖?
linux·windows·经验分享·电脑
阿洛学长2 天前
怎样关闭电脑休眠释放空间
电脑
时空自由民.2 天前
SPI TFT LCD显示的颜色和电脑手机上的颜色不一样,排查原因
智能手机·电脑
唐策2 天前
电脑端生成快捷方式:开启wifi服务,关闭WiFi服务
电脑
wanhengidc2 天前
服务器 数据科技发展
运维·服务器·爬虫·科技·游戏·智能手机
李永奉2 天前
杰理SDK开发-实现清除手机APP用户配置功能、重置参数
智能手机
一个人旅程~3 天前
Linux Mint(Ubuntu)如何在没有网卡驱动情况下利用手机上网安装旧电脑网卡驱动程序指导书
linux·windows·经验分享·电脑
wanhengidc3 天前
如何有效防范网络安全威胁
运维·服务器·网络·网络协议·安全·web安全·智能手机