Author:teacherXue

一、认识ESP8266 NodeMCU

ESP8266 是 Espressif Systems 生产的 Wi-Fi 片上系统 (SoC)。它非常适合物联网和家庭自动化项目,目前有非常高的市场普及率,还有更加高端的同时支持wifi和蓝牙的双核心芯片ESP32,可以在乐鑫官网查看完整的芯片列表。

  1. ESP8266芯片的技术特性

  • 处理器:L106 32 位 RISC 微处理器内核,基于以 80 或 160 MHz 运行的Tensilica Diamond Standard 106Micro。

  • 记忆:

32 KiB 指令 RAM

32 KiB 指令缓存RAM

80 KiB 用户数据RAM

16 KiB ETS 系统数据 RAM

  • 外部 QSPI 闪存:支持高达 16 MiB(通常包括 512 KiB 至 4 MiB)

  • IEEE 802.11 b/g/n Wi-Fi

  • 集成 TR 开关、巴伦、LNA、功率放大器和匹配网络

  • WEP 或 WPA/WPA2 身份验证,或开放网络

  • 17 个 GPIO 引脚

  • 串行外设接口总线 (SPI)

  • I²C(软件实现)

  • I²S 与 DMA 接口(与 GPIO 共享引脚)

  • 专用引脚上的 UART,以及可在 GPIO2 上启用的仅传输 UART

  • 10位ADC(逐次逼近型ADC)

  1. ESP8266芯片具有如下优点

低成本:您可以获得 ESP8266 板,起价为 3 美元(或更低),具体取决于型号。

低功耗:与其他微控制器相比,ESP8266 功耗非常低,甚至可以进入深度睡眠模式以降低功耗;

Wi-Fi:ESP8266 可以生成自己的 Wi-Fi 网络(接入点)或连接到其他 Wi-Fi 网络(站点)以访问互联网。这意味着 ESP8266 可以访问在线服务以发出 HTTP 请求或将数据保存到云端等。它还可以充当 Web 服务器,以便您可以使用 Web 浏览器访问它,并能够远程控制和监视您的电路板。

与 Arduino“编程语言”兼容:那些已经熟悉 Arduino 板编程的人很高兴知道他们可以用 Arduino 风格对 ESP8266 进行编程。

与 MicroPython 兼容:您可以使用 MicroPython 固件对 ESP8266 进行编程,MicroPython 固件是针对微控制器和嵌入式系统的 Python 3 的重新实现。

  1. ESP8266芯片版本

ESP8266模块有多个不同版本,以满足不同的使用场景和成本,如下图所示。ESP-01 和 ESP-12E 是最为普及的版本。市面上有非常多的各种带有 ESP-12E 或 ESP-12F 芯片的开发板。

  1. ESP8266开发板

使用裸芯片或者模块直接进行学习不太现实,NodeMCU开发板是一个开源的物联网平台,配备了所有需要的电路来供电、可以便捷的上传代码、轻松访问 GPIO 以连接传感器和执行器、用于 Wi-Fi 信号的天线以及其他有用的功能。

ESP8266 开发板种类繁多,尺寸各异。一些电路板受益于小尺寸,这可能非常实用,具体取决于您的项目功能。通常,较小的电路板具有少量可用的 GPIO,例如 ESP-01。最适合的ESP8266 开发板将取决于打算做什么。如果刚开始使用 ESP8266 开发板,建议使用ESP8266-12E NodeMCU 套件。

ESP12-E NodeMCU 套件是最常用的 ESP8266 开发板之一。它具有 4MB 闪存、 可访问 11 个 GPIO 引脚和一个 具有 10 位分辨率的模数转换器 (ADC)引脚。此外,该开发板具有内置稳压器,您可以使用迷你 USB 插座或 Vin 引脚为模块供电。

将代码上传到电路板就像将代码上传到 Arduino 一样简单。不需要 FTDI 编程器或额外的电路,因为它有一个内置的 USB 转串口转换器。大多数开发板都带有 CP2101 或 CH340 芯片。

它带有一个用于 Wi-Fi 信号的板载天线,并带有 RST 和 FLASH 按钮以重置电路板并将其置于闪烁模式。GPIO 2 内部连接了一个蓝色 LED,调试时非常实用。

  1. 其他流行的ESP8266开发板

  • ESP-01和ESP8266 Wemos D1 mini。ESP-01 体积超小,可以容易的装入很多外壳之中,但其引脚数量很少,没有内置稳压器,需要额外的3.3v稳压供电,没有USB接口意味着需要串口上传代码,不是很友好。

  • WeMos D1 Mini 在最小的小型设置中提供 4MB 闪存、11 个 GPIO 和 1 个 ADC 引脚。社区为 D1 迷你板开发了各种各样的 扩展板,允许您构建小型和简单的设置,几乎不需要布线。您只需堆叠屏蔽层即可连接多个外围设备。它带有内置稳压器和 USB 转 UART 转换器,可以轻松上传代码。对于初学者来说也是一个非常好的选择。

