0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

构建一个蓝牙控制的无线记分牌

科技观察员 来源:circuitdigest 作者:Debasis Parida 2022-08-06 16:36 次阅读

电子记分牌是任何人在任何体育比赛中都可以拥有的最重要的小工具之一。使用传统方法的旧手动记分牌非常耗时且容易出错,因此在需要实时更改显示单元的情况下,必须使用计算机记分牌。这就是为什么在这个项目中,我们将构建一个蓝牙控制的无线记分牌,我们可以通过使用一个安卓应用程序来更改板上的分数。这个项目的大脑是一个 Arduino Nano,对于显示部分,我们将使用 P10 LED 矩阵来实时远程显示分数。

P10 LED显示矩阵

P10 LED 矩阵显示器是制作户外或室内LED 广告板的最佳方式。该面板共有 512 个高亮度 LED,安装在塑料外壳上,旨在实现最佳显示效果。它还具有 IP65 防水等级,非常适合户外使用。有了这个,您可以通过在任何行和列结构中组合任意数量的此类面板来制作大型LED 招牌。

pYYBAGLuJ5uAXldVAAqE9AInKko062.png

我们的模组尺寸为32*16,也就是说每行32个LED,每列16个LED。因此,每个 LED 招牌中共有 512 个 LED。除此之外,它的防水等级为IP65,可以由单个5V电源供电,具有非常宽的视角,亮度可以达到4500尼特。因此,您将能够在日光下清楚地看到它。之前我们也使用这个P10 显示器和 Arduino来构建一个简单的 LED 板。

P10 LED 矩阵管脚说明:

该LED 显示板使用 10 针邮件头进行输入和输出连接,在本节中,我们已经描述了该模块的所有必要针脚。此外,您可以看到模块中间有一个外部 5V 连接器,用于将外部电源连接到电路板。

poYBAGLuJ5eAOFDRAAWvo_5j6Y0003.png

启用:此引脚用于控制 LED 面板的亮度,通过给它一个 PWM 脉冲。

A、B:这些称为多路复用选择引脚。它们采用数字输入来选择任何多路复用行。

移位时钟 (CLK)、存储时钟 (SCLK) 和数据:这些是正常的移位寄存器控制引脚。这里使用了移位寄存器 74HC595。

将 P10 LED 显示模块连接到 Arduino:

将P10矩阵显示 模块连接到 Arduino 是一个非常简单的过程,在我们的电路中,我们将 Arduino 的引脚 9 配置为使能引脚,引脚 6 为引脚 A,引脚 7 为引脚 B,引脚 13 为 CLK,引脚 8 为SCLK,引脚11是DATA,最后引脚GND是模块和Arduino的GND引脚,下面的完整表格清楚地解释了引脚配置。

P10 LED模组Arduino UNO

poYBAGLuKDGAa1o9AAAxwKC-__o236.png

注意:将P10模块的电源端接外接5V电源,因为512个LED会消耗很多功率。建议将 5V、3 Amp 直流电源连接到单个 P10 LED 模块。如果您计划连接更多号码模块,请相应增加您的 SMPS 容量。

Arduino 记分板所需的组件

由于这是一个非常简单的项目,组件要求非常通用,所需组件列表如下所示,您应该可以在当地的爱好商店中找到所有列出的材料。

Arduino纳米

P10 LED矩阵显示

面包板

5V、3 安培开关电源

HC-05 蓝牙模块

连接电线

Arduino记分牌电路图

Arduino LED Scoreboard的原理图如下所示,因为这个项目非常简单,我使用了流行的软件 fritzing 来开发原理图。

poYBAGLuJ5GAHS6IAAE80TeiHOQ597.png

电路的工作很简单,我们有一个安卓应用程序和一个蓝牙模块,要成功与蓝牙模块通信,你必须将HC-05模块与安卓应用程序配对。连接好后就可以发送我们想要显示的字符串了,一旦发送了字符串,Arduino会处理这个字符串,并将其转换为内部74HC595移位电阻可以理解的信号,数据发送到移位后电阻,它准备显示。

Arduino记分牌代码说明

成功完成硬件设置后,现在是 Arduino Nano 编程的时候了。下面给出代码的逐步描述。此外,您可以在本教程的底部获取完整的Arduino 记分板代码。

首先,我们需要包含所有的库。我们使用DMD.h库来控制 P10 LED 显示屏。您可以从给定的 GitHub 链接下载并包含它。之后,您需要包含TimerOne.h库,它将用于在我们的代码中进行中断编程。

这个库中有很多可用的前端,我们在这个项目中使用了“Arial_black_16”。

#include  
#include  
#include  
#include "SystemFont5x7.h" 
#include "Arial_black_16.h"

在下一步中,为我们的 LED 矩阵板定义行数和列数。我们在这个项目中只使用了一个模块,所以 ROW 值和 COLUMN 值都可以定义为 1。

#define ROW 1 
#define COLUMN 1 
#define FONT Arial_Black_16 
DMD led_module (ROW, COLUMN);

