Micropython 飞控 驱动 6.匿名上位机v4.34协议

一、介绍
通过连接2.4G的串口无线发射模块,使用匿名上位机的协议,将无人机的各种信息发送到电脑显示
(目前协议未完全移植)
(使用时需要关闭上位机的校验功能)
二、代码

# 匿名上位机 移植上位机、协议版本v4.34
# 移植部分功能
# 关闭了数据的校验功能,提高发送速度
class ANO():
    def  __init__(self,uart):
        self.writechar = uart.writechar
        self.BYTE0 = lambda x : (x>>0)&0xff
        self.BYTE1 = lambda x : (x>>8)&0xff
        self.BYTE2 = lambda x : (x>>16)&0xff
        self.BYTE3 = lambda x : (x>>24)&0xff
        pass

    # 发送数据
    def ANO_Send_Data(self,data):
        for v in data:
            self.writechar(v)

    #send 数据
    def cs(self,data_to_send):
        _cnt = len(data_to_send)
        data_to_send[3] = _cnt - 4
        data_to_send.append(0) # 需要校验功能的将这一行改了就行
        self.ANO_Send_Data(data_to_send)

    # 飞机姿态 高度 飞行模式 是否解锁
    def ANO_DT_Send_Status(self,angle_rol, angle_pit, angle_yaw, alt, fly_model, armed):


        _cnt = 0
        _temp = 0
        _temp2 = alt
        data_to_send  =  []
        data_to_send.append(0xAA)
        data_to_send.append(0xAA)
        data_to_send.append(0x01)
        data_to_send.append(0)

        _temp = int(angle_rol * 100)
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = int(angle_pit * 100)
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = int(angle_yaw * 100)
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))

        data_to_send.append(self.BYTE3(_temp2))
        data_to_send.append(self.BYTE2(_temp2))
        data_to_send.append(self.BYTE1(_temp2))
        data_to_send.append(self.BYTE0(_temp2))

        data_to_send.append(fly_model)

        data_to_send.append(armed)
        self.cs(data_to_send)

    # PID信息
    def ANO_DT_Send_PID(self,group, p1_p, p1_i, p1_d, p2_p, p2_i, p2_d, p3_p, p3_i, p3_d):
        _cnt = 0
        _temp = 0
        data_to_send  =  []
        data_to_send.append(0xAA)
        data_to_send.append(0xAA)
        data_to_send.append(0x10 + group -1)
        data_to_send.append(0)

        _temp = p1_p  * 1000
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = p1_i * 1000
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = p1_d * 1000
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))

        _temp = p2_p * 1000
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = p2_i * 1000
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = p2_d * 1000
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))

        _temp = p3_p * 1000
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = p3_i * 1000
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = p3_d * 1000
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))

        self.cs(data_to_send)

    # 传感器数据
    def ANO_DT_Send_Senser(self,a_x, a_y, a_z, g_x, g_y, g_z, m_x, m_y, m_z):
        _cnt = 0
        _temp = 0
        data_to_send = []
        data_to_send.append(0xAA)
        data_to_send.append(0xAA)
        data_to_send.append(0x02)
        data_to_send.append(0)

        _temp = a_x
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = a_y
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = a_z
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))

        _temp = g_x
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = g_y
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = g_z
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))

        _temp = m_x
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = m_y
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))
        _temp = m_z
        data_to_send.append(self.BYTE1(_temp))
        data_to_send.append(self.BYTE0(_temp))

        self.cs(data_to_send)

    # 电机pwm数据 0-1000
    def ANO_DT_Send_MotoPWM(self, m_1, m_2, m_3, m_4, m_5, m_6, m_7, m_8):
        _cnt = 0

        data_to_send = []
        data_to_send.append(0xAA)
        data_to_send.append(0xAA)
        data_to_send.append(0x06)
        data_to_send.append(0)

        data_to_send.append(self.BYTE1(m_1))
        data_to_send.append(self.BYTE0(m_1))
        data_to_send.append(self.BYTE1(m_2))
        data_to_send.append(self.BYTE0(m_2))
        data_to_send.append(self.BYTE1(m_3))
        data_to_send.append(self.BYTE0(m_3))
        data_to_send.append(self.BYTE1(m_4))
        data_to_send.append(self.BYTE0(m_4))
        data_to_send.append(self.BYTE1(m_5))
        data_to_send.append(self.BYTE0(m_5))
        data_to_send.append(self.BYTE1(m_6))
        data_to_send.append(self.BYTE0(m_6))
        data_to_send.append(self.BYTE1(m_7))
        data_to_send.append(self.BYTE0(m_7))
        data_to_send.append(self.BYTE1(m_8))
        data_to_send.append(self.BYTE0(m_8))

        self.cs(data_to_send)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 串口通信是在工程应用中很常见。在上位机与下位机通讯过程中常通过有线的串口进行通信,在低速传输模式下串口通信得到广泛...
    Caizq阅读 11,515评论 2 9
  • 现在大部分的仪器设备都要求能过通过上位机软件来操作,这样方便调试,利于操作。其中就涉及到通信的过程。在实际制作的几...
    岳海龙阅读 4,692评论 0 0
  • mavlink全称是(Micro Air Vehicle Message Marshalling Library)...
    anxiaozhu阅读 14,163评论 1 3
  • 书山有路勤为径,学海无涯苦作舟。可是我却快要结束我的在校读书生涯,外出社会。但是不知道为什么,我读书越读越迷惘,随...
    Fatworm_阅读 1,358评论 0 0
  • 卜算子.海亮印象 文/周萍 绿水绕绵山,栀子花香遍。 鸟唱鸡鸣报晓中,红日犹遮面。 漫步校园间,教育氛围显。 师雅...
    雪中萍阅读 2,425评论 2 0