ESP-01

ESP8266 Wemos D1 mini

  1. 常用开发板对比

ESP-01

ESP-12E NodeMCU

WeMos D1 mini

通用IO引脚

4(包括 TX 和 RX)

11

11

模数转换器引脚

1个

1个

1个

闪存

1MB(升级版)

4MB

4MB

面包板支持性

X

USB转串口

X

尺寸

24.75 毫米 x 14.5 毫米

48.55 毫米 x 25.6 毫米

34.2 毫米 x 25.6 毫米

价格

$

$$

$$

二、ESP8266 NodeMCU引出线

  1. 开发板引脚类型

  • 电源引脚

通常,所有电路板都带有电源引脚:3V3、GND 和 VIN。可以使用这些引脚为电路板供电(如果不通过 USB 端口供电),或为其他外围设备供电(如果使用 USB 端口为电路板供电)。

  • 通用输入输出引脚 (GPIO)

需要注意的是 GPIO 编号与板上丝印上的标签不匹配。例如,D0对应GPIO16,D1对应GPIO5。使用 Arduino IDE 对电路板进行编程时,必须使用 GPIO 编号而不是丝印上的编号。这适用于大多数 ESP8266 开发板。

  • ESP8266 外围设备包括:

17个GPIO(ESP8266开发板上通常不是所有的GPIO都可以访问)

接口接口

I2C(在软件上实现)

I2S 与 DMA 接口

串口

10 位模数转换器

不同的 ESP8266 GPIO具有特定的功能,必须明智地为您的项目选择管脚。否则最终可能会得到意想不到的结果。

  1. ESP-12E NodeMCU 套件引出线

  1. WeMos D1 mini引出线

  1. ESP8266-01 引出线

三、对 ESP8266 进行编程

  1. 使用 ArduinoIDE 对 ESP8266 进行编程

要对电路板进行编程,您需要一个 IDE 来编写代码。对于初学者,可以使用 Arduino IDE。它运行良好并且对于初学者来说简单直观。在熟悉 Arduino IDE 并开始创建更复杂的项目后,使用VS Code 与 PlatformIO 扩展一起使用会很有用,ESP8266和ESP32支持类C的arduino脚本编程,最终执行的是编译好的机器指令,也可以通过micro python以脚本解释的方式进行。但需要注意的是micro python具有较好的交互编程和维护能力,但执行效率远低于c,在需要稳定运行的产品之上,建议运行编译成机器指令的程序。

我们将从Arduino IDE开始最简单的示例,然后向VS Code进阶。使用版本建议ESP8266 的旧版本 (1.8.19) 。虽然版本 2 与Arduino 配合良好,但仍然存在一些错误和 ESP8266 尚不支持的一些功能。

  1. 安装 Arduino集成开发环境

运行 Arduino IDE,您需要在计算机上安装 JAVA环境。请参阅相关教程完成java环境配置。

1)下载 Arduino IDE

通过官方地址https://www.arduino.cc/en/Main/Software下载,该软件为免费软件,你可以放心的使用。向下滚动页面找到1.8版本下载。

2)运行 Arduino IDE

解压缩后运行名为arduino.exe的可执行文件即可

3)软件运行界面

4)在 Arduino IDE 中安装 ESP8266 NodeMCU

为了能够使用 ArduinoIDE 对 ESP8266 NodeMCU 进行编程,您需要添加对 ESP8266 开发板的支持。按照以下步骤操作:

  • 转到文件>首选项。

  • 在“ 附加开发板管理地址 ”字段中输入如下地址并确认。

注意:国内开发者可能并不能够直接访问该地址,需采用离线安装包的方式。

  • 离线安装包方式

国内用户适用于离线方式安装,arduino中文社区有封装好的离线安装程序,https://arduino.me/a/esp8266可以浏览下载,以及配置方式(https://arduino.me/a/esp32则可以下载ESP32开发支持)。开发板管理地址按如下填写为https://arduino.me/packages/esp8266.json

双击运行下载好的安装程序

  • 设置开发板类型

  • 搜索ESP8266并安装“ ESP8266 by ESP8266 Community ”,本列中该插件已安装,否则将看到安装按钮,点击安装即可,已安装插件也可以在这里删除。

  • 工具、开发板选项中可以看到ESP8266选项,下面有可供选择的8266芯片类型。

  1. 使用 ArduinoIDE 将代码上传到ESP8266 NodeMCU

