0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

構(gòu)建一個(gè)藍(lán)牙控制的無(wú)線記分牌

科技觀察員 ? 來(lái)源:circuitdigest ? 作者:Debasis Parida ? 2022-08-06 16:36 ? 次閱讀

電子記分牌是任何人在任何體育比賽中都可以擁有的最重要的小工具之一。使用傳統(tǒng)方法的舊手動(dòng)記分牌非常耗時(shí)且容易出錯(cuò),因此在需要實(shí)時(shí)更改顯示單元的情況下,必須使用計(jì)算機(jī)記分牌。這就是為什么在這個(gè)項(xiàng)目中,我們將構(gòu)建一個(gè)藍(lán)牙控制的無(wú)線記分牌,我們可以通過(guò)使用一個(gè)安卓應(yīng)用程序來(lái)更改板上的分?jǐn)?shù)。這個(gè)項(xiàng)目的大腦是一個(gè) Arduino Nano,對(duì)于顯示部分,我們將使用 P10 LED 矩陣來(lái)實(shí)時(shí)遠(yuǎn)程顯示分?jǐn)?shù)。

P10 LED顯示矩陣

P10 LED 矩陣顯示器是制作戶外或室內(nèi)LED 廣告板的最佳方式。該面板共有 512 個(gè)高亮度 LED,安裝在塑料外殼上,旨在實(shí)現(xiàn)最佳顯示效果。它還具有 IP65 防水等級(jí),非常適合戶外使用。有了這個(gè),您可以通過(guò)在任何行和列結(jié)構(gòu)中組合任意數(shù)量的此類(lèi)面板來(lái)制作大型LED 招牌。

pYYBAGLuJ5uAXldVAAqE9AInKko062.png

我們的模組尺寸為32*16,也就是說(shuō)每行32個(gè)LED,每列16個(gè)LED。因此,每個(gè) LED 招牌中共有 512 個(gè) LED。除此之外,它的防水等級(jí)為IP65,可以由單個(gè)5V電源供電,具有非常寬的視角,亮度可以達(dá)到4500尼特。因此,您將能夠在日光下清楚地看到它。之前我們也使用這個(gè)P10 顯示器和 Arduino來(lái)構(gòu)建一個(gè)簡(jiǎn)單的 LED 板。

P10 LED 矩陣管腳說(shuō)明:

該LED 顯示板使用 10 針郵件頭進(jìn)行輸入和輸出連接,在本節(jié)中,我們已經(jīng)描述了該模塊的所有必要針腳。此外,您可以看到模塊中間有一個(gè)外部 5V 連接器,用于將外部電源連接到電路板。

poYBAGLuJ5eAOFDRAAWvo_5j6Y0003.png

啟用:此引腳用于控制 LED 面板的亮度,通過(guò)給它一個(gè) PWM 脈沖。

A、B:這些稱為多路復(fù)用選擇引腳。它們采用數(shù)字輸入來(lái)選擇任何多路復(fù)用行。

移位時(shí)鐘 (CLK)、存儲(chǔ)時(shí)鐘 (SCLK) 和數(shù)據(jù):這些是正常的移位寄存器控制引腳。這里使用了移位寄存器 74HC595。

將 P10 LED 顯示模塊連接到 Arduino:

將P10矩陣顯示 模塊連接到 Arduino 是一個(gè)非常簡(jiǎn)單的過(guò)程,在我們的電路中,我們將 Arduino 的引腳 9 配置為使能引腳,引腳 6 為引腳 A,引腳 7 為引腳 B,引腳 13 為 CLK,引腳 8 為SCLK,引腳11是DATA,最后引腳GND是模塊和Arduino的GND引腳,下面的完整表格清楚地解釋了引腳配置。

P10 LED模組Arduino UNO

poYBAGLuKDGAa1o9AAAxwKC-__o236.png

注意:將P10模塊的電源端接外接5V電源,因?yàn)?12個(gè)LED會(huì)消耗很多功率。建議將 5V、3 Amp 直流電源連接到單個(gè) P10 LED 模塊。如果您計(jì)劃連接更多號(hào)碼模塊,請(qǐng)相應(yīng)增加您的 SMPS 容量。

