第二章 系统框架及功能介绍
本章主要简单概述本文主要设计的内容以及系统框架介绍,并且在应用技术方面做一个简单的阐述,以方便了解到整个项目的设计思路以及核心。
2.1系统框架
系统设计原型源自于学习每个教室门口张贴的课程信息表。将纸质的课程信息表更换为更为先进的显示系统,并整合多项功能,使其成为配合教务管理系统的嵌入式硬件设备。本系统主要功能有:课程显示;教室信息显示;上课打卡;远程遥控管理等。
系统框架图如图2.1所示:
图2.1 系统框架图
第三章 系统硬件与功能外设
本章主要介绍系统硬件外设的功能原理和选型。根据上文系统框架图中可得知,系统硬件设备分为六个模块:分别为STM32单片机、TFT-LCD显示模块、Wi-Fi模块、RFID模块以及SD卡和蜂鸣器,系统模块连接如下图3.1:
图3.1 设备模块连接图
如图所示,系统主要基于STM32单片机为核心,其中系统的核心功能为LCD显示模块显示课程表信息;Wi-Fi模块主要负责与云端进行通讯获取指令和信息;RFID模块则模拟学生上课打卡的功能,统计已到学生;SD卡作为存储介质放置教室课程信息。
3.1 STM32
3.1.1 STM32简介
STM32 系列是ST公司推出的一款基于ARM® Cortex®内核的 32位微处理器和微控制器,STM32系列产品专注为高性能、低成本、低功耗而设计的嵌入式系统应用。比起之前比较传统的51单片机,STM32系列对主控制器的速度有了较大的提升,速度对系统的操作流程和性能有着关键性的影响。对设备体积和功耗要求来说,STM32系列都能够比较出色的满足系统的要求。
3.1.2 芯片选型
根据设计内容需求,经过了各型号性能的对比和分析,最终确认芯片选取的是STM32F103RCT6,这款STM32芯片采用了基础型72MHz的Cortex-M3内核。Cortex-M3是一个32位处理器的内核,内部的数据路径,一般采用32位寄存器以及存储器接口;采用哈佛结构,拥有独立的指令总线以及数据总线,可以并行取值和数据访问。
STM32的高性能Cortex-M3 内核速度可达 1.25DMips/MHz,最高工作频率可达72MHz。存储器根据不同型号上集成了32-512Kb的Flash存储器,以及6-64Kb的SRAM存储器。含有 1us的双12位ADC,4Mbps的UART,18Mbps的SPI,18MHz的I/O口翻转速度等特点;
图3.2 MCU内部构造图[4]
第四章 系统固件与算法介绍
本章主要讲解本系统的驱动核心:固件的部分关键代码和算法。根据系统功能,软件代码主要分为四大板块,其中有:FATFS文件管理和SD卡文件读取模块、机智云协议与Wi-Fi模块通讯、RFID无线射频技术以及LCD课程表显示模块,本章将对各个模块不同的功能及算法进行详细讲解介绍,以下图4.1是介绍本系统工程主要的程序流程:
图4.1 程序流程图
4.1文件读取管理
本系统主要设计的文件存储介质为SD卡,利用SPI串行外围设备接口进行通讯;将本学期每个教室的课程数据信息提前存入SD卡里面,设备将通过FATFS文件管理打开SD卡的文件并将读取到的信息经过计算得出不同时段显示的信息。
4.1.1 FATFS文件系统介绍
FATFS是一个完全开源免费的文件系统管理模块,专门用于小型的嵌入式系统中实现FAT(File Allocation Table)文件系统管理。它完全用标准的C语言编写而成,所以具有很好的硬件平台独立性,经过简单的修改后即可完整移植到8051、AVR、PIC、SH、ARM等系列单片机上。FATFS组件的编写遵循ANSI C(C89),因此可以完全分离于磁盘的I/0层而不依赖于硬件平台。
FATFS有以下特点:
(1)Windows兼容的FAT文件系统(支持FAT12/FAT16/FAT32)
(2)代码与硬件平台无关,移植简单
(3)代码量较少、效率高、使用方便
(4)支持多个存储媒介
(5)有独立的缓冲区,可以对多个文件进行读写
(6)针对8位单片机和16位单片机做了相关优化
正是因为FATFS本着免费、开源的原则,使得FATFS在小型嵌入式设备应用非常的广泛。FATFS的模块层次结构图如下图4.2所示:
图4.2 FATFS 层次结构图[7]
第五章 系统综合测试
本章主要讲解系统的综合测试,查看系统能否根据设计思路正常运行。测试步骤分为串口调试以及机智云调试。
5.1 串口调试
为了查看系统运行过程中,代码算法能否达到设计要求。本次利用串口调试软件XCOM进行系统软件调试,将信息利用串口不停打印到电脑上,可以清晰的观察到代码运行过程一些关键的运算数值和情况。
在前文提到,我们在date.txt文件中存入了学期开学日期以及教室号信息,通过计算开学至今经过多少天以方便计算当前周周数。为了确保读取过程中正确读取相关信息以及算法正确,我们将current_month、current_day、current_class以及daytime通过printf的方式打印在串口中,同时打印出Wi-Fi模块在机智云云端获取的时间函数gizwitsGetNTP()的返回值,如图5.1所示:
图5.1 串口调试
根据图5.1所示,我们存入的开学日期文件为20200302203,而current_month、current_day、current_class分别一一对应上,根据gizwitsGetNTP所返回的时间通过计算得出距离本学期开学daytime数值也是正确的,证明代码算法正确读取了文件内容。
5.2 机智云调试
在硬件平台搭建基本完成后,为了确保MCU代码移植成功与设备云端通讯正常,系统分别进行了虚拟设备的测试和实际设备测试。
首先根据前文提到的云端数据点定义完成后,对进行了虚拟设备的调试,通过对虚拟设备进行模拟真实设备进行通讯处理数据,可以快速检验接口功能的开发情况。图5.2为手机端Demo APP调试界面,图5.3为云端虚拟设备上报数据情况与通讯日志。
图5.2手机端Demo APP 调试界面
经过虚拟设备的调试后确保虚拟设备定义点与云端通讯正常,系统将进入设备实测。开启电源,系统通过初始化完成后,系统进入无线循环while(1)内。此时根据代码设计, Wi-Fi模块与云端进行通讯自动获取时间信息,课程表必须经过联网成功后才自动显示出来,系统开启后如图5.4所示:
图5.4系统初始化成功界面
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。