欢迎来到胸牌,羽鸿工艺制品官方网站!
打开客服菜单

新闻中心

contact us

联系我们

胸牌 > 公司动态 > 电子胸牌是可以改装的,看达人怎么玩

电子胸牌是可以改装的,看达人怎么玩

编辑 :

高端胸牌制作

时间 : 2018-06-05 00:45 浏览量 : 62

电子产品对于很多达人来说,最大的吸引力很多时候并不是它原有的用途,胸牌,也不例外。如网上爆出的一些电子工程达人,直接就把购买的电子胸牌进行改装了。然而改装这活,可不是 随便一个人都可以做的哦。需要具备一些的电路基础,及较强的动手能力,且有较多时间进行改装测试。如不具备以上几点,整个改装过程就可能无法完成。

我们来看一下,整个改装过程,达人是怎么玩的。当然,如需要对这类胸牌产品进行改装,那么你寄希望于厂家的客服小妹是帮不了你的哦,她能做的,仅仅只是你还没有定做胸牌前和您确认你需要的是不是和她们工厂能生产的产品一至,并将型号能到生产部门,改装这种高难度活,就不要难为她们了。

首先:需求清晰化。

工作项目中,有一个3x8段数码管显示的需求,无意中从网上有看到有大牛改装电子胸牌的帖子。

因而对电子胸牌的原理做了仔细的了解。

厂家不提供通讯接口,但提供PC上位机改字软件,本来想通过bus hound直接抓取USB通讯数据协议。


这样主机(Android) 可以直接把电子胸牌做数码管显示。结果,协议破解还相对容易,只是每次改字软件每次更新显示内容时,胸牌上都会固定的显示 “M1-8 ”,用来提示。故不能直接使用。

其次:代码基础

看来只能重写固件代码了;

1,胸牌上电前,按下靠近胸牌的按键,胸牌会进入DFU模式,但自己写的代码烧进去后,总是无法运行,每次都提示option bytes未擦除,这条路没走通。

电子胸牌点图


2,找到芯片上的Jtag引脚,将PA13 PA14引脚接到J-link, j-link采用SWD 模式 可以调试代码了。


但是因驱动GPIO中有用到PA13, PA14引脚,故中途调试时,调试一次后,就没办法再调试了,SWD引脚指向GPIO功能了。


3,最后想到用厂家的ISP串口下载功能。PCB板上Pin44 BOOT0脚强行接到了GND,但进入ISP需要BOOT0接VCC,故将芯片Pin44脚翘起,通过一个按键开关,来选择是接GND,还是接VCC,


顺便把Pin7 Reset引脚也接了出来,通过按键可以进行复位。PCB上预留了串口接BT模块的接口,故PCB上有USART1的接口焊盘,方便了不少。PA14->Usart1.TX PA15->Usart1.RX.


从辑逻图中可以看出,每二列由一个GPIO控制。

电子胸牌线路图

所以驱动时序如下

1,先将要点亮的列GPIO设置为Push_Pull 输出高,其它输出低。

2,对选中列的11行进行扫描,每次扫描输出一行中二个灯的状态。


主要点亮函数代码附上:

void LED_Open(uint8_t x, uint8_t y)

{

       if(x >= LED_COL || y >= LED_ROW)return;

      Clear_All_LED();

      Write_One_LED_Pin(Led_GPIO_Port_Arrange[x / 2], Led_GPIO_Pin_Arrange[x / 2], 1);                //ÁÐѡͨ

                        

     if (y <= 4){ 

         if(x % 2 == 0)  

         {

               if(x <= 4 * y )         Write_One_LED_Pin(Led_GPIO_Port_Arrange[y * 2 + 1], Led_GPIO_Pin_Arrange[y * 2 + 1], 0);

               else                Write_One_LED_Pin(Led_GPIO_Port_Arrange[y * 2],         Led_GPIO_Pin_Arrange[y * 2],          0);

         }else{

              if(x <= 4 * y + 3)         Write_One_LED_Pin(Led_GPIO_Port_Arrange[y * 2 + 2], Led_GPIO_Pin_Arrange[y * 2 + 2], 0);

              else                     Write_One_LED_Pin(Led_GPIO_Port_Arrange[y * 2 + 1], Led_GPIO_Pin_Arrange[y * 2 + 1], 0);

         }

    }else{

        if(x % 2 == 0) 

        {

               if(x <= 6 * y - 10) Write_One_LED_Pin(Led_GPIO_Port_Arrange[y * 3 - 4], Led_GPIO_Pin_Arrange[y * 3 - 4], 0);

               else                     Write_One_LED_Pin(Led_GPIO_Port_Arrange[y * 3 - 5], Led_GPIO_Pin_Arrange[y * 3 - 5], 0);

        }else{

               if(x <= 6 * y - 7)         Write_One_LED_Pin(Led_GPIO_Port_Arrange[y * 3 - 2], Led_GPIO_Pin_Arrange[y * 3 - 2], 0);

               else                    Write_One_LED_Pin(Led_GPIO_Port_Arrange[y * 3 - 4], Led_GPIO_Pin_Arrange[y * 3 - 4], 0);

        }                        

    }

}

最后:软件安装调试


现在胸牌屏改为了串口通讯接口,就做了一下串口的上位机软件,可以手动点亮屏。

项目中,要将游戏中的运动人物的时间,速度,个数显示到屏,在Excel中弄一些显示模板,对协议也做了包装,上面只要发送 目标值(小数字)及即时值(大数字)就可以实现显示功能了。

下载了MM的下载软件,同样把BOOT0拉到高,用MM32ISP下载工具,然而怎么样都连不上,无法用ISP。


怀疑有二点:

1,MM单片机ISP串口不知是不是PA14,PA15,从MM资料中没有找到这方法的介绍。


2,网络上说MM单片机有些是没有ISP功能的。搞的我也很怀疑了。官方资料上,对ISP好像也很排斥一样,一点介绍都没有。

从以上,我们可看出,要想能完整的把一个电子胸牌改装出来,没有以上三种技能,还真是很难完成。比如只有电路基础,没有代码基础,没有软件下载安装知识,可能这个改装过程到一半就会结束了。

那我们看一下下面的电子胸牌,是否还需要改装呢?这类也就不需要再改装了哦。


cache
Processed in 0.009504 Second.