Arduino 記分板所需的組件

由于這是一個(gè)非常簡(jiǎn)單的項(xiàng)目,組件要求非常通用,所需組件列表如下所示,您應(yīng)該可以在當(dāng)?shù)氐膼?ài)好商店中找到所有列出的材料。

Arduino納米

P10 LED矩陣顯示

面包板

5V、3 安培開(kāi)關(guān)電源

HC-05 藍(lán)牙模塊

連接電線

Arduino記分牌電路圖

Arduino LED Scoreboard的原理圖如下所示,因?yàn)檫@個(gè)項(xiàng)目非常簡(jiǎn)單,我使用了流行的軟件 fritzing 來(lái)開(kāi)發(fā)原理圖。

poYBAGLuJ5GAHS6IAAE80TeiHOQ597.png

電路的工作很簡(jiǎn)單,我們有一個(gè)安卓應(yīng)用程序和一個(gè)藍(lán)牙模塊,要成功與藍(lán)牙模塊通信,你必須將HC-05模塊與安卓應(yīng)用程序配對(duì)。連接好后就可以發(fā)送我們想要顯示的字符串了,一旦發(fā)送了字符串,Arduino會(huì)處理這個(gè)字符串,并將其轉(zhuǎn)換為內(nèi)部74HC595移位電阻可以理解的信號(hào),數(shù)據(jù)發(fā)送到移位后電阻,它準(zhǔn)備顯示。

Arduino記分牌代碼說(shuō)明

成功完成硬件設(shè)置后,現(xiàn)在是 Arduino Nano 編程的時(shí)候了。下面給出代碼的逐步描述。此外,您可以在本教程的底部獲取完整的Arduino 記分板代碼。

首先,我們需要包含所有的庫(kù)。我們使用DMD.h庫(kù)來(lái)控制 P10 LED 顯示屏。您可以從給定的 GitHub 鏈接下載并包含它。之后,您需要包含TimerOne.h庫(kù),它將用于在我們的代碼中進(jìn)行中斷編程。

這個(gè)庫(kù)中有很多可用的前端,我們?cè)谶@個(gè)項(xiàng)目中使用了“Arial_black_16”。

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

在下一步中,為我們的 LED 矩陣板定義行數(shù)和列數(shù)。我們?cè)谶@個(gè)項(xiàng)目中只使用了一個(gè)模塊,所以 ROW 值和 COLUMN 值都可以定義為 1。

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

之后,定義了代碼中使用的所有變量。一個(gè)字符變量用于接收來(lái)自 Android App 的串行數(shù)據(jù),兩個(gè)整數(shù)值用于存儲(chǔ)分?jǐn)?shù),并定義了一個(gè)數(shù)組來(lái)存儲(chǔ)最終要顯示在 Matrix 上的數(shù)據(jù)。

字符輸入;
整數(shù)a = 0,b = 0;
整數(shù)標(biāo)志 = 0;
字符 cstr1[50];

定義了一個(gè)函數(shù)scan_module(),它通過(guò)SPI持續(xù)檢查來(lái)自 Arduino Nano 的任何傳入數(shù)據(jù)。如果是,那么它將觸發(fā)中斷以執(zhí)行用戶在程序中定義的某些事件。

無(wú)效 scan_module() 
{ 
  led_module.scanDisplayBySPI(); 
}

在setup()內(nèi)部,定時(shí)器被初始化,中斷被附加到函數(shù)scan_module,這在前面已經(jīng)討論過(guò)了。最初,使用函數(shù)clear screen(true) 清除屏幕,這意味著所有像素都定義為 OFF。

在設(shè)置中,還使用函數(shù)Serial.begin(9600)啟用了串行通信,其中 9600 是藍(lán)牙通信的波特率。

無(wú)效設(shè)置()
{
  序列.開(kāi)始(9600);
  Timer1.initialize(2000); 
  Timer1.attachInterrupt(scan_module); 
  led_module.clearScreen(真);
}

