在物联网(IoT)领域,连接众多设备到Arduino、Netduino或Raspberry Pi等单元的成本可能会迅速上升,尤其是考虑到这些设备的功耗以及布线成本。而ESP-8266模块以其低廉的成本(大约每个3美元)提供了简单性、WiFi连接和小于一英寸见方的紧凑尺寸,解决了这些问题。
ESP-8266模块的软件栈是开源的,它利用了NodeMCU的可安装Lua编程语言解释器。上传程序的实用工具包括LuaLoader和LuaUploader应用程序。Lua和Python在很多方面都很相似。ESP-8266可以作为WiFi接入点、客户端或两者兼有,这使得它非常适合物联网的实现。它拥有32位微处理器以及内置的WiFi堆栈。基础型号有两个通用输入/输出(GPI/O)引脚和串行数据输入输出。由于它是一个3.3伏特的设备,因此可以从单个3.3伏特的锂离子电池或一对常规的1.5伏特电池(甚至是可充电的)供电。
要安装Lua解释器和上传程序,需要一个3.3伏特兼容的USB到串行适配器。大多数USB适配器的供电电流限制在100毫安,因此在传输时除了USB适配器外,还需要一个5伏特到3.3伏特的调节器或电池组。一旦编程完成,就不再需要USB适配器。用户创建的名为init.lua的文件会在设备启动或重置时自动加载,并且可以是完整的客户端解决方案。该文件还可以加载包含其他程序代码的次级文件。init.lua文件方便进行初始的WiFi连接。
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID", "password")
ip = wifi.sta.getip()
要连接到网站:
conn=net.createConnection(net.TCP)
conn:dns("mywebsite.com",function(conn,ip)
print(ip)
conn:connect(80,ip)
conn:send("GET / HTTP/1.1\r\nHost: mywebsite.com\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
end)
conn:on("receive",function(conn,payload)
print(payload)
end)
在Lua中对I/O引脚进行编程相当简单。很容易将引脚设置为输入或输出,设置其状态,或让其悬空。ESP-8266也有几种型号。有些型号使用印刷电路迹线作为天线,有些使用芯片天线,还有些使用外部天线。所有型号的WiFi范围都非常好。有些型号有更多的I/O引脚,甚至还有模拟到数字和脉宽调制功能。一些公司制作了带有LED或光电池传感器的开发板。
每个ESP-8266将通过HTTP将其数据发送到Azure Web服务,该服务将数据存储在数据库中。然后可以查询数据库中的任何和所有数据,用于视觉状态、图表或其他分析。例如开关或光照水平等参数只是众多可能性中的几个。