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

相关推荐
float_六七1 小时前
平板热点频繁断连?三步彻底解决
电脑
Manny11226 小时前
手机躺玩电脑GalGame是什么体验?
智能手机
wanhengidc7 小时前
云手机就是虚拟机吗?
运维·网络·安全·智能手机
mg6687 小时前
安卓玩机工具----安卓“搞机工具箱”最新版 控制手机的玩机工具
android·智能手机
wanhengidc8 小时前
使用云手机能否给企业降本增效
运维·网络·科技·游戏·智能手机
点灯小铭20 小时前
基于STM32单片机的智能粮仓温湿度检测蓝牙手机APP设计
stm32·单片机·智能手机·毕业设计·课程设计
双翌视觉20 小时前
机器视觉的手机柔性屏贴合应用
智能手机·自动化·视觉检测·机器视觉
chinesegf20 小时前
手机能看、投屏 / 车机不能看与反向链接验证类似吗?
智能手机
wanhengidc1 天前
云手机运行流畅,秒开不卡顿
运维·网络·科技·游戏·智能手机
光锥智能1 天前
小平板元年,华为MatePad Mini创出一片蓝海
华为·电脑