Arduino IDE环境之ESP8266氛围灯制作手记

本次制作中将要用到的是ESP-01S WIFI模块。选择它的原因主要是小巧,内置MCU并自带WIFI功能,同时价格也是非常便宜,因此也被广泛用于物联网项目中,不过在这些应用中ESP-01S大都是以从机方式工作,主机通过AT指令与之通讯。不难看出,这种方式虽然降低了开发难度,却也造成了一定的资源浪费,同时在性能上也带来一些损失。

Arduino IDE环境之ESP8266氛围灯制作手记_第1张图片
6_0.jpg

以下是ESP8266常见的几种开发模式:

  1. AT指令方式。这是最常见的开发模式,也是最简单的一种方式,只要通过串口发送AT指令就可以控制,适合大多数具有串口的单片机系统。

  2. 直接使用SDK开发。这个难度比较大,需要对芯片和SDK提供的API比较熟悉。

  3. NodeMCU方式。借助NodeMCU物联网开发平台,使用Lua脚本开发。需要额外烧写固件。

  4. Arduino方式。无需额外烧写固件,有丰富的第三方库资源。

  5. MicroPython方式。与Arduino方式类似,但是需要额外烧写固件。

相比较而言,以上的5种开发方式中,个人比较推荐使用Arduino方式,主要在于Arduino使用的是大家都熟悉的C/C++语言,另外还有丰富的第三方库文件可以用来实现开发。MicroPython作为后来者虽显劣势,却也是来势汹汹,大有锐不可挡之势,未来谁主天下也未尝可知。

因为本文将要介绍的氛围灯制作就要用到Arduino IDE,所以这里简单讲一下如何构建适合ESP8266开发的Arduino IDE环境。

  1. 打开Arduino IDE,依次点击菜单项“文件”->“首选项”,然后会看到“附加开发版管理器网址”,填入http://arduino.esp8266.com/stable/package_esp8266com_index.json ,确认后重启IDE。
Arduino IDE环境之ESP8266氛围灯制作手记_第2张图片
1.jpg
  1. 打开Arduino IDE,依次点击菜单项 “工具”->“开发板”->“开发板管理器”,搜索“ESP”,即可看到ESP8266社区提供的ESP8266插件,选择最新的版本并安装。
Arduino IDE环境之ESP8266氛围灯制作手记_第3张图片
2.jpg
  1. 接下来在Arduino IDE菜单“工具”->“开发板”中选择你正在使用的ESP8266开发板即可。
Arduino IDE环境之ESP8266氛围灯制作手记_第4张图片
4.jpg

至此,Arduino IDE中ESP8266的开发环境就搭建完毕了。

下面进入正题,介绍如何在Arduino IDE开发环境中,制作这款ESP-01S的氛围灯。这款氛围灯主体为一个玻璃的矿泉水瓶,电路部分藏身于瓶盖中,主控采用ESP-01S WiFi模块,通过控制WS2812B全彩环形灯实现不同灯光模式的呈现。你能想象下图中这个看似平淡无奇的水瓶,在改制成氛围灯后,到底会呈现出怎样奇幻的效果呢?让我们拭目以待吧!

Arduino IDE环境之ESP8266氛围灯制作手记_第5张图片
IMG_20190423_084815.jpg

材料清单

Arduino IDE环境之ESP8266氛围灯制作手记_第6张图片
Meterial.jpg

实物接线图

Arduino IDE环境之ESP8266氛围灯制作手记_第7张图片
3.jpg

相比于ESP-01模块,ESP-01S模块的GPIO0、RST、EN均已配置上拉,使用时会方便些,这里将GPIO0作为微动按键的输入端,模块上电时长按微动按键使GPIO0为低电平即可进入程序烧写模式。

实物装配

Arduino IDE环境之ESP8266氛围灯制作手记_第8张图片
IMG_20190224_101750.jpg

图中需要用到的元器件实物,分别是Micro USB接口板、ESP-01S模块、5V转3.3V模块、WS2812BRGB全彩环形灯。

Arduino IDE环境之ESP8266氛围灯制作手记_第9张图片
IMG_20190307_150631.jpg

按照前面的实物接线图,用导线将各模块连接起来,这样硬件连接部分差不多就好了。

Arduino IDE环境之ESP8266氛围灯制作手记_第10张图片
IMG_20190227_212056.jpg

接下来把瓶盖处理一下,需要使用钻头和刻刀在其侧面开出微动按键及Micro USB的孔位。要想把孔的位置和大小做得比较精确的话,手头没有合适的量具,只能反复的比对。

Arduino IDE环境之ESP8266氛围灯制作手记_第11张图片
IMG_20190307_220418.jpg

将前面焊接好的模块放置到瓶盖中。由于导线用的有点粗了,装配时遇到不小的麻烦,好在最后还是把所有的东西都塞下了。

Arduino IDE环境之ESP8266氛围灯制作手记_第12张图片
IMG_20190423_084944.jpg

这是将所有模块都安装到位后的样子,看起来是不是整齐多了。

