已经三个月没写文章了,又准备开工,所以上来写写这段时间的心得。
之前一直在写书,基本写完了,到 3 月份的时候,键盘坏了,所以买了三个机械键盘,结果发现都不顺手。发现有客制化键盘,就想着买一把客制化键盘,之后看来看去,觉得可以分别买零件自己装,之后又改了想法,为何不能自己画电路板画壳自己做呢?结果,就是这一个想法给我打开了另一片天空,补齐了我的短板,那感觉就像打通了任督二脉。
首先学习的是 fusion 360,一个建模软件,由于大学是学机械的,有点底子,所以学这个软件还算容易,画了一个壳子。画完后,发现顺序搞错了,应该先把键盘的PCB板做出来再画壳。于是开始学习画电路板,用的是国产软件立创 EDA,软件非常好用,使用简单,全部是看 B 站的视频学习。这里要赞美一下 B 站,自从知道了 B 站后,我就再也没用过什么腾讯视频、爱奇艺、优酷之类的视频网站了,说实在的,这几个网站的广告有些过份,太恶心了。B 站是中国社会进步的动力源泉,他让那些没有上大学的人都有机会学习自己想学的技术,让上过大学的人可以很方便地学习其它领域的知识。
学完电路绘制之后开始做键盘,首先是主控芯片的选型,优联,Teensy,A32U4,最后想想,干脆代码也自己写得了,于是最后决定使用 STM32F103RCT6,顺便学习 STM32 单片机的开发,一举两得。接下来开始设计电路,电子方面我是一窍不通,好在立创开源广场有很多开源电路,参考别人的电路,最终自己也过了把设计电路的瘾,费了不少周折画完后拿到嘉力创 PCB 打样,贴片。
然后花掉不少钱买焊接设备,元件,将这块电路板焊好。最后发现,电路设计没什么问题。第一次画键盘居然没有翻车,有点小得意。接下来是写程序,写完防抖算法后,键盘是可以用了,复合键还不能使用,兴趣消退了,有点半途而废的意思,因为有了新的想法。
我这学期上单片机这门课,一直用的 Proteus 软件进行模拟,因为教材配套的开发板要花160多块钱,学生是买不起的,我能不能自己生产呢?说干就干,于是马不停蹄,开始画51单片机电路板,这一画,要了我老命了,持续翻车,花钱如流水:
第一块翻车的原因是用 Proteus 多了,红绿灯没用电阻,结果上一个灯烧一个。第二块是想省一些极管,直接用芯片驱动发光元件,发现亮度不够。第三块不能算翻车,只是用错了数码管的封装,最后被迫高价在立创商城买了20个数码管解决。还有第四块,长得和第三块一样,换了数码管封装,结果回来后发现二位数码管的左右位置接错了,需要对调,不过这个也不算翻车吧,改下代码就行了。要到第五块才能完全改好。至此,51单片机算是弄好了。期间,对教学有了新的想法,大部分学校在讲授这方面课程时,都是采购现成的设备,我们专业也不例外,但是这样有一些问题。
为什么不能让学生自己绘制电路、打板、焊接,然后拿着自己设计的电路板来上课呢?学生拿着自己做的电路板来上课,是不是应该会更有学习的兴趣呢?我这边要做的只是开一门电路绘制课程,建一个焊接实验室。我的课程《单片机》、《RFID》、《无线传感网》都可以使用这种方法来授课。这样一来,上述问题都得到了圆满的解决,教学效果更好,还省掉了一大笔设备费用。
有了新想法不一定全是好事,也有坏事,我发现我快写好的 RFID 书很多章节要推倒重来,这代价有点大。这不,发现了意法公司的一个 ST25 系列 NFC 芯片,非常适合用在物联网上,已经设计好验证电路,开发板就快到手了,准备写一个系列文章。无线传感网这一块,只能往后推了。
书已经写了五章,除了第一章绪论和大部分实验没写,没写的原因是模拟器需要全部推倒重来。不过部分实验之前已经写好,挂网站上了,改改就行。下面列出写好的章节:
接下来就要写到 NFC 了,NFC 现如今如主要在手机上使用,再拿 C# 来实现是不可能的了。Android 没学过,怎么办?没办法啊!硬着头皮也要上!这东西要倒腾个模拟器来是不可能的了,将来上课怎么做实验?一人一台平板?用自己手机?都不现实,我陷入了深深的思考中!管他呢,谁说过实验写在书上了就一定要做的?大不了不做就行了呗!
首先看了两天的 Android 视频,看不进去,总感觉学得太慢。整个 Java 体系我总感觉太过复杂,没有 C# 那么简洁优美。实在难学!这么学下去黄花菜都凉了!直接开搞 NFC,好在网上资料比较多,直接照着网上的文章抄代码,居然把 ISO 14443 卡片信息给读出来了,太让人振奋了!直接把它改成我想要的样子就 OK 了,而且这个过程也能慢慢熟悉 Android 开发,这才是最佳的学习方法。
这段开学,杂事比较多,课也很多。没办法,计算机系又多招了几百学生(火爆啊!),物联网专业也增加了近一倍的学生,专业教师严重不足,我们只能辛苦点了。业余有点时间,开始正式写书。首先在已写好的条码技术这篇文章的基础上加了好多内容,写完后开始研究二维码,也开始找出版社联系出版事宜。之前已经感觉到找人出版不会太顺利,所以要提前很长一段时间筹备,但没想到会如此困难。
首先肯定先找北大出版社,毕竟大家合作过,互相都了解。没想到听了书名直接拒绝,这几年感觉到出版行业不太景气,没想到这么严重,居然选题表都不看一眼。当然,还是得感谢北大出版社,当年在我不名一文的情况下无条件给我出了两本书,这是需要担风险的。好在,出这两本书出版社没有亏本。北大出版社对我算是有知遇之恩,只是合作只能到此结束了,还得从头再找出版社了。
做一个教师,基本每天都会接到出版社的电话,以前我都是直接挂断,这段时间每个电话都接,了解出版事宜。得到的回复基本都是要不自费出版,要不自己负责销量。根本没人关心你的书写的是什么内容,质量如何。这个可就难倒我了,要写这本书加上程序,前前后后应该会花掉两年时间,呕心沥血,没人给我钱我也认了,居然还要自己掏钱出版。出版社要生存,我完全理解,但走着走着完全忘记了自己的初心,哪怕能留一点也好啊。现在书的质量已经成为最不重要的问题,也难怪学计算机的人一般都会去追捧外国书籍,或外国书籍的译本。好在书离完成还早着呢,慢慢找,说不定能找到愿意出版的人。最后实在找不到,全放网站上开源,需要的人一样可以用来上课,连课本费都省了。
现在在研究二维码,难度增加了几个量级,手又有点痒,在想是不是再弄个画二维码的程序。话说不自己写个二维码程序,哪敢说自己了解了二维码,敢出书。还是等书写得差不多了再考虑这事吧。
好久没写日志了,人变懒了。期间将 RFID 的几个协议的相关文章写完,做了一个 RFID 模拟器的半成品,已经用于授课。满足授课是没问题了,但并没完成所有读写器的功能。写着写着,发现程序变成的意大利面条,架构需要推倒重来,想着将来重写 2.0 版本吧。有空了再说。
之前写到 ISO18000-6C 的时候,发现需要了解 EPC,而要掌握 EPC 就必须首先掌握 GS1。而 GS1 又主要是用在条码上。这门课若是不掌握条码技术,还是有所欠缺的,毕竟当前条码应用更为广泛。然后马不停蹄,继续研究条码技术,在写实验指导时,本想使用现成的开发包来完成条码的显示,找流行的开发包,当前用得比较多的是 BarcodeLib。在使用时发现并不能完全满足我的需求,它并没有实现 GS1-128。即使是现成的条码打印软件,能很规范地实现 GS1-128 的也仅有 BarTender。但 BarTender 是收费软件,买个 key 需要几千大洋,要授课时每个学生都能用那得买几十个 key,这条路想都不要想了。另外,安装 BarTender 竟然需要安装 SQL Server。一个本地程序需要存储数据,JSON 或 XML 完全满足要求,安装几个G的数据库实在没有必要,真是无力吐槽。一生气、一跺脚,全部自己实现。呵呵,未完成任务列表本来就很长了,现在又多了一个艰巨的任务。
于是开始参照 BarcodeLib 开始重写条码打印程序。在写的过程中,发现 BarcodeLib 某些实现是有错误的,它的某些实现和我的想法也有出入,于是研究国家标准自行实现算法。其实写个条码打印程序并不是太难,除了 Code 128 以及 GS1-128 自动混合编码那一块费了一番周折。自己实现这个程序还是很有收获的,很多细节的地方,不写代码根本不可能了解。现在这一块我也算半个专家了。现阶段,所有打印类库已完成,再写个打印界面就完成了。阶段性完工,写篇文章庆祝一下。当然写到二维码的时候就不可能再自己实现了,复杂度过高,相信也会有比较好的类库可以使用。
下学期要上新课《RFID》,市面上没有合适的书,所以针对这个内容专门写一个系列的文章。算是自己写一本书的部分内容吧,由于不具通用性,所以出版的希望是不大的,但授课时学生还是要有书的,只能拿文章来代替了。一个寒假的时间,先抓主要矛盾,把实验部分跟编程相关的部分先搞定,理论之后再写。实验设备有限,估计要 5 个学生一个实验箱,甚至还不够。这当然难不倒我,准备写个模拟器,模拟 RFID 刷卡,这样就可以人人在自己的电脑上做实验了。
;