<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于IoT和Arduino構建一個IPL記分板

科技觀察員 ? 來源:circuitdigest ? 作者:Debasis Parida ? 2022-08-02 17:29 ? 次閱讀

今天我們將使用 NodeMCU 和 P10 顯示模塊構建一個基于 IoTArduino 的 IPL 記分板,它足夠大,可以顯示實時比分,而且制作起來非常簡單。

構建物聯網計分板所需的組件

項目比較簡單,需要的組件也不多。只需收集下面列出的物品。

Arduino納米

ESP8266 NodeMCU

性能板

男性和女性標題

9V 直流,2 安培電源

5 安培、3 安培 SMPS

連接線

基于節點 MCU 和 Arduino 的物聯網記分板工作

poYBAGLo7geAekDiAACat3XEeRo060.png

該項目的完整工作如上面的框圖所示。在這里,“ CRICAPI ”API 服務用于獲取實時 IPL 分數,然后由 ESP8266 nodeMCU 解碼并再次發送到控制顯示的Arduino Nano 。在這里,串行通信用于將信息從NodeMCU發送到 Arduino Uno。然后Arduino將需要顯示的所需信息發送到p10顯示器。

P10 LED矩陣模組基本工作原理

poYBAGLo7gGABeZzAAkj-923jXc222.png

P10 LED 顯示模塊是一種非常流行的矩陣顯示器,用于宣傳戶外或室內條件。每個 p10 顯示模塊共有 512 個高亮度 LED,安裝在塑料外殼上,旨在實現最佳顯示效果。任何數量的此類面板可以組合成任何行和列結構,以設計 LED 通知/廣告板。32*16 模塊尺寸意味著每行有 32 個 LED,每列有 16 個 LED。因此,每個模塊單元中有 512 個 LED。

這個模塊有很多特點,比如它總共有512個LED,這使得制作廣告牌非???,并且在我們需要展示的地方都需要它。它的總亮度為 3500-4500 尼特,因此您可以在光天化日之下非常清楚地看到它。它有一個最大值。功耗為 20W,因此可以由小型開關電源模塊供電。它還需要一個單獨的 5V 電源為邏輯部分供電。它具有 IP65 防水等級,因此可以在潮濕和雨天的戶外輕松使用。

P10顯示模塊引腳說明:

pYYBAGLo7fyAbQbaAAfiatymTMU552.png

Enable:此引腳用于通過向 LED 面板提供 PWM 脈沖來控制 LED 面板的亮度。

A、B:這些稱為多路復用選擇引腳。它們采用數字輸入來選擇任何多路復用行。

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

poYBAGLo7fiAPe1VAACGua4Mlrc918.png

P10顯示模塊接線圖:

Arduino UNO 和 P10 顯示模塊按照如下所示的引腳映射互連:

poYBAGLo7fKAc-_iAAARSHufrIY314.png

重要的提示:

將 P10 模塊的電源端子單獨連接到 5V DC SMPS。建議將 5V、3 Amp 直流電源連接到單個 P10 LED 模塊。如果您計劃連接更多模塊,請相應提高您的 SMPS 額定值。

基于 NodeMCU 和 IoT 的實時計分板 - 示意圖

pYYBAGLo7e6AapOSAAGsHXVhxLw325.png

基于物聯網的實時計分板的完整示意圖如上所示。如電路圖所示,首先將一個 9V 直流電源連接到 Arduino Nano,然后將來自 Arduino 的穩壓 5V 直流電源提供給 NodeMCU。對于 Arduino 和 NodeMCU 之間的通信,使用 TX 和 RX 引腳,如圖所示連接。最后,按照上圖所示的電路圖,將 P10 顯示器連接到 Arduino。

在這個項目中,所有的連接都按照上圖進行并焊接在穿孔板上。完成電路圖后,電路板如下圖所示:

pYYBAGLo7emAWDLEAASsYnk6_G0136.png

連接成功后,我已將板子連接到 p10 顯示器并將電路封裝在外殼中,如下圖所示:

poYBAGLo7eWAeOeWAAY8Ox-ZKa4429.png

基于物聯網的記分板的軟件設置

在成功設置硬件之后,現在是時候在編寫代碼之前設置軟件部分了。首先,需要完成 API 設置。為此,請訪問 URL:https ://www.cricapi.com/并注冊以創建一個新帳戶。我們也可以使用我們的 Google 帳戶登錄。

