前言
时光荏苒,再过几年我就到退休年龄了。因为年纪的关系,过去的经历总像放电影一样在我脑海中呈现。
20世纪90年代,我从北京大学毕业,怀揣着化学硕士证书,被分配到湖南化工职业技术学院从教。那时,正是化工行业不景气的时候,除了教学,我也在想其他出路。可由于“贫穷限制了想象”,我错过了国家鼓励南下创业的机会。此时,世界银行贷款支持的项目的“春风”吹到了学校。购买了一批286个人计算机后,学校终于有了计算机机房。回想起在学校时,我学过BASIC和FORTRAN语言,毕业论文还用到了FORTRAN程序计算实验结果,就决定改行学计算机程序设计。1992年,我在辽宁丹东参加了一个化工行业的学术会,会上展示了美国化工生产的一个模拟系统,该系统是使用BASIC语言写的,要卖2万美元。这更加坚定了我要从事计算机程序设计的决心。
那时的计算机图书还没有现在这么多,其中比较多的是有关C语言的。好在当时Borland C出现了,于是我就从它学起。
一个偶然的机会,朋友介绍我给电视台做自动播出系统,于是我用C语言写了第一个真正商业化的程序,赚了3000元,比当时一年的工资还多。狠下心,我花5000多元买了台386计算机——500MB硬盘、4MB内存、DOS操作系统,虽然花了小两年的工资,但我还是很开心的。
由于我终究不是计算机专业毕业的,因此只能自己去看书学习基础知识。好在我有了自己的计算机,实践起来比较方便。当时我经常学到晚上12点,学到的东西很多,有五笔打字系统、打字比赛系统、化学反应模拟系统等。慢慢地,我开始用FoxPro给一些企业、电视台做收费管理系统。其间,宝兰公司的Delphi开发语言开始流行,于是我又开始用Delphi做程序设计。
1996年,我决定停薪留职出去闯荡一下。长达4年的时间,我在长沙、珠海、深圳等地工作,虽然很辛苦,但开发能力还是提高了不少。2000年年初,我又回到湖南,与几个朋友一起经营一家小公司,专为铁路行业服务,生产小配件,开发检测设备、自动控制设备,编写的应用系统有几十个。
可小企业生存很艰难,又遇到“非典”,公司盈利非常少,导致股东意见不合。2008年,我离开了公司,进入湖南工业大学计算机学院,又重新成为一名教师。7年的“创业”期间,我的大学同学出国创业、进入政府部门任职、下海创业成功的占了大多数。与他们相比,我总感到自己太不起眼了。不过回想一下,离开公司前,公司为国家纳税400多万元“真金白银”,也算是为国家做了些许贡献。
我在湖南工业大学的主要工作任务就是教学,主要教授的课程有软件工程、系统分析、信息系统、物联网技术与平台等。由于教学的需要,我逐渐开始用C#、Java编写程序。其间,我写了不少系统程序,一直被用户使用,如至今仍被上百家广播电台使用的“多路音频自动播出系统”,被几十家小电视台使用的“图文字幕视频自动播出系统”等。
2014年,学校创建物联网工程专业,于是我在物联网系一直工作到现在。
物联网工程是个全新的专业,很多专业课程是新开设的,任课教师也要经过培训和自学才能上课。无线传感器网络与应用、移动应用程序开发、RFID原理、嵌入式Linux网络系统开发,这些课程我都教过。对于很多知识,我也要从零开始学习,为了更好地掌握与硬件相关的知识,我自己从天猫购买设备,熟悉设备功能,并自己开发程序。
从事物联网教学多年,我有了不少感悟,也踩过不少坑。我把它们写出来,希望可以使后面的人少走些弯路。
物联网应用系统的开发,确实需要“全栈”开发人员。从底层的智能传感器硬件设计开发、通信程序开发、服务程序设计、Web网站到移动应用开发,都需要使用多种技术和编程语言,对人才的要求是比较高的。现在网上流传的使用某某语言“全栈”开发的资料很多,我认为大部分是不可取的,是误人子弟的。所谓的“全栈”开发,也大多局限在Web应用系统设计上,难以与物联网“全栈”开发相提并论。物联网应用系统极其复杂——尽管底层硬件配置越来越高,但不可能使用一种程序设计语言来满足所有应用开发的需要。
我在从事物联网工程专业的本科教育时发现,课程内容主要集中在基础理论知识的学习,实验课也只是用以对基本原理的验证而已。一周的课程设计或综合实训,很难让学生完成一个像模像样的系统开发。所谓的一个月的生产实习,也解决不了什么大问题。加上学生的学习任务也很重,无法腾出更多精力来专心做一个物联网应用系统。但一个本科生,至少需要体验一个完整物联网应用系统开发的全流程,并参与其中,才会获得深刻的认识,动手能力才会真正有所提高。
由于各种基础知识的学习时间段不同,在教授某门课程时,我也不好让学生去设计一个完整的物联网应用系统,但是设计部分且相对完整的子系统是可以的。
所以,设计一个良好的应用项目,既能满足物联网教学各阶段的学习要求,又能循序渐进,最终完成大部分教学要求。这是值得探索的。
为此,我编写这本有关物联网应用系统的图书时,既要满足教学知识的要求,又要有一定的现实意义和价值,还能拓展学生的想象力、创新思维能力。
在阅读本书之前希望读者能了解以下几点。
1.物联网本科教学的要求
目前各大院校的物联网专业开设的专业课程,大都包含单片机原理、传感器原理、无线传感器网络、RFID原理、通信技术、云计算、移动应用开发等。因此,全栈开发项目应该是一个涉及底层传感器、传感器网络、无线通信、互联网通信、云平台、移动应用等技术内容的物联网应用系统。
2.程序设计语言的要求
本科物联网工程专业开设的计算机语言课,主要有C/C++、Java,可选修C#、Python、JavaScript。全栈开发项目可以使用各种程序设计语言,便于提升学生使用开发语言的能力。同时,精心设计每个子系统,使每个子系统都可以分别用多种语言来实现,以便喜爱不同语言的学生都可以加入开发项目中。
3.硬件条件的要求
在练习时,可以使用从淘宝/天猫上购买的硬件,大部分的价格都不超过3位数,还包括开发工具和技术资料。
4.应用系统的选择
我之所以选择用“物联网设备智能监控系统”,是因为这个系统是从我的智能家居系统扩展而来的,且实现了绝大部分功能,已经是一个完整的应用系统,不间断在线运行时间超过4年。该系统稳定、可靠,使用方便,基本满足了上述3个方面的要求。
“物联网设备智能监控系统”稍加改造、扩展,可应用于物联网众多行业,如智能农业、智慧工厂、智能大厦、智能家居、智能医疗、智能安防。
正文中会详细描述该系统的结构和开发过程。所有子系统的源代码,都收录在本书的配套资源中。但如果用于企业软件、商业软件、付费软件等开发,须得到笔者本人的同意并支付一定费用。
5.适合学习的人群
本书为物联网本科生量身打造。学完C语言,就可以参与该系统的开发。对有志从事物联网应用开发的IT人员,本书也具有一定的参考价值,特别是在企业、公司研究部门从事软件开发的人员。如果是自学物联网系统开发的人员,以下是推荐必须要学完的课程,或者需要具备相应的能力:C语言程序设计、Java程序设计、C#程序设计、JavaScript程序设计、软件工程。
学习该系统的开发会是一个先苦后甜的过程。我用3年时间设计、完善了该系统,如果感兴趣的话,它应该值得用半年时间去学习。
本书可作为物联网专业综合实习/实训的实验指导书,也可整理成专业课程的课程设计教材,当然还需要花时间将本书的案例分解为一个一个的实验或小项目。
学习并掌握了该系统的设计,可以帮助读者在物联网应用开发方面更上一层楼。让我们开始吧!
由于时间仓促及笔者的水平所限,书中内容难免有误,还请读者不吝斧正,联系邮箱:liyongtao@ptpress.com.cn。
吴志辉
2021.8