找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 51224|回复: 66

NXT蓝牙开发工具包(完结)

   火... [复制链接]
发表于 2010-2-18 18:14:03 | 显示全部楼层 |阅读模式
本帖最后由 beef 于 2010-3-4 15:26 编辑

写在前面的话:

      这是翻译后的完整版,本人水平实在有限,欢迎大家踊跃挑刺哦!~~





LEGO MINDSTORMS NXT 蓝牙开发工具包





目录


目录....................................................................................1楼


NXT硬件规格.....................................2楼


NXT蓝牙功能.....................................3楼

      NXT BRICK蓝牙功能...................................3楼


BLUECORE芯片接口........................6楼
            
ARM7和BLUECORE芯片之间的UART接口..7楼


与NXT蓝牙设备通信.................10楼
            LEGO程序的蓝牙通信..........................11楼
                   发送数据到外部蓝牙设备.........................12楼

             读取外部蓝牙设备数据....................................13楼


附录.....................................................................................14楼

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
 楼主| 发表于 2010-2-18 18:14:47 | 显示全部楼层
本帖最后由 beef 于 2010-2-18 18:31 编辑

NXT硬件规格
LEGO MINDSTORMS NXT利用各种先进的电子设备以实现广泛的功能。想了解各种细节的话,请参看LEGO MINDSTORMS NXT硬件开发工具包文档。

下面是一个NXT硬件规格的摘要列表:

主处理器:              Atmel32位 ARM处理器 , AT91SAM7S256
                          - 256 KB 闪存
                          - 64 KB 内存
                          - 48 MHz

协处理器:              Atmel8位 AVR处理器 , ATmega48
                          - 4 KB 闪存
                          - 512 Byte 内存
                          - 8 MHz

蓝牙无线通信           CSR BlueCoreTM 4 v2.0 +EDR System
                          - 支持串口 (SPP)
                          - 内部 47 KByte 内存
                          - 外部 8 MBit 闪存
                          - 26 M Hz

USB2.0通信            全速端口 (12 M bit/s)

4个输入端口            6线接口,同时支持数字和模拟接口
                         - 1个高速端口,IEC61158型4/EN 50170标准

3个输出端口            6线接口,支持编码器输入

显示                      100 × 64像素的黑白液晶图形显示
                          - 查看面积26 x40.6 mm        

扬声器                   声道音频输出8位分辨率
                          - 支持采样率2-16千赫

4按钮用户界面         橡胶按键

电源                      6节AA电池
                          - 推荐碱性电池
                          - 可充电锂电池1400毫安

接口                      6线工业标准接口,RJ12右侧调整
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-2-18 18:15:19 | 显示全部楼层
本帖最后由 beef 于 2010-2-18 18:33 编辑

NXT蓝牙功能
NXT通过CSR BlueCoreTM 4 v2.0芯片实现无线蓝牙通信。NXT可同时与3台设备建立连接,但只能一次与一台交流。此功能已使用串行端口配置文件(SPP),可被认为是无线串行端口。NXT可以与能用NXT通讯协议指令编程并支持SPP的蓝牙设备通信。这使得NXT间可以发送程序和声音文件,而且在程序执行过程中也可利用无线通信在NXT和NXT之间发送和接收信息。为了减小蓝牙功耗,这里用的是蓝牙2类设备,也就意味着有效距离最大10米。
NXT BRICK蓝牙功能
NXT BRICK蓝牙功能被设置为主/从通信通道。也就是说网络中需要有一台NXT作为主机,在需要时,其他NXT再通过它通信。下面的图表表明在网络中哪些NXT设备可以直接通信。

图片1.jpg
Figure 1: Illustrating 4 NXTs communicating using Bluetooth

如上所示,主机可以同时与其他3台蓝牙设备连接。在一个特定的时刻,主机只能与一台从机通信,也就是说,如果主机正与1号从机通信时,3号从机开始向主机发送数据,主机在转换到3号前不会处理接收到的数据。

一台NXT不能同时作为主机和从机,因为这样会导致NXT设备间的数据丢失。这一功能已在NXT标准固件中被禁用。

通过不同通道与其他蓝牙设备连接。NXT有4个连接通道来进行蓝牙通信。0通道通常用来让从机与主机通信(向主机方向)而1,2,3通道用来让主机与从机通信。

