600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Arduino IDE 搭建 ESP8266 开发环境及项目演示

Arduino IDE 搭建 ESP8266 开发环境及项目演示

时间:2022-01-29 03:11:04

相关推荐

Arduino IDE 搭建 ESP8266 开发环境及项目演示

ESP8266是一款由乐鑫 Espressif 公司制作的低成本的 Wi-Fi 芯片,具有完整的 TCP / IP 协议栈和微控制器功能。它专为移动设备、可穿戴电子产品和物联网应用设计,功耗很低且价格非常低廉。

我这里使用的NodeMcu开发板即搭载了这款芯片。

Arduino IDE是由 Arduino 官方提供的支持C 语言的集成开发环境,主要是针对 Arduino 系列的开发板进行编程。

通过简单的配置,可以在原本的编程环境里添加上对 ESP8266 开发板的支持。对于熟悉 Arduino 函数库和开发流程的用户,基本上没有任何使用上的区别。

一、添加 ESP8266 支持

首先从Arduino 官网下载最新版本的Arduino IDE软件并安装。

安装完成以后,进入首选项(Preferences),找到附加开发板管理器地址(Additional Board Manager URLs),并在其后添加如下信息:

/stable/package_esp8266com_index.json

管理器附加地址

之后点击工具-开发板-开发板管理器,进入开发板管理器界面:

开发板管理器

找到esp8266并安装:

esp8266

安装完成后,重启 Arduino IDE 软件。在工具-开发板选项中即会看到 ESP8266 开发板的选项:

ESP8266 开发板

二、测量温湿度

本例中使用DHT11 温湿度传感器测量室内温度和湿度,再把测量所得的结果输出至 Arduino IDE 的串口监视器中。

源代码

在 Arduino IDE 中新建项目并写入如下代码:

#include "DHT.h"#define DHTPIN 5#define DHTTYPE DHT11// Initialize DHT sensorDHT dht(DHTPIN, DHTTYPE, 15);void setup() { // Start Serial Serial.begin(115200); // Init DHT dht.begin();}void loop() { // Reading temperature and humidity float h = dht.readHumidity(); float t = dht.readTemperature(); // Display data Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C "); // Wait a few seconds between measurements. delay(2000);}

由于源代码中首行引入的 DHT 库并不是 Arduino IDE 内置的库文件,需要先点击项目-加载库-管理库进入库管理器,搜索安装如下两个依赖库(Adafruit Unified Sensor和DHT sensor library):

安装依赖库

线路连接

该测试项目只需要连接好 NodeMcu 开发板与 DHT11 温湿度模块(或者单独的 DHT11 元件配合 5kΩ 的上拉电阻),无需额外的传感器模块和电子组件。

线路连接示意图如下:

连线示意图

NodeMcuDHT11

3V3VCC(Pin1)

GNDGND(Pin4)

D1DATA(Pin2)

3V35k 电阻 - DATA(Pin2)

编译运行

Arduino IDE 实际上支持非常多的基于 ESP8266 芯片设计的开发板,如Adafruit Feather HUZZAH ESP8266、LOLIN (WEMOS) D1 mini等。可以根据自己购买的开发板的具体型号,在编译前选择对应的开发板选项(工具-开发板)。

我这里使用的是开源的NodeMcu v1.0开发板,编译代码前确保选择正确:

NodeMcu v1.0

最终的运行效果如下:

串口监视器

呃,,南方的冬天,外面在下雨。室内,没开空调。。。(后面温湿度升高是因为,我对着传感器哈气了。。。)

注意事项

可以看到,源代码中的DHTPIN(即传感器 DATA 引脚需要连接的开发板引脚 )定义为5,但开发板实际连接的是D1引脚(而不是D5)。

ESP8266 芯片有自己的引脚(GPIO)布局,但是基于该芯片设计的众多开发板,对于芯片上 GPIO 的引出方式却有自己的规则。

即源代码中的5指的并不是开发板的引脚D5,而是 ESP8266 的引脚GPIO 5,对应到开发板上即是D1引脚。

相关的引脚布局如下图所示:

NodeMcu 引脚布局

三、Wi-Fi 连接

ESP8266 最大的特性就是其超低成本的 Wi-Fi 实现。

这里简单贴出其连接 Wi-Fi 的示例代码:

// Import required libraries#include <ESP8266WiFi.h>// WiFi parametersconst char* ssid = "your_wifi_name";const char* password = "your_wifi_password";void setup(void){ // Start Serial Serial.begin(115200); // Connect to WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Print the IP address Serial.println(WiFi.localIP());} void loop() {}

运行结果如下:

ESP8266 Wi-Fi

四、aREST

aREST框架可以为一些常见的嵌入式开发板提供RESTful接口,支持通过串口、Wi-Fi、以太网、蓝牙等硬件发送命令至开发板,激发特定的操作,并将数据以 JSON 的格式返回给控制端用户。

aREST

使用 aREST 框架既可以在本地网络环境中控制联网设备,也可以借助云端平台进行远程操作或监控。

结合之前的温湿度项目,可以将连接 Wi-Fi 后的 NodeMcu 开发板作为一个实现了 REST API 的本地服务器,通过访问其 IP 地址来获取相应的温湿度数据(JSON 格式)。

代码如下:

// Import required libraries#include "ESP8266WiFi.h"#include <aREST.h>#include "DHT.h"// DHT11 sensor pins#define DHTPIN 5#define DHTTYPE DHT11// Create aREST instanceaREST rest = aREST();// Initialize DHT sensorDHT dht(DHTPIN, DHTTYPE, 15);// WiFi parametersconst char* ssid = "wifi-name";const char* password = "wifi-pass";// The port to listen for incoming TCP connections #define LISTEN_PORT 80// Create an instance of the serverWiFiServer server(LISTEN_PORT);// Variables to be exposed to the APIfloat temperature;float humidity;void setup(void){ // Start Serial Serial.begin(115200); // Init DHT dht.begin(); // Init variables and expose them to REST API rest.variable("temperature",&temperature); rest.variable("humidity",&humidity); // Give name and ID to device rest.set_id("1"); rest.set_name("esp8266"); // Connect to WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.println(WiFi.localIP());}void loop() { // Reading temperature and humidity humidity = dht.readHumidity(); temperature = dht.readTemperature(); // Handle REST calls WiFiClient client = server.available(); if (!client) { return; } while(!client.available()){ delay(1); } rest.handle(client);}

运行效果:

ESP8266 RESTful

以上只是一些基础的使用介绍吧,,,后续比如更加复杂的网络服务、对接公共的物联网云平台及MQTT协议等内容,有时间再看看。我去,光着脚,12℃。冻死我了。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。