Arduino与乐高EV3蓝牙通讯 您所在的位置:网站首页 乐高编程ev3 Arduino与乐高EV3蓝牙通讯

Arduino与乐高EV3蓝牙通讯

2023-03-29 18:17| 来源: 网络整理| 查看: 265

Electronic

 

Technology

 

电子技术

Arduino

与乐高

EV3

蓝牙通讯

/

俞皓熠

1

本文主要介绍了

 

Arduino

 

 

乐高

EV3

的蓝牙连接

详细介绍

 

 

乐高蓝牙协议

通过实例演示

 

Arduino

给乐高发送信息

打破乐

 

EV3

较为封闭的状况

让二者

 

产生交互

协同工作

关键词

Arduino

乐高蓝牙协议

Arduino

是一款便捷灵活

方便上手的开

 

源电子平台

可以连接上百种模组

让普通人

 

也可以制作出有趣的创意电子制作

但在制作

 

创意作品时

如果涉及到机械结构

设计制作

 

机械部件就比较麻烦

较为费时费力

而乐高

 

积木中有多种积木结构件

能轻松制作出各种

 

复杂机械结构

如果把

Arduino

与乐高结合

 

能快速地把有创意变为现实作品

LEGO

 

MINDSTORMS

 

EV3

是第三代乐高

 

机器人

它是丹麦乐高公司在

2013

年上市的

 

拥有大量的粉丝

但乐高

EV3

比较封闭

 

与计算机或另一台

EV3

进行通讯

与其它设

 

备难以通讯

有人利用一块叫

Bricktronics

 

转接板让

Arduino

连接乐高积木

Bricktronics

 

可以直接连接乐高电机与传感器

这样

 

Arduino

就可以代替乐高程序块

Arduino

 

直接控制乐高电机与传感器

有人也编写了

 

APP,

让手机也可以通过蓝牙控制乐高

EV3

 

所以我对乐高

EV3

的蓝牙通讯机制进行了研

 

Arduino

也可以通过蓝牙模块与乐高程

 

序块进行通讯

用这个方法就不需要专用的转

 

接板

只需要一块普通的蓝牙模块

就可以让

 

Arduino

与乐高互相通讯

协同工作

下面主

 

要介绍其实现方法

1

 

Arduino

与乐高程序块通讯的原理

用乐高

EV3

 

Programmer

图形化编程软件

 

编写过蓝牙通信的人都应该用过叫

消息传递

 

的指令块

就是用它对蓝牙信号进行读或写操

 

但它对一般的蓝牙信号是不能识别的

 

EV3

有专用的蓝牙处理协议

要让

Arduino

 

与乐高

EV3

进行通讯

要就认真分析

EV3

 

蓝牙信号处理协议

Arduino

模拟成乐高设

 

发送

EV3

能识别的蓝牙信号

如图

1

2

 

Arduino

与乐高的蓝牙连接

HC05

HC06

蓝牙模块一个

把蓝牙

 

模块的

VCC

连接到

Arduino

5V,

 

GND

 

接到

Arduino

GND

蓝牙上的

TXD

RXD

给消息标题为

abc'

的消息传递指令块发送一个逻辑值为

1

 

的写法

16

 

样例

 

进制表示

0x0c,

 

0x00,

 

0x00,

 

0x00,

 

0x81,

 

0x9e,

 

0x04,

 

0x61,

 

0x62,

 

0x63,

 

0x00,

 

0x0

1

,

 

0x00,

 

0x01

为便于理解

上面的样例用十进制来表示如下

实际发送还是要用

16

进制

样例说明

格式

代号

 

bb

部分

 

mm

部分

 

tt

部分

 

ss

部分

 

ff

部分

 

aa

部分

 

LL

部分

 

pp

部分

120

 

0

 

0

 

129

 

158

 

4

 

97

 

98

 

99

 

0

 

1

 

0

 

1

bbbbmmmmttss

 

fa

 

aaa

 

LL

 

p

其中

97

 

98

 

99

就是

"abc

ASCII

码值

 

xxxxxxxx8

1

9Exxxx-

 

-

x

xxxxx

,ee

XX

 

表示一个字节长度

 

bbbbmmmmttssffaa

 

-

 

-

 

-

 

L

LLLpp*

 

 

含义

整个包从

mm

pp

的数据长度

 

包计数器

目前还不知道作用

直接填

0

就可以

包类型

直接填

0x81

就好

 

命令类型

0x9e

代表写

消息传递

消息传递

名称字符串的长度

+

 

1,

比如

"abc

的长度为

4

任个字节

 

'

消息传递

名称

+0,

内容为字符的

ASCII

+

 

0x00

2

字节

 

包有效数据长度

LL

个字节

 

包有效数据

我们要发送给

EV3

 

消息传递

的内容

^

R

R

2

 

2

 

1

1

1

1

分别连接到

Arduino

的数字端口

 

0

1

端口

 

RXD

TXD

检査无误后连接

USB

上电会看到蓝牙模

 

块有红色指示灯快速闪烁

打开乐高程序块

 

进入设置菜单的

Bluetooth

选项

Visibility

 

Bluetooth

勾选

然后进入

Connections

 

项搜索蓝牙设备

找到对应的蓝牙模块

 

接时一般会要求输入配对密码

密码一般为

 

1234

连接成功后

蓝牙模块上红色指示灯慢

 

速闪烁

在乐高

EV3

显示幕左上角也会显示

 

已连接图标农

,

而还未连接时显示的是

 

此时,

已完成

Arduino

与乐高的底层连接

 

还不能互相通讯

如图

2

3

所示

3

理解乐高

EV3

的蓝牙通讯协议

在乐高

EV3

可以无需编写用户程序

 

通过直接运行命令对

EV3

进行下载

上传

 

读取输入值等各种操作

官方学名为

direct

 

commands

 

直接命令

),

这类似于

Windows

 

里面的命令控制台中的命令

消息传递

 

令块的实质就是通过

"

直接命令

进行蓝牙的

 

接收与发送

我们用

Arduino

EV3

发信息时

,

 

也只要按照

EV3

蓝牙的协议格式发送出去

 

EV3

就能顺利解包

接收到信息

接收

EV3

 

发来的信息时

也只要根据蓝牙的协议格式来

 

提取所需信息就行了

1

是蓝牙协议格式的

 

写法

消息传递

指令块支持接收或发送文

 

数字或逻辑三种类型的值

如果要发送

 

1234

这个字符串的话

LL

部分内容为

 

0x05,

 

0x00,

 

pp

 

部分的内容就是

 

0x31,

 

0x32, 

0x33,

 

0x34

 

,

如果要发送数值

EV3

协议是用

 

32

位浮点数表示的

4

Arduino

发送

EV3

蓝牙直接命令的实

 

Electronic

 

Technology

 

&

 

Software

 

Engineering

 

电子技术与软件工程

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有