在之前的图中,当主机分别与从机1,2,3通信时就会用到通道1,2,3。当某个从机要与主机通信时就会用到通道0。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-2-18 18:25:54 | 显示全部楼层
谢谢!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-2-18 22:21:20 | 显示全部楼层
好的!!!~~~~~~~~~~~~~~~~~~~~
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-2-20 00:17:55 | 显示全部楼层
本帖最后由 beef 于 2010-2-20 00:19 编辑

BLUECORE芯片接口
NXT中的蓝牙功能是由独立芯片实现的,带有8M闪存的CSR BlueCore 4 芯片。CSR的蓝牙芯片中包含了处理集成蓝牙节点的所有必需的硬件。被称为Bluelab的能处理由CSR实现的蓝牙堆栈的16位处理器。NXT用的是Bluelab 3.2版本。BlueCore 芯片的固件中整合了可用户编程的虚拟机任务,使我们可以控制和运行一些代码少的应用程序。虚拟机中整合了命令翻译,可以对通过ARM 7处理器UART接口接收的命令进行解译并做出反应。

虚拟机对蓝牙SPP-A和SPP-B配置都有一个全面实施。当本地BlueCore是连接发起者时用SPP-A配置,而当其他蓝牙设备发起连接时则用SPP-B配置。在连接建立后,BlueCore用被称为“流模式”的方式以不大于220K波特的速率交换数据。当BlueCore不在“流模式”的时候他就在“命令模式”,这是用来控制BlueCore中的应用和扩展的。其中UART的通信类型由两个接口信号控制(ARM7_CMD&BC4_CMD)。

需要ARM 7处理器与BlueCore 芯片间使用的通信协议细节描述的请参看附录3。
下图显示了ARM 7处理器与BlueCore 芯片间的接口。(图后有功能说明)欲知引脚布局的细节,请参看NXT主机硬件设计图。

图片2.jpg
Figure 2: Hardware interface between the ARM 7 and BlueCoreTM chip

SPI接口提供了BlueCore芯片更新的可能性。NXT主机正常运作时不会使用到它。在NXT主机中SPI接口与显示共享。

复位引脚用于在启动时重新正确初始化芯片和禁用蓝牙。

BC4_CMD:指示从BlueCore到ARM 7,预计以何种数据类型发送。

ARM7_CMD:指示从ARM 7到BlueCore,预计以何种数据类型发送。

UART通信用于BlueCore 芯片与ARM 7处理器间的数据与命令通信。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-2-21 23:02:33 | 显示全部楼层
ARM7和BLUECORE芯片之间的UART接口

BlueCore 芯片中的UART与ARM 7处理器通信,初始化用的是如下设置(流模式和命令模式都是):

通信速度        460.8K bit/s
数据位          8位
奇偶校验        无奇偶校验位
停止位          一位停止位
流量控制        硬件握手信号(RTS&CTS)

为了在蓝牙设备间建立通信,有几个步骤需要实施。在NXT中,蓝牙功能由BlueCore芯片处理,其功能则是通过命令模式设置和具体的指令控制。这在LEGO MINDSTORMS NXT ARM蓝牙接口文档中有具体描述。

所有用来控制BlueCore芯片建立蓝牙设备之间通信的指令都是由标准的NXT固件中的通信模块处理的。

当第三方开发ARM 7处理器固件时,需要注意要用LEGO MINDSTORMS NXT ARM7蓝牙接口文档里提供的接口;因为BlueCore固件中虚拟机只能识别这些指令。所有其他指令将导致BlueCore固件混乱,这将需要硬件复位(关闭主机再打开)。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-2-27 18:05:55 | 显示全部楼层
e文太好了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-2-27 18:24:29 | 显示全部楼层
歇两天,三月开学后再继续
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-3-3 20:50:58 | 显示全部楼层
与NXT蓝牙设备通信

LEGO MINDSTORMS NXT主机可以与使用串口规范(SPP)并可编程使用LEGO MINDSTORMS NXT通信协议的外部蓝牙设备通信。关于协议指令及其相应功能的详细描述在LEGO MINDSTORMS NXT通信协议文档中可以找到。

