本帖最后由 如三月兮 于 2017-5-19 15:59 编辑
嗨,大家好,我又来啦,真是很久不见大家啦,主要是这段时间有点儿忙,一直没有时间来写这个报告,今天就抽空来继续我们对小e 开发板的学习啦。今天呢,我主要讲的是如何自己编写代码让OLED屏幕显示当前的温湿度信息,因为我本来要做的项目是基于GSM的火灾报警系统,但是由于板子变了呢,我的项目也就变成了基于WIFI的火灾报警系统,具体是如何实现的呢,还请大家慢慢的往下看。
大家都知道,我们的小e开发板有一整套的源代码,而且代码工程量较大,读起来的十分的费劲,但是我的项目用不到这么多的功能,因此就需要对这套源代码进行适当的修改,变成我们需要的源码。
还有一个要说的问题就是,官方给的小e开发板的开发环境是通过Oracle VM VirtualBox加lubuntu虚拟机的方式编译固件,但是这种方法呢,操作起来很不方便,编写代码和编译固件要用两个不同的软件来完成,于是我就想有那种集两种功能于一体的呢,其实还真的是有啦,那就是用eclipse来完成编写代码和编译固件的工作,具体是如何操作的呢,我就不在这里详细介绍啦,大家可以去参考这位大神@覆水的一篇帖子(点击这里查看),写的非常好,简单又明了,我就是参考他的操作搭建的开发环境,一次就成功了!
在这里有一点要说明的是,虽然说用虚拟机和eclipse都能编译固件,但是最后生成的固件是不同的,并且烧写的路径也不一样,更重要的是,官方给的源码必须要用虚拟机才能编译,用eclipse编译的话则会出错,我在后面查阅相关资料,并且认真思考后发现,这应该是与SDK文件夹中的Makefile文件有关
这是我在安信可官方给的SDK和开发快给的源码SDK两个文件夹的Makefile文件中截的图
果然是因为Makefile文件不一样所导致了,不过对我们来说,知道为什么就行啦,也没必要去深究,如果真的对这些感兴趣的话,也可以自行去百度一下。
下面是我根据开发快官方给的源码,改成的只测量温湿度,并且在OLED屏上显示的代码中的一部分
其实代码也很简单啦,大部分都是直接从源码里copy过来的,自己只改动了小部分,从主函数里可以看出,整个过程大致分为两部分,第一部分是温湿度数据的采集,用Get_Temp_Hum();这个函数完成的
第二部分便是将采集到的数据经过数学处理后经OLED屏显示
下面我们就Ctrl+B编译一下
编译成功,得到了两个文件和它们要烧写的位置 eagle.flash.bin-------->0x00000 eagle.irom0text.bin---->0x40000
我们打开SDK工程中的bin文件,看到我们即将要烧写的文件
这样烧写就可以啦
烧写成功后,打开串口调试助手,设置波特率为74880,这里我要再讲一下,波特率呢和你程序里面的设置有关,比如我在程序里设置的是74880,这里就要选择74880,当然,你也可以设置成其他的数值
串口成功的打印出了温湿度数据
OLED屏上也成功的显示出了温湿度数据,不过好像有点乱码,可能与我的程序有关,不过不影响啦,我们的预期的功能已经全部实现了~~ 如果你们确定波特率是正确的,但是串口打印的数据还不正常的话,可以看一看我上次写的帖子,先擦除小e开发板的flash,再进行固件的烧写。
下面我附上我的SDK文件和官方的SDK源码,以供大家学习~~
|