ESP8266指南:角色、功效及开发途径

网友投稿 2018-08-15 10:49

很多Maker专案里用到ESP8266开发板,本片文章尝试从应用功能和如何开发方面介绍ESP8266板。

ESP8266可以扮演什么(应用)角色?

https://cdn.china-scratch.com/timg/180817/1049551513-0.jpg

ESP8266可以扮演3种应用角色

ESP8266大致可以扮演3种应用角色:

1. 扮演Arduino的功能扩充,成为Arduino的受控者

Arduino本身没有Wi-Fi功能,但ESP8266有Wi-Fi功能,Arduino需要进行Wi-Fi无线收发时,可以透过ESP8266来实现。简单说,这是把ESP8266当成Arduino的Wi-Fi扩充卡(Shield)来用,差别只是ESP8266可能更便宜而已。

2. 扮演独立运作的Web Client角色

例如将温度计与ESP8266连接,并预先在ESP8266的执行程序中写入SSID=xxx,Password=yyy,让ESP8266以Web Client(其实连上线后用任何Internet协定均可,但最常用是WWW/HTTP)的身份,定时把温度数据回传到附近的Wi-Fi路由器上,再透过路由器传递到局域网络或Internet上的某个网站(Web Server),以便定时统整记录温度数据。

3. 扮演独立运作的Web Server角色

这角色是扮演成Web Server,而让Web Client来联机取得服务,这种应用方式最少,毕竟ESP8266硬件规格、效能太过薄弱,但网络上确实有一点这类的想法与讨论。

整体而言多数人采第二种应用,例如用ESP8266连接一个电源插座,然后透过Web浏览器遥控插座的开或关,也有人用来定期记录土壤湿度等。

怎样开发ESP8266的执行程序?

若本来已经使用过Arduino的人,最简单的开发方式就是用Arduino IDE开发软件来开发ESP8266的执行程序,很多语法已经可兼容使用,如pinMode、digitalRead、digitalWrite等。

如果不用Arduino也可以用C语言(严格而论Arduino用的程序语言,其学名为Processing,但其实90%与C、C++语言相仿),因为ESP8266的SDK(软件开发工具包)源头就来自GCC编译程序,C语言可以提供更接近硬件层的低阶控制。另外也可以用Python语言开发,但是是微型的Micro Python。

怎样把开发的执行程序放入ESP8266内?

程序开发完后怎样放入ESP8266内,以便让ESP8266一直执行该程序呢?此分成有Arduino电路板或没有Arduino电路板。

如果有,可以在Arduino IDE内选择让Arduino电路板充当刻录器,对ESP8266进行刻录。如果没有,就必须去购买一条「USB转TTL」的转接器,将转接器一端连接PC的USB埠,另一端(先确认电压已从5V降至3.3V,否则过高的电压会伤害ESP8266)接至ESP8266,而后在PC端用串行端口通讯软件,如putty、Realterm、 sscom32等,而后以下指令的方式,将程序从PC端刻录到ESP8266上。

除了刻录执行程序外,其实也可以刻录、更新ESP8266上的韧体程序,但使用机会比刻录执行程序低一点。

ESP8266有哪些(硬件)功效?

https://cdn.china-scratch.com/timg/180817/1049553404-1.jpg

ESP8266有ADC输入及PWM输出功能

除了Wi-Fi通讯能力外,有的ESP8266有提供1个10-bit的ADC输入(实际接脚与TOUT共享),如此可方便ESP8266与各种传感器连接,不过有的没有提供,必须注意。

另外ESP8266有PWM输出功能,脚位为GPIO12、GPIO13、GPIO15,但还要看电路板本身是否有实现。(注:2015年8月21日释出的1.1版ESP8266 RTOS SDK可以支持PWM、C++程序语言。)

此外ESP8266的Datasheet上有提及ESP8266有即时钟(Real-Time Clock, RTC)功能,但多数ESP8266电路板没有实现这项功能。如果真的有取得真实世界的日期、时间等信息需求,建议在Wi-Fi联机后,用Internet上的NTP(Network Time Protocol)协定来取得会比较合适。

整体而言ESP8266的一般性输出入(General Purpose Input/Output, GPIO)功能相当薄弱,毕竟是以Wi-Fi通讯为主要功能,表面上有编号1-16的GPIO接脚,但实际真的显露的接脚相当少,象征性提供2、3个脚位,因此不要对ESP8266有过度期望,毕竟只是5~7美元的小玩意儿。

另外,ESP8266虽可支持SDIO、SPI、I2C等多种接口,但其实同时间只能使用一种接口,且为了串接外部的闪存(韧体与执行程序都存在这个内存内),已经不可能转换成SDIO、I2C等其他接口,此同样在提醒大家勿过度期望ESP8266的外接接脚功能,应将多数需求寄望在Wi-Fi通讯上。

开发建议途径

https://cdn.china-scratch.com/timg/180817/1049555511-2.jpg

开发ESP8266应用的两条建议途径

简单来说,对电子线路较无把握、只学过简单Arduino应用开发者,笔者建议用Arduino来开发ESP8266应用,也透过Arduino将程序刻录到ESP8266内,比较简单。

而对电子线路较把握者,或期望用Arduino IDE/Processing以外的程序语言开发者,可以买一条USB转TTL线路,透过串行端口通讯程序来刻录。软硬件底子较足的人才建议此法。

==========================

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com