nodemcu mp3制作——sd卡连接nodemcu
接线问题
我也是开始学单片机不久,所以走了不少弯路,从昨晚测试到现在终于成功了,先简单说一下我的心路历程:
- 我上来就遇到个问题,编译和上传都显示“invalid option stacksmash”,这个可能很少人遇到,我也找不到相关的资料,将由原来的nodemcu1.0换成nodemcu0.9,就可以了(我还不知道具体原因,有这个问题的朋友可以试一下这个办法,或者就是重装arduino,可以解决,如果你知道具体原因,可以在评论区跟大家分享一下)
- 我之前不是没有尝试过,不过一把sd卡接到nodemcu上,打开串口,就显示"initialization failed",后来我偶然看到了一篇文章,里面说nodemcu的接口跟arduino不太一样,所以不能照着里面来连接。
- arduino中SD库中给的注释是这样的:
/*
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
*/
但是很明显不符合我们的要求,因为nodemcu压根就没有11口,然后我顺着<SPI.h>一直找到一个叫<common.h>的文件,里面定义了以下的接口,我将他们与nodemcu对上:
/*
** MOSI D7
** MISO D6
** CLK D5
** CS D2
*/
这样子把线接好,然后就开始测试
- 接下来还是出现"initialization failed",我想了一下,就算我改了过来,库文件也还是没有改,所以引脚映射依然还是上面的,不符合nodemcu引脚定义。所以我决定把库文件改动一下。
- 但是一直没有找到怎么改,所以就卡了很久,后来我在youtube上看到一个视频,他打开arduino,然后打开示例程序,里面显示的也是第一种注释,但是他不理睬,直接上传,结果成功了!所以我猜想,这个注释不能信,既然用的是esp8266的库,肯定能支持esp8266,所以程序没问题,应该是硬件方面的问题
- 我首先想到会不会是我的sd卡模块出了问题,好在我有两块,换了一块还是一样,总不能两块一起出问题吧,所以这个排除掉
- 然后我又找到一篇文章,说可能是供电问题,所以我拿来个小LED灯接到面包板上,串联个电阻,然后正极接vcc,负极接GND,果然不亮,可能是我用的那个口刚好坏掉了,所以我找了另一个口,小灯泡亮了,所以我用新的vcc口接到sd卡模块上
- 结果还是一样不成功,在我找不到什么解决办法的情况下,我突然想到会不会是线的问题,所以就用刚才的办法,用测试过可以用的两个口,换不同的线连小灯泡,果然有一条线不能导电
- 换了一条线,万事具备,sd卡模块成功运作,“initialization done!”
小结
这个问题之前困扰我好久,有时候我们没那么幸运,第一次就找到合适的、正确的方向,多试错,多找资料,或许就可以解决。要这个问题解决的过程,最大的收获就是明白控制变量法的重要性!