基于Arduino IDE的NodeMCU开发环境配置与实验指南
基于Arduino IDE的NodeMCU开发环境配置与实验指南
NodeMCU是一款基于ESP8266 Wi-Fi芯片的开源开发板,具有丰富的GPIO引脚和Wi-Fi功能,广泛应用于物联网项目开发。Arduino IDE是Arduino开发板的官方集成开发环境,支持多种第三方开发板的扩展,包括NodeMCU。本文将详细介绍如何在Arduino IDE中配置NodeMCU开发环境,并通过几个基础实验帮助读者快速入门。
一、前言
大概是半年前学习了关于NodeMCU和OLED屏幕的使用,还测试了获取天气信息的程序。但是最近重新拿起来的时候,又是一脸茫然,根本不知道从哪里开始。所以我的感触是做板子开发还得经常操作,不然操作不熟悉,再加上自己也半生不熟,更是一阵乱摸索。
昨天尝试使用ESPlorer编辑NodeMCU开发板,但后面被一些奇怪的问题困惑了,如Not enough memory;一点RST按键,开发板就从电脑上丢失,这时候只能重启电脑。
今天下午我决定重新走Arduino IDE开发NodeMCU的路子,目前来说,比使用ESPlorer顺利很多。这里简单记录一下。
二、基于Arduino IDE的ESP8266开发环境配置
1、下载Arduino IDE并安装。
Arduino IDE可以直接从网上下载,无论是官网还是论坛,它的安装包还是很好获取的。
2、添加其他开发板管理器地址
Arduino IDE不能直接识别出NodeMCU开发板,需要下载相关的依赖。
首先打开Arduino IDE,点击:文件》首选项,在其他开发管理器地址处添加,图1所示为添加后的首选项界面:http://arduino.esp8266.com/stable/package_esp8266com_index.json
图1 添加开发板管理地址
注:我使用的IDE版本是2.3.2,早前的版本可能有点不一样。
3、下载开发板依赖
点击:工具》开发板》开发板管理器,输入ESP8266搜索并下载对应内容,如图2所示,是我搜索到的界面。这里我已经下载过来,可以用就行。
图2 在开发版管理器搜索ESP8266并下载依赖
三、一些简单的程序测试
1、AP模式及blink
这部分代码主要从太极创客的网站上来的,它们在B站和网站都有相关教程,可以看视频和文档学习。
/*
NodeMCU接入点模式
By 太极创客(http://www.taichi-maker.com)
2019-03-11
此程序用于演示如何将NodeMCU以接入点模式工作。通过此程序,您可以使用
电脑或者手机连接NodeMCU所建立WiFi网络。
网络名: taichi-maker
密码:12345678
如需获得更多关于如何使用NodeMCU开发物联网的教程和资料信息
请参考太极创客网站(http://www.taichi-maker.com)
并在首页搜索栏中搜索关键字:物联网
*/
#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库
const char *ssid = "taichi-maker"; // 这里定义将要建立的WiFi名称。此处以"taichi-maker"为示例
// 您可以将自己想要建立的WiFi名称填写入此处的双引号中
const char *password = "12345678"; // 这里定义将要建立的WiFi密码。此处以12345678为示例
// 您可以将自己想要使用的WiFi密码放入引号内
// 如果建立的WiFi不要密码,则在双引号内不要填入任何信息
void setup() {
Serial.begin(9600); // 启动串口通讯
WiFi.softAP(ssid, password); // 此语句是重点。WiFi.softAP用于启动NodeMCU的AP模式。
// 括号中有两个参数,ssid是WiFi名。password是WiFi密码。
// 这两个参数具体内容在setup函数之前的位置进行定义。
Serial.print("Access Point: "); // 通过串口监视器输出信息
Serial.println(ssid); // 告知用户NodeMCU所建立的WiFi名
Serial.print("IP address: "); // 以及NodeMCU的IP地址
Serial.println(WiFi.softAPIP()); // 通过调用WiFi.softAPIP()可以得到NodeMCU的IP地址
pinMode(LED_BUILTIN, OUTPUT); // 将led引脚设置为输出模式
}
void loop() {
digitalWrite(LED_BUILTIN, LOW); //拉低led引脚电平
delay(1000);
digitalWrite(LED_BUILTIN, HIGH); //拉高led引脚电平
delay(2000);
}
将这部分代码编译烧录到NodeMCU开发板后,开发板的灯就会blink-blink闪烁。这时候打开手机的wifi功能会看到对应名称的一个wifi,说明这时候已经成功将开发板做成一个wifi热点,虽然没有网。这个时候我的心情是大好了,比起前面使用ESPlorer时遇到的诸多坎坷,Arduino IDE让我看到了希望。
2、OLED 屏幕测试
这部分的代码是直接从u8g2的示例中搞来的,但是需要取消注释一行内容(就是下面代码U8G2_SSD...很长的那句)。我在下面直接整理好了。
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Adafruit Feather ESP8266/32u4 Boards + FeatherWing OLED
/*U8G2_SSD1306_128X32_univision_F_SW_I2C: 这部分指定了OLED屏幕的类型(128X32的SSD1306)和连接方式(IIC)。
u8g2()这部分代码是为了初始化u8g2对象。
其中参数U8G2_R0表示屏幕旋转为正常方向(R1、R2、R3分别对应顺时针旋转90、180、270°);
SCL和SDA分别代表IIC总线的时钟线和数据线引脚,U8X8_PIN_NONE表示没有使用复位引脚
*/
void setup(void) {
u8g2.begin(); //初始化显示屏
}
void loop(void) {
u8g2.clearBuffer(); // clear the internal memory
u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
u8g2.drawStr(0,10,"Hello World!"); // 在指定坐标(x,y)处绘制文本
u8g2.sendBuffer(); // 将缓冲区的内容刷新到显示屏上
delay(1000);
}
对了,忘了交代OLED和NodeMCU的接线了,这里补充一下:
图3 oled与NodeMCU的接线图(转载)
当完成上述操作(oled和wifi那个是不一样的,大家可以根据需要凑到一起),就可在屏幕上展示如图4内容:
图4 在oled上显示“Holle World!”
四、 总结与展望
1、总结
上述实验内容为后续的NodeMCU开发打下重要基础,其中包括使用NodeMCU发射wifi信号、使用oled屏幕显示信息,使用blink灯观测开发板状态。
2、展望
后续尝试接入陀螺仪传感器获取实时数据,通过NodeMCU开发板发送到云端,并于Oled显示基本信息。