鄭中華,柳煌達(dá),項 凱,林章達(dá),熊建輝
?
嵌入式智能云簽到系統(tǒng)的設(shè)計與實(shí)現(xiàn)
鄭中華,柳煌達(dá),項 凱,林章達(dá),熊建輝
(福建師范大學(xué)協(xié)和學(xué)院,福建 福州 350117)
根據(jù)課堂簽到無紙化、智能化的要求,設(shè)計了一款嵌入式云簽到系統(tǒng),介紹了系統(tǒng)整體結(jié)構(gòu)以及軟硬件設(shè)計方案。系統(tǒng)終端由51單片機(jī)硬件平臺和嵌入式軟件構(gòu)成,使用RC522射頻模塊完成用戶信息的采集,經(jīng)由TCP通信協(xié)議上傳到上位機(jī),上位機(jī)接收完成后,在Java 平臺下對數(shù)據(jù)進(jìn)行解碼,獲得人員信息,最后將其記錄于數(shù)據(jù)庫中,完成一次簽到。同時,我們還基于阿里云服務(wù)器搭建了簽到系統(tǒng)云平臺,管理者可通過以太網(wǎng)終端,對簽到系統(tǒng)進(jìn)行遠(yuǎn)程訪問。經(jīng)過測試表明,云簽到系統(tǒng)運(yùn)行正常,能夠順利完成簽到功能。
嵌入式系統(tǒng);云平臺;簽到系統(tǒng)
課堂教學(xué)是學(xué)校教學(xué)中的重要部分,是學(xué)生獲取知識的主要途徑。然而,現(xiàn)在高校中學(xué)生逃課的現(xiàn)象卻非常普遍[1]。逃課不僅嚴(yán)重影響了學(xué)校教學(xué)工作的正常開展,也阻礙了大學(xué)生專業(yè)知識技能和綜合素質(zhì)能力的提高。目前,高校課堂簽到方式呈現(xiàn)出多樣化,但是大多數(shù)教師仍采用原始紙質(zhì)名單點(diǎn)名的方式來簽到,部分教師采用了電子化的簽到方式,如藍(lán)牙[2]、二維碼[3]、RFID[4,5]等,這些方式各有優(yōu)缺點(diǎn)。藍(lán)牙技術(shù)可完成主動簽到,速度快,但是對手機(jī)有要求,且需要在教室內(nèi)布置信標(biāo)設(shè)備作為參考節(jié)點(diǎn),成本較高;二維碼技術(shù)雖然成本低,使用方便,但是存在技術(shù)漏洞,難以保證簽到數(shù)據(jù)的真實(shí)性;RFID技術(shù)可直接使用學(xué)生的校園卡進(jìn)行簽到,成本較低,但是目前大多數(shù)的RFID簽到系統(tǒng)無法對學(xué)生簽到信息進(jìn)行可視化管理。基于以上分析,我們設(shè)計了一款基于51單片機(jī)的低成本嵌入式智能云簽到系統(tǒng),學(xué)生只需在讀卡器刷卡,系統(tǒng)就會記錄此卡的信息與刷卡時間,與數(shù)據(jù)庫對比即可實(shí)現(xiàn)課堂簽到功能。同時,我們還基于阿里云服務(wù)器搭建了簽到系統(tǒng)云平臺,管理者可通過以太網(wǎng)終端,對簽到系統(tǒng)進(jìn)行遠(yuǎn)程訪問,便于對學(xué)生的簽到信息進(jìn)行管理。
系統(tǒng)由嵌入式簽到系統(tǒng)終端、上位機(jī)PC機(jī)以及應(yīng)用軟件和云平臺三部分組成。簽到系統(tǒng)終端由51單片機(jī)和嵌入式軟件構(gòu)成,使用RC522模塊采集用戶數(shù)據(jù)。采集完成后經(jīng)過ESP8266模塊采用TCP通信的方式傳送至上位機(jī)PC機(jī)。上位機(jī)接收完成后,在Java 平臺下對數(shù)據(jù)進(jìn)行解碼,獲得人員信息,最后將其記錄于數(shù)據(jù)庫中,完成一次簽到。同時,我們還基于阿里云服務(wù)器搭建了簽到系統(tǒng)云平臺,管理者可通過以太網(wǎng)終端,對簽到系統(tǒng)進(jìn)行遠(yuǎn)程訪問。系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)
硬件平臺由主控芯片51單片機(jī)、RFID讀寫模塊RC522、無線模塊ESP8266、OLED液晶顯示屏構(gòu)成。其中,主控芯片是硬件的核心模塊,采用的是低成本的STC12C5A60S2單片機(jī)。RFID讀寫模塊采用的是MF RC522模塊,主頻為13.56MHz,和校園卡的頻段一致[6]。系統(tǒng)采用51單片機(jī)的模擬SPI接口和RC522通訊。無線模塊采用的是ESP8266,單片機(jī)采用自帶的UART接口和ESP8266通訊。顯示屏采用OLED,單片機(jī)采用模擬IIC接口和OLED通訊。
STC12C5A60S2單片機(jī)通過SPI總線通訊協(xié)議與RC522模塊進(jìn)行傳輸數(shù)據(jù)。SPI總線是一種同步串行外設(shè)接口,它可以使MCU與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息。該接口一般使用4條線:串行時鐘線(SCLK)、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI和低電平有效的從機(jī)選擇線NSS。我們使用單片機(jī)的P23引腳作為NSS功能、P22引腳作為SCK功能、P21的MOSI功能、P20功能作為MISO引腳分別與RC522的NSS、SCK、MOSI、MISO相連,然后使用軟件模擬SPI的方式與RC522模塊進(jìn)行通信[7]。
當(dāng)單片機(jī)可以與RC522模塊進(jìn)行正常的數(shù)據(jù)傳輸時,我們就可以利用單片機(jī)去控制RCC522與校園卡交換數(shù)據(jù)。單片機(jī)與M1卡交換數(shù)據(jù)的過程:
(1)首先,由單片機(jī)發(fā)送指令給RC522模塊;
(2)RC522模塊執(zhí)行指令并將其轉(zhuǎn)換為射頻信號發(fā)送給校園卡;
(3)校園卡接收到來自RC522模塊的指令后,按指令完成其內(nèi)部的各種處理,并回送應(yīng)答信號/數(shù)據(jù)給RC522模塊;
(4)RC522模塊接收卡回送的射頻信號并將其轉(zhuǎn)換為數(shù)字信號輸出給單片機(jī),單片機(jī)讀取RC522模塊接收到的應(yīng)答/數(shù)據(jù),即可完成與校園卡的數(shù)據(jù)交換。
整個過程使用到的函數(shù)如下:
RC522_init();
PcdRequest(Find_14443A,Card_Info_Buf);
Read_Card_Code();
PcdAnticoll();
PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen)
ESP8266模塊是通過接收AT指令來開啟本身所具有的各種功能,AT指令是應(yīng)用于終端設(shè)備與PC應(yīng)用之間的連接與通信的指令。AT即Attention。每個AT命令行中只能包含一條AT指令;對于AT指令的發(fā)送,除AT兩個字符外,最多可以接收1056個字符的長度(包括最后的空字符)。該模塊的通訊方式為UART串口協(xié)議,STC12C5A60S2單片機(jī)本身具有兩個串口功能,我們使用串口1用于下載與調(diào)試,串口2用于與ESP8266模塊數(shù)據(jù)交互[8]。ESP8266模塊是通過TCP/IP與我們的上位機(jī)進(jìn)行數(shù)據(jù)傳輸,其傳輸流程使用到的函數(shù)如下:
Second_2_AT_Command("AT+CWMODE=3","OK", 1000);
Second_2_AT_Command("AT+CWJAP="123", "12345678"","OK",1500);
Second_2_AT_Command("AT+CIPMUX=0","OK", 2000);
Second_2_AT_Command("AT+CIPSTART="TCP", "192.168.43.76",6800","OK",1500);
Second_2_AT_Command("AT+CIPMODE=1","OK", 1000);
Second_2_AT_Command("AT+CIPSEND","OK", 1000)
STC12C5A60S2單片機(jī)是通過IIC總線通訊協(xié)議與OLED液晶顯示屏進(jìn)行傳輸數(shù)據(jù)。I2C需要兩條總線線路,一條是串行數(shù)據(jù)線SDA,一條是串行時鐘線SCL。由于STC12C5A60S2單片機(jī)本身沒有集成IIC的硬件功能,需要用兩個引腳通過編程的方式去模擬IIC通訊時序協(xié)議。本項目用單片機(jī)的P2.3模擬串行數(shù)據(jù)線SDA,P2.4模擬串行時鐘線SCL,程序代碼需要根據(jù)IIC協(xié)議控制引腳與顯示屏進(jìn)行數(shù)據(jù)傳輸[9]。
用取模軟件PCtolLCD2002對顯示屏要顯示的內(nèi)容進(jìn)行取模,如圖2所示,將取模得到的數(shù)據(jù)再寫在程序里,通過IIC協(xié)議發(fā)送給OLED顯示屏,顯示屏就會顯示我們所取模的內(nèi)容。
OLED液晶顯示屏所用到的函數(shù)如下:
OLED_Init();
OLED_P14x16Ch(x,y,F16x16[i]);
OLED_CLS()
圖2 取模軟件對顯示屏顯示的內(nèi)容取模
簽到系統(tǒng)支持TCP協(xié)議,可采用透傳的方式與PC進(jìn)行通信,由于TCP需要同時在線才能通信,因此對數(shù)據(jù)的完整性比較嚴(yán)格。系統(tǒng)將電腦端上位機(jī)設(shè)置為服務(wù)端,簽到系統(tǒng)設(shè)置為客戶端。客戶端向服務(wù)端發(fā)送校園卡的ID信息給服務(wù)端,服務(wù)端發(fā)送實(shí)時時間和合法非法信息給客戶端。TCP通信軟件設(shè)計需要使用bind()接口實(shí)現(xiàn)套接字綁定,以及accept()等待連接,具體函數(shù)內(nèi)容如下:
struct sockaddr_in sockaddr;//創(chuàng)建套接字
bind(sock, (struct sockaddr *)&sockaddr, sizeof (struct sockaddr));// 套接字綁定
accept(sock, (struct sockaddr *)&clientaddr, &addr_ len);//等待連接
課堂簽到系統(tǒng)的上位機(jī)采用QT設(shè)計界面,Qt是一個基于C++的跨平臺應(yīng)用程序和UI開發(fā)框架[10]。首先采用QT設(shè)計一個簡單界面,用到了按鈕類,標(biāo)簽類,編輯框類。上位機(jī)界面如圖6所示。
SQLite3是一款輕型的數(shù)據(jù)庫,它包含在一個相對小的C庫中。它的設(shè)計目標(biāo)是嵌入式的,目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,只需要幾百K的內(nèi)存就夠了[11,12]。
當(dāng)有校園卡刷卡時,系統(tǒng)會讀出UID顯示在顯示屏上,同時將UID發(fā)送至上位機(jī),然后上位機(jī)將UID與數(shù)據(jù)庫中的用戶數(shù)據(jù)進(jìn)行比對,根據(jù)比對結(jié)果,來執(zhí)行不同的動作,主要用到的數(shù)據(jù)庫函數(shù)如下所示:
QString("select * from tbl_user where user_cardID=' %1' ;").arg(user_cardID); //數(shù)據(jù)庫查詢語句
QString("insertbl_uservalues('%1','%2','%3','%4');").arg(line_cardID->text(),line_Name->text(),line_stuID->text(),line_prof->text()); //數(shù)據(jù)庫注冊語句
QString("update tbl_user_stuID='%1';").arg(tableWidget->item(row,column)->text());//數(shù)據(jù)更新語句
QString("delete from tbl_user where user_stuID= '%1';").arg(tableWidget->item(rowIndex,1)->text());//數(shù)據(jù)庫刪除語句
圖4是用戶注冊功能流程圖,首先用戶刷卡,系統(tǒng)讀取卡的序列號與數(shù)據(jù)庫中對比,如果注冊記錄刷卡時間,否則出現(xiàn)提示框詢問是否注冊,點(diǎn)擊注冊輸入卡信息,比如用戶姓名,學(xué)號,專業(yè)。判斷學(xué)號是否重復(fù),然后存入數(shù)據(jù)庫。
圖5是銷戶功能流程圖,點(diǎn)擊管理按鈕會出現(xiàn)用戶信息,用戶點(diǎn)擊需要刪除的用戶會彈出提示框,點(diǎn)擊確認(rèn)后系統(tǒng)根據(jù)學(xué)號查詢數(shù)據(jù)庫的用戶并刪除。
圖5 銷戶功能
圖6是修改用戶信息功能流程圖,點(diǎn)擊修改按鈕進(jìn)入修改界面,點(diǎn)擊需要修改的用戶信息,雙擊輸入修改后的信息,并且修改后的學(xué)號不能與數(shù)據(jù)庫中學(xué)號沖突,修改成功更新數(shù)據(jù)庫信息并刷新界面。
圖6 修改功能
網(wǎng)頁采用sqlite3為數(shù)據(jù)庫并與上位機(jī)交互,web前端采用html、css、js,后臺采用mvc架構(gòu),使用servlet,jsp技術(shù),服務(wù)器采用阿里云服務(wù)器。后臺與數(shù)據(jù)庫交互使用jdbc[11,12]。
設(shè)計思路:每次訪問頁面將跳轉(zhuǎn)到后臺jdbc提取數(shù)據(jù)庫內(nèi)容,再傳入jsp中并遍歷顯示在頁面中。頁面中提供顯示功能,而對頁面的增刪改查則需要賬戶密碼跳轉(zhuǎn)到另外一個頁面。本增刪改查功能實(shí)現(xiàn)了登錄保護(hù),有效保護(hù)了后臺數(shù)據(jù)安全。
開發(fā)工具主要包括Eclipse、JDK1.8、Tomcat8.5、mysql、navicate、瀏覽器。
關(guān)于實(shí)現(xiàn)功能主要用到以下函數(shù)、事件以及sql語句:
(1)點(diǎn)擊事件訪問頁面
(2)查找頁面數(shù)據(jù)
Public void searchsign(HttpServletRequest request, HttpServletResponse response)
public boolean updatesign(Sign sign)
String sql="select * from t_sign where tch_id=?"; //查找語句
request.setAttribute("signlist", signlist);//獲取實(shí)體
(3)跳轉(zhuǎn)到訪問頁面
request.getRequestDispatcher("/sign/edit_sign.jsp"). forward(request, response);//跳轉(zhuǎn)函數(shù)
ArrayList
本網(wǎng)頁使用阿里云服務(wù)器,并提供了個域名,方便用戶進(jìn)行遠(yuǎn)程訪問。
設(shè)計思路:在云服務(wù)器上面部署javaweb環(huán)境變量,并且將web轉(zhuǎn)換為war包,放在tomcat的webapp文件下,并且修改service.xml文件,使main.jsp為默認(rèn)主頁。再將域名解析到此ip上,開放80端口使客戶可直接域名訪問。
阿里云服務(wù)器配置,服務(wù)器環(huán)境變量信息如下[13]:
(1) tomcat 8.5
(2) jdk1.8.0_111
(3) Mysql 5.6
(4) Windons操作系統(tǒng)
其中,當(dāng)終端設(shè)備上線后,可通過38.108.82.79 ip地址,或cuc.it.com訪問本網(wǎng)站,其訪問詳情如圖7所示。
圖7 網(wǎng)站訪問詳情
本文設(shè)計了一種基于51單片機(jī)低成本方案的嵌入式智能云簽到系統(tǒng),硬件平臺由51單片機(jī)、RFID讀寫模塊、無線模塊、OLED液晶顯示屏組成,系統(tǒng)通過RFID讀寫模塊獲取用戶的校園卡信息,經(jīng)由TCP通信協(xié)議上傳到上位機(jī),上位機(jī)接收完成后,在Java 平臺下對數(shù)據(jù)進(jìn)行解碼,獲得人員信息,最后將其記錄于數(shù)據(jù)庫中,完成一次簽到。同時,我們還基于阿里云服務(wù)器搭建了簽到系統(tǒng)云平臺,管理者可通過以太網(wǎng)終端,對簽到系統(tǒng)進(jìn)行遠(yuǎn)程訪問。此設(shè)備操作簡單,價格低廉,可基于云平臺進(jìn)行簽到信息管理,具有廣泛的應(yīng)用前景。
[1] 邱熙. 大學(xué)生逃課的自我歸因[J]. 綿陽師范學(xué)院學(xué)報, 2005(04): 76-81.
[2] 戴志誠, 周家瑤. 基于藍(lán)牙4.0的課堂簽到系統(tǒng)設(shè)計與開發(fā)[J]. 計算機(jī)應(yīng)用與軟件, 2018, 35(02): 273-278.
[3] 劉翔, 胡彧, 韓書. 基于二維碼的會議簽到系統(tǒng)設(shè)計[J]. 電子器件, 2014, 37(05): 1013-1016.
[4] 張晨亮, 凌云峰, 王文, 畢濤. 基于RFID的實(shí)驗簽到系統(tǒng)設(shè)計與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù), 2015, 38(01): 106-108.
[5] 楊士卿. 基于B/S的一卡通會議簽到系統(tǒng)設(shè)計與實(shí)現(xiàn)[J]. 軟件, 2018, 39(05): 66-69.
[6] 許毅, 陳建軍. RFID原理與應(yīng)用[M]. 北京: 清華大學(xué)出版社, 2013: 170-176.
[7] 陳中, 丁圣均. 基于單片機(jī)的門禁控制系統(tǒng)設(shè)計[J]. 江蘇工程職業(yè)技術(shù)學(xué)院學(xué)報, 2015, 15(04): 24-28.
[8] 王小娟. 基于ESP8266無線傳輸?shù)臏貪穸葯z測儀設(shè)計[J]. 九江職業(yè)技術(shù)學(xué)院學(xué)報, 2017(04): 22-24+32.
[9] 劉勇. 基于MSP430F149的OLED顯示系統(tǒng)的設(shè)計[J]. 電子技術(shù)與軟件工程, 2013(21): 177-179.
[10] 陸文周. Qt5開發(fā)及實(shí)例[M]. 電子工業(yè)出版社, 2015: 162-168.
[11] 王志剛, 江友華. MySQL 高效編程[M]. 北京: 人民郵電出版社, 2012. 1: 89-95.
[12] 唐敏, 宋杰. 嵌入式數(shù)據(jù)庫SQLite的原理與應(yīng)用[J]. 電腦知識與技術(shù), 2008(04): 600-603.
[13] 高世皓, 王立華, 朱吉芳, 周松江. 基于CC3200及微信公眾號的云家居交互系統(tǒng)[J]. 電子技術(shù)應(yīng)用, 2018, 44(03): 52-55.
Design and Implementation of Embedded Intelligent Cloud Sign-in System
ZHENG Zhong-hua, LIU Huang-da, XIANG Kai, LIN Zhang-da, XIONG Jian-hui
(Concord University College Fujian Normal University, Fuzhou 350117, China)
According to the requirements of paperless and intelligent classroom sign-in, an embedded cloud sign-in system was designed, and the overall structure of the system and the software and hardware design scheme were introduced. The system terminal is composed of 51 single-chip hardware platform and embedded software. The RC522 RF module is used to complete the collection of user information, and the information is uploaded to the host computer via the TCP communication protocol. After the host computer receives the data, the data is decoded in the Java platform to obtain the personnel information. Finally, record it in the database and complete a sign-in. At the same time, we also built a sign-in system cloud platform based on Alibaba Cloud Server, and the administrator can remotely access the sign-in system through the Ethernet terminal. After testing, the cloud sign-in system is running normally and can successfully complete the sign-in function.
Embedded systems; Cloud platform; Sign-in system
TP311
A
10.3969/j.issn.1003-6970.2018.11.005
福建師范大學(xué)協(xié)和學(xué)院教育教學(xué)改革項目(JG20180108)、福建省本科高校教育教學(xué)改革研究項目(FBJG20170289)、福建省中青年教師教育科研項目(JAT170868)、福建省中青年教師教育科研項目(軟件和信息技術(shù)專項) (JZ170367)
鄭中華(1985-),男,中級工程師,主要研究方向:RFID技術(shù)及智能傳感器;柳煌達(dá)(1997-),男,本科生,主要研究方向:嵌入式軟件;項凱(1997-),男,本科生,主要研究方向:嵌入式軟件;林章達(dá)(1997-),男,本科生,主要研究方向:嵌入式軟件;熊建輝(1982-),男,系統(tǒng)分析師、講師,主要研究方向:物聯(lián)網(wǎng)技術(shù)。
鄭中華,柳煌達(dá),項凱,等. 嵌入式智能云簽到系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J]. 軟件,2018,39(11):21-25