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

相关推荐
城电科技1 小时前
城电科技 | 探秘零碳校园:创新应用,引领绿色未来
科技·电脑
老六ip加速器3 小时前
手机改了IP地址,定位位置会改变吗?
网络·tcp/ip·智能手机
wapicn9915 小时前
手机归属地查询Api接口,数据准确可靠
java·python·智能手机·php
非凡ghost19 小时前
超级好用的小软件,连接电脑和手机。
windows·智能手机·电脑·软件需求
电手1 天前
纯国产系统,首款鸿蒙电脑下月发布
华为·电脑·harmonyos
云水木石2 天前
配置 UOS/deepin 系统远程桌面,实现多台电脑协同办公
电脑
Json____3 天前
uni-app 框架 调用蓝牙,获取 iBeacon 定位信标的数据,实现室内定位场景
uni-app·电脑·蓝牙·蓝牙信标 beacon·定位信标·停车场定位
中金快讯3 天前
戴尔台式电脑开不了机是什么原因?戴尔台式电脑怎么进入bios
电脑
IT里的交易员3 天前
【系统】换硬盘不换系统,使用WIN PE Ghost镜像给电脑无损扩容换硬盘
运维·电脑
AredRabbit4 天前
惠普(HP)和联想(Lenovo)作为全球两大电脑品牌,并不是简单的“拼接电脑”
电脑