原谅我又标题党了。这次说的是用Lua语言做的一个WiFi通信的控制器。主控是大家都听说过的WiFi模块ESP8266,在这个硬件基础上,用Lua写一个Web Server,可以通过手机或PC端的浏览器进行访问控制。那什么是Lua呢?
——Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。
简单来说,Lua就是一种脚本语言。用脚本语言开发一个功能,意味着你不需要限制诸多的庞大编译工具链。换句话说,你不需要编程环境。你可以用你的手机写代码,用你的iPad写代码,而且,好处还在于,其可扩展性。举个例子,怎么实现模块做服务器,可以任意控制模块的动作。想想看,如果你用SDK,准备写多少行?换成Lua在NodeMCU里,比如下面的例子,只有几十行就能搞定。
所以,我觉得像Lua这样的脚本语言,非常像Arduino的思路,把你不熟悉的软件部分替你写好,封装好,等你用的时候直接用简单的语言操作出来就OK了。
下面介绍一下这个项目的一些情况。
项目背景:需要一个能同时控制台式PC和桌面音箱的控制器,PC的控制包括开机、重启,要求无线控制,控制端最好是手机。
方案介绍:本次项目其实已经是该硬件的第二代,第一代是蓝牙串口方案,因为已经使用多年,AC-DC电源部分老化了,所以现在趁着换设备,直接更新一下方案。这次想玩一下WiFi,而且ESP8266最有得玩了,于是WiFi方案就选择了8266模块。进一步,Lua语言有这么多的优点,所以就直接抛弃外置MCU的控制了,让8266自己运行业务场景,这样才是资源的最大化利用,避免浪费。
硬件方案:就像上面提到的,硬件核心只有WiFi模块,外围需要增加一些单元电路,组成能满足业务场景的结构,包括AC-DC电源(220V输入)、LDO、继电器(控制音箱电源)、光耦(控制PC开机和重启)、LED(指示系统工作状态)等等。
关于外壳,考虑到是220V供电,同时又需要控制另外一路220V电源,索性直接做成WiFi插座的形式,PC的控制再引线出来即可。于是淘宝到了这样的WiFi插座外壳:
接下来就是画原理图和PCB。原理很简单,一天发板:
板子回来之后焊接好,大概是这个样子:
给WiFi插座的外壳开一个长方形槽,以便露出XH2.54座,引出控制PC的线缆:
Lua编写:这部分要比做硬件曲折,因为是第一次用,很多不了解的地方,一边摸索一边尝试着写。开发之前先把8266的出厂默认固件换成NodeMCU固件:
开发环境用的是ESPlorer:
Lua写了一天,总算是把基本功能写出来了。写好参数,装好机壳,投入使用。
最后还有个小遗憾,发现PC的重启功能不起作用。开机和重启都是用光耦控制的,极性也试过,还是不行。因为这台电脑面板上自带的重启按钮也不好用,所以有点怀疑是不是主板坏了。因为时间来不及了,没有细看,所以最后只完成了开关音箱和开电脑的功能。
领取专属 10元无门槛券
私享最新 技术干货