登錄您的 CricAPI 帳戶,每天最多可免費獲得 100 次點擊。儀表板如下所示:

pYYBAGLo7eCAf6ChAAE-G-vtVO4300.png

單擊“ Test CricAPI ”選項并轉到“ Cricket score ”選項。將出現一個窗口,如下所示,其中包含 URL 和示例輸出。復制 URL 以供我們將來參考。我在印度,我喜歡板球,所以我將其配置為顯示板球得分。如果您希望它為任何其他目的配置它,您可以通過稍微更改代碼來輕松完成。

poYBAGLo7dyAX_R5AAGe7A0g814090.png

基于 NodeMCU 和 IoT 的 Live Cricket Board 代碼

在本節中,我們將討論從 HTTP 網站獲取數據并將其顯示到 P10 顯示器所需的代碼,因為我們使用的是 NodeMCU 和 Arduino,因此這些將分為兩個部分。第一個 Arduino 代碼配置 NodeMCU,第二個配置 Arduino Nano。

設置 NodeMCU 以上傳代碼:

如果您是第一次將代碼上傳到 nodeMCU,那么您必須先包含板,使用以下步驟。

要將代碼上傳到 NodeMCU,請按照以下步驟操作:

1.打開 Arduino IDE,然后轉到File–》Preferences–》Settings。

pYYBAGLo7daAEBXyAAAn54RZfaw114.png

2.在 “Additional Board Manager URL ”字段中輸入https://arduino.esp8266.com/stable/package_esp8266com_index.json并單擊“Ok”。

pYYBAGLo7dOAO2rKAADjLhJNu0g680.png

3.現在,轉到工具 》 板 》 板管理器。在 Boards Manager 窗口中,在搜索框中鍵入ESP 8266,選擇最新版本的開發板,然后單擊安裝。

poYBAGLo7c-AIo_HAAFvRy7DM14246.png

4.安裝完成后,進入Tools -》 Board -》 選擇NodeMCU 1.0(ESP-12E Module)?,F在您可以使用 Arduino IDE 對 NodeMCU 進行編程。

完成上述步驟后,現在可以將代碼上傳到 NodeMCU,完整的代碼需要上傳到 NodeMCU。首先,所有必需的庫文件都將包含在代碼中。這里,在這個項目中,ESP8266WiFi.h和ESP8266HTTPClient.h用于使用 ESP8266 NodeMCU Wi-Fi 模塊,ArduinoJson.h用于使用 JSON 庫,用于從 CricAPI 接收信息。

#include  
#include  
#include 

現在,定義了網絡憑據,即 SSID 和密碼。需要將 NodeMCU 連接到互聯網。

const char* ssid = "管理員"; 
const char* 密碼 = "123456789";

然后,為了將 nodeMCU 連接到互聯網,調用 WiFi.begin并將 SSID 和密碼作為其參數。此外,使用波特率 = 115200 初始化串行通信。

Serial.begin(115200); 
WiiFi.begin(ssid,密碼);

在 loop() 內部,傳遞我們之前記下的 API URL,以獲取實時板球比分。在http.begin() 函數中獲取信息。

http.begin("http://cricapi.com/api/cricketScore?apikey=rd0uOcJvvxUCbNlzlsGWyJt3gP53&unique_id=1254075");

現在,通過讀取并在串行監視器上打印 JSON 數據來驗證接收到的 JSON 文件。然后如果接收到的數據是正確的,將其打印在 Serial 上以將其發送到 Arduino。

int httpCode = http.GET(); 
      if (httpCode > 0) 
      {
        字符串負載 = http.getString(); 
        const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(3) + JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(8) + 370;
        DynamicJsonBuffer jsonBuffer(bufferSize); 
        JsonObject& root = jsonBuffer.parseObject(http.getString()); 
        const char* name1 = root["description"]; 
        序列號.println(name1); 
        延遲(10000);
      }

代碼完成后,編譯代碼并上傳到NodeMCU。成功上傳后,現在是時候為 Arduino 編寫代碼了。

對 Arduino Nano 進行編程:

與 NodeMCU 類似,我們需要先對 Arduino 進行編程,然后才能繼續前進并完成代碼。

對于 Arduino Nano,我們必須包含應用程序中使用的所有庫。這里,代碼中使用了“DMD.h”庫和“TimerOne.h”,這兩個庫都可以通過下面給出的鏈接下載。

