任务书

公交报站器由控制模块STC89C52单片机作为控制核心,硬件电路分为12864液晶屏、ISD1730语音芯片、温湿度传感器和红外传感器等模块。该系统的功能是:首先可以通过八个按键实现“上行报站”、“下行报站”、“语音重播”、“报站器复位”四个功能以及完成时钟参数设置等功能,其次可以实现站点信息语音组合播报和温湿度检测及相应提示;最后可以通过红外传感器自动感应公共汽车是否到达站台,检测到站台后,自动触发报站器语音播报站点信息,和提示语信息。

开发思路:

这个系统的设计需要完成硬件平台和软件平台的搭建,主要的一个特点是涉及的外设比较多,所以对于程序部分的逻辑设计显得尤其重要,另外使用的51单片机,所以性能不一定够用,其内部的资源也确实少的可以,

硬件平台:

根据题目的要求,我打算采用以核心板为中心,分别通过外部引线的方式,将不同的模块进行连接,实现这个系统的功能,也就是最后会将各个模块用杜邦线的形式进行连接,因为考虑到任务的时间太短,不能实现最高程度的集成化设计,所以打算采用选用模块化设计。

note:初步的设想是有两个比较重大的节点,如果程序调试进展顺利,在时间允许的条件下,我会选择使用PCB做一个底板,将所有的模块放在一个板子上;但是如果程序调试不顺利,那我会把时间更多的分配到功能的实现上,而不是做系统的美化处理上。

需要购置的模块:

  • Stc89c52核心板:
    担心内部资源不够使用,时序满足不了外设的执行过程,从而影响系统的实时性。提到这个实时性响应,总结一下,一般提升系统实时性响应的方式有如下三种:

    • 第一种是最简单粗暴的方式,直接更换高性能的CPU,爱玩游戏的同学不都是这么搞的嘛

    • 第二种是在程序中加入中断,将一些关键性的操作,放在中断中完成,但是也不能在中断中持续操作,因为有可能会因为操作时间过长,而干扰下一次的中断触发。

    • 第三种方式是主动降低程序中不需要时时响应的部分,即降低程序的刷新率。比如:OLED屏幕中长时间不变的部分,温湿度采集的数值,GPS的信号等,均可以降低到一分钟刷新一次的速度。

      note:那该如何降低刷新率呢,这个非常简单,就是在程序中加入一个标志位,在执行以前,先判断标志位是否达到了设定的值,达到后,才开始执行程序,这个标志位也可以理解为知道目前整个系统已经执行了多少次。

  • Oled显示屏: iic接口(2个)
    对于这个模组,可以通过对汉字的取模,来实现对对汉字的显示。

  • 矩阵按键模块:实现扫描显示(占用的引脚数目至少是8个)
    这个模块特别占用引脚数目,单纯不走协议的话,对于4*4的引脚,需要至少8个引脚,来完成电平信号的识别,需要自己对采集的数据进行编码,才可以完成按键键值的确定。(家里有)

  • rtc时钟模块:iic接口(2个)
    根据刚才查阅的资料可以知道,它需要注意的就是对于任务书中的星期的处理。剩下的也都还是可以的。(家里没有)

  • ds18b20: spi接口(2个)
    这个算是一个可选的方案,对于比较老套设计方案,或者当前的单片机开发板上都是板载的资源。通过一个spi接口,需要两个引脚接口来完成对于数据的采集。(家里也有)

  • 温湿度模块:iic接口(集成化的一个温湿度采集模组)(2个)
    这是我第一次发现的模块,可以一次性完成湿度和温度的数据采集,需要调研的就是对于数据的采集和处理过程。(家里没有)

  • 语音播放模块:串口接口(2个)
    经过调研,已经知道这个模块使用的文字转语音模组,可以通过串口将需要说的文字,转化为语音播报。(家里也有)

  • 红外传感模块:(1个)
    需要占用一个引脚,当检测到外部的障碍物后,发送一个高电平,所以需要配置一个引脚作为外部输入检测。(考虑使用外部中断引脚)来提升系统的响应速度。(家里有)

系统框图

