D1 WIFI UNO开发板基础资料
D1 WIFI UNO开发板基础资料
一、基础知识
1.Arduino简介
Arduino是一款便捷灵活、方便上手的开放源代码硬件项目平台。
Arduino板基于Atmel的微控制器,增加使其能够适用大部分运行条件的电子元件,并引出简单的I/O接口,方便快发开发应用。
Arduino的软件部分主要包含ArduinoIDE以及相关的板级支持包和丰富的第三方组件库。
Arduino特点:跨平台、简单清晰、开放软硬件、发展迅速。
2.ESP8266简介
ESP8266EX 内置超低功耗Tensilica L106 32 位 RISC 处理器,CPU 时钟速度最高可达 160 MHz,支持实时操作系统(RTOS) 和 Wi-Fi 协议栈,可将高达 80% 的处理能力留给应用编程和开发
ESP8266模块可以独立于Arduino等开发板,作为一块独立的开发板使用。它拥有GPIO、I2C、ADC、SPI、PWM等模块,可以用它做大多数MCU能做的工作,且性能甚至远超多数MCU。
ESP8266EX 的工作温度范围大,且能够保持稳定的性能,能适应各种操作环境,可以说目前ESP8266目前占据了相当大的市场份额,尤其是米家、百度、阿里等平台都在使用ESP8266。
3.带着主角光环的WeMos D1
WeMos
D1开发板全称是WeMos D1 WiFI UNO R3开发板,基于ESP-12E,而且兼容Arduion,有了这款物联网开发板,我们就可以愉快的使用arduino方式开发ESP8266,玩转物联网项目。

技术参数
1、处理器ESP-8266EX
2、工作电压3.3V
3、输入电压6-24V
4、I/O 数量11
5、AD 输入电压0-3.3V
6、Flash 4MB SRAM32KB DRAM 80KB
7、时钟频率80MHz/160Mhz 网络802.11 b/g/n
8、尺寸规格:长68.6mm x 宽53.4mm
9、重量21g

所有的 IO 工作電平為 3.3V,可瞬間承受 5V;
除 D2 外,所有 I/O 都支持中斷,PWM,I2C,跟 1-wire;
二、开发环境配置
1.Arduino
IDE下载
链接:https://pan.baidu.com/s/1wkdeNSwjehN02clOq7FQOw
提取码:c54z

下载后直接解压点击arduino.exe运行即可,无需安装,注意如果提示有新版本可供升级,直接忽略即可。
2.驱动安装
点击arduino-nightly-windows\arduino-nightly\drivers中dpinst-amd64.exe或者dpinst-x86.exe 直接进入安装程序。

三、IDE配置
第一步:打开Arduino,选择“文件/首选项”;

第二步:http://arduino.esp8266.com/stable/package_esp8266com_index.json
将这个json地址键入下图所示开发板网址管理器的位置,点击“好”;
第三步:下载库文件
百度网盘链接:https://pan.baidu.com/s/1Yb1nVvAct26aHSFYUhvc_g
提取码:rbxx
【文件名:packages】
下载好文件后解压到
C:\Users\你电脑的用户名\AppData\Local\Arduino15\staging\packages

如果在你的电脑用户名文件夹下没有看到AppData文件夹,记得点上菜单栏里隐藏项目前面的勾勾。

第四步:到开发板管理器安装
在开发板管理器搜索8266就能找到要的支持文件了;


版本选择2.4.0,然后点击安装,安装完成后点击关闭即可。
然后选择开发板–ESP8266Modules–WeMos D1 R1.

具体端口可以在我的电脑–管理–设备管理器–端口中查看。

其他选项设置如下:

第五步:测试;
点击文件–示例–01.Basics–Blink,点击上传,将程序烧录进开发板,板载蓝色LED灯一秒一闪,则说明安装成功。

六、编程调试
WeMos中定义的arduino引擎编号其实是与ESP8266上的GPIO引擎编号对应,所以数字编号与IO口编号不是一一对应的,在使用起来会有些不便,其实引脚也可以用D0~D15直接操作IO口,这样就与开发板上的资源对应了。
如pinMode(2,
OUTPUT);可以直接写为:pinMode(D9, OUTPUT);
ESP8266WiFi库主要包含Station、Soft
AP、config、WiFiClient、WiFiServer、scan、hostname,这里主要介绍Station相关的函数使用。