1) 示例代码

确保在 工具 > 开发板中选择了 ESP8266 。如果使用的是 ESP8266-12E NodeMCU 套件,如前图所示,请选择NodeMCU 1.0(ESP-12E 模块)选项。如果不知道您的电路板是什么,您可以随时选择通用 ESP8266 模块。

在界面中通过文件 > 示例 > ESP8266WiFi > WiFiScan。你将可以在新窗口打开包含wifi热点扫描的示例代码。

2) 连接设备

使用 USB 数据线将 ESP8266 开发板连接到计算机,注意一定是具备数据传输能力的MicroUSB接线。

3) 选择端口

界面中转到工具 > 端口 并选择一个可用的 COM 端口。如果 COM 端口显示为灰色,则表示没有所需的 USB 驱动程序,大多数 ESP8266 开发板使用 CP2101 或 CH340 驱动程序,请根据相关资料安装对应USB转串口驱动程序。

4) 上传代码

可以先点击对勾按钮对代码进行编译检查,此时代码不会烧录到芯片。可以及时发现问题并修正错误。向右箭头则编译代码并烧录到芯片。这里是标准示例不存在错误,我们选择直接烧录。

烧录过程中,会出现进度,如果有错误也会在消息窗口显示。

编译完成会烧录到开发板,并重启开发板芯片,看到如下信息代表烧录正确完成。

5) 查看结果

通过工具菜单打开串口监视器

串口监视器是通过串口和芯片通信的界面,顶行输入框可以向串口发送消息,下面的列表为接收到串口的信息。在这里我们看到滚动显示的信息为能扫描到的WIFI热点信息。这就是ESP芯片的强大指出,它本身就可以充当一个智能无线网关,我们将在后续章节详细了解。需要注意的是在,串口监视器界面中的波特率需要和芯片保持一致,才能保证信息的正确显示,ESP8266-12E芯片默认波特率是115200,可以在芯片代码中修改。

四、来自于板载LED的Hello world

在程序员的第一个程序中,总是喜欢通过hellow world!这样的简单信息输出程序作为学习开始的代表。第三节中,我们确实可以通过串口监视器来获得文字信息,但物联网设备多数情况下是不会连着开发环境运行的。下面我们将使用开发板自己带的LED灯光来和世界打个招呼。

  1. 新建项目

IDE界面中文件选择新建,会打开一个新的窗口,但在没有保存时,不会在本机留下项目文件,在编译时要求项目必须被保存。要注意,arduino项目保存时,单个文件也需要成项目目录。这里我们新建并保存,输入light_hellow_world并确定。

  1. 编辑代码

空白项目里面的两个方法就是arduino程序的基本结构。void setup()方法相当于程序的主方法、入口点,只在程序开始时运行一次。void loop()方法和其名称一样,是不断重复执行的方法,arduino框架编译时自动实现其循环机制,我们不用关心loop方法的调用,arduino代码属于类c脚本,在C语言的基础上封装了很多工具函数,其基本语法和C是一样,有C基础的同学们可以快速上手。

在文件的开头加上 int pin = 2;声明编号2引脚的变量,ESP8266-12开发板的板载LED信号控制连接的是其2号数字引脚,数字引脚只传输高低电平状态。

在setup方法里调用pinMode方法,定义2号引脚的控制方式为电平输出模式,如果是采集数据用的引脚,则是输入。

pinMode(pin, OUTPUT);

在loop方法里,通过digitalWrite方法,完成数字信号的写入,让2号引脚获得高低电平的输出控制。

digitalWrite(pin, HIGH); //打开LED (HIGH为电压等级高电平)

delay(1000); // 等待1000毫秒

digitalWrite(pin, LOW); //关闭LED (LOW为电压等级低电平)

delay(1000); // 等待1000毫秒

最终代码如下:

3. 编译烧录代码

点击编译上传,需要注意的是,arodionIDE环境中,串口属于独占资源,如果你正在运行之前的串口监视器,请将其关闭。看到正确的烧录结束信息后,观察开发板的蓝色LED指示灯以一秒为间隔闪烁,尝试修改参数,获得不同结果。

这时,你可以使用电池、或者充电宝供电的方式,让开发板脱离IDE开发环境,独立运行程序。