器件选型

  • 红外模块:常规的模块 资料有 一个普通IO

  • OLED显示屏:带有IIC接口的模块 (手头没有) 资料有 IIC接口

  • 4*4矩阵键盘:普通的4乘4矩阵键盘 资料有 八个普通IO

  • RTC时钟:PCF8563T带有IIC接口 (手头没有) 资料有 IIC接口

  • 语音播报模块:中文TTS文字转语音模块 (这个是重点啊。。) 资料有 串口接口

  • 温湿度采集模块:GY-SHT30-D带IIC接口的模块 (手头没有) 资料有 IIC接口

  • 电源模组:带有至少5路以上的3.3V和5V的电源模块 (手头有一个,再买一个备用)

经过反复的更正和设想,暂时性完成硬件的选型和设计规划,对于资料也已经收集的很多了。感谢普中的前期工作:

普中开发板

软件调试

开发环境:

  • keil4软件
  • 串口调试助手

软件设计思路:

分模块单独进行模块的调试,一方面是验证模块的功能性,另一方面是是按照任务书的要求,对模块的独立程序进行探索性开发,预期是达到和任务书的数据接口类型相一致的设计目标。具体的执行计划如下安排:

1)第一步先基于单片机开发板完成初步的功能验证,寻找最优布局和合理的程序架构,因为用开发板,初期不用兼顾硬件的接触不良这个问题。在程序设计中,优先调试逻辑部分,通过串口打印输出需要显示的内容,然后才是通过外设进行脱机处理,比如显示屏显示啊,语音播报等。

(1)串口通信(语音播报)

目前已经可以成功发送字符串了。

51单片机实现字符串的打印输出,在程序实现上是在考验对于C语言中对于字符串操作的部分的理解和掌握。因为串口每次只能发送一个字节(按照编码,一个汉字是采用两个字节进行编码),所以需要先定义一个字符串数组,然后进行发送,需要注意的一点是,字符串的结束标志是‘\0’,当发送函数检测到结束符时,则结束发送。

按照任务书的要求,可以通过定义不同的字符串,从而实现不同的语音播报,具体在程序中则是通过发送不同的字符串,来实现不同的语音播报。

语音信息的数据类型:

  • 起步阶段

    • 车辆起步请扶好站好注意安全
    • 请主动给老弱病残让座
  • 到站阶段

    • 站点信息+到了

    • 请依次从后门下车下车请注意安全

      note:站点信息包括8个站点,打算用ABCDEFGH +站代替。

  • 突发状况

    • 当前温度过高请注意防暑降温

下图是语音播报模块的管脚定义:

note:管脚中需要注意串行通信中主从机的TX和RX管脚要交叉连接才可以正常通信。如下图所示:

另一个需要注意的问题是,当前单片机串行通信采用的波特率是4800,而语音通信模块的串行通信波特率要求是9600才可。


又有一个灵感,我可以直接用串口助手,对语音模块进行调试呀。试试呗,争取今晚能听到响!!!

(2)矩阵键盘

上图是矩阵键盘的原理图,在程序中,先进行列扫描,设置键值为0~3,然后再进行行扫描,发现每一行的加4.从而通过确定列和行,得到最终的键值。然后根据键值的不同,实现不同的功能。比如任务书中的上下行切换,重复播报,初始化。

在程序中加入按键释放功能,其意义是确定只有当按键释放后,程序才接着往后执行。

目前总共有16个按键,根据任务书的要求,对不同的键值的功能分配如下:

  • 键值0

    主要是实现站点信息的上行播报功能,已经完成了调试,符合任务书要求。

从图中可以分析得出,所谓上行,就是从A站到H站,进行循环执行。

  • 键值1

    主要是实现站点信息的下行播报功能,完成了调试工作,符合任务书要求。

从上图中可以发现,所谓下行,就是站点信息从H站到A站进行循环执行。

  • 键值2

    主要是当前站点信息语音的重复播报

站点语音信息进行重复播报,如图所示,当前站点是G站,并且通过按键,对G站进行了4次播报,并且在完成了重复播报后,程序依旧正常进行下一个站点的信息播报。

  • 键值3

    主要是实现对站点信息的复位,暂定从初始位置开始播报语音

