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

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

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。
1.jpg
  1. 打开Arduino IDE,依次点击菜单项 “工具”->“开发板”->“开发板管理器”,搜索“ESP”,即可看到ESP8266社区提供的ESP8266插件,选择最新的版本并安装。
2.jpg
  1. 接下来在Arduino IDE菜单“工具”->“开发板”中选择你正在使用的ESP8266开发板即可。
4.jpg

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

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

IMG_20190423_084815.jpg

材料清单

Meterial.jpg

实物接线图

3.jpg

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

实物装配

IMG_20190224_101750.jpg

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

IMG_20190307_150631.jpg

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

IMG_20190227_212056.jpg

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

IMG_20190307_220418.jpg

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

IMG_20190423_084944.jpg

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

IMG_20190423_135608.jpg

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

IMG_20190307_232358.jpg

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

软件编写

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

7.jpg

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

10.jpg

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

11.jpg

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

8.jpg

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

12.jpg

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

16.jpg

代码烧写

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

Serial.jpg

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

17.jpg

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

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

9.jpg

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

ColorLamp.gif

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容