我能够从本地(尽管是远程)XBee 主机的命令行向远程(辅助,离线)Xbee 主机发送和接收命令。当我开始研究串行设备如何打开登录终端并使用 getty 工具时,我找到了答案。这是我使用透明模式的设置说明,我仍在尝试让 python-xbee 和其他工具工作以允许相同的概念,但通过 API 模式。请注意,以下说明是 95% 的解决方案,但应该让普通用户走上坚实的道路。我不是以下步骤格式的原作者,但我找到了每个步骤并通过其他各种问答论坛将它们组合起来以得出解决方案:
首先,获取Digi Xbee X-CTU软件(不安装在Raspberry或Odroid等ARM设备上):
西安交通大学:
从以下 Digi.com 链接安装,但导航到相应的软件 FTP 链接:
https://www.digi.com/support/productdetail?pid=3352&type=drivers
Linux 64 位:ftp://ftp1.digi.com/support/utilities/40002881_R.run
Linux 32 位:ftp://ftp1.digi.com/support/utilities/40002880_R.run
Windows:ftp://ftp1.digi.com/support/utilities/40003026_T.exe
Mac:ftp://ftp1.digi.com/support/utilities/40003026_T.exe
通过安装 X-CTU:
sudo wget ftp://ftp1.digi.com/support/utilities/40002880_R.run
sudo mv 40002881_R.run xctu_64bit.run
sudo chmod +x xctu_64bit.run
sudo ./xctu_64bit.run
查找 X-Bee 设备:
确保 Xbee 没有插入集线器,电源会太少,可通过以下错误识别,YMMV:
dmesg | grep ttyUSB0
并返回错误:[228.800021] ftdi_sio ttyUSB0:未能获得调制解调器状态:-32
lsusb -v -d 0403:6001
sudo nano /boot/cmdline.txt
将控制台 tty 设备从 AMA 更改为 USB,然后对于允许远程端观看启动过程的 kgdboc,根据需要添加/匹配
console=ttyUSB0,115200 kgdboc=ttyUSB0,115200
sudo nano /etc/inittab
如果存在,请确保取消注释(删除 #),将 tty 从 AMA 更改为 USB
T0:23:respawn:/sbin/agetty -L ttyUSB0 115200 vt100
在 Ubuntu x86 系统上,通过 X-CTU 使用
sudo ./XCTU.desktop
将固件更新到最新版本
目前 Pro S3B 为 8075,然后在每个设备上将波特率设置为 115200
附近的其他 xbee 可以通过 X-CTU 使用本地 xbee 进行更新,然后将 api 模式设置为“带转义的 api 模式”。请注意,除非您对 API 模式的工作有深入的了解,否则应该使用透明模式。我从透明模式开始演示以下工作,但后来转到 API 模式以获得增强的发送接收控制功能(在撰写本文时等待工作版本)。
对将在网络上使用的所有设备执行相同的步骤;本地设备完成后,如果可见(足够接近),则可以更新其他远程设备。
关闭 X-CTU 并将当前用户添加到拨出组通过:
sudo usermod -a -G dialout root
然后重启:
通过以下方式设置 Minicom:
sudo aptitude install minicom
minicom -s
serial port setup
a, set to /dev/ttyUSB0, then hit enter
e, set baud rate to 115200, then hit enter
hit enter again to close the window and arrive at the configuration page of minicom
select to save as dfl, followed by enter
then move to exit, and hit return
test connection to a locally connected device via
three plus symbols without hitting return
if it replies “ok” in a few seconds or less, all is well
或屏幕:
screen /dev/ttyUSB0
同样,如果您看到登录提示,则表示您已连接。请注意,屏幕可能是大多数用户的最佳选择;它具有易用性的内在品质(与 Minicom 相比),轻松处理低带宽连接,并且即使与远程主机断开连接也能保持活动状态。 ctl+a 然后k会断开连接。
安装 Coreutils 以添加比 Minicom 更多的选项(也建议使用屏幕):
sudo aptitude install coreutils && screen
stty -F /dev/ttyUSB0 -a
这将检查串行端口的功能和设置
与您的设备通信:
请注意,您可以在插入了 X-Bee 的本地计算机上与您的网络进行交互,或者在您通过 Internet 进行 SSH 连接的远程设备上与您的网络进行交互,只要它连接了 X-Bee。另外,请注意以下对 rc.local 的设置在重新启动后没有保留我的设置;这是一个进展中的工作。我手动设置它们,直到我完成自动化。
此外,我手动将 rc.local 添加到 RPI,其操作方法在某处:
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
sudo systemctl enable serial-getty@ttyUSB0.service
sudo nano /etc/rc.local
add the below before exit 0
stty 行是两次,因为已经注意到第一个实例将报告的波特率更改为 9600,第二个实例更改为 115200。如果您手动执行此操作,请执行“停止”然后重新执行启动命令以收到提示。这可以自动化;我将使用进程监视器更新这篇文章。
stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb raw
stty -F /dev/ttyUSB0 speed 115200 cs8 -cstopb -parenb raw
sudo systemctl start serial-getty@ttyUSB0.service
然后,使用 Minicom、Screen 或“cat”和“watch”查看发送的消息。使用 Minicom 时,您将通过上述说明收到登录提示。如前所述,我仍在努力让 API 模式顺利运行,但至少我知道我有连接,并且可以通过透明模式通过命令行远程执行基本命令和控制,包括运行命令行程序和命令。透明模式不提供任何增强的射频传播校正技术,因此我希望让 API 模式正常工作; RSSI 值和纠错会很好。