從 GitHub 下載 DMD.h 庫

從 GitHub 下載 TimerOne.h 庫

下載并包含這兩個庫后,通過包含所有必需的庫來啟動代碼。

#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);

定義了一個函數scan_module(),它通過 SPI 終端持續檢查來自 Arduino Nano 的任何傳入數據。如果是,那么它將觸發中斷以執行用戶在程序中定義的某些事件。

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

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

在這里,串行通信也啟用了串行功能。begin(115200)其中 115200 是串行通信的波特率。

無效設置()
{ 
  Serial.begin(115200);
  Timer1.initialize(2000); 
  Timer1.attachInterrupt(scan_module); 
  led_module.clearScreen(真);
}

在這里,檢查串行數據的可用性,是否有來自 nodeMCU 的有??效數據。接收到的數據存儲在一個變量中,然后打印在 p10 顯示器上。

無效循環()
{
  如果(Serial.available())
{
數據=Serial.readString();
} 
Serial.println(數據); 
(String("Score:")+String(data)).toCharArray(cstr1, 100); 
    led_module.selectFont(字體);

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

led_module.drawMarquee(cstr1,100, (32 * ROW), 0); 
    長開始 = 毫秒();
    長時間的計時=開始;
    布爾標志 = 假;

最后,由于我們需要滾動消息顯示,我們編寫了一個代碼,使用一定的周期將整個消息從右向左移動。

    while (!flag) 
    { 
      if ((timming + 30) < millis()) 
      { 
        flag = led_module.stepMarquee(-1, 0); 
        計時 = 毫秒();
      } 
   } 
}

節點單片機代碼:


#include

#include

#include

const char* ssid = "admin";

const char* 密碼 = "123456789";

整數計數 = 0;

無效設置()

{

Serial.begin(115200);

WiFi.begin(ssid, 密碼);

而(WiFi.status()!= WL_CONNECTED)

{

延遲(1000);

}

}

void loop()

