基于XBee3 zigbee Micropython编程指南

开始使用MicroPython

(http://www.bitconn.com/form_1/注册后,购买XBee模块,送USB评估底板及相关中文资料,或者免费申请借用评估套件)


本用户指南概述了如何将MicroPython与XBee3 Zigbee RF模块配合使用。 有关深入信息和更复杂的代码示例,请参阅“Digi MicroPython编程指南”。 继续本用户指南以获取简单示例,以便在XBee3 Zigbee RF模块上开始使用MicroPython

关于MicroPython

MicroPython是一种基于Python 3.0的开源编程语言,具有大部分相同的语法和功能,但经过修改,适用于硬件资源有限的小型设备,如XBee3 Zigbee RF模块.

有关MicroPython的更多信息, 请访问 www.micropython.org.

有关Python的更多信息, 请访问 www.python.org.

XBee3 Zigbee射频模块上的MicroPython

XBEE3 ZigBeeRF模块在设备本身上运行了Micro Python。 当您将XBee3 Zigbee RF模块安装在适当的开发板(XBDB或XBIB)中时,可以从MicroBy3 Zigbee RF模块访问MicroPython提示,并通过USB电缆将其连接到计算机.

MicroPython仅通过UART接口有效,不适用于SPI。设备上的MicroPython编程需要固件版本1003或更高版本。

此用户指南中的示例假定:

  1. 你的电脑上有XCTU。请参见使用XCTU配置设备.
  2. 您的计算机上安装了串行终端程序。 有关更多信息,请参阅在XCTU中使用MicroPython终端。 这需要XCTU 6.3.10或更高版本。
  3. 您在适当的开发板上安装了XBee3 Zigbee RF模块,例如XBIB-U-DEV或XBDB-U-ZB.
  4. XBee3 Zigbee RF模块通过USB电缆连接到计算机,XCTU可识别它.

使用XCTU进入MicroPython环境

在MicroPython环境中使用XBee3 Zigbee RF模块:

  1. 使用XCTU来添加设备;请参见使用XCTU配置设备并向XCTU添加设备.
  2. XBee3 Zigbee RF模块在无线电模块信息面板中显示为一个框。 每个模块显示有关自身的识别信息。
  3. 单击此框以选择设备并加载其当前设置。

为了确保MicroPython响应输入,Digi建议将XBee UART波特率设置为115200波特。 要设置UART波特率,请在BD字段中选择115200 [7],然后单击写入按钮。 我们强烈建议使用硬件流控制来避免数据丢失,尤其是在粘贴大量代码或文本时。 有关更多信息,请参阅UART流控制。

  1. 要将XBee3 Zigbee RF模块置于MicroPython模式,请在AP字段中选择MicroPython REPL [4]并单击Write按钮 .
  2. 请注意XBee3 Zigbee RF模块正在使用哪个COM端口,因为在使用MicroPython终端时需要此信息。

XCTU中使用MicroPython终端

在MicroPython模式下,您可以使用MicroPython终端与XBee3 Zigbee RF模块进行通信。 这需要XCTU 6.3.10或更高版本。 要进入MicroPython模式1,请按照使用XCTU中的步骤进入MicroPython环境。 使用MicroPython终端:

  1. 单击“工具”下拉菜单 并选择MicroPython终端. 终端窗口打开。
  2. 单击“打开”以打开“串行端口配置”窗口.
  3. 在“选择串行/ USB端口”区域中,单击设备使用的COM端口.
  4. 验证波特率和其他设置是否正确。
  5. 单击确定。 “打开”图标变为“关闭”, , 表示设备已正确连接.

如果出现>>>提示,则说明您已正确连接。 您现在可以在终端中键入或粘贴MicroPython代码.

MicroPython示例

本节提供了如何使用XBee3 Zigbee RF模块使用MicroPython的一些基本功能的示例.

示例:hello world

  1. 在MicroPython >>>提示符下,键入Python命令: print("Hello, World!")
  2. 按Enter执行命令。 终端回复 Hello, World!

示例:进入MicroPython粘贴模式(paste mode)

在以下示例中,了解MicroPython支持粘贴模式很有帮助,您可以从此用户指南中复制大量代码并粘贴它,而不是逐个字符地键入。 要使用粘贴模式:

  1. 复制要运行的代码。 例如,复制以下代码,即“Hello world”示例中的代码:

print("Hello World")

注意您可以轻松复制和粘贴本指南在线版的代码。 请谨慎使用PDF版本,因为它可能无法保留必要的缩进

  1. 在终端中,在MicroPython >>>提示符下键入Ctrl + E进入粘贴模式。 终端显示粘贴模式; Ctrl-C取消,Ctrl-D完成.
  2. 在MicroPython终端窗口中单击鼠标右键,然后单击粘贴或按Ctrl + Shift + V进行粘贴.
  3. 代码出现在占用一行的终端中。 每行以其行号和三个“=”符号开头。 例如,第1行以1 ===开头。
  4. 如果代码正确,请按Ctrl + D运行代码; 应该打印“Hello World”。

注意如果要在不运行代码的情况下退出粘贴模式,或者代码未正确复制,请按Ctrl + C取消并返回到正常的MicroPython >>>提示符。

示例:使用时间模块

时间模块用于时间敏感的操作,例如在例程或计时器中引入延迟。

XBee3 Zigbee RF模块支持以下时间功能:

  1. ticks_ms() 返回当前的毫秒计数器值。 此计数器在0x40000000处翻转。
  2. ticks_diff() 比较两个时间戳之间的差异,以毫秒为单位.
  3. sleep() 将操作延迟一定的秒数。
  4. sleep_ms() 延迟操作一定数量的毫秒.
  5. sleep_us() 延迟操作一定数量的微秒。

注意无法使用标准的time.time()函数,因为此函数会生成自实时计时以来的秒数。 XBee3模块缺少实时时钟,无法提供任何日期或时间数据。

以下示例练习各种睡眠功能,并使用ticks_diff()来测量持续时间:

import time

 

 

start = time.ticks_ms()

#从毫秒计数器获取值

time.sleep(1)

#睡眠1秒钟

time.sleep_ms(500)

#睡眠500毫秒

 

time.sleep_us(1000)

# 睡眠1000微秒

 

delta = time.ticks_diff(time.ticks_ms(), start)

print("Operation took {} ms to execute".format(delta))

示例:使用MicroPythonAT命令

AT命令控制XBee3 Zigbee RF模块。 “AT”是“注意”的缩写,前缀“AT”通知模块命令行的开始。 有关可在XBee3 Zigbee RF模块上使用的AT命令列表,请参阅AT命令.

MicroPython提供了一个atcmd()方法来处理AT命令,类似于如何使用命令模式或API帧.

atcmd()方法接受两个参数:

  1. 两个字符AT命令,以字符串形式输入.
  2. 可选的第二个参数,用于设置AT命令值。 如果未提供此参数,则查询AT命令而不是设置。 此值是整数,字节对象或字符串,具体取决于AT命令.

 注意xbee.atcmd()方法不支持以下AT命令:ISASEDNDDN

以下是使用xbee.atcmd()查询和设置各种AT命令的示例代码:

import xbee

  • Set the NI string of the radio xbee.atcmd("NI", "XBee3 module")
  • 使用两种不同的数据类型配置目的地址

xbee.atcmd("DH",

0x0013A200)

#

Hex

xbee.atcmd("DL",

b'\x12\x25\x89\xF5')

#

Bytes

# 读取一些AT命令并显示值和数据类型:print(“\ nAT命令参数值:”)

commands =["DH", "DL", "NI", "OI"] for cmd in commands:

val = xbee.atcmd(cmd)

print("{}: {:20} of type {}".format(cmd, repr(val), type(val))

此示例代码输出以下内容:

AT command parameter values:

 

DH: b'\x00\x13\xa2\x00'

of type

 

DL: b'\x12%\x89\xf5'

of type

 

NI: 'XBee3 module'

of type

 

OI: 65535

of type

 

 

 

注意存储长度大于16位的值的参数表示为字节。 Python会尽可能打印出ASCII字符,这会导致一些意外的输出(例如上面输出中的)。 如果希望MicroPython的输出与XCTU匹配,可以使用以下示例将字节转换为十六进制:

dl_value = xbee.atcmd("DL")

hex_dl_value = hex(int.from_bytes(dl_value, 'big'))

MicroPython网络和通信示例

本节提供将MicroPython与XBee3 Zigbee RF模块配合使用的网络和通信示例.

使用MicroPythonZigbee网络

对于小型网络,适合在每个节点上使用MicroPython。 但是,有一些继承限制可能会阻止您在某些流量较大的节点上使用MicroPython:

  1. 运行MicroPython时,任何收到的消息都将存储在一个小的接收队列中。 此队列只有4个数据包的空间,必须定期读取以防止数据丢失。 对于将产生大量流量的网络,数据聚合器可能需要以API模式运行才能捕获所有传入数据.
  2. MicroPython不支持所有XBee API帧类型,特别是对于源路由。 如果您计划使用超过40个节点的网络进行操作,Digi强烈建议您在API模式下使用聚合器进行操作并实现源路由.

对于本节中的示例,我们使用MicroPython管理Zigbee网络并在模块之间发送和接收数据。 为了遵循即将到来的示例,我们需要配置第二个XBee3 Zigbee RF模块以使用MicroPython.

XCTU只允许一个MicroPython终端。 我们将在两个模块上运行示例代码,这需要第二个终端窗口.

打开XCTU的第二个实例,并按照Use XCTU to enter the MicroPython environment步骤为MicroPython配置不同的XBee3模块 。

警告! 即将到来的示例形成并加入未加密的Zigbee网络。 如果模块先前与网络关联,则它们将被取消关联。

 

示例:使用MicroPython形成并加入Zigbee网络

此示例使用MicroPython形成双节点Zigbee网络。 这是后续网络示例的先决条件。

此示例假设您为MicroPython配置了两个XBee3 Zigbee RF模块,并且两个终端打开,每个模块一个.

在第一台XBee模块上执行以下代码; 它将成为我们的网络协调员:

import xbee, time

  • Set the identifying string of the radio xbee.atcmd("NI", "Coordinator")
  • Configure some basic network settings

network_settings = {"CE": 1, "ID": 0xABCD, "EE": 0, "NJ": 0xFF}

for command, value in network_settings.items(): xbee.atcmd(command, value)

xbee.atcmd("AC") # Apply changes time.sleep(1)

while xbee.atcmd("AI") != 0: time.sleep(0.1) print("Network Established")

operating_network = ["OI", "OP", "CH"] print("Operating network parameters:") for cmd in operating_network:

print("{}: {}".format(cmd, xbee.atcmd(cmd)))

在第二个XBee模块上运行以下代码,它将是一个将加入已建立网络的路由器:

import xbee, time

  • Set the identifying string of the radio xbee.atcmd("NI", "Router")
  • Configure some basic network settings

network_settings = {"CE": 0, "ID": 0xABCD, "EE": 0}

for command, value in network_settings.items(): xbee.atcmd(command, value)

xbee.atcmd("AC") # Apply changes time.sleep(1)

# Query AI until it reports success

print("Connecting to network, please wait...") while return xbee.atcmd("AI") != 0:

time.sleep(0.1) print("Connected to Network")

operating_network = ["OI", "OP", "CH"] print("Operating network parameters:") for cmd in operating_network:

print("{}: {}".format(cmd, xbee.atcmd(cmd)))

在两个XBee模块上执行代码后,模块报告操作网络参数。 确保两个无线电报告相同的值以确保它们位于同一网络上。

 

示例: 使用MicroPython进行网络发现

discover()方法返回一个迭代器,该迭代器在等待结果时阻塞,类似于执行ND请求。有关更多信息,请参见ND(网络发现)。每个结果都是一个基于ND响应的字段的字典。:

  1. sender_nwk: 16位网络地址.
  2. sender_eui64: 具有EU-64地址的8字节字节对象.
  3. parent_nwk: 在协调器和路由器上设置为0xFFFE;否则,将其设置为终端设备父设备的网络地址.
  4. node_id: 设备的NI值(一个最多20个字符的字符串,也称为节点标识).
  5. node_type: 协调器、路由器或终端设备的0, 1或2的值.
  6. device_type: 设备的32位DD值,也称为数字设备类型;这用于识别不同类型的设备或硬件。
  7. rssi: 发送节点接收的节点发现请求包的相对信号强度指示符(以dBm为单位).

Note 打印字典时,device_typesender_nwkparent_nwk的字段以十进制形式显示。 您可以使用MicroPython hex()方法以十六进制格式打印整数。 从示例中检查format_eui64的功能代码:两个XBee3 Zigbee模块之间的通信主题代码,用于将sender_eui64字段转换为十六进制字符串,每个字节值之间带冒号.

使用以下示例代码执行网络发现:

import xbee, time

  • Set the network discovery options to include self xbee.atcmd("NO", 2)

xbee.atcmd("AC")

time.sleep(.5)

  • Perform Network Discovery and print out the results print ("Network Discovery in process...")

nodes = list(xbee.discover())

if nodes:

for node in nodes:

print("\nRadio discovered:") for key, value in node.items():

print("\t{:<12} : {}".format(key, value))

# Set NO back to the default value xbee.atcmd("NO", 0) xbee.atcmd("AC")

这将从两个已发现的节点生成以下输出:

 

Radio discovered:

: -63

 

Rssi           

node_id

: Coordinator

device_type

: 1179648

parent_nwk

: 65534

sender_nwk

: 0

sender_eui64

: b'\x00\x13\xa2\xff h\x98T'

node_type

: 0

Radio discovered:

: -75

rssi

node_id

: Router

device_type

: 1179648

parent_nwk

: 65534

sender_nwk

: 23125

sender_eui64

: b'\x00\x13\xa2\xffh\x98c&'

node_type

: 1

示例: 发送数据

本节提供使用MicroPython传输数据的示例。 这些示例假设您已按照上述示例进行操作,并且两个无线电在同一网络上。

示例:发送消息

使用XBEE3 ZigBee设备发送消息。函数的调用由以下参数组成:

  1. 目的地址,可以是以下任何一个:

  16位寻址整数

64位寻址的8字节字节对象

常量xbee.ADDR_BROADCAST表示广播目的地

常量xbee.ADDR_COORDINATOR用于指示协调器

  1. 消息作为字符串.

如果消息发送成功,则transmit()返回None。 如果由于ACK失败或接收器上没有空闲缓冲区空间而导致传输失败,则将静默丢弃发送的数据包.

 

示例:将消息发送到网络协调器

  1. 从路由器访问MicroPython环境.
  2. 在MicroPython >>>提示符下,键入import xbee并按Enter键.
  1. 在MicroPython >>>提示符下,键入xbee.transmit(xbee.ADDR_COORDINATOR,“Hello World!”)并按Enter键。
  2. 在协调器上,您可以发出xbee.receive()调用以输出收到的数据包。.

 

示例:将自定义消息发送到网络中的所有节点

该程序执行网络发现并发送消息“Hello !” 到网络中的各个节点。 有关更多信息,请参阅示例:使用MicroPython进行网络发现。

import xbee

# Perform a network discovery to gather destination address: print("Discovering remote nodes, please wait...")

node_list = list(xbee.discover()) if not node_list:

raise Exception("Network discovery did not find any remote devices")

for node in node_list:

dest_addr = node['sender_nwk'] # 'sender_eui64' can also be used dest_node_id = node['node_id']

payload_data = "Hello, " + dest_node_id + "!"

try:

print("Sending \"{}\" to {}".format(payload_data, hex(dest_addr))) xbee.transmit(dest_addr, payload_data)

except Exception as err: print(err)

print("complete")

 

接收数据

使用xbee模块中的receive()函数来接收消息。 当MicroPython在设备上处于活动状态(AP设置为4)时,所有传入的消息都将保存到MicroPython中的接收队列中。 此接收队列的大小有限,只能容纳4条消息。 为了确保数据不会丢失,重要的是不断迭代接收队列并处理其中的任何数据包。如果接收队列已满并且另一条消息被发送到设备,它将不会确认该数据包,并且发送方生成失败状态0x24(未找到地址).

receive()函数返回以下之一:

  1. None: 没有消息(接收队列为空).
  2. 消息字典组成:
  3. sender_nwk: 16-bit network address of the sending node.
  4. sender_eui64: 64-bit address (as a "bytes object") of the sending node.
  5. source_ep: source endpoint as an integer.
  6. dest_ep: destination endpoint as an integer.
  7. cluster: cluster id as an integer.
  8. profile: profile id为整数.
  9. broadcast: 是或否,取决于帧是广播还是单播。
  10. payload: 有效载荷的“字节对象”。 这是一个字节对象而不是字符串,因为有效负载可以包含二进制数据。

 

示例:持续接收数据

在此示例中,format_packet()帮助程序格式化字典的内容,format_eui64()格式化保存EUI-64的字节对象。 while循环显示如何持续轮询数据包以确保接收缓冲区不会变满.

def format_eui64(addr):

return ':'.join('%02x' % b for b in addr)

def format_packet(p):

type = 'Broadcast' if p['broadcast'] else 'Unicast' print("%s message from EUI-64 %s (network 0x%04X)" % (type,

format_eui64(p['sender_eui64']), p['sender_nwk']))

print(" from ep 0x%02X to ep 0x%02X, cluster 0x%04X, profile 0x%04X:" % (p['source_ep'], p['dest_ep'], p['cluster'], p['profile']))

print(p['payload'])

import xbee, time while True:

print("Receiving data...") print("Press CTRL+C to cancel.") p = xbee.receive()

if p:

format_packet(p)

else:

time.sleep(0.25)   # wait 0.25 seconds before checking again

如果此节点先前已收到数据包,则输出如下:

Unicast message from EUI-64 00:13:a2:00:41:74:ca:70 (network 0x6D81) from ep 0xE8 to ep 0xE8, cluster 0x0011, profile 0xC105:

b'Hello World!'

Note Digi建议在循环中调用receive()函数,这样就不会丢失数据。 在存在大量网络流量的模块上,如果没有足够快地从队列中提取消息,则可能会丢失数据.

 

示例:两个XBee3 Zigbee模块之间的通信

此示例结合了前面的所有示例,并表示配置网络,发现远程节点以及发送和接收消息的完整应用程序。

首先,我们将一些实用程序功能上传到MicroPython的Flash空间中,以便以下示例更易于阅读.

完成以下步骤,在两个设备上使用闪存模式编译和执行实用程序功能:

  1. 访问MicroPython环境。
  2. 键入 Ctrl + F.
  3. 复制以下代码:

import xbee, time

# Utility functions to perform XBee3 Zigbee operations def format_eui64(addr):

return ':'.join('%02x' % b for b in addr)

def format_packet(p):

type = 'Broadcast' if p['broadcast'] else 'Unicast' print("%s message from EUI-64 %s (network 0x%04X)" %

(type, format_eui64(p['sender_eui64']), p['sender_nwk'])) print("from ep 0x%02X to ep 0x%02X, cluster 0x%04X, profile 0x%04X:" %

(p['source_ep'], p['dest_ep'], p['cluster'], p['profile'])) print(p['payload'],"\n")

def network_status():

# If the value of AI is non zero, the module is not connected to a network return xbee.atcmd("AI"))

  1. 在MicroPython 1 ^^^提示符下,右键单击并选择“粘贴”选项.
  2. Ctrl + D完成。 代码上传到闪存然后编译。 在“启动时自动运行此代码”[Y / N]?“提示符下,选择Y..

Ctrl + R运行已编译的代码; 这为下一个示例提供了对这些实用程序功能的访问.

 

协调器模块上的示例代码

以下示例代码将Zigbee网络形成为协调器,执行网络发现以查找远程节点,并连续打印出任何传入数据。

  1. 访问MicroPython环境.
  2. 复制以下代码:

print("Forming a new network as a coordinator...") xbee.atcmd("NI", "Coordinator")

network_settings = {"CE": 1, "ID": 0x3332, "EE": 0, "NJ": 0xFF} for command, value in network_settings.items():

xbee.atcmd(command, value) xbee.atcmd("AC") # Apply changes time.sleep(1)

while network_status() != 0: time.sleep(0.1) print("Network Established\n")

print("Waiting for a remote node to join...") node_list = []

while len(node_list) == 0:

# Perform a network discovery until the router joins node_list = list(xbee.discover())

print("Remote node found, transmitting data")

for node in node_list:

dest_addr = node['sender_nwk'] # using 16 bit addressing dest_node_id = node['node_id']

payload_data = "Hello, " + dest_node_id + "!"

print("Sending \"{}\" to {}".format(payload_data, hex(dest_addr))) xbee.transmit(dest_addr, payload_data)

# Start the receive loop print("Receiving data...") print("Hit CTRL+C to cancel") while True:

p = xbee.receive() if p:

format_packet(p)

else:

time.sleep(0.25)

  1. Ctrl + E进入粘贴模式.

在MicroPython >>>提示符下,右键单击并选择“粘贴”选项。 粘贴代码后,会立即执行.

路由器模块上的示例代码

以下示例代码加入了前一个示例中的Zigbee网络,并连续打印出任何传入数据。 该设备还每隔5秒将其温度数据发送到协调器地址.

  1. 访问MicroPython环境.
  2. 复制以下代码:

print("Joining network as a router...") xbee.atcmd("NI", "Router")

network_settings = {"CE": 0, "ID": 0x3332, "EE": 0} for command, value in network_settings.items():

xbee.atcmd(command, value) xbee.atcmd("AC") # Apply changes time.sleep(1)

while network_status() != 0: time.sleep(0.1)

print("Connected to Network\n")

last_sent = time.ticks_ms()

interval = 5000  # How often to send a message

# Start the transmit/receive loop

print("Sending temp data every {} seconds".format(interval/1000)) while True:

p = xbee.receive() if p:

format_packet(p)

else:

# Transmit temperature if ready

if time.ticks_diff(time.ticks_ms(), last_sent) > interval:

temp = "Temperature: {}C".format(xbee.atcmd("TP")) print("\tsending " + temp)

try:

xbee.transmit(xbee.ADDR_COORDINATOR, temp) except Exception as err:

print(err) last_sent = time.ticks_ms()

time.sleep(0.25)

  1. Ctrl + E进入粘贴模式.

在MicroPython >>>提示符下,右键单击并选择“粘贴”选项。 粘贴代码后,会立即执行.

退出MicroPython模式

退出MicroPython模式:

  1. 在XCTU MicroPython终端中,单击绿色的“关闭”按钮 .
  2. 单击终端底部的“关闭”以退出终端.
  3. 在XCTU的配置工作模式中 , 将AP API启用更改为其他模式,然后单击“写入”按钮. 我们建议更改为透明模式[0],因为大多数示例都使用此模式。

其他终端程序

如果您不在XCTU中使用MicroPython终端,则可以使用其他终端程序与XBee3 Zigbee RF模块进行通信。 如果您使用Microsoft Windows,请按照Tera Term的说明进行操作; 如果您使用Linux,请按照picocom的说明进行操作。 下载这些程序:

  1. Tera Term for Windows, see ttssh2.osdn.jp/index.html.en.
  1. Picocom for Linux, see developer.ridgerun.com/wiki/index.php/Setting_up_Picocom_-_Ubuntu
  2. Source code and in-depth information, see github.com/npat-efault/picocom.

 

Windows 系统使用Tera Term

使用MicroPython模式的XBee3 Zigbee RF模块(AP = 4),您可以使用终端访问MicroPython提示。

  1. 打开Tera Term。 Tera Term:出现新的连接窗口。
  2. 单击“串行”单选按钮以选择串行连接.
  3. 从端口:下拉菜单中,选择XBee3 Zigbee RF模块所连接的COM端口.
  4. 单击确定。 出现COMxx  -  Tera Term VT终端窗口,Tera Term尝试以9600 bps的波特率连接到设备。 由于波特率设置不正确,终端将不允许与设备通信。 您必须将此速率更改为先前设置为115200 bps.
  5. 单击设置和串行端口。 将出现Tera Term:Serial port setup窗口。
  6. 在Tera Term:Serial port setup窗口中,将参数设置为以下值:

Port: Shows the port that the XBee3 Zigbee RF Module is connected on.

Baud rate: 15200

Data: 8 bit

Parity: none

Stop: 1 bit

Flow control: hardware

Transmit delay: N/A

  1. 单击“确定”将更改应用于串行端口设置。 设置应立即生效
  2. 验证是否未启用本地回显,并且未启用额外的换行符:
    1. 在Tera Term中,单击“设置”并选择“终端”。
    1. 在Tera Term:Serial port setup窗口的New-line区域中,单击Receive下拉菜单,如果尚未显示该值,则选择AUTO。
    1. 确保未选中“本地回显”框.
  3. 单击 OK.
  4. Ctrl + B以获取MicroPython版本横幅和提示.

MicroPython v1.9.3-716-g507d0512 on 2018-02-20; XBee3 Zigbee with EFR32MG Type "help()" for more information.

>>>

现在,您可以在>>>提示符下键入MicroPython命令.

Linux系统中使用 picocom

使用MicroPython模式的XBee3 Zigbee RF模块(AP = 4),您可以使用终端访问MicroPython提示。

Note 用户必须具有XBee3 Zigbee RF模块所连接的串行端口的读写权限才能与设备通信.

  1. 在Linux中打开终端并键入picocom -b 115200 / dev / ttyUSB0。 这假设您没有连接到系统的其他USB转串口设备.
  2. Ctrl + B以获取MicroPython版本横幅和提示。 您也可以按Enter键调出提示.

如果您确实连接了其他USB转串口设备:

  1. 在连接XBee3 Zigbee RF模块之前,请检查目录/ dev /以查找名为ttyUSBx的任何设备,其中x是数字。 列出这些的简单方法是键入:ls / dev / ttyUSB *。 这将生成名称以ttyUSB开头的任何设备的列表。
  2. 记下具有该名称的设备,然后连接XBee3 Zigbee RF模块.

再次检查目录,您应该看到一个额外的设备,即XBee3 Zigbee RF模块.

  1. 在这种情况下,用/ dev / ttyUSB 替换顶部的/ dev / ttyUSB0,其中是出现的新数字.

它连接并显示“终端就绪”。.

您现在可以在>>>提示符下键入MicroPython命令。

 

Micropython help ()

在提示符下键入help()命令时,它会提供指向联机帮助,控制命令和用法示例的链接.

>>> help()

Welcome to MicroPython!

For online docs please visit http://docs.micropython.org/. Control commands:

CTRL-A -- on a blank line, enter raw REPL mode CTRL-B -- on a blank line, enter normal REPL mode CTRL-C -- interrupt a running program

CTRL-D -- on a blank line, reset the REPL CTRL-E -- on a blank line, enter paste mode

CTRL-F -- on a blank line, enter flash upload mode For further help on a specific object, type help(obj) For a list of available modules, type help('modules')

-------------------------------------------------------

 

------------------------------------------------------

 

在提示符下键入help('modules')时,它会显示所有可用的Micropython模块.

------------------------------------------------------

 

>>> help('modules')

sys

umachine

 

__main__

hashlib

 

array

io

time

uos

 

binascii

machine

ubinascii

ustruct

 

builtins

micropython

uerrno

utime

 

errno

os

uhashlib

xbee

 

gc

struct

uio

 

------------------------------------------------------

导入模块并键入以模块作为对象的help()时,可以查询该对象支持的所有函数.

------------------------------------------------------

  1. import sys
  2. help(sys)

object is of type module __name__ -- sys

path -- [''] argv -- [''] version -- 3.4.0

version_info -- (3, 4, 0)

implementation -- ('micropython', (1, 9, 4)) platform -- xbee3-zigbee

byteorder -- little maxsize -- 2147483647 exit -- stdin -- stdout -- stderr --

print_exception --

-------------------------------------------------------

 

你可能感兴趣的:(XBee/XBeePro,2.4G,XBee模块技术分享)