如图所示,当按下初始化站点信息的时候,无论当前执行到何种站点,程序会把站点信息复位到A站。从上图我们也可发现,共进行了两次复位操作。

  • 键值4

    实现时钟显示中对年的加操作

  • 键值5

    实现时钟显示中对年的减操作

  • 键值6

    实现时钟显示中对月的加操作

  • 键值7

    实现时钟显示中对月的减操作

  • 键值8

    实现时钟显示中对日的加操作

  • 键值9

    实现时钟显示中对日的减操作

  • 键值10

    实现时钟显示中对小时的加操作

  • 键值11

    实现时钟显示中对小时的减操作

  • 键值12

    实现时钟显示中对分钟的加操作

  • 键值13

    实现时钟显示中对分钟的减操作

  • 键值14

    实现时钟显示中对秒的加操作

  • 键值15

    实现时钟显示中对秒的减操作

(3)红外模块

红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。目前大量的使用的红外发光二极管发出的红外线波长为940nm左右,外形与普通φ5发光二极管相同。

常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。

数字量电平信号输出(白线高电平,黑线低电平)

检测到障碍物的时候,输出低电平,

(4)RTC模块

(5)OLED 屏幕

对于显示内容的分析,重点包括三种信息的显示:

  • 时钟信息,标准的的显示格式:2017年2月23日 星期4 08:45:10

    note:注意对于星期的显示需要用一个算法进行实现,判断出初始当天的星期几,然后计算和当前相距的天数,把天数对7取余,将余数和初始的星期相加,即为当前的星期,然后将星期显示到OLED上。

  • 站点信息的提示,即当前所处的站点信息

  • 语音提示的流动显示

    因为屏幕太小,而显示的内容过多,所以需要将信息利用流动的形式显示到OLED屏幕上。

  • 当前的温度和湿度信息

    由于采用的的是一体化的模块,所以温湿度可以放在屏幕中的一个固定位置。

为了提升系统的实时性,需要对不用长时间显示的内容,降低刷新率,比如温湿度,年月日,星期,站点标识符(station),只需要初始化的时候,将这些信息更新到屏幕上即可。

(6)温湿度模块

今天下午的安排是将矩阵程序整合到串口通信中,然后将站点信息、语音提示和按键键值进行整合处理,先测试一下系统执行的实时性的响应程度。经过下午的奋斗,整个系统程序的架构已经初见成效,到目前为止,系统的响应速度还是可以满足功能的要求的。晚上的安排是验证剩余的三个模块(语音播报,RTC模块,OLED显示,温湿度监测)的功能性如何,初步实现基本功能,然后再加入到系统中,比较重要的一点是,要验证语音播报模块的功能如何?

非常的难过,因为开发板上板载的晶振是12MHz,不能出现9600的波特率,而核心板上的晶振是11.0592Mhz,可以出现9600,所以将芯片搬到了核心板上,然后利用手头仅有的9V 1A的电源供电,后果是唯一的51单片机被挂逼了,结束了自己辉煌而灿烂的一生,可以它还没有看到过三个其他的模块展现生命力的时刻。归根结底是输入电源的功率太大,导致单片机被烧。暂时耽搁了任务进度。

并不是所有的芯片被烧了之后,都会冒烟,现在的异常是在上电后,短时间会感觉到芯片封装会异常的发热。

补救措施:为了防止类似的故障出现,我已经联系好之前实验室的小伙伴,争取明天借一块出来,然后在淘宝上也购买了两块,进行备用。

那就总结一下目前的进度吧,目前已经把软件系统的整个执行过程构建了起来,那么指定一下明天的项目进度安排:

第一步:将剩余的模块进行功能性实验,实现基本的功能,找到对饮的数据接口。

第二步:逐个将模块添加到软件系统中,并梳理所用到的硬件引脚分布。

第三步:对整个系统进行详细的功能测试工作。

2)第二步是进行脱机程序的调试,考虑程序能否在既定的程序框架中完成运行。如果不可以,则需要考虑调整系统的响应速度,提升系统的实时性;或者更改系统的执行次序。

脱机验证,第一次失败了,因为核心板的供电电源输入的功率太高,导致芯片挂逼。

3)第三步是将调试完成的系统,从单片机上转移到核心板上,进行最终的产品包装。

note:考虑到产品的目的地需要经过快递这个流程,所以保险起见,我想将调试完成的设备,用两块15*20cm的洞洞板和螺栓进行固定,最后用胶带将四周完全密封。只留出需要交互的界面