{

if (WiFi.status() == WL_CONNECTED)

{

HTTPClient http;

http.begin(" http://cricapi.com/api/cricketScore?apikey=rd0uOcJvvxUCbNlzlsGWyJt3gP53… ");

int httpCode = http.GET();

如果(http代碼>

{

字符串負載 = http.getString();

const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(3) + JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(8) + 370;

DynamicJsonBuffer jsonBuffer(bufferSize);

JsonObject& root = jsonBuffer.parseObject(http.getString());

const char* name1 = root["description"];

序列號.println(name1);

延遲(10000);

}

http.end();

}

}


Arduino代碼:


#include

#include

#include

#include "SystemFont5x7.h"

#include "Arial_black_16.h"

#define ROW 1

#define COLUMN 1

#define FONT Arial_Black_16

字符輸入;

整數a = 0,b = 0;

整數標志 = 0;

字符 cstr187d072d946209c12755dc9eb28d72c4554dd7f3a55f83672124217d4d3168939QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcZGVmRW1vdGlvblxlbW90aW9uXzEwOC5wbmc=;

DMD led_module(行,列);

字符串數據="";

無效 scan_module()

{

led_module.scanDisplayBySPI();

}

void setup()

{

Serial.begin(115200);

Timer1.initialize(2000);

Timer1.attachInterrupt(scan_module);

led_module.clearScreen(真);

}

無效循環()

{

if (Serial.available())

{

data=Serial.readString();

}

Serial.println(數據);

(String("Score:")+String(data)).toCharArray(cstr1, 100);

led_module.selectFont(字體);

led_module.drawMarquee(cstr1,100, (32 * ROW), 0);

長開始 = 毫秒();

長時間的計時=開始;

布爾標志 = 假;

while (!flag)

{

if ((timming + 30) < millis())

{

flag = led_module.stepMarquee(-1, 0);

計時 = 毫秒();

}

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 顯示模塊
    +關注

    關注

    1

    文章

    46

    瀏覽量

    23524
  • Arduino
    +關注

    關注

    184

    文章

    6427

    瀏覽量

    184834
  • IOT
    IOT
    +關注

    關注

    186

    文章

    3984

    瀏覽量

    193202
收藏 人收藏

    評論

    相關推薦

    自己DIY的乒乓球記分

    本帖最后由 不變的情 于 2013-5-5 09:16 編輯 單片機做的乒乓球電子記分板單片機讀寫PLC的成功,讓自己幸福了周.如今腦袋里沒了想頭,空落落得難受.還是給自
    發表于 05-05 09:13

    PIC24HJ與IPL混亂

    是在條目中保存IPL位,然后將它們修改到ISR的較高優先級,以使舒爾的執行不是中斷。在其中任何,然后寫FIFO和恢復IPL之前返回。我正在編程組裝,FIFO Metotod自己可以
    發表于 01-16 06:00

    IC驗證"UVM驗證平臺"組成(三)

    DUT的輸出并把它們傳遞給scoreboard,完成這個功能的是monitor。驗證平臺要能夠給出預期結果。在記分板中提到了判斷的標準,判斷的標準通常就是預期。假設DUT是加法器,那么 當在它
    發表于 12-02 15:21

    如何構建Arduino官方開發環境

    本系列教程將向大家講述,在自己的計算機上構建完善的嵌入式系統開發環境的方法。本文將向大家講述構建Arduino官方開發環境的方法。Arduino簡介:
    發表于 12-24 06:44

    制作基于Arduino錯誤指示LED

    設計非常重要。從您開始為項目選擇組件的那刻起,您就需要清楚地了解您的最終產品。例如,如果您想設計Arduino 上運行并點亮 L
    發表于 06-23 07:02

    如何使用Arduino構建雞尾酒混合器

    Arduino Nano RP 2040,以及無線網絡。我們的 Arduino 項目的變量在這里,在變量下,您應該能夠看到五不同的布爾變量,其名稱為五種不同的雞尾酒,每個變量都將鏈接到我們儀表
    發表于 07-13 06:38

    使用Arduino Nano Every和Adafruit NeoPixel Matrix的數字Cribbage

    樣。每只手都有不同的分數,并使用傳統的木板記錄分數。木制記分板通常是長方形,上面鉆孔。這些通常有四輪 60 孔。這支持各種游戲類型,我專注于我父母玩的三款游戲,即 2 人短、2
    發表于 08-04 07:23

    為ESP32構建物聯網屏蔽

    描述ESP32 物聯網屏蔽在這個項目中,我們將向您展示如何為 ESP32 構建 IoT shield PCB 和
    發表于 08-12 06:37

    構建自動洗手液分配器

    。因此沒有使用微控制器或 Arduino。引入了兩種設計,您可以自由選擇和構建其中的任何種。第種設計使用 SMD 元件,第二種設計更簡單。它在小型單層 PCB
    發表于 08-17 06:59

    使用Arduino構建數字羅盤

    方向。在本文中,您將學習如何使用 Arduino 構建自己的數字羅盤。通過它,您將能夠了解HMC5883L傳感器的完整操作,來檢測它的方位方向。此外,您將學習如何構建自己的電子羅盤
    發表于 08-25 06:11

    如何在Arduino和ESP上構建按鈕輸入的提示?

    好的,伙計們,這只是關于我如何在 Arduino 和 ESP 上構建按鈕輸入的提示。 如果你看下大多數鍵盤,它們就像矩陣構建: key
    發表于 05-25 08:15

    構建一個藍牙控制的無線記分

     電子記分牌是任何人在任何體育比賽中都可以擁有的最重要的小工具之一。使用傳統方法的舊手動記分牌非常耗時且容易出錯,因此在需要實時更改顯示單元的情況下,必須使用計算機記分牌。這就是為什么在這個項目中,我們將
    的頭像 發表于 08-06 16:36 ?2940次閱讀
    <b class='flag-5'>構建</b>一個藍牙控制的無線<b class='flag-5'>記分</b>牌

    構建溫度傳感設備并將其連接到Arduino IOT

    電子發燒友網站提供《構建溫度傳感設備并將其連接到Arduino IOT云.zip》資料免費下載
    發表于 12-14 11:40 ?1次下載
    <b class='flag-5'>構建</b>溫度傳感設備并將其連接到<b class='flag-5'>Arduino</b> <b class='flag-5'>IOT</b>云

    使用Arduino創建電子記分

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

    使用Arduino Nano和Adafruit NeoPixel

    1層PCB 70 x 120毫米FR-4、1.6毫米,1,帶鉛的HASL,藍色阻焊劑,白色絲印該電路板控制4個NeoPixel LED矩陣板,以制作紙牌游戲的記分板要了解該項目,您需要了解游戲
    發表于 01-05 16:31 ?0次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>