楊葉康
(山東理工職業學院,山東濟寧, 272067)
本文提出的籃球進球自動計數器分為兩個大的模塊。其中主控模塊由單片機、NRF24L01 無線通信模塊、LCD1602液晶顯示器、蜂鳴器組成,從板由單片機,超聲波傳感器、NRF24L01 無線通信模塊組成。兩塊電路板都由五節五號電池串聯供電。系統框圖如圖1、2 所示。

圖2 從板結構框圖
其中,在從板中,超聲波測距傳感器將在籃筐下檢測籃球與籃板的距離,當距離小于某個閾值,則認定為進球有效。在從板上的超聲波傳感器檢測到進球的同時,從板上的NRF24L01 無線通信模塊會和主板上的NRF24L01 無線通信模塊進行通信,從板把進球信息傳輸到主板,主板對進球數加一,并顯示在LCD1602 液晶顯示器上,同時蜂鳴器響一聲,來通過聲音提示進球成功。
本文提出的籃球進球自動計數器硬件設計由AD21 完成。其電路圖如圖3、4 所示。

圖3 主板硬件電路圖

圖4 從板硬件電路圖
其中,在主板中,硬件電路包括單片機最小系統,蜂鳴器模塊電路,供電模塊電路,LCD1602 液晶顯示模塊電路,NRF24L01 無線通信模塊電路。
從板硬件電路包括單片機最小系統,供電模塊電路,超聲波測距模塊電路,NRF24L01 無線通信模塊電路。
以下無論是主板還是從板,對以上提到過的電路進行一一介紹,不重復介紹。
本文提出的籃球進球自動計數器采用STC89C52RC 作為主控芯片。由于該芯片不自帶晶振,所以需要外接晶振。芯片外接晶振的引腳為第18 和第19 引腳。外接晶振的同時,每個引腳接一個33pF 的電容,電容一端接在晶振引腳上,一端接地,電容的作用是濾波。
復位電路在獨立按鍵兩個引腳之間接一個10μF 的電解電容,在電解電容的負極接一個10kΩ 的電阻,電阻的另一端接地。在單片機的第20 引腳和第40 引腳分別接地和電源。之所以在第40 腳電源端接一個104pF 的電容連接到地端,是因為電源有可能不穩定,用于濾波。
由于本設計的主板和從板都是用五節五號電池供電。因為每節五號電池的電壓為1.5V,所以五節加起來共有7.5V 的電壓,而本文所選單片機、超聲波傳感器、蜂鳴器、LCD1602 液晶顯示器的工作電壓是5V,NRF24L01 無線通信模塊的工作電壓是3.3V,所以需要降壓。
從7.5V 降到5V,本文采用的是L7805 降壓芯片。L7805 有三個管腳,輸入管腳為7.5V 的輸入端,輸出管腳為5V 輸出端,公共端接地。如圖3 所示,本文在L7805 的輸出端和地之間并聯了兩個電容,同樣是用于濾波。
從5V 降壓到3.3V 本文采用的是AMS1117-3.3 降壓芯片。降壓電路簡單易懂,輸入為5V,輸出為3.3V。其中兩個VOUT 引腳連在了一起。
超聲波測距模塊是集成模塊,其中的電路不需本文設計,只需把該模塊的電源和地連接上,并把Trig 和Echo引腳連接到單片機上即可。其中Trig 引腳連接在了單片機的P2.1 引腳,Echo 連接在了P2.0 引腳。超聲波模塊采用HC-SR04 型號。HC-SR04 采用CS100A 作為主芯片,采用8MHz 晶振,能準確測量2 ~600cm 的距離。
NRF24L01 同樣是集成模塊,它自帶天線,有一套自己獨特的通信協議。它的通信距離可達1100 米,理論上可實現無數個模塊之間的相互通信。現實中常用的是一收多發,即多個NRF24L01 對同一個NRF24L01 進行發送數據。雖然實際上是串行收發數據,但是由于收發數據的時間極短,可以認為是并發的進行一收多發。
實現一收多發的方式有兩種,一種是所有NRF24L01 模塊采用相同的地址,但采用不同的頻率進行通信;另一種是所有的NRF24L01 采用相同的頻率,而地址則不相同。NRF24L01 支持的頻率范圍為2.4GHz~2.5GHz,因此理論上可以實現一個接收無數個發送,但是由于相鄰頻率容易出錯,因此在現實中無法實現太多NRF24L01 同時向一個NRF24L01 發送數據。
另外需要注意的是,本文采用的單片機是5V 供電,而NRF24L01 無線通信模塊是3.3V 供電,所以存在電平不兼容的問題,因此需要在NRF24L01 模塊的引腳和單片機的引腳之間串470Ω 的電阻。這樣才能實現單片機和該無線通信模塊之間的連接。
LCD1602 液晶顯示器共有16 個引腳,由于LCD1602是并行數據傳輸,所以其中有8 個數據引腳,本文把它們接在了單片機的P2 口上,如果單片機的I/O 引腳不充足的情況下,還可以使用74HC595 來串轉并進行單片機接口的擴展。另外還有3 個控制引腳,他們分別是數據命令選擇引腳RS,讀寫選擇引腳RW 和使能信號引腳E。他們被分別接在了P1.1、P1.2 和P1.3 管腳。LCD1602 的第3 引腳需要接一個電位器,電位器的兩端分別接電源和地,調整電位器可用于調節1602 的背光燈亮度。
蜂鳴器用于提示進球的有效性,雖然它是由0 和1 來控制,但是它是一個功率器件,需要大的電流來驅動才可以正常工作,因此不能直接接在單片機的引腳上,因為單片機的驅動能力是有限的,而三極管有放大作用,它有放大電流的作用,恰好可用于放大單片機的微弱電流,因此本文在蜂鳴器和單片機之間連接了一個PNP 型三極管用于驅動蜂鳴器。值得注意的是,本文采用的是有源蜂鳴器。之所以采用有源蜂鳴器是因為有源蜂鳴器自帶振動源,驅動簡單,發聲清脆,其功能符合本文的要求。
本文所提出的籃球進球自動計數器分為主板和從板,由于主板和從板上都有各自的單片機,并且實現的功能不同,因此軟件也分為兩套,一個是主板上的軟件,一個是從板上的軟件。其程序流程圖分別如圖5、6 所示。

