现在要读写SD卡上的数据,我们将使用ESP12E WIFI模块,虽然它比ESP32慢。但选择哪一个并不重要,我会在后面的步骤中说明原因。
首先将EN(使能引脚)焊接到ESP12E的VCC上,这是用来启动IC的。如果使能引脚没有连接到高电平信号,IC将不会启动。然后将ESP12E放在万能PCB板背面,将ESP12E的SPI引脚焊接到SD卡上对应的SPI引脚上。连接细节请查看电路图。
第5步:比较HTTP和FTP在学习编程之前,我对下载和上传的工作原理做了一些研究,那时我偶然碰到FTP这个词。FTP是文件传输协议(File Transfer Protocol)的首字母缩写,它是用来在服务器和客户机之间传输文件的,它与普通的HTTP协议完全不同,后者是用来在客户机和服务器之间发送请求和接收响应的,而且数据量非常小。
FTP在传输文件方面比HTTP快,因为它是专门为传输文件设计的。因此,在这个项目中我选择使用FTP。FTP服务器运行在ESP-12E上,我们可以通过这个FTP服务器跟SD卡进行数据推送与获取。
第6步:挑战FTP库我没有找到一个非常活跃的或者专门为ESP8266开发的FTP库。但是经过一番挖掘,我遇到了David Paiva,他将一个Arduino版本的FTP服务器移植到ESP8266,可惜它只支持SPIFFS,不支持SD卡。
终于功夫不负有心人,我发现有人付出努力把David Paiva的FTP库从支持SPIFFS转换成支持SD卡了。但是,当我尝试使用这个库时,遇到了两个问题。首先,我发现这个网页是韩语的,所以我不得不坐下来一点一点翻译所有的东西,以便在我能实际使用它之前知道内部的工作原理。第二个问题是,我必须修改现有的SD库来引入他所做的更改,这让人感觉很笨拙。
于是我比较了一下这两个库,一个来自David Paiva,另一个来自韩国网站,然后做了一些小的改动,把所有代码整合到一个项目里,这样就不必再安装其它额外的库了。你可以从我的Github帐户中查看项目的完整代码。
第7步:对ESP-12E编程