之后,定义了代码中使用的所有变量。一个字符变量用于接收来自 Android App 的串行数据,两个整数值用于存储分数,并定义了一个数组来存储最终要显示在 Matrix 上的数据。

字符输入;
整数a = 0,b = 0;
整数标志 = 0;
字符 cstr1[50];

定义了一个函数scan_module(),它通过SPI持续检查来自 Arduino Nano 的任何传入数据。如果是,那么它将触发中断以执行用户在程序中定义的某些事件。

无效 scan_module() 
{ 
  led_module.scanDisplayBySPI(); 
}

在setup()内部,定时器被初始化,中断被附加到函数scan_module,这在前面已经讨论过了。最初,使用函数clear screen(true) 清除屏幕,这意味着所有像素都定义为 OFF。

在设置中,还使用函数Serial.begin(9600)启用了串行通信,其中 9600 是蓝牙通信的波特率。

无效设置()
{
  序列.开始(9600);
  Timer1.initialize(2000); 
  Timer1.attachInterrupt(scan_module); 
  led_module.clearScreen(真);
}

在这里,检查串行数据的可用性,是否有来自 Arduino 的有效数据。从 App 接收到的数据存储在一个变量中。

if(Serial.available() > 0) 
  { 
    flag = 0; 
    输入 = Serial.read();

然后,将接收到的值与预定义的变量进行比较。在这里,在 Android 应用程序中,使用两个按钮来选择两支球队的分数。当按下按钮 1 时,字符“a”被传输到 Arduino,当按下按钮 2 时,字符“b”被传输到 Arduino。因此,在本节中,此数据是匹配的,如果匹配,则相应的分数值会增加,如代码所示。

if (input == 'a' && flag == 0) 
  { 
    flag = 1; 
    一个++;
  } 
  else if (input == 'b' && flag == 0) 
  { 
    flag = 1; 
    b++; 
  }
  其他;

然后,将接收到的数据转换为字符数组,因为 P10 矩阵函数只能显示字符数据类型。这就是为什么所有变量都被转换并连接成一个字符数组的原因。

(String("HOME:")+String(a) + String(" - ") + String("AWAY:")+String(b)).toCharArray(cstr1, 50);

然后,为了在模块中显示信息,使用selection()函数选择字体。然后drawMarquee()函数用于在 P10 板上显示所需的信息。

led_module.selectFont(字体); 
led_module.drawMarquee(cstr1,50, (32 * ROW), 0);

最后,由于我们需要滚动消息显示,我编写了一个代码,使用特定周期将整个消息从右向左移动。

长开始 = 毫秒();
    长时间的计时=开始;
    布尔标志 = 假;
    while (!flag) 
    { 
      if ((timming + 30) < millis()) 
      { 
        flag = led_module.stepMarquee(-1, 0); 
        计时 = 毫秒();
      } 
    }

这标志着我们编码过程的结束。现在可以上传了。

智能手机控制的记分牌 - 测试

将代码上传到 Arduino 后,就该测试项目了。在此之前,需要在我们的智能手机上安装 android 应用程序。您可以从给定的链接下载 P10 Score Board 应用程序。安装后,打开应用程序,主屏幕应如下图所示。

poYBAGLuJ4qAZ7h7AADvhanjNGU489.png

点击SCAN按钮,添加带有 App 的蓝牙模块。这将显示手机的配对蓝牙设备列表。如果您之前没有配对过HC-05 蓝牙模块,请使用手机的蓝牙设置配对模块,然后执行此步骤。屏幕将如下所示:

poYBAGLuJ4aAPdQ3AABmWC8c5zw573.png

然后,从列表中单击“HC-05”,因为这是我们此处使用的蓝牙模块的名称。单击它后,它将在屏幕上显示已连接。然后我们可以继续使用记分牌。

单击“主页”和“离开”之间的任何按钮,如应用程序所示。如果选择 Home 按钮,则 Home 的分数将在 P10 显示中递增。同样,如果选择了离开按钮,离开的分数将增加。下图显示了最终屏幕的外观。

pYYBAGLuJ4OAQsSKAAhgwuy2FLY749.png

#include
#include
#include
#include "SystemFont5x7.h"
#include "Arial_black_16.h"
#定义第 1 行
#define 第 1 列
#define 字体 Arial_Black_16
字符输入;
整数a = 0,b = 0;
整数标志 = 0;
字符 cstr1[50];
DMD led_module(行,列);
无效扫描模块()
{
led_module.scanDisplayBySPI();
}
无效设置()
{
序列号.开始(9600);
Timer1.initialize(2000);
Timer1.attachInterrupt(scan_module);
led_module.clearScreen(真);
}
无效循环()
{
如果(串行。可用()> 0)
{
标志 = 0;
输入 = Serial.read();
如果(输入 == 'a' && 标志 == 0)
{
标志 = 1;
一个++;
}
else if (input == 'b' && flag == 0)
{
标志 = 1;
b++;
}
别的;
}
(String("HOME:")+String(a) + String(" - ") + String("AWAY:")+String(b)).toCharArray(cstr1, 50);
led_module.selectFont(字体);
led_module.drawMarquee(cstr1,50, (32 * ROW), 0);
长开始 = 毫秒();
长时间的计时=开始;
布尔标志 = 假;
而(!标志)
{
if ((timming + 30) < 毫秒())
{
flag = led_module.stepMarquee(-1, 0);
计时 = 毫秒();
}
}
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LED显示
    +关注

    关注

    0

    文章

    312

    浏览量

    37510
  • Arduino
    +关注

    关注

    184

    文章

    6421

    浏览量

    184570
  • 蓝牙控制
    +关注

    关注

    0

    文章

    12

    浏览量

    2642
收藏 人收藏

    评论

    相关推荐

    基于89c51的篮球记分牌怎么设计?

    基于89c51的篮球记分牌怎么设计?
    发表于 12-22 15:32

    用拨码盘做一个记分牌,程序在仿真上不行,求大神指点

    课程设计让用拨码盘做一个记分牌但是我的程序在仿真上不行谁给解决
    发表于 01-04 13:50

    按键控制滚动的点阵

    想用按键控制64X16的滚动点阵,是篮球记分牌,既能控制比分又能更换队名,要怎么写(滚动原理已经知道)
    发表于 04-29 20:36

    求助,,急需帮助!

    s1a时,靠近甲方的第盏灯亮,然后二极管由甲向乙依次点亮,代表乒乓球在移动。当球过网后,按设计者规定的球位乙方就可以击球。若乙方提前击球或者没有击着球,则判乙方失分,甲方记分牌自动加分。然后重新发球,比赛继续进行。比赛直进行
    发表于 12-18 21:45

    记分牌程序设计

    记分牌程序设计要求:①编写篮球记分牌程序,能够显示两支球队的当前比赛分数;②能够实现加1分、加2分、加3分的功能;③通过按键可切换到60s倒计时功能,显示当前剩余时间;④其它创新功能。求各位大神给出程序来,是用数码管显示来做的
    发表于 11-25 17:52

    求基于8086的篮球记分

    基于8086 8255138译码器的简易篮球记分牌,只需要能显示两对得分,实现+1分,+2分,+3分就可以,能用proteus仿真,跪求大神……,,
    发表于 11-24 23:31

    有源滤波器和篮球竞赛记分牌源文件嘛?

    期末了要交作业,给位大佬拜托了,有没有做完的有源滤波器源文件和篮球竞赛数字记分牌源文件,我借鉴
    发表于 06-25 22:47

    如何去实现基于51单片机的电子记分牌的设计

    基于51单片机的电子记分牌的设计电子记分牌基于51单片机的电子记分牌的设计摘要1 引言2 总体设计方案2.1 设计思路(1)设计要求(2)设计思路(3)设计方案2.3综合设计方框图(1)硬件设计框图
    发表于 11-19 09:05

    单片机课程设计—篮球赛电子计时记分牌方案设计资料下载.pdf

    篮球赛电子计时记分牌课程设计论文,有程序和原理图
    发表于 04-20 11:18 22次下载

    使用51单片机设计的篮球记分牌电路图和程序免费下载

    本文档的主要内容详细介绍的是使用51单片机设计的篮球记分牌电路图和程序免费下载。8位LED数码显示,对A、B两队进行计分,具有加1分、加2分、加3分,复位和切换及中场换场的功能。
    发表于 07-31 17:35 17次下载
    使用51单片机设计的篮球<b class='flag-5'>记分牌</b>电路图和程序免费下载

    基于51单片机的电子记分牌的设计

    基于51单片机的电子记分牌的设计电子记分牌基于51单片机的电子记分牌的设计摘要1 引言2 总体设计方案2.1 设计思路(1)设计要求(2)设计思路(3)设计方案2.3综合设计方框图(1)硬件设计框图
    发表于 11-12 21:06 25次下载
    基于51单片机的电子<b class='flag-5'>记分牌</b>的设计

    使用ESP8266的可充电数字桌上足球记分牌

    电子发烧友网站提供《使用ESP8266的可充电数字桌上足球记分牌.zip》资料免费下载
    发表于 12-01 15:12 1次下载
    使用ESP8266的可充电数字桌上足球<b class='flag-5'>记分牌</b>

    使用Arduino创建电子记分牌

    电子发烧友网站提供《使用Arduino创建电子记分牌.zip》资料免费下载
    发表于 12-16 10:24 0次下载
    使用Arduino创建电子<b class='flag-5'>记分牌</b>

    智能篮球记分牌开源硬件

    电子发烧友网站提供《智能篮球记分牌开源硬件.zip》资料免费下载
    发表于 02-06 10:31 2次下载
    智能篮球<b class='flag-5'>记分牌</b>开源硬件

    带ESP32和TM1638的记分牌,带BLE Android应用程序

    电子发烧友网站提供《带ESP32和TM1638的记分牌,带BLE Android应用程序.zip》资料免费下载
    发表于 07-12 10:57 0次下载
    带ESP32和TM1638的<b class='flag-5'>记分牌</b>,带BLE Android应用程序