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

五,程序代码

/*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
#endifBluetoothSerial 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 pindigitalWrite(LED_BUILTIN, !state);     // set pin to the opposite state
}void setup()
{Serial.begin(9600);SerialBT.begin("WeMosD1R32"); //Bluetooth device nameSerialBT.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.hqwc.cn/news/178665.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu18.04安装google浏览器

下载google安装包 wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 安装google浏览器 sudo dpkg -i google-chrome-stable_current_amd64.deb 执行安装 sudo apt-get -f install 启动浏览器 在应用程序中找到google图标点击运行

langchain 之 Tools 多案例使用(一)

原文&#xff1a;langchain 之 Tools 多案例使用&#xff08;一&#xff09; - 简书 ATTENTION: 如果采用 openai 的接口&#xff0c;需要走代理&#xff0c;本文采用 proxychains 进行设置。开启 debug 模式后&#xff0c;能看到更多的输出信息。 import langchain langcha…

codemirror怎么高亮指定文本

先上图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c070cde11a314c45a859ccb0ca7f41c7.png 产品经理的需求是编辑框中用了占位符的话&#xff0c;占位符中的变量高亮&#xff0c;简单吧&#xff01;还有一个附加要求&#xff0c;必须是外部定义的变量&#xff0c;不…

多媒体播放器Infuse mac中文版软件特点

Infuse mac是一款多媒体播放器应用&#xff0c;它支持播放多种格式的视频文件、音频文件和图片文件&#xff0c;并且可以通过AIrPlay将媒体内容投放到其他设备上。Infuse还支持在线视频流媒体播放和本地网络共享&#xff0c;用户可以通过它来访问家庭网络上的媒体文件。 Infuse…

upload-labs12-21关

第十二关 提示及源码 $is_upload false; $msg null; if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_ext substr($_FILES[upload_file][name],strrpos($_FILES[upload_file][name],".")1);if(in_array($file_ext,$ext_arr)){$temp_file $_FILES…

计算机网络五层协议的体系结构

计算机网络中两个端系统之间的通信太复杂&#xff0c;因此把需要问题分而治之&#xff0c;通过把一次通信过程中涉及的所有问题分层归类来进行研究和处理 体系结构是抽象的&#xff0c;实现是真正在运行的软件和硬件 1.实体、协议、服务和服务访问点 协议必须把所有不利条件和…

c++基于CImage实现图片格式转换完整源代码

最近遇到项目需要&#xff0c;对图片进行格式转换&#xff0c;抱着怎么简单怎么做的想法&#xff0c;于是进行了验证&#xff0c;代码参考自网络&#xff0c;进行了简单的修改。 我这里提供完整的代码。 直接上代码&#xff1a; 头文件&#xff1a; #pragma once#include &l…

LCD1602命令代码整合

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

使用Kohya_ss训练Stable Diffusion Lora

Stable Diffusion模型微调方法 Stable Diffusion主要有 4 种方式&#xff1a;Dreambooth, LoRA, Textual Inversion, Hypernetworks。 Textual Inversion &#xff08;也称为 Embedding&#xff09;&#xff0c;它实际上并没有修改原始的 Diffusion 模型&#xff0c; 而是通过…

day18_多线程

今日内容 零、 复习昨日 一、作业 二、线程安全的集合 三、死锁 四、线程通信 五、线程池 零、 复习昨日 见晨考 一、线程安全[重点] 1.0 线程不安全 当前线程的数据被其他线程修改 1.1 线程安全 临界资源&#xff1a;共享资源(同⼀个对象)&#xff0c;一次只可以有一个线程操…

数字化时代,VR虚拟展厅为企业带来全新商机

临近年关&#xff0c;各个行业都想在年关将至之时冲一波销量&#xff0c;各种婚博会、家博会、车展会多不胜数。但是线下展会终归是场地有限&#xff0c;因此为了扩大受众范围&#xff0c;同时节约一定宣传成本&#xff0c;实现全球范围的展示和推广&#xff0c;不少企业都会选…

python基础练习题库实验八

文章目录 前言题目1代码 题目2代码 题目3代码 总结 前言 &#x1f388;关于python小题库的这模块我已经两年半左右没有更新了&#xff0c;主要是在实习跟考研&#xff0c;目前已经上岸武汉某211计算机&#xff0c;目前重新学习这门课程&#xff0c;也做了一些新的题目 &#x…