在這里,檢查串行數(shù)據(jù)的可用性,是否有來(lái)自 Arduino 的有效數(shù)據(jù)。從 App 接收到的數(shù)據(jù)存儲(chǔ)在一個(gè)變量中。

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

然后,將接收到的值與預(yù)定義的變量進(jìn)行比較。在這里,在 Android 應(yīng)用程序中,使用兩個(gè)按鈕來(lái)選擇兩支球隊(duì)的分?jǐn)?shù)。當(dāng)按下按鈕 1 時(shí),字符“a”被傳輸?shù)?Arduino,當(dāng)按下按鈕 2 時(shí),字符“b”被傳輸?shù)?Arduino。因此,在本節(jié)中,此數(shù)據(jù)是匹配的,如果匹配,則相應(yīng)的分?jǐn)?shù)值會(huì)增加,如代碼所示。

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

然后,將接收到的數(shù)據(jù)轉(zhuǎn)換為字符數(shù)組,因?yàn)?P10 矩陣函數(shù)只能顯示字符數(shù)據(jù)類(lèi)型。這就是為什么所有變量都被轉(zhuǎn)換并連接成一個(gè)字符數(shù)組的原因。

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

然后,為了在模塊中顯示信息,使用selection()函數(shù)選擇字體。然后drawMarquee()函數(shù)用于在 P10 板上顯示所需的信息。

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

最后,由于我們需要滾動(dòng)消息顯示,我編寫(xiě)了一個(gè)代碼,使用特定周期將整個(gè)消息從右向左移動(dòng)。

長(zhǎng)開(kāi)始 = 毫秒();
    長(zhǎng)時(shí)間的計(jì)時(shí)=開(kāi)始;
    布爾標(biāo)志 = 假;
    while (!flag) 
    { 
      if ((timming + 30) < millis()) 
      { 
        flag = led_module.stepMarquee(-1, 0); 
        計(jì)時(shí) = 毫秒();
      } 
    }

這標(biāo)志著我們編碼過(guò)程的結(jié)束。現(xiàn)在可以上傳了。

智能手機(jī)控制的記分牌 - 測(cè)試

將代碼上傳到 Arduino 后,就該測(cè)試項(xiàng)目了。在此之前,需要在我們的智能手機(jī)上安裝 android 應(yīng)用程序。您可以從給定的鏈接下載 P10 Score Board 應(yīng)用程序。安裝后,打開(kāi)應(yīng)用程序,主屏幕應(yīng)如下圖所示。

poYBAGLuJ4qAZ7h7AADvhanjNGU489.png

點(diǎn)擊SCAN按鈕,添加帶有 App 的藍(lán)牙模塊。這將顯示手機(jī)的配對(duì)藍(lán)牙設(shè)備列表。如果您之前沒(méi)有配對(duì)過(guò)HC-05 藍(lán)牙模塊,請(qǐng)使用手機(jī)的藍(lán)牙設(shè)置配對(duì)模塊,然后執(zhí)行此步驟。屏幕將如下所示:

poYBAGLuJ4aAPdQ3AABmWC8c5zw573.png

然后,從列表中單擊“HC-05”,因?yàn)檫@是我們此處使用的藍(lán)牙模塊的名稱。單擊它后,它將在屏幕上顯示已連接。然后我們可以繼續(xù)使用記分牌。

單擊“主頁(yè)”和“離開(kāi)”之間的任何按鈕,如應(yīng)用程序所示。如果選擇 Home 按鈕,則 Home 的分?jǐn)?shù)將在 P10 顯示中遞增。同樣,如果選擇了離開(kāi)按鈕,離開(kāi)的分?jǐn)?shù)將增加。下圖顯示了最終屏幕的外觀。

pYYBAGLuJ4OAQsSKAAhgwuy2FLY749.png

