撸啊?Lua!

Posted 硬件研发杂谈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了撸啊?Lua!相关的知识,希望对你有一定的参考价值。

        原谅我又标题党了。这次说的是用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。原理很简单,一天发板:

撸啊?Lua!

撸啊?Lua!


        板子回来之后焊接好,大概是这个样子:

撸啊?Lua!

撸啊?Lua!

        给WiFi插座的外壳开一个长方形槽,以便露出XH2.54座,引出控制PC的线缆:


撸啊?Lua!

撸啊?Lua!


        Lua编写:这部分要比做硬件曲折,因为是第一次用,很多不了解的地方,一边摸索一边尝试着写。开发之前先把8266的出厂默认固件换成NodeMCU固件:

撸啊?Lua!

开发环境用的是ESPlorer:

        Lua写了一天,总算是把基本功能写出来了。写好参数,装好机壳,投入使用。

        最后还有个小遗憾,发现PC的重启功能不起作用。开机和重启都是用光耦控制的,极性也试过,还是不行。因为这台电脑面板上自带的重启按钮也不好用,所以有点怀疑是不是主板坏了。因为时间来不及了,没有细看,所以最后只完成了开关音箱和开电脑的功能。



以上是关于撸啊?Lua!的主要内容,如果未能解决你的问题,请参考以下文章

登录界面的设计

高并发

性能测试基本知识

高并发处理

Lua教程

lua解释器 是啥东西? lua 后面加lua文件名为啥不行?