skip to Main Content
+86-181-2377-5520 sales@nvled.com Inquiry 中文 | English

Seer Robotics 氛围灯|DMX512灯带|说明 240324 V1.0

一、适用范围

本文档针对“DMX512灯带”的配置方法进行说明。
适用灯带IC的选型有:
SM16512
SM17512
TM512AC
SM18512( SRC2000固件版本需要在2.1.36以上,SRC800 rbk版本需要在3.3.5.74以上)
其余灯带IC未测试过,不推荐使用。

二、氛围灯电气连接 | 线束连接

2.1 更换氛围灯连接器,改为TE DT06-4S连接器: (氛围灯连接器官网链接)

连接器PIN线标对应线束
DT06-4S PIN1485通信A灯带蓝线
DT06-4S PIN2电源灯带红线
DT06-4S PIN3地灯带黑线
DT06-4S PIN4485通信B灯带绿线

注1:灯带黄线不引出。

注2:对接入SRC-2000(S) 控制器的 TE35 连接线的 DT04-4P 连接器中。(线号为17、29、25、10,分别为RS485_N1、RS485_P1、GND、PWR_DO6)

三、模型文件配置 | 氛围灯参数配置(各种用法)

3.1 老模型文件方式

1.将模型文件中的LED勾选即可。

3.2 新模型文件方式

在模型文件中找到led的设备,默认状态不启用。

四、模型配置

点击led,在右侧属性窗口配置参数。

Brand参数为WST-SM16512PS-DMX512 | ADY-SM18-60F4-1024,勾选启用备。

KeyDescriptionValue
brandWST-SM16512PS-DMX512
colorRed红色的参数设置范围(0,255)
colorGreen绿色的参数设置范围(0,255)
colorBlue蓝色的参数设置范围(0,255)
colorWhite白色的参数设置范围(0,255)
showCharging是否显示充电效果勾选则为显示充电效果,不勾选则为不显示
showBattery是否显示电池效果勾选则为显示电池效果,不勾选则为不显示
turnLeftFrontPos左前转向灯组序号(6 灯珠/组)请根据实际使用情况和需求进行配置
turnLeftFrontNum左前转向灯组数量(6 灯珠/组)请根据实际使用情况和需求进行配置
turnLeftRearPos左后转向灯组序号(6 灯珠/组)请根据实际使用情况和需求进行配置
turnLeftRearNum左后转向灯组数量(6 灯珠/组)请根据实际使用情况和需求进行配置
turnRightFrontPos右前转向灯组序号(6 灯珠/组)请根据实际使用情况和需求进行配置
turnRightFrontNum右前转向灯组数量(6 灯珠/组)请根据实际使用情况和需求进行配置
turnRightRearPos右后转向灯组序号(6 灯珠/组)请根据实际使用情况和需求进行配置
turnRightRearNum右后转向灯组数量(6 灯珠/组)请根据实际使用情况和需求进行配置
lightTotalNum灯珠组数量(6 灯珠/组)请根据实际使用情况和需求进行配置
redChannel红色灯带通道默认通道顺序RWGB:参数配置依次为0、2、3、1
greenChannel绿色灯带通道默认通道顺序RWGB:参数配置依次为0、2、3、1
blueChannel蓝色灯带通道默认通道顺序RWGB:参数配置依次为0、2、3、1
whiteChannel白色灯带通道默认通道顺序RWGB:参数配置依次为0、2、3、1
isBackBreath倒退是否白色呼吸勾选则倒退是白色呼吸

五、测试

1. Roboshop 点击地图与控制-参数配置-底盘配置-显示更多-参数 【DmxTestFlag】

2. 可以在参数配置界面搜索 【DmxTestFlag】

3. 将DmxTestFlag 配为 【true】

默认为False:

参数配置单位默认解释
DmxTestFlag——false选择ture,可开启灯带测试

4. 可以直接修改模型文件中 【RGB】 参数控制灯带发出对应颜色的光,可以参考网上 【RGB】 配色表进行调色验证

六、灯带使用技巧

很多时候车上需要多段灯带,但控制器只能接一根灯带,如何处理?

灯带是基于RS485总线的设备,RS485总线是可以串联的,我们用到的灯带是按节控制的,一节一般长度是100mm,RBK目前能控制的总节数是有上限的,当长度没法满足我们的布局,可以按100mm的整数倍长度(焊接处)将灯带剪断,再用导线连起来,分成多段来控制。

剪开灯带时,注意不要打乱原来整条中每段的顺序,每段灯带都有对应的地址!

不同控制器RBK可控灯带长度限制:

