4.2.2 传感器DHT11子程序设计
通过单总线协议与上位机(控制器)进行数据的通信。DHT11传感器需遵循严格的读写协议以此保证数据完整性。其流程图如图23所示,整个读写分为上位机起始信号的发送、上位机接收下位机的握手响应信号、读‘0’和读‘1’四个步骤[19]。通过单总线访问DHT11顺序归纳如下:
① 主机发开始信号;
② 主机等待接收DHT11响应信号;
③ 主机连续接收40Bit的数据和校验和;
④ 数据处理。
图23 传感器DHT11子程序流程图
传感器数据输出的是未编码的二进制数据,一次完整的数据传输为40bit,高位先出且需分别处理。
数据格式:8bit湿度整数数据+8bit湿度小数数据
+8bit温度整数数据+8bit温度小数数据+8bit校验和。
其中,校验和数据为前四个字节相加。
5. 系统调试与实现
5.1 运动控制部分调试
运动控制部分采用unSP IDE 2.0.0开发软件进行相关设计及调试[20],其具体步骤如下:
(1) 打开unSP IDE 2.0.0开发软件,新建工程。
(2) 编辑程序。
(3) 复制语音识别、语音播放所需的支持文件到项目工程中,主要包括:语音识别函数库bsrv222SDL.lib、语音识别头文件bsrSD.inc和bsrSD.h、语音播放支持文件Sacmv26e.lib、Hardware.asm和Hardware.inc,此外,由于本设计采用SACM-S480语音压缩算法,故还需要SACM-S480头文件S480.h[21]。
(4) 用PC语音提示及小车应答音,不宜过长,1.3秒左右。
(5) 采用凌阳语音压缩工具Compress Tool将录制的语音压缩成S480格式,并添加到项目工程中。
(6) 代码下载。
成功下载后,根据提示,对小车进行应答式训练,训练成功后,即可实现小车语音控制。在实际应用中,若对训练结果不满意或者其他人想对其训练和控制时,可利用61板上的KEY3键,对其重新训练。
5.2 环境监测部分调试
环境监测部分采用Keil uVision3开发软件进行程序设计及调试,其过程如下:
(1)打开Keil uVision3开发软件,新建工程。
(2)编辑程序并添加到工程中,选择目标器件,进行相关设置。
(3) 编译链接生成目标hex文件。
(4)代码下载。
成功下载后,根据环境实际情况,对相关传感器进行精度调整,以实现环境的真实监测。由于此类传感器容易受温度、湿度及光线的影响,须对其进行避光处理、温湿度补偿等,确保系统精确、稳定工作。
5.3 常见问题及解决
在系统调试的过程中,遇到很多问题,经过查阅文献和不断专研,不论是硬件电路问题还是软件的调试问题,最终都被一一解决,系统功能得以实现。现将调试中的问题及解决方法说明如下:
问题一,如何判定小车是否被训练过?
程序中利用一个特殊的FLASH单元,即语音模型存储区的首单元来判定。当FLASH经初始化或被擦除后,存储区单元的值为0xffff;成功训练并存储后由辨识器自动生成为0x0055,以此单元的值即可判定小车是否已被训练过。
问题二,转弯不灵敏。
由于车体的限制及电机驱动能力有限,有时会出现轮向时偏转不到位,转弯不灵敏的情况。经过多次调试试验,利用程序增加电机驱动的延时时间,使转向有较大的偏转后,再使两电机同时正转,实现小车稳定转向。
问题二,人体感应。
由于起初人体感应模块完全受热源控制,即一直处于开启状态,影响小车调试运行及人体感应的灵敏性,造成诸多不便。经过多次调试试验,添加一个控制开关,人为控制是否对人体感应,即当该开关处于关闭状态时,即使有热源经过时,也不会报警,问题得到解决。 51单片机智能小车控制系统设计(11):http://www.751com.cn/zidonghua/lunwen_1557.html