mini D1 WiFi模块简介
六月份每月活动将使用此模块连接WiFi。
该模块上有一个RESET按键,用于复位模块;
有一个Micro USB座,用于与CH340芯片相连,用于实现USB转串口,该串口可以用于下载固件、程序,打印输出串口信息使用。
模块的TX、RX引脚可以跟单片机的串口交叉相连,进而可以实现单片机与WiFi模块的联用。
我们六月份的智能风扇的实现就会选用这个模块,然后使用这两个引脚与STM32的串口相连,使用STM32解析接收到的串口数据,进而判断应该执行某种指令。
该模块基于ESP-12F模组,各个引脚的说明如下图所示:
上电测试
刚买回来的模块串口打印输出情况:
最开始显示乱码的原因是,因为esp8266模块上电时,默认打印波特率为74880,而固件中的比特率是115200,所以我们在115200比特率下查看输出,就是乱码。使用友善之臂的串口调试助手,可以自定义串口比特率,设置为74880,那么显示就正常了,但是固件输出的信息又变成乱码了。
Arduino IDE 环境搭建
下载arduino-1.8.8-windows.zip,解压之后,打开Arduino IDE “arduino.exe”,然后点击选择:文件-->首选项。
在“附加开发板管理器网址”处输入:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
进入:工具-->开发板-->开发板管理器
选择ESP8266库,并按下“安装”,下载安装ESP8266开发板类型文件库(Arduino官方库文件更新,下载需要一定时间,请耐心等待!)
安装完毕之后,就在IDE工具-->开发板中找到咱们的mini D1模块【WeMos D1 R1】。
示例代码
打开WiFiScan示例:
#include "ESP8266WiFi.h"
void setup() {
Serial.begin(115200);
// Set WiFi to station mode and disconnect from an AP if it was previously connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.println("Setup done");
}
void loop() {
Serial.println("scan start");
// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0) {
Serial.println("no networks found");
} else {
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
delay(10);
}
}
Serial.println("");
// Wait a bit before scanning again
delay(5000);
}
代码中可以看到,每隔五秒,模块会打印出周围的SSID的信息,如此反复。
硬件连接并测试
找一个MicroUSB线与模块相连:
点击下图向右箭头,编译并下载程序,成功烧录程序如下图所示:
打开串口助手,设置串口号为模块的串口号,比特率:115200,按一下模块上的Reset键,复位模块,打印日志如下图所示:
Arduino软件菜单中的“文件”-->“示例”-->“WeMos D1 R1的例子”中有很多Demo代码,大家可以自己下载验证,学习一下。