01-ESP8266 NodeMCU 物联网开发初识相关推荐

  1. 基于MacOS搭建ESP8266 NodeMCU CP2102开发环境

    基于MacOS搭建ESP8266-NodeMCU开发环境 1. 下载.安装驱动 2. Arduino开发环境配置 2.1. 下载.安装Arduino 2.2. 配置Arduino 1. 下载.安装驱动 ...

  2. esp8266 nodemcu 自制mp3

    ESP8266 播放 mp3 其实早就想做一个mp3播放器,但是一直没有时间,借着这次高考周放假,可以开始自己的开发. 准备工作 购置需要用到的模块 ESP8266 Nodemcu 作为开发板 OLE ...

  3. ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340上传程序不显示

    买的ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340在上传店家提供的示例程序可以上传成功,但屏幕不显示,如下图. 方法:选择开发板时,选择"LOLIN(W ...

  4. ESP8266 Non-OS SDK 开发之旅 基础篇① 初识 Non-OS SDK,史上超级详细手把手教小白20分钟快速搭建SDK软件开发环境,完成第一个例子Hello World!

    文章目录 1.前言 2. SDK概述 2.1 SDK使用流程 2.2 ESP8266 HDK -- 硬件开发工具 2.3 ESP8266 SDK -- 软件开发工具包 2.3.1 Non-OS SDK ...

  5. 乐鑫esp8266模块MicroPython开发板MQTT物联网人工智能最小系统

    简 介: ※对于购买自网络的基于ESP8266的实验模块进行了初步的测试,它其中的一些示例进行了练习.特别是对于基于ESP8266的特殊的一些外设的测试. 关键词: ESP8266,MicroPyth ...

  6. 使用无线WIFI模块NodeMCU Lua V3物联网开发板8266-01/01S 在Arduino搭建环境到点亮一个LED灯

    使用无线WIFI模块NodeMCU Lua V3物联网开发板8266-01/01S 在Arduino搭建环境到点亮一个LED灯 软件下载 基于Arduino环境搭建 点亮一个LED灯 上传成功 修改代 ...

  7. ESP8266 NodeMCU开发板连接手机热点问题

    ESP8266 NodeMCU开发板连接手机热点问题 前言: 众所周知,esp是构建一个IOT工程里得力助手之一,通俗点来说就是:"WIFI模块" 不过下面要讲的是esp8266中 ...

  8. Esp8266 nodemcu 使用PubSubClient连接阿里云物联网平台

    之前写了一篇微信小程序使用MQTT.js连接阿里云IoT物联网平台,然后很多人问问题的时候顺带会问些硬件的问题,但是自己不会,没法回答.最近有些空闲的时间,自己也挺感兴趣,于是花了一个星期左右的时间看 ...

  9. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU

    索引 这是用微信小程序遥控开门的系列文章,具体微信小程序连接物联网的代码在第三章提及. 微信小程序连接物联网(一):初始化ESP8266 NodeMCU 微信小程序连接物联网(二):NodeMCU L ...

最新文章

  1. android饼状图简书,Charts-饼状图
  2. 一周一论文(翻译)——[SIGMOD 19] Elasticutor:Rapid Elasticity for Realtime Stateful Stream Processing
  3. 软件测试——JUnit中的参数化测试
  4. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)
  5. JSP提交中文乱码的解决
  6. python爬虫从小白到高手 Day1 爬取百度音乐歌单
  7. Collection如何转成stream以及Spliterator对其操作的实现
  8. 安全SaaS调查品牌认知
  9. eclipse中文版设置字体大小
  10. 用yolov5训练kitti数据集
  11. 微软Win10最新补丁KB5017380更新了什么?
  12. 使用SoftEther 上免费校园网(ipv6)
  13. ubuntu安装搜狗拼音输入法
  14. Gateway断言功能详解
  15. 漏洞优先级技术(VPT)导论
  16. Harbor未授权创建管理员漏洞(CVE-2019-16097)
  17. 鸿蒙系统教程,麒麟9000+鸿蒙操作系统,华为新平板有点牛
  18. C#简单调用FMU ,进行仿真计算
  19. 前端开发:Vue项目报错NavigationDuplicated:Avoided redundant navigation to current location:“/XXX”的解决方法
  20. CTF Misc 题目基础

热门文章

  1. C++标准模板库STL【最全总结】【收藏方便使用】
  2. 2019 蓝桥杯省赛 A 组模拟赛(一)C. 结果填空:马的管辖 (暴力搜索)
  3. java pdf转图片 pdfbox_JAVA基于PDF box将PDF转为图片
  4. Jenkins教程(4)使用PyInstaller构建Python应用
  5. 美团点评2019校招笔试题——前端开发方向(附答案)
  6. 《海盗来了》疯狂游戏,如何用数据抢占小游戏市场
  7. 【Leetcode刷题】:Python:494. 目标和
  8. Android MediaPlayer播放视频详细步骤
  9. 1.华为设备CPU过高排查过程
  10. Java项目中使用频率最高的100个类