#include
#include
#include
#include "SystemFont5x7.h"
#include "Arial_black_16.h"
#定義第 1 行
#define 第 1 列
#define 字體 Arial_Black_16
字符輸入;
整數(shù)a = 0,b = 0;
整數(shù)標(biāo)志 = 0;
字符 cstr1[50];
DMD led_module(行,列);
無(wú)效掃描模塊()
{
led_module.scanDisplayBySPI();
}
無(wú)效設(shè)置()
{
序列號(hào).開(kāi)始(9600);
Timer1.initialize(2000);
Timer1.attachInterrupt(scan_module);
led_module.clearScreen(真);
}
無(wú)效循環(huán)()
{
如果(串行??捎茫ǎ? 0)
{
標(biāo)志 = 0;
輸入 = Serial.read();
如果(輸入 == 'a' && 標(biāo)志 == 0)
{
標(biāo)志 = 1;
一個(gè)++;
}
else if (input == 'b' && flag == 0)
{
標(biāo)志 = 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);
長(zhǎng)開(kāi)始 = 毫秒();
長(zhǎng)時(shí)間的計(jì)時(shí)=開(kāi)始;
布爾標(biāo)志 = 假;
而(!標(biāo)志)
{
if ((timming + 30) < 毫秒())
{
flag = led_module.stepMarquee(-1, 0);
計(jì)時(shí) = 毫秒();
}
}
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LED顯示
    +關(guān)注

    關(guān)注

    0

    文章

    361

    瀏覽量

    38087
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6474

    瀏覽量

    187442
  • 藍(lán)牙控制
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    2699
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于89c51的籃球記分牌怎么設(shè)計(jì)?

    基于89c51的籃球記分牌怎么設(shè)計(jì)?
    發(fā)表于 12-22 15:32

    用撥碼盤(pán)做一個(gè)記分牌,程序在仿真上不行,求大神指點(diǎn)

    課程設(shè)計(jì)讓用撥碼盤(pán)做一個(gè)記分牌但是我的程序在仿真上不行誰(shuí)給解決
    發(fā)表于 01-04 13:50

    按鍵控制滾動(dòng)的點(diǎn)陣

    想用按鍵控制64X16的滾動(dòng)點(diǎn)陣,是個(gè)籃球記分牌,既能控制比分又能更換隊(duì)名,要怎么寫(xiě)(滾動(dòng)原理已經(jīng)知道)
    發(fā)表于 04-29 20:36

    記分牌程序設(shè)計(jì)

    記分牌程序設(shè)計(jì)要求:①編寫(xiě)籃球記分牌程序,能夠顯示兩支球隊(duì)的當(dāng)前比賽分?jǐn)?shù);②能夠?qū)崿F(xiàn)加1分、加2分、加3分的功能;③通過(guò)按鍵可切換到60s倒計(jì)時(shí)功能,顯示當(dāng)前剩余時(shí)間;④其它創(chuàng)新功能。求各位大神給出程序來(lái),是用數(shù)碼管顯示來(lái)做的
    發(fā)表于 11-25 17:52

    求基于8086的籃球記分

    個(gè)基于8086 8255138譯碼器的簡(jiǎn)易籃球記分牌,只需要能顯示兩對(duì)得分,實(shí)現(xiàn)+1分,+2分,+3分就可以,能用proteus仿真,跪求大神……,,
    發(fā)表于 11-24 23:31

    有源濾波器和籃球競(jìng)賽記分牌源文件嘛?

    期末了要交作業(yè),給位大佬拜托了,有沒(méi)有做完的有源濾波器源文件和籃球競(jìng)賽數(shù)字記分牌源文件,我借鑒
    發(fā)表于 06-25 22:47

    如何去實(shí)現(xiàn)基于51單片機(jī)的電子記分牌的設(shè)計(jì)

    基于51單片機(jī)的電子記分牌的設(shè)計(jì)電子記分牌基于51單片機(jī)的電子記分牌的設(shè)計(jì)摘要1 引言2 總體設(shè)計(jì)方案2.1 設(shè)計(jì)思路(1)設(shè)計(jì)要求(2)設(shè)計(jì)思路(3)設(shè)計(jì)方案2.3綜合設(shè)計(jì)方框圖(1)硬件設(shè)計(jì)框圖
    發(fā)表于 11-19 09:05

    單片機(jī)課程設(shè)計(jì)—籃球賽電子計(jì)時(shí)記分牌方案設(shè)計(jì)資料下載.pdf

    籃球賽電子計(jì)時(shí)記分牌課程設(shè)計(jì)論文,有程序和原理圖
    發(fā)表于 04-20 11:18 ?22次下載

    使用51單片機(jī)設(shè)計(jì)的籃球記分牌電路圖和程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)的籃球記分牌電路圖和程序免費(fèi)下載。8位LED數(shù)碼顯示,對(duì)A、B兩隊(duì)進(jìn)行計(jì)分,具有加1分、加2分、加3分,復(fù)位和切換及中場(chǎng)換場(chǎng)的功能。
    發(fā)表于 07-31 17:35 ?17次下載
    使用51單片機(jī)設(shè)計(jì)的籃球<b class='flag-5'>記分牌</b>電路圖和程序免費(fèi)下載

    基于51單片機(jī)的電子記分牌的設(shè)計(jì)

    基于51單片機(jī)的電子記分牌的設(shè)計(jì)電子記分牌基于51單片機(jī)的電子記分牌的設(shè)計(jì)摘要1 引言2 總體設(shè)計(jì)方案2.1 設(shè)計(jì)思路(1)設(shè)計(jì)要求(2)設(shè)計(jì)思路(3)設(shè)計(jì)方案2.3綜合設(shè)計(jì)方框圖(1)硬件設(shè)計(jì)框圖
    發(fā)表于 11-12 21:06 ?25次下載
    基于51單片機(jī)的電子<b class='flag-5'>記分牌</b>的設(shè)計(jì)

    使用ESP8266的可充電數(shù)字桌上足球記分牌

    電子發(fā)燒友網(wǎng)站提供《使用ESP8266的可充電數(shù)字桌上足球記分牌.zip》資料免費(fèi)下載
    發(fā)表于 12-01 15:12 ?1次下載
    使用ESP8266的可充電數(shù)字桌上足球<b class='flag-5'>記分牌</b>

    使用Arduino創(chuàng)建電子記分牌

    電子發(fā)燒友網(wǎng)站提供《使用Arduino創(chuàng)建電子記分牌.zip》資料免費(fèi)下載
    發(fā)表于 12-16 10:24 ?0次下載
    使用Arduino創(chuàng)建電子<b class='flag-5'>記分牌</b>

    智能籃球記分牌開(kāi)源硬件

    電子發(fā)燒友網(wǎng)站提供《智能籃球記分牌開(kāi)源硬件.zip》資料免費(fèi)下載
    發(fā)表于 02-06 10:31 ?2次下載
    智能籃球<b class='flag-5'>記分牌</b>開(kāi)源硬件

    基于單片機(jī)的籃球記分牌設(shè)計(jì)

    1? 系統(tǒng)設(shè)計(jì)1.1?設(shè)計(jì)要求1.1.1?設(shè)計(jì)任務(wù)?設(shè)計(jì)個(gè)基于單片機(jī)的籃球計(jì)分牌,實(shí)現(xiàn)兩隊(duì)的計(jì)分功能與24秒計(jì)時(shí)功能。1.1.2?性能指標(biāo)要求???? (1)按照題目要求獨(dú)立設(shè)計(jì)系統(tǒng)所需電路,并
    發(fā)表于 04-03 09:40 ?10次下載

    帶ESP32和TM1638的記分牌,帶BLE Android應(yīng)用程序

    電子發(fā)燒友網(wǎng)站提供《帶ESP32和TM1638的記分牌,帶BLE Android應(yīng)用程序.zip》資料免費(fèi)下載
    發(fā)表于 07-12 10:57 ?0次下載
    帶ESP32和TM1638的<b class='flag-5'>記分牌</b>,帶BLE Android應(yīng)用程序