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

news/2024/7/21 5:57:42 标签: 智能手机, 电脑

一,意图

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


http://www.niftyadmin.cn/n/5183015.html

相关文章

B2B企业如何打造独立站:从策略到实施的全面指南

随着数字化转型的加速&#xff0c;B2B企业越来越认识到独立站的重要性。然而&#xff0c;如何建设一个优秀的独立站&#xff0c;以及如何将独立站与企业的整体战略相结合&#xff0c;是许多企业面临的挑战。本文将详细探讨B2B企业如何从策略到实施打造一个成功的独立站。 一、…

RPC实现简单解析

RPC是什么&#xff0c;先摘取一段解释&#xff1a; RPC全称为远程过程调用&#xff08;Remote Procedure Call&#xff09;&#xff0c;它是一种计算机通信协议&#xff0c;允许一个计算机程序调用另一个计算机上的子程序&#xff0c;而无需了解底层网络细节。通过RPC&#xff…

生成对抗网络(GAN)

生成模型是深度学习领域难度较大且较为重要的一类模型。生成对抗网络能够在半监督或者无监督的应用场景下进行生成任务的学习。目前而言&#xff0c;生成对抗网络在计算机视觉、自然语言处理等领域取得了令人惊叹的成果。生成对抗模型是近年来复杂数据分布上无监督学习最具前景…

试论轮回的证据(欢迎讨论)

这几天看了几个鸟类筑巢的视频&#xff0c;十分惊叹。 一个鸟找个平台或树杈&#xff0c;用几个树枝搭个简陋的窝&#xff0c;这个确实是理所当然的事情&#xff0c;没什么奇怪的。 而有些鸟类的窝&#xff0c;十分的精巧&#xff0c;需要智商和技术。那么这些鸟类是怎么学会的…

帝国CMS仿核弹头H5小游戏模板/帝国CMS内核仿游戏网整站源码

帝国CMS仿核弹头H5小游戏模板&#xff0c;帝国CMS内核仿游戏网整站源码。比较适合小游戏发布、APP应用资讯类网站使用&#xff0c;有兴趣的可以二次开发试试。 下载地址&#xff1a;https://bbs.csdn.net/topics/617579435

【Liunx】部署Ansible自动化运维工具

Ansible自动化运维工具 概述安装部署1.通过yum下载Ansible2.对自己做免密配置3.修改ansiable host配置对服务器进行分组4.测试&#xff1a;对所有服务器进行ping命令5.写playbook6.执行我们写的playbook脚本7.验证 概述 ansible是新出现的自动化运维工具&#xff0c;基于Pytho…

spring-boot-starter-data-redis2.X连接redis7

由于redis7引入了acl机制&#xff0c;可以配置用户权限&#xff0c; 比如配置了一个普通用户 test&#xff0c;权限为 test_ 前缀的key可操作 springboot想要连接&#xff0c;并没有设置用户名的地方&#xff0c; 跟了源码&#xff0c;jedis客户端是支持的&#xff0c;但是s…

Sentinel概述

前言 ​ 在现行高并发场景下&#xff0c;通常会采用微服务架构&#xff0c;可以更好的对服务接口进行水平扩展、接口限流等有效保障服务的可用性和稳定性。其中为了保障服务的高可用&#xff0c;同时也为了防止故障蔓延&#xff0c;通常会选择断路器&#xff0c;防止故障的服务…