Arduino IDE环境之ESP8266氛围灯制作手记_第13张图片
IMG_20190423_135608.jpg

先上个电试下灯。OK!没有问题,彩灯全亮了!怎么样?看起来效果还是十分酷炫吧!

Arduino IDE环境之ESP8266氛围灯制作手记_第14张图片
IMG_20190307_232358.jpg

把瓶盖装回去是这个样子的。经过精心测量,按键的孔位以及按键的高度都恰到好处,手按过去不觉得突兀,按起来也不费力。

软件编写

首先打开Arduino IDE,在菜单“工具”->“开发板”中选择你正在使用的ESP8266开发板即可。这里我们选“Generic ESP8266 Module”。

Arduino IDE环境之ESP8266氛围灯制作手记_第15张图片
7.jpg

在Arduino IDE中,对WS2812B全彩LED的控制,可以通过引用Adafruit NeoPixel库来实现。不需要自己花时间钻研WS2818B的手册后再来编写驱动代码。这就是Arduino开源平台最值得称道之处,有非常丰富的第三方库函数可用,真是省时又省力,可以说是瞬间拉低了程序员的门槛。如果你的Arduino IDE中没有NeoPixel库,可以通过菜单“工具”->“管理库...”或“项目”->“加载库”->“管理库...”,搜索“NeoPixel”即可看到Adafruit NeoPixel库,选择最新版本安装即可。

Arduino IDE环境之ESP8266氛围灯制作手记_第16张图片
10.jpg

要使用NeoPixel库函数,在源文件中把相关的头文件包含进来就可以了。推荐使用傻瓜式操作,通过菜单“项目”->“加载库”从右侧弹出的库列表中选择“NeoPixelBus”即可。

Arduino IDE环境之ESP8266氛围灯制作手记_第17张图片
11.jpg

编辑器自动将以下三个头文件NeoPixelAnimator.h、NeoPixelBrightnessBus.h、NeoPixelBus.h添加至源代码中。另外,为了实现单按键操作,引入Ticker库用来对按键计时,以实现对短按、长按操作进行识别。

Arduino IDE环境之ESP8266氛围灯制作手记_第18张图片
8.jpg

通过模版类NeoPixelBus创建strip对象,实现对WS2812B全彩的操控。这里选择NeoGrbFeature、NeoEsp8266AsyncUart1Ws2812Method类定义的方法实现WS2812B要求的控制协议。PixelCount的数值按所用灯环中LED灯珠的数目设置。PixelPin是用来指定控制WS2812B模块的引脚,对于ESP8266的板子来说可以忽略,默认就是使用GPIO2。

Arduino IDE环境之ESP8266氛围灯制作手记_第19张图片
12.jpg

接下来就是氛围灯功能实现部分的代码,主要实现这样功能:按键短按时,可在纯色模式和旋转流水灯模式下,指定灯光颜色,有红、橙、黄、绿、青、蓝、紫、白八色可选;按键长按约1秒时,可顺序切换四种灯光模式,纯色模式、旋转流水灯模式、彩色渐变模式、幻彩模式;按键长按约5秒时,关闭灯光。具体的实现方法可以参考附件中的代码,限于篇幅这里就不一一介绍了。

Arduino IDE环境之ESP8266氛围灯制作手记_第20张图片
16.jpg

代码烧写

烧写代码时,按下图将USB串口工具与ESP-01S连接好即可。需要注意的是,在上电时,将ESP-01S模块的GPIO0脚接地即可进入代码烧写模式。

Arduino IDE环境之ESP8266氛围灯制作手记_第21张图片
Serial.jpg

给ESP-01S模块烧写代码与通常情况下对Arduino UNO烧写几乎没有差别。只是因为ESP-01S模块是通过串口工具供电,所以每次烧写前需要将USB串口工具从电脑的USB口拔除,然后将ESP-01S模块得GPIO0拉低,重新将USB串口工具插到电脑的USB口,这样重新上电后ESP-01S即可进入烧写状态。注意!因为串口工具有拔插过,所以烧写时要在到菜单 “工具”-〉“端口”中选择对应的串行口。

Arduino IDE环境之ESP8266氛围灯制作手记_第22张图片
17.jpg

****成品效果****

终于到了最后展示成果的时间了,灯光亮起的瞬间感觉有些惊艳到了,从LED发出的各色光线经过水瓶的折射,光影交织竟然呈现出五彩斑斓、五光十色、万紫千红、鲜艳夺目、斑驳陆离、五彩纷呈、花团锦簇、云蒸霞蔚、花色斑斓、姹紫嫣红、云兴霞蔚、五颜六色、异彩纷呈的奇幻景象,折腾多日也算是值了。

Arduino IDE环境之ESP8266氛围灯制作手记_第23张图片
9.jpg

下面是动图的效果。转化为GIF颜色有些损失,成色块了,感觉也不错哦,又是另外一番效果。

ColorLamp.gif

你还等什么,赶快也动手做一个吧!

你可能感兴趣的:(Arduino IDE环境之ESP8266氛围灯制作手记)