“傻妞”智能家居——制作日志
引言
话先说在前面,在这几年,智能手机革命的爆发,电信将WiFi网络普及到每位普通家庭……等因素促使了自动化控制加快应用,智能家居的概念进入了老百姓的视野。生活中的电器进行物联网后接入互联网这个大家庭中,它们从来没有机会进入过互联网这一事实已成为历史。
如今智能家居的发展很混乱,方向不清。各式各样的控制方法都有。其实,智能家居的控制中心应是在人,而不是在各种服务器,手机上。但在今天脑电波控制不发达的年时代,手机便成了人的化身,是个人计算中心。将所有家电通过WiFi网络集结到服务器处理后再传到在到手机上,可以真正做到弹指一挥间,世界为我而亮。 但在我眼里,不妨将手机控制功能与语音交互控制相结合,手机控制不能解放人的双手,相当于把所有电器开关集中到手机上。而语音控制可以完全解放双手,但现在的科技没办法做到自然语言完美识别。但程序员的特定命令是可以识别的。
于是,我制作的傻妞牌智能家居由此诞生了~傻妞一词源自电视剧《魔幻手机》。我也很想有这么一台手机。 智能家居的功能,可以说是,只有你想不到,没有做不到。类似于智能小车,是一个很大的平台,在上面尽情发挥你单片机、实现自动化控制的能力,将生活中的东西拉进物联网,使得他们更加人性化,方便人们的生活。
2014年3月11日
一幅温馨的智能家居蓝图展现在我脑海中……同时,学校的通用技术课需要交一份作业,也因为我们是第一届新课改的学生,所以我们的作品会留在学校给后来人参观。智能家居也是我未成年时的一个理想。于是,我带领着班里的一个小组,共同完成这份作业,让我们的名字和这青春的理想永驻在母校里吧。 我们是做一个木房子,里面放置了各种智能家居中的传感器。将木房子打造成一间智能的房子,向人们展示智能家居生活里的一天。
小组分工具体是:我负责电子系统的设计、制作,以及木材的采购,加工,家具制作。其余组员负责搭建房子,装饰房子,房子涂色,制作家具等。大家有时会互相帮忙,分工也不是很明显,但可以明确的是,在全班里,电子系统的设计和制作真的就只有我一个人能搞得掂了。
2014年3月12日
使用一块09*15CM的洞洞板做主板。主控芯片出于功能需求不高,价钱实惠,决定使用国产STC系列单片机STC15F2K60S2。其实STC做得很不错了的,现在内部时钟通过PLL可以跑到40MHz,而且精度还很高。价钱也比AVR便宜很多。
焊接好电源部分,等待单片机的到达。电源线使用锡走线,承载电流比较大。同时,使用上下双排做电源插针。这块主板是要安放在房子底部的,所以要尽量减低电路板的高度。在双排针上,最上层的排针连接到GND,地。贴近电路板的那一排连接VCC、+5V。这样做是为了防止误碰。上层的排针容易接触到其他东西,带较高的电位的话容易造成不可预料的损失,所以接地。
同时,单片机的串口也使用双排针,方便控制芯片之间通讯。STC数据手册上说在RXD、TXD上串联电阻或设置二极管,可以防止下载时串口给单片机供电,造成单片机无法完全断电,进而出现下载失败的情况。实际上,我后来改成各串联一只1K欧的电阻。单片机的电源不使用电脑的USB供电,采用独立供电,与电脑共地后,这种现象基本上不会发生了。同时也不要贪图超级稳定,给单片机并联上大电容,否则也可能造成无法完全断电,不能完成冷启动的情况。这是STC单片机烧写程序的奇葩方式……
2014年3月15日
和阿智骑电动车出去采购他们组和我们组的材料。去钦州汽车北站对面买木材,去废旧站捡电线,买铁钉,灯……人们都好热情,特别是你用白话和人们交谈时,当地的语言总比普通话来得亲切得多,这正是我感到温馨的地方。钦州。星期日晚回到学校,各个小组也开始动工了,很多是用一次性筷子作为材料,瞬间全班变成木工。。。真搞笑,一帮人动起锯子、胶水来。我第一次见到同学们也这么会做东西。
2014年3月16日
简直要吐血了,单片机到后,为了测试单片机,烧写了一个程序,程序设计是一开始单片机使用串口向电脑发送数据。但奇怪的是我怎么也收不到数据。尝试修改波特率,调到最低了也还是没有变化。我觉得,就算是波特率不对,时钟跟不上,也总会收到一点数据,尽管数据内容不对。但真的一点信号都没有。我开始怀疑这个单片机是不是有问题了,时钟到底有没有起振。不过也不可能呃,我使用的是内部晶振,怎么可能不起振呢…………
后来,鼓捣了我三个小时去,终于发现这个问题出在哪了。原来是我选错欲烧写的程序文件了,选到我别的工程项目文件,和我正在编写的程序一点都沾不上边,怪不得我怎么改程序单片机都没反应。 下次一定要记得,出问题首先就要看是不是选错烧写的程序了。这个问题太浪费时间了。
2014年3月17日
语音ASR识别部分,决定使用LD3320芯片,前几天用这语音识别模块与我的TQ2440(主控S3C2440A)开发板成功通讯并实现语音识别,效果爽呆了!激动死了。
但是,今天我将它移植到STC单片机时,却发现怎么也不能进行通讯。我移植时,第一要关注的就是工作电压,很明显,我的主控芯片是5V的工作电压,LD3320是3.3V的,但是,从大体上看,我有很多外设,液晶屏、电动机、灯光,等等都是需要5V的电压,唯独LD3320是3.3V的,于是我在通讯线直接串联1~2K的电阻,其实通过公式计算,是串联1K电阻下拉2K电阻能降压到3.3V左右。值得注意的是,5V经过这电阻后,电压是降下来了,然而数据发回去时,3.3V的芯片拉高电平,又再次降压,恐怕这电平无法被5V的单片机识别为高电平。
SPI通讯协议中,我将MOSI、SCLK进行串联电阻降压处理,MISO直连。MOSI、SCLK配置为开漏输出,MISO配置为输入,其结果仍然是无法进行通讯,LD3320没有给予正确的握手信号,好像只能发送出去收不回数据来,也不知道我到底发送出去它接收到了没有。
很烦恼,LD3320数据手册中,封面,最明显的就是大大地写着芯片工作电压3.3V,每个IO口的电压不能超过3.3V,我经过压降后的确低于3.3V了,也给芯片通3.3V的工作电压,可是仍旧不得。 这个问题我鼓捣了两天,超级忙,忙得连上个大号都没时间。
无奈,可能这块芯片要求很严格,必须要用3.3V的单片机和它通讯才能完美工作。如果用我的TQ2440ARM9开发板,那完全是没问题的,可是我不想把这么高档的控制器用在这件作品上,如果要长期放在学校,那我怎么继续学ARM,这块开发板我还有用。
于是,在网上弄一块LD3320的,以STM32为控制芯片的小型开发板,因为STM32单片机的IO口能容忍5V电压,所以我用我的STC单片机和它通讯,也就能和LD3320通讯了。这块开发板还配置有TF内存卡接口,在内存卡上按指定方法部署文件和语音信息,就可以完成语音识别,并通过串口将识别结果送出去。很方便很方便。而且自带功放,直接接喇叭可以完成语音输出,同时支持MP3播放,可以通过串口点播。这为我实现人机语音交互奠定了基础。嗯!
2014年3月19日
12864液晶模块初步调试成功,利用自带字库显示我的文字。这是我第一次接触这款液晶模块,其实也不用特别去学,看着液晶模块的数据手册,自己按照时序图给他写驱动程序就行了。仅仅用了三根线,就完成了单片机和模块的通讯,还有一根我用来复位液晶。串行通讯太方便了!虽然在这并口通讯速度是比较快,但对于我这款STC单片机,时钟频率可达到40MHz,实际上我开33.2776MHz,IO口最大输出频率13.5MHz,足够满足我对液晶显示的速度要求了。尽量减少排线,能为我房子美观做贡献。
2014年3月20日
传感器继续走起,DHT11温湿度传感器调试成功,这个更加牛逼,仅仅用1根线就完成了通讯。俗称单总线。这个还要接电源线,总共三根线。我以前还见过更牛逼的芯片,就用两根线!一条是地,另一条既是电源线也是数据线。芯片集成化带来的便利很大,实在功不可没。
2014年3月22日
着手继续挖掘12864液晶模块的功能,完成驱动程序第一次升级,通过电脑取模软件配合Photoshop,得出图像数组后加入到程序代码,由驱动程序实现绘制静态图像。
2014年4月1日
前几天进度,主要是在攻克图片、文字、数字混合显示的难关,12864的GDRAM坐标特性以及分屏处理,使得算法变得有点不同寻常,但我还是能够完美地实现了~~~这驱动程序我终于写完了。 也是在这几天里,我在学校里和同学们忙房子的搭建这些木工活,回到家忙这电子系统的编程。所以我才说超级忙,连上个大号都没时间。
在3月29号,我去参观了广西科技创新大赛,我们学校有三位老师参加,今年没有学生参加,我今年也不参加了,参加了两年累了。奇葩的是,我们班主任做的“电流天平的改进”成功晋级一等奖,今年下半年要去参加全国赛啦~~我从未有过。其实在他这个项目里,也有我的部分,我用面包板给他做了一个高斯计(测磁感应强度的装置),使用霍尔线性元件做传感器,通过测量电压来算出磁感应强度,结果精确度还算可以。被放在展板上说是学生完成的作品。可能这也有助于他晋级了吧。哈哈,无所谓啦。
电脑进行液晶排版,左上角和右上角的小房子,是我自己用鼠标一个一个像素点出来的。像素画真的很有意思,液晶屏像素空间有限,画这种简单的画还是很好玩的。
实际效果,部分程序代码。
这字库代码和我以前做的自行车安全行驶监控器里的液晶屏显示所用的差不多,我也不知道我自创的这种字库结构好不好,但我个人觉得用起来还很顺手的,很方便就找到我所需要的字模数据,很方便的增加和删除。 有个误区就是,C语言里Char类型的变量是不存在编码的说法的。如ASCII、Unicode,GB。你在代码中将变量定义为"你好世界"。在电脑上,程序代码编辑器里显示出来的中文字,是在编辑器,在电脑中完成文本编码。实际上你输入的仍是一串二进制数。你程序代码编辑器或者说你电脑使用什么编码,就会将你这串二进制数编码,就通过以电脑里字体数据将该编码包含的字,显示在你屏幕眼前。同样,单片机执行的时候,不在乎你的编码,也不懂你的编码,只要你将编码出来的信息和字模数据配上,通过液晶把相应像素点亮或熄灭,就可以把文字输出来了。
房子的话,今天我们完成部分涂色咯~~
这还像是一个教室吗?哈哈~~~快要是木工厂咯。
木板不是很直,长度不一。千方百计修正偏差。最终还是比较看得过去。
哈哈,我承认有一位女生不是我们组的,是来打酱油的,闲着没事做来涂色,但涂得真不错,颜色会配得好。我对配颜色不是很熟,这些装饰的由女生们来做了,我嘛。。。在这,其实也是打酱油的。嘻嘻。 另外屋顶还没有固定,只是像一个帽子盖上去而已,不免显得歪扭不正,等把一些电子元件装上去后再固定。
同时,更多的家具正在制作当中,材料是一次性筷子。
2014年4月3日
2014年4月3日10:37:29,完成两个霍尔传感器以及电动机(风扇)引线的焊接,以及ULN2003A焊接。现在已经实现语音识别开启电风扇。霍尔传感器是为了检测房间中人物的位置的。这是房子模型,可以在小人上放置一块磁铁,进而感应人物在哪里。然而在现实中对房子中人物的位置情况就需要用摄像头或者人体热释电传感器了。
2014年4月7日
2014年4月7日0:50:41,完成语音播报温度、湿度,早上好! 优化液晶屏文字的显示算法。
2014年4月11日
2014年4月11日1:04:06,
更加人性化语音播报的内容。 加入火警语音报警功能。 将麦克风、喇叭引线延长。 焊接好几排LED灯,发白光的,光线直接打在房子里。因为房子的墙壁是有涂颜色的,所以白色的灯光在我们看来非常合适。 房子的屋角悬挂翠绿色LED。屋顶用一个七彩LED灯,只需通电,即可自动闪现不同颜色。 至此,程序部分大概就这么多了。剩下的还有电路安装,整体调试。预计星期日房子全部完工,星期一的时候要在全班销售这套设备。大概星期二就上交作品了。 日志还会继续跟进更新的。
2014年4月14日
房子全部完工!作品将在期中考试后在学校奋飞广场展出。
使用说明
本装置需输入5V的直流电,最大容忍5.5V,不可再高,否则容易烧毁两个主控芯片和LCD控制芯片。
建议选能提供2A以上的电源适配器或移动电源。1A以下不建议启动电风扇,否则在启动电风扇的时候会由于电源功率不够导致电压的瞬间突降,导致主控芯片复位重启。
也可以采用干电池供电。为了提供大电流,请使用六节干电池。6节电池分成2组,每组3节。组内的三节电池互相串联使电压达到4.5V,然后将这两组4.5V电池互相并联以增大输出功率。
接通电源后,液晶屏显示LOGO,接着等待系统初始化。在系统初始化期间,尽量保持环境安静,尤其是在初始化过程中不可以有人说出“傻妞”一词。
系统初始化完后,傻妞智能家居带给你的新的一天马上开始。
天亮了,自动播放起床铃声,自动报告今天温度、空气相对湿度以及今天天气的评估。最后报告时间。同时自动启动火警预警功能。
从此,若检测到二楼有火焰光,则立即报警。若无火焰时也自动报警,请轻轻调节火焰传感器电路板上的变阻器直至黄灯熄灭。
在这新的一天里,你可以发出以下语音指令。在发出指令前,请距离麦克风20~30cm处以中等音量、清晰、语速稍慢地说出“傻妞”一词。听到提示音或者麦克风旁边的LED灯亮起后,等待3秒再清晰、完整地说出命令。
自我介绍一下
晚安
把灯打开
把灯关掉
打开风扇
关闭风扇
我要上班去了
我回来啦
吹口琴给我听吧
同时,正如傻妞自我介绍里所说,在傻妞的记忆里,存储着2015届14班生活的点点滴滴。
将USB线连接到电脑,按下黑色电路板上的左侧按键,随后在电脑上会出现“傻妞”分区。
亲爱的小伙伴们,常回家看看~~