ESP8266联网
概述
因为需要用到网络天气和时间,所以得用到esp8266的联网功能,这也是我不用普通arduino板子做这个mp3的原因
库的选择
要是你有了解过esp8266的话,会发现单纯是联网就有好多个库,所以库的选中也是挺关键的一步。我在自带的库里面翻了一下,恰好找到这个库
库里面用到了ESP8266WiFiMulti WiFiMulti这个类对象,Multi,从名字就可以看出来他可以有多个备用wifi,一个不行再试另一个,然后是设置WiFi
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("SSID", "PASSWORD");
- 第一句是设置为STA模式,大概就是我们常用的WiFi连接模式,与之相对的还有AP模式,就是开“热点”,不过这个热点不能上网,有一些打印机能支持无线打印,估计用的就是AP模式。
- 第二句是填写wifi名称和密码,到这一步还没开始连接,如果要填写备用wifi,多写几次这句就行了
启动wifi
if ((WiFiMulti.run() == WL_CONNECTED)) {
...
}
默认的实例就是这样的,我照做了,结果出现了下面的问题
出现了问题
我把这些代码一起复制到setup函数里面,然后改成自己的wifi名称和密码,接下来连接板子,上传,结果显示wifi连接不成功,我于是开始找原因
- 板子坏了,这当然是最坏的结果,所以我留到最后再看看是不是
- wifi的ssid和密码错误,我校对了好几遍都没问题
- 最后我突然想起来,我之前好像在写这个程序的时候有加等待,好久没写就给忘了,于是我加了下面这段代码
while(WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
在等待一段时间后wifi终于连上了!
原来run函数是不阻塞的,而我们知道连接wifi是需要时间的,要给他这个时间来连接,否则就会出现上述情况
接下来做什么
我会从心知天气注册一个账号,然后通过httpclient获取天气信息,处理json信息,然后匹配我下载并取模好的天气信息数据,输出到oled屏幕上,完成mp3桌面的编写