公交语音播报调试第四天相关推荐

  1. 公交语音播报调试第二天

    任务书 公交报站器由控制模块STC89C52单片机作为控制核心,硬件电路分为12864液晶屏.ISD1730语音芯片.温湿度传感器和红外传感器等模块.该系统的功能是:首先可以通过八个按键实现" ...

  2. 公交语音播报调试第三天

    任务书 公交报站器由控制模块STC89C52单片机作为控制核心,硬件电路分为12864液晶屏.ISD1730语音芯片.温湿度传感器和红外传感器等模块.该系统的功能是:首先可以通过八个按键实现" ...

  3. 公交语音播报调试第一天

    任务书 公交报站器由控制模块STC89C52单片机作为控制核心,硬件电路分为12864液晶屏.ISD1730语音芯片.温湿度传感器和红外传感器等模块.该系统的功能是:首先可以通过八个按键实现" ...

  4. 基于GPS的公交车站点播报调试第四天

    基于GPS的公交车站点播报 任务书 本设计的主控芯片单片机为基础,利用GPS获取比较精确的公交位置信息:并由AT89C51进行智能整合处理信息,发送控制指令:利用ISD1700系统语音芯片实现语音播报 ...

  5. STM32F103ZET6串口调试与语音播报

    一.串口调试 1.串口是什么? 串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口. 2.通信:串行通信,并行通信 数字信号是8位二进制数,可以使用信号线传输,一种方 ...

  6. 基于GPS的公交车站点播报调试第五天

    基于GPS的公交车站点播报 任务书 本设计的主控芯片单片机为基础,利用GPS获取比较精确的公交位置信息:并由AT89C51进行智能整合处理信息,发送控制指令:利用ISD1700系统语音芯片实现语音播报 ...

  7. 公交车语音播报系统的使用说明书

    关于公交车语音播报的使用指南 先给各位父老乡亲问个好,这是本项目的最后一篇博客了,之所以没有坚持到每天更新一篇的任务达成,是因为整个调试过程不可谓不波折,少芯片的事情对于硬件工程师而言,太普遍了,这个 ...

  8. 实现百度地图导航Demo的语音播报功能

    上文中实现了在本地导入百度地图导航Demo,那么在此基础上如何实现导航的语音播报呢? 一.为该应用申请语音播报(也叫注册) http://developer.baidu.com/map/index.p ...

  9. TTS语音播报程序部署与配置

    本功能已经在Windows7,Windows8.1,Windows10上测试过,其他版本操作系统未进行过测试. 1. 下载程序包 [32位]下载地址:http://pan.baidu.com/s/1i ...

最新文章

  1. 你为世界杯而战,我为生活而战!
  2. [C#程序]汉字转拼音缩写的函数
  3. spring中bean的实例化
  4. Android 从ImageView中获取Bitmap对象方法
  5. matlab中gatbx工具箱的添加
  6. linux创建sudo用户_Linux终极指南-创建Sudo用户
  7. python网络爬虫系列(十)——chrome在爬虫中的使用
  8. css hsla和rgba的区别
  9. day23_内置函数(__del__ item系列 ,模块)
  10. Word制作音乐简谱(转)
  11. JAVA连接SQL server2000解决方法
  12. 史上最详细解说!小白iriver T60拆机
  13. Linux之iNodeclient客户端定制和安装
  14. nero incd V4.3.23.3 序列号
  15. Win10搭建gym运行atari游戏pong
  16. 免费可视化报表,好用的web报表设计器
  17. 联邦学习纵向逻辑回归公式推导
  18. Channel 通道详解
  19. 提升网站流量和排名的方法,SEO优化要这样做
  20. Linux系统时区时间修改

热门文章

  1. css动画,实现落叶效果
  2. recipe for target 'CMakeFiles/check' failed
  3. 数据存储技术的相关概念
  4. 数字疗法 | 精神障碍患者的救命稻草
  5. 什么是Y4M文件格式
  6. jeecgBoot后台管理的在线表单的使用
  7. 关于华硕笔记本电脑飞行堡垒系列打开TPM教程
  8. Android 在PDA扫描枪上的应用
  9. PDF Search 10.3 PDF文档搜索工具
  10. 新概念英语第二册课文电子版_新概念英语全四册app下载-新概念英语全四册 v6.1.1103 手机版...