hh,那我就写写上学期暑期课程做的东西,一个以arduino nano为核心的软硬件系统
主要运行流程如下:
总的项目开发持续了大概半个月,中间花费在等待购买的器材就花了好几天,买一个要三天才能送达,而且有时候效果还不佳,必须再买,加之开发中不断的新想法新功能又需要新的器材支撑,前前后后买东西就花了不少时间.
具体到各项功能的开发,一是需要对应的器材,二是要在github上或者arduino ide里下载相应的库进行学习,先得验证example是否能正常运行,再去针对自己所使用的功能进行拓展开发.
在早期的开发学习中我一直没把代码的大小纳入考虑的因素,因为在暑假课程期间所做的项目完全没这方面的焦虑,不存在flash或者sram太大无法烧写的情况.然而这次的开发从大小属实是不太够用了.这一部分在上面的代码整合里也讲过一些了,这边再说说开发单项功能的资源问题.
显示功能上,屏幕是我第一时间购买的,选择这个oled还是比较便宜的.本来是有考虑加入动图的,驱动库最初也是采用的U8g2这一通用库,也做了中文输出,发现空间确实不够用,尤其是中文显示,十几个字就能把sram占用完,U8g2的三种显示模式均尝试过,还试了gfx库,最后总算找到了U8glib这一功能简单占用少的库才得以建立起框架.还有就是做游戏的时候没注意到游戏帧绘制刷新的速度问题,造成过刷新,游戏画面撕裂,折腾半天才想起为每一帧增加延时.
再比如说我最早考虑的音乐播放功能,歌曲是以音符数组形式直接存放于nano板的flash里的,但是这样会带来高额的空间占用问题,而且音乐数目也有限,格式也必须进行转换,不能随心所欲的播放音乐.然后又考虑过从sd卡读取再播放,于是先购入了spi接口的sd卡读卡器,发现因为arduino是单核mcu,不太好做并行设计,在播放音乐时不能兼顾其他功能的实现,最后才换成的dfplayer方便后台播放,但是这样又只能放弃文件系统的实现了.
又再谈谈ESP-12F的开发,这个以esp8266为核心的wifi模块比起nano板来说性能强还几倍,如果以此为核心做开发的话,性能和功能肯定强不少.网上复杂的项目也比nano多得多,我自己移植过一个来试验,因为空间富裕,可以做更复杂的动画效果,好看不少.但是看了看大纲,我还是只把它当作网络模块来用了,要求以arduino nano为核心,不然多少有点首末颠置的感觉了.
蓝牙功能我并没有添加,主要还是不必要,已经有按键和旋钮做控制了,还有更直观的菜单逻辑,再加上蓝牙用串口调试既不够优雅,也有点画蛇添足之嫌.当然如果一定要的话也可以接上去,nano板的Tx,Rx接口依旧空闲,随时做好连接准备,代码里为改变标记值的语句以”或”的逻辑新增一个串口数值读取条件即可.
最后的最后,这次项目算是比较完整的开发了,而且作为暑期课程时间也很充足,相比于在过去课程中所做的项目,是有不小的进步了.在开发中, 结合上学期嵌入式系统的理论知识,我对运用到的各项协议(如USART,I2C,SPI)以及开发的资源局限性也有了更深的认识 ,亲自购买各项元器件自己动手搭建电路,体验创客diy的乐趣,实现一个个预期的功能,也是一件具有成就感的事情.通过这门课程的学习也让我对嵌入式开发产生了更深的兴趣,愿意去了解并做一些有意思的课外项目. 相比互联网上展示的各路大神作品,我也认识到了自己的不足,当然除去客观上有开发板性能和外设丰富程度的差距,在构思创意上也有差距,这些也需要在后期的学习中进一步锻炼.
最后做完了,拙作也放在github开源,算是给自己的这次开发存档了
|