控制器灯带总节数灯带亮灯长度总长
SRC-2000606m
SRC-3000/880202m
SRC-800121.2m

七、左右转向灯示意

剪开灯带时,注意不要打乱原来整条中每段的顺序,每段灯带都有对应的地址!
* 如果地址打乱了,需要使用DMX512写码器重新写码。自备写码控制器后,还有一个优点是,万一出现灯带不亮的情况,也可以用DMX512写码控制器进行测试确认,是灯带问题还是设置问题。而不需要返厂检测,节省时间。
> DMX512写码控制器推荐01:K1000C控制器, 操作有点复杂, 网址= https://www.nvled.com/?p=6897
> DMX512写码控制器推荐02:W1000控制器, 操作相对简单, 使用微信扫码小程序控制, 可视化操作, 网址= W1000-BT全能型DC5V/12V/24V三段电压输出直流电源嵌入式蓝牙幻彩灯光控制器 – 深圳市爱得意照明灯具厂
> DMX512写码控制器推荐03:W2000控制器, 操作相对简单, 使用微信扫码小程序控制, 可视化操作, 产品尺寸最小
> DMX512写码控制器推荐04:XB-C100触屏写码控制器, 操作最简单, 网址= XB-C100带电池带触控大屏DMX512地址写码器和控制器2合1 – 深圳市爱得意照明灯具厂

八、常见问题

  1. 出错报警:红色呼吸
  2. 急停:暗红色闪烁
  3. 被阻挡:粉紫色跑马灯
  4. 运动中:蓝色呼吸
  5. 充电中:橙黄色呼吸
  6. 电量低于 20%(可配置): 暗红色跑马灯同时伴随蜂鸣器响
  7. 静止状态:显示电量,从绿色 (100%)至暗红色 (20%)渐变
  8. 电池类型未配置(或电池通讯出错)且机器人静止:彩虹灯带

以上顺序即为氛围灯显示的优先级,即出错报警优先于急停显示。高优先级的条件满足后,即显示相应的灯带效果,并且不再对低优先级的条件进行判断。每次更新的时间间隔约为【300ms】。

九、穿透脚本使用说明(dmx512氛围灯)

条件:

  • SRC2000控制器
  • Robokit版本在3.3.5.70及以上
  • roboshop版本2.4.1.36及以上
  • DMX512氛围灯为rpc通信方式

种类:

  • Battery:显示电池电量
  • ConstantLight:常亮
  • Errofatal:紧急报错(红色呼吸)
  • MutableBreath:呼吸灯
  • Charging:充电中(橙黄色呼吸)
  • MutableHorseRace:跑马灯
  • FlowCalculator:流水灯
  • Rainbow:彩虹灯

Python脚本接口解析 | 脚本示例(dmx512_demo.py)

import time
import math
import sys
import syspy.dmx512.dmx512_base as dmx
import syspy.lib.udp_debug as ud

