Raspberry Pi 3 B +(Buster)无法通过具有半双工通信的Raspberry Pi 3 B +(Buster)来控制Dynamixel AX-12A

时间:2019-11-18 22:07:20

标签: python-3.x raspberry-pi serial-port uart

我有一个项目可以使用Dynamixel AX-12A作为车轮制造移动机器人,所以我将AX-12A更改为带有CM-530的车轮模式,并且效果很好。

我遵循http://www.oppedijk.com/robotics/control-dynamixel-with-raspberrypi上的指南

我已经使用终端Minicom在Raspi上检查了我的串行通信(UART),仅将GPIO14和GPIO15连接在一起,并且效果很好

在代码末尾是我的/boot/config.txt:

dtoverlay=pi3-disable-bt
hdmi_force_hotplug=1
enable_uart=1
init_uart_clock=16000000

这是我的/boot/cmdline.txt:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait splash plymouth.ignore-serial-consoles

这是我的Python3代码:

import serial
import time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
GPIO.setwarnings(False)

port = serial.Serial("/dev/ttyAMA0", baudrate=1000000, timeout=3.0)

while True:
    GPIO.output(18, GPIO.HIGH)
    port.write(bytearray.fromhex("FF FF 00 04 03 20 FF D8"))
    time.sleep(0.1)
    GPIO.output(18, GPIO.LOW)
    time.sleep(3)

问题是dynamixel ax-12a没有响应我的hexa,它的值应该移动到255。并且程序没有错误反馈。

顺便说一句,我正在通过PC中的wifi与VNC进行此项目,这是否导致通信问题?

如果有人可以帮助我,我谢谢你。

*对不起,如果我的英语不好

1 个答案:

答案 0 :(得分:0)

经过很长时间的讨论,现在我可以控制电动机了,问题是我发送了错误的指令包FF FF 00 04 03 20 FF D8,应该是FF FF 00 05 03 20 FF 00 D8