圖5 從板軟件流程圖

圖6 主板軟件流程圖
對于從板,首先進行系統初始化,其中包括變量的初始化,定時器的初始化,NRF24L01 引腳的初始化,當然,對于STC89C52RC 并不需要,還包括NRF24L01 無線通信模塊的檢測,NRF24L01 模塊的初始化(主要是初始化的設置,包括地址,頻率等),還有設置NRF24L01 為發送模式,初始化的最后一步就是延時,延時的作用就是等待系統穩定之后再進行工作。
然后從板不斷地進行測距,當距離小于20cm 的時候,判斷進球有效,無線通信模塊把進球信息發送給主板。從板在使用超聲波測距的時候用到了定時器,超聲波測距的原理就是,首先,超聲波傳感器發出超聲波,然后定時器開始計時,當超聲波碰到障礙物(這里指籃球)返回到超聲波傳感器定時器計時停止,根據超聲波在空氣中傳播的速度,再根據定時器計時的時間,從而計算出超聲波傳感器與障礙物的距離。這里設定閾值為20cm,也即當超聲波傳感器與籃球的距離小于20cm 的時候判斷為籃球進球成功;接下來單片機控制NRF24L01 模塊發送一個字符串到主板。
而主板不斷地在等待接收從板發過來的字符串信息,當從板向主板發送字符串信息的時候,主板才能成功接收,進而主板上的主控芯片控制液晶顯示模塊顯示出來進球數量,至此,一個有效的進球成功顯示了出來。如此循環往復,軟件即可完成籃球進球的持續計數。
主板的軟件初始化包括了變量的初始化,LCD1602 液晶的初始化,NRF24L01 的引腳初始化,NRF24L01 的檢查,NRF24L01 的設置初始化,接收模式的設置,LCD1602 固定字符的顯示,以及用于等待系統穩定的延時。
經過一系列步驟成型的籃球進球自動計數器實物如圖7所示。
圖7 左側為從板,右側為主板。把從板安裝在籃球框下面的籃板上,主板則放在容易觀察的地方,比如桌子上。每當進球成功后,從板會檢測到進球并把進球信息發送給主板,主板上的LCD1602 顯示的數字就會加一并伴有蜂鳴器的響聲。

圖7 籃球進球自動計數器實物圖
實踐證明,本文所設計的籃球進球自動計數器是可行的、切實有效的。它能夠在不用人為操作的情況下實現自動籃球進球計數,并顯示出來。有助于投籃訓練、投籃比賽等諸多體育運動的進行。
本文設計并實現了一款籃球進球自動計數器。該計數器分為兩個大的模塊,分別為主板和從板。主板和從板都由單片機控制。從板由單片機,超聲波傳感器和NRF24L01 無線通信模塊組成,固定在籃球框下面的籃板上,用于檢測籃球的進球;主板由單片機,NRF24L01、蜂鳴器和LCD1602組成,放在易于觀察的位置,用于與從板通信并顯示進球數。
經過測試,本文所提出的計數器可用于籃球投球訓練、投籃比賽等場合,其完全解放了人力,不再需要人工手動計數,而是全自動進行進球計數,還有進球提示功能。