什么?不连电脑,用Wi-Fi就能读取SD卡上的内容?
设想一个场景:
你只要将带SD卡的设备插入任何一个USB端口 , 它会自行创建一个FTP服务器 , 同一个局域网下 , 手机、电脑等能联网的设备都可以实现跟SD卡进行无线数据发送和接收 。
再也不需要反复插拔 , 拿个卡拷来拷去了 , 是不是很方便?
令人感到沮丧的是USB接口有那么多不同的变种 , 工作方式与它们的名字[USB-通用串行总线]完全矛盾 。 理想情况是每个USB接收器应该与任何USB设备兼容!但现实情况是你不能把U盘或键盘插在充电器里 , 然后指望它能工作 。
一旦您把它插入USB , 它会创建一个热点 , 然后我们就可以连接到这个热点 , 在任何兼容设备中打开任意FTP客户端程序 。 通过此设置 , 我们可以用无线方式从SD卡复制文件 , 以及往SD卡保存文件!
购买材料首先我们需要准备下面这些材料:
ESP-12ESD卡Micro-SD适配器直排针90度排针导线FTDI模块ArduinoNano及USB线USB公头万能PCB板烙铁焊锡丝第1步:认识SD卡
大多数SD卡都具备许多标准功能 , 并且具有相同的物理和电气规格 。
SPI和SDIO之间的实际差异主要体现在软件层面 。 详细信息可前往了解SD、SDIO和MMC接口 。
简单说就是SDIO更快但更难实现 , SPI较慢但更容易实现 。 由于大多数微控制器默认支持SPI , 所以我们就选择SPI吧 。
以下是SD卡的SPI引脚定义:
Pin-1-CS(片选)Pin-2-DI(MOSI)Pin-3-GNDPin-4-VCCPin-5-SCLKPin-6-GNDPin-7-DO(MISO)Pin-8-NCPin-9-NC第2步:改装SD卡适配器
裁剪万能PCB板使其与SD卡适配器完美匹配 , 且有一些额外的空间来安装USB接口 。
虽然也可以不用SD卡适配器 , 直接对SD卡做同样的处理 , 但是风险很大 , 相当容易损坏SD卡 。
第3步:安装USB插头
为了解决这个问题 , 我们将使用一个3.3V稳压器 , 并将USB电源的输入连接到3.3V稳压器 , 即将USB的GND引脚连接到稳压器的引脚1 , 并将USB的+5V引脚连接到稳压器的引脚3 。 最后 , 将稳压器的引脚2译注:原文为引脚3 , 根据电路图及稳压芯片ASM1117的说明应该是引脚2(输出引脚)和接地焊接到SD卡上 。
这就解决了SD卡的电压适配 。 您可以查看电路图 , 了解更详细的接线
第4步:把所有元件跟ESP-12E整合
第5步:比较HTTP和FTP在学习编程之前 , 我对下载和上传的工作原理做了一些研究 , 那时我偶然碰到FTP这个词 。 FTP是文件传输协议(FileTransferProtocol)的首字母缩写 , 它是用来在服务器和客户机之间传输文件的 , 它与普通的HTTP协议完全不同 , 后者是用来在客户机和服务器之间发送请求和接收响应的 , 而且数据量非常小 。
FTP在传输文件方面比HTTP快 , 因为它是专门为传输文件设计的 。 因此 , 在这个项目中我选择使用FTP 。 FTP服务器运行在ESP-12E上 , 我们可以通过这个FTP服务器跟SD卡进行数据推送与获取 。
第6步:挑战FTP库我没有找到一个非常活跃的或者专门为ESP8266开发的FTP库 。 但是经过一番挖掘 , 我遇到了DavidPaiva , 他将一个Arduino版本的FTP服务器移植到ESP8266 , 可惜它只支持SPIFFS , 不支持SD卡 。
终于功夫不负有心人 , 我发现有人付出努力把DavidPaiva的FTP库从支持SPIFFS转换成支持SD卡了 。 但是 , 当我尝试使用这个库时 , 遇到了两个问题 。 首先 , 我发现这个网页是韩语的 , 所以我不得不坐下来一点一点翻译所有的东西 , 以便在我能实际使用它之前知道内部的工作原理 。 第二个问题是 , 我必须修改现有的SD库来引入他所做的更改 , 这让人感觉很笨拙 。
于是我比较了一下这两个库 , 一个来自DavidPaiva , 另一个来自韩国网站 , 然后做了一些小的改动 , 把所有代码整合到一个项目里 , 这样就不必再安装其它额外的库了 。 你可以从我的Github帐户中查看项目的完整代码 。
第7步:对ESP-12E编程
GND[ESP12E]连接到FDTI模块的GNDRx[ESP12E]连接到FDTI模块的TxTx[ESP12E]连接到FDTI模块的RxGPIO15[ESP12E]连接到FDTI模块的GNDGPIO0[ESP12E]连接到FDTI模块的GNDVCC[ESP12E]连接到FDTI模块的VCC最后 , 使用ArduinoIDE上传Github上下载的代码 。
一旦程序上传完毕 , 你就可以焊掉连接到ESP12E烧录器的导线 。
第8步:大功告成!
连接上后 , 就可以从SD卡下载任何文件 , 也可以将文件从手机上传到SD卡 。
你可以观看视频了解它是如何工作的!
总结
我之所以到此为止而没有尝试去优化它有两个原因 。 第一个原因 , 我真的很希望 , 除了FTP服务器之外 , 我还可以使用USB数据线来传输数据 , 但ESP8266或ESP32都不支持 。 第二个原因 , 我无法通过FTP传输文件获得足够的速度 。 这也是为什么我不费心用ESP32代替ESP12E的原因 。
但我觉得如果我们能使用支持全速USBOTG的ESP32S2板 , 这些问题应该可以解决 。 也许我可以在另一个教程中作此尝试 。
电路图
项目链接:
项目作者:Neutrino
【什么?不连电脑,用Wi-Fi就能读取SD卡上的内容?】中文翻译:fibx
推荐阅读
- 科学探索|为什么科学会在需要时让我们失望?
- 不起眼的朗姐|和老人出去旅游,为什么会觉得心累?网友:只要老妈身体允许以后还要带她去,哈哈哈哈
- 呼伦贝尔草原旅游攻略|去呼伦贝尔玩该注意什么?有什么消费陷阱?
- 搜狐|众所周知,兰博基尼是造拖拉机的,看看兰博基尼拖拉机到底什么样
- 搜狐|92号加成了95号,汽车加油加错号了,有什么严重的后果吗?
- 终于|十四年后,那句“不是你撞的为什么要扶”, 终于酿成了恶果
- 以家人之名|以家人之名原著小说结局是什么 以家人之名电视剧全集观看地址
- 凌霄|以家人之名凌霄的结局是什么 凌霄最后会和尖尖在一起吗
- 高速铁路|高铁新动能!京雄城际铁路全线轨道贯通意味着什么?
- 美国|新冠肺炎灭活疫苗预计12月底上市 到底什么人群最需要接种疫苗?
