WEMOS D1 WIFI开发板基础资料
基础知识 Arduino简介
Arduino是一款便捷灵活、方便上手的开放源代码硬件项目平台。Arduino板基于Atmel的微控制器,增加使其能够适用大部分运行条件的电子元件,并引出简单的I/O接口,方便快发开发应用。Arduino的软件部分主要包含ArduinoIDE以及相关的板级支持包和丰富的第三方组件库。 Arduino特点:跨平台、简单清晰、开放软硬件、发展迅速。
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。
带着主角光环的WeMos D1
WeMos D1开发板全称是WeMos D1 WiFI UNO R3开发板,基于ESP-12E,而且兼容Arduino,有了这款物联网开发板,我们就可以愉快的使用Arduino方式开发ESP8266,玩转物联网项目。 技术参数 处理器 ESP-8266EX 工作电压 3.3V 输入电压 6-24V I/O 数量 11 AD 输入电压 0-3.3V Flash 4MB SRAM 32KB DRAM80KB 时钟频率 80MHz/160Mhz 网络 802.11 b/g/n 尺寸规格:长68.6mm x 宽53.4mm 重量 21g 所有的 IO 工作電平為 3.3V,可瞬間承受 5V; 除 D2 外,所有 I/O 都支持中斷,PWM,I2C,跟 1-wire;
开发环境配置 Arduino IDE下载
在右侧选择你对应的系统版本下载,Windows用户可以选择“Windows免安装ZIP包”,解压后可直接运行。 或者Windows用户也可以直接通过我司网盘下载1.8.12版本IDE: 提取码:vuhu 下载后直接解压点击arduino.exe运行即可,无需安装,注意如果提示有新版本可供升级,直接忽略即可。
USB驱动安装
提取码:jd2o 下载驱动安装包,解压之后,直接点击运行EXE安装文件。
IDE配置 第一步:打开Arduino,选择“文件/首选项”;
点击“工具”->“开发板”->“开发板管理器”,在开发板管理器搜索8266就能找到要的支持文件了;
版本选择最新版本,然后点击安装,安装完成后点击关闭即可。 以上为官方安装方式,由于其服务器在国外,所以国内用户的话,下载会比较慢,有时会无法安装成功,所以我们整理出国内用户可以使用的快捷方式,方式仅供参考,仅供学习,由于Arduino非我方软件,故若我们的方式失效,用户需自行学习解决,不接受因此而对我们作出的差评。 下载ESP8266安装包: 提取码:6pzn 下载并解压“packages-8266”文件,点击运行“8266_packages_2.7.1.exe”执行安装。安装完成后打开IDE,然后选择工具->开发板->ESP8266 Modules--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相关的函数使用。
连接WIFI测试; A:动态IP方式连接WiFi热点 - #include <ESP8266WiFi.h>
- #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 before scanning again
- delay(1000);
- }
复制代码上述程序中,首先设置模块为WIFI_STA模式,然后程序调用WiFi.begin()连网后等待,直到WiFi.status()等于WL_CONNECTED,程序继续往下执行,然后打印MAC地址,并在loop()函数中循环打印IP地址网络信息。
B:静态IP方式连接WiFi热点 - #include <ESP8266WiFi.h>
- #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("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 before scanning again
- delay(1000);
- }
复制代码上述程序中,设置固定IP地址后等待,直到WiFi.status()等于WL_CONNECTED,程序继续往下执行,然后打印MAC地址,并在loop()函数中循环打印IP地址网络信息。
C:修改模块DHCP主机名 - #include <ESP8266WiFi.h>
- #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("hostname is ")+WiFi.hostname());
- }else
- {
- Serial.println("Connect to router failed");
- }
- // Wait a bit before scanning again
- delay(1000);
- }
复制代码上述程序中,首先设置模块为WIFI_STA模式,然后程序调用WiFi.begin()连网后后等待,直到WiFi.status()等于WL_CONNECTED,程序继续往下执行,然后打印MAC地址和hostname,之后设置hostname为"ESP8266_TEST1",并在loop()函数中循环打印hostname信息。
|