1.连接WIFI测试;
A:动态IP方式连接WiFi热点
#include
#define WIFI_SSID “xingyuanli”
#define WIFI_PASSWD “12345678”
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWD);
WiFi.setAutoConnect (true);
WiFi.setAutoReconnect (true);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println(“connecting……”);
}
Serial.println(“Connected to AP”);
delay(3000);
}
void loop() {
if (WiFi.status() == WL_CONNECTED)
{
Serial.println(“Connect to router success”);
Serial.println(String(“local IP is”)+WiFi.localIP().toString());
Serial.println(String(“Subnet mask is”)+WiFi.subnetMask().toString());
Serial.println(String(“gatewayIP address is”)+WiFi.gatewayIP().toString());
Serial.println(String(“dnsIP address is”)+WiFi.dnsIP().toString());
Serial.println(String(“SSID is “) + WiFi.SSID());
Serial.println(String(“PSK is “) + WiFi.psk());
Serial.println(String(“BSSID is “) + WiFi.BSSIDstr());
Serial.println(String(“RSSI is “) + WiFi.RSSI());
}else
{
Serial.println(“Connect to router failed”);
}
// Wait a bit beforescanning again
delay(1000);
}
上述程序中,首先设置模块为WIFI_STA模式,然后程序调用WiFi.begin()连网后等待,直到WiFi.status()等于WL_CONNECTED,程序继续往下执行,然后打印MAC地址,并在loop()函数中循环打印IP地址网络信息。
B:静态IP方式连接WiFi热点
#include
#define WIFI_SSID “xingyuanli”
#define WIFI_PASSWD “12345678”
IPAddress local_static_ip(192, 168, 43, 10);
IPAddress local_gateway(192, 168, 43, 1);
IPAddress local_subnet(255, 255, 255, 0);
IPAddress local_dns_ip(192, 168, 43, 1);
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWD);
WiFi.config(local_static_ip, local_gateway, local_subnet,local_dns_ip);
WiFi.setAutoConnect (true);
WiFi.setAutoReconnect (true);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println(“connecting……”);
}
Serial.println(“Connected to AP”);
Serial.println(String(“mac address is”)+WiFi.macAddress());
delay(3000);
}
void loop() {
if (WiFi.status() == WL_CONNECTED)
{
Serial.println(“Connect to router success”);
Serial.println(String(“Subnet mask is”)+WiFi.subnetMask().toString());
Serial.println(String(“gatewayIPaddress is “)+WiFi.gatewayIP().toString());
Serial.println(String(“dnsIP address is”)+WiFi.dnsIP().toString());
Serial.println(String(“SSID is “) + WiFi.SSID());
Serial.println(String(“PSK is “) + WiFi.psk());
Serial.println(String(“BSSIDis “) + WiFi.BSSIDstr());
Serial.println(String(“RSSI is “) + WiFi.RSSI());
}else
{
Serial.println(“Connect to router failed”);
}
// Wait a bit beforescanning again
delay(1000);
}
上述程序中,设置固定IP地址后等待,直到WiFi.status()等于WL_CONNECTED,程序继续往下执行,然后打印MAC地址,并在loop()函数中循环打印IP地址网络信息。
C:修改模块DHCP主机名
#include
#define WIFI_SSID “xingyuanli”
#define WIFI_PASSWD “12345678”
#define WIFI_HOSTNAME “ESP8266_test01”
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWD);
WiFi.setAutoConnect (true);
WiFi.setAutoReconnect (true);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println(“connecting……”);
}
Serial.println(“Connected to AP”);
Serial.println(String(“mac address is”)+WiFi.macAddress());
Serial.println(String(“hostname is”)+WiFi.hostname());
WiFi.hostname(WIFI_HOSTNAME);
delay(3000);
}
void loop() {
if (WiFi.status() == WL_CONNECTED)
{
Serial.println(“Connect to router success”);
Serial.println(String(“hostnameis “)+WiFi.hostname());
}else
{
Serial.println(“Connect to router failed”);
}
// Wait a bit beforescanning again
delay(1000);
}
上述程序中,首先设置模块为WIFI_STA模式,然后程序调用WiFi.begin()连网后后等待,直到WiFi.status()等于WL_CONNECTED,程序继续往下执行,然后打印MAC地址和hostname,之后设置hostname为”ESP8266_TEST1″,并在loop()函数中循环打印hostname信息。