向LEGO MINDSTORMS NXT主机发送直接指令也是可以的。不需要用户操作,直接指令就会被NXT主机解译然后转换成特定功能。这使得通过外部蓝牙设备比如手机或PDA直接操控NXT主机成为可能。关于直接指令及其相应功能的详细描述在LEGO MINDSTORMS NXT直接指令文档中可以找到。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-3-3 20:52:09 | 显示全部楼层
LEGO程序的蓝牙通信

使用LEGO MINDSTORMS NXT软件时可以在蓝牙设备间发送和接收蓝牙信息。完成这个任务要使用信息指令,MessageRead和MessageWrite。在LEGO MINDSTORMS NXT直接指令文档中有描述。

之前说过,蓝牙功能是通过主从协议实现的,所有通信都由主设备控制。这保证了通信可靠,尤其是当多个从机与一个主机相连的时候。当主机要核实是否接收了三个从机之一的数据时,它实际上会向特定的从机发送一个“MessageRead”指令以确定从机已经为主机准备好数据。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-3-3 20:53:02 | 显示全部楼层
本帖最后由 beef 于 2010-3-4 14:28 编辑

发送数据到外部蓝牙设备
这部分介绍NXT将要向另一个蓝牙设备发送的数据(通讯时NXT作为主机)。

MessageWrite
Byte 0:0x00或0x80
Byte 1:0x09
Byte 2:收件箱号码(0-9)
Byte 3:消息大小
Byte 4-N:消息数据,这里N=消息大小+3

消息数据被看作是字符串,他必须包含空终止。相应的,消息大小要包括空终止字节。消息大小要控制在59以下,以使消息包在USB上合法。

Return package:
Byte 0:0x02
Byte 1:0x09
Byte 2:状态字节
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-3-4 15:19:39 | 显示全部楼层
本帖最后由 beef 于 2010-3-4 15:21 编辑

读取外部蓝牙设备数据

这部分介绍NXT将要向另一个蓝牙设备发送的数据(通讯时NXT作为主机并探寻从机的数据)。



首先,NXT会向从机发送下面的MessageRead指令:



MessageRead

Byte 0:0x00或0x80

Byte 1:0x13

Byte 2:远程收件箱号码(0-9)

Byte 3:当地收件箱号码(0-9)

Byte 4:删除?(布尔;真(非零)值清除远程收件箱中的信息)



Return package:

Byte 0:0x02

Byte 1:0x13

Byte 2:状态字节

Byte 3:当地收件箱号码(0-9)

Byte 4:消息大小

Byte 5-63:消息数据(填充)



消息数据被看作是字符串;他必须包含空终止。相应的,消息大小要包括空终止字节。此外,返回包有固定大小,因此该消息的数据字段将被填充空字节。



注意,远程收件箱号码可能指定一个0-19的值,而所有其他收件箱号码应仍低于9。这是由于根据主从关系连接NXT的关系。从属设备可能不主动与他们的主机沟通交换数据,所以他们把外发信息存储在多出来的10个邮箱(10-19号)。使用主设备的MessageRead指令来检索这些邮件。



当从从设备中读取远程信息时,发送下列指令:

0x05,0x00,0x00,0x13,0x0A,0x00,0x01=>从从机读取0信箱并清除从机上信息

0x05,0x00,0x00,0x13,0x0B,0x01,0x01=>从从机读取1信箱并清除从机上信息



若从设备上的数据准备好了,则下面的消息会从从设备发给主机NXT:



MessageWrite

Byte 0:0x00或0x80

Byte 1:0x09

Byte 2:收件箱号码(0-9)

Byte 3:消息大小

Byte 4-N:消息数据,这里N=消息大小+3



消息数据被看作是字符串,他必须包含空终止。相应的,消息大小要包括空终止字节。消息大小要控制在59以下,以使消息包在USB上合法。



Return package:

Byte 0:0x02

Byte 1:0x09

Byte 2:状态字节

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-3-4 15:23:12 | 显示全部楼层
附录

1. LEGO MINDSTORM S NXT Communication Protocol

  (LEGO MINDSTORM S NXT通信协议)


2. LEGO MINDSTORM S NXT Direct Commands

   (LEGO MINDSTORM S NXT 直接指令)


3. LEGO MINDSTORM S NXT ARM 7 Bluetooth Interface specification

  (LEGO MINDSTORM S NXT ARM 7 Bluetooth接口规范)
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-3-4 15:23:39 | 显示全部楼层
完工了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2025-4-30 19:03 , Processed in 1.501712 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表