class demo_dmx512(dmx.dmx512Base):

    def __init__(self):
        '''初始化基类,必须做'''
        super(demo_dmx512, self).__init__()
        self.__debug_out = ud.udpDebug()
        sys.stdout = self.__debug_out
        self.str1 = "battery"
        self.not_stop_counts = 0
        self.battery_exist = False
        self.is_stop = True
        self.ym_dxm512_enable = False
        self.cur_w = 0.0
        self.cur_x = 0.0
        self.cur_y = 0.0

    def run(self):
        dmx512_info = self.createDmx512Message()
        while 1:
            '''从其他插件获取所需相关数据信息'''
            movestatus_info = self.recMoveStatus()
            robotspeed_info = self.recRobotSpeed()
            '''cur_w:旋转度, cur_x:前进距离, cur_y:平移距离'''
            self.cur_w = robotspeed_info.rotate
            self.cur_x = robotspeed_info.x
            self.cur_y = robotspeed_info.y
            '''实时获取电池信息并转换为dmx类型 '''
            dmx_battery = self.recBattery()
            tem = (dmx_battery.percetage * 100.0)
            dmx512_info.battery = int(tem)
            '''非停止状态计数'''
            if self.getChassisStop() == True :
                self.is_stop = True
            else:
                if self.not_stop_counts >= 1:
                    self.is_stop = False
                else:
                    self.not_stop_counts = self.not_stop_counts + 1

            '''设定初始正常运动状态蓝色rgbw'''
            RGBW = [0, 80, 164, 0]
            dmx512_info.color_r = RGBW[0]
            dmx512_info.color_g = RGBW[1]
            dmx512_info.color_b = RGBW[2]
            dmx512_info.color_w = RGBW[3]

            '''判断是否从模型文件读取到'''
            self.battery_exist = self.modelDeviceEnable(self.str1)
            if self.warningExists(54001):
                self.battery_exist = False

            if (((self.getErrorNum()>0) and \
                    not(self.getErrorNum() == 1 and self.errorExists(52200)) and \
                    not(self.getErrorNum() == 1 and self.errorExists(52702)) and \
                    not(self.getErrorNum() == 2 and self.errorExists(52200) and self.errorExists(52702))) \
                    or self.getFatalNum()>0):
                '''报错状态下红色呼吸'''
                dmx512_info.type = dmx.LightType.Errofatal.value

            elif self.getEMCState() == True:
                '''急停状态下暗红色闪烁'''
                dmx512_info.type = dmx.LightType.FlowCalculator.value
                RGBW = [230, 30, 0, 0]
                dmx512_info.color_r = RGBW[0]
                dmx512_info.color_g = RGBW[1]
                dmx512_info.color_b = RGBW[2]
                dmx512_info.color_w = RGBW[3]

            elif movestatus_info.blocked:
                '''被阻挡状态下粉紫色跑马'''
                dmx512_info.type = dmx.LightType.MutableHorseRace.value
                RGBW = [30, 0, 30, 0]
                dmx512_info.color_r = RGBW[0]
                dmx512_info.color_g = RGBW[1]
                dmx512_info.color_b = RGBW[2]
                dmx512_info.color_w = RGBW[3]

            elif (not self.is_stop):
                '''not ym_dxm512'''
                if (not self.ym_dxm512_enable):
                    '''正常运动下蓝色呼吸'''
                    dmx512_info.type = dmx.LightType.MutableBreath.value
                    if (self.cur_w >= math.radians(1) * 3):
                        '''机身左旋'''
                        if (self.cur_x > 0.0):
                            '''机身左旋+前进'''
                            dmx512_info.turn_left_or_right=1
                        elif (self.cur_x < 0.0):
                            '''机身左旋+后退'''
                            dmx512_info.turn_left_or_right=2
                        else:
                            '''机身原地左旋'''
                            dmx512_info.turn_left_or_right=3

                    elif (self.cur_w <= math.radians(-1) * 3):
                        '''机身右旋'''
                        if (self.cur_x > 0.0):
                            '''机身右旋+前进'''
                            dmx512_info.turn_left_or_right=2
                        elif (self.cur_x < 0.0):
                            '''机身右旋+后退'''
                            dmx512_info.turn_left_or_right=1
                        else:
                            '''机身原地右旋'''
                            dmx512_info.turn_left_or_right=3

                    else:
                        '''无转向状态'''
                        dmx512_info.turn_left_or_right=0

            elif self.battery_exist:
                '''静止状态且battery存在'''
                maxPer = self.getBatteryMaxPercentage()
                if (dmx_battery.is_charging and (self.getShowCharging()==True)):
                    '''充电中为橙黄色呼吸'''
                    dmx512_info.type = dmx.LightType.Charging.value
                elif (dmx_battery.percetage * 100 < maxPer):
                    '''电量低于20 %(可配置)为暗红色跑马灯'''
                    dmx512_info.type = dmx.LightType.MutableHorseRace.value
                    RGBW = [170, 20, 0, 0]
                    dmx512_info.color_r = RGBW[0]
                    dmx512_info.color_g = RGBW[1]
                    dmx512_info.color_b = RGBW[2]
                    dmx512_info.color_w = RGBW[3]
                elif (self.getShowCharging()==True):
                    '''显示电量,从绿色至暗红色渐变'''
                    dmx512_info.type = dmx.LightType.Battery.value
                    tem = (dmx_battery.percetage * 100.0)
                    dmx512_info.battery = int(tem)
                else:
                    '''否则蓝色常亮'''
                    dmx512_info.type = dmx.LightType.ConstantLight.value

            else:
                '''电池类型未配置且机器人静止为彩虹灯'''
                dmx512_info.type = dmx.LightType.Rainbow.value

            self.sendDmx512(dmx512_info)

if __name__ == '__main__':
    client = demo_dmx512()
    client.run()

脚本崩溃信息查看

脚本运行无反应,重启脚本并在终端指令实时查看有无脚本崩溃

tail -f /var/log/syslog

重要升级更新提醒:

2024年起DMX512芯片升级为SM18512PS, 敬请留意。新品链接在这里:SM18512PS明微DMX512协议驱动RGBW四合一AGV机器人防水灯带 – 深圳市爱得意照明灯具厂 (nvled.com)

Back To Top