一直以来,物联网的控制一直都是电子界发展的一个热点,但是物联网的开发却不是一个简单的工程,而对于只是熟悉单片机这样的硬件开发者来说确实一件很难的事情,原因是除了掌握单片机的开发外,还的掌握互联网服务器的开发、手机端等开发等等,导致难度一再上升,为此我们在sHMICtrl的基础上,连接ESP-12S,完成了这个六路控制器,可由外网服务器直接透传内网控制sHMIctrl上的六路扩展IO的电平,同时屏幕上也可以直接控制这六路IO;
大家知道,作为一个物联网控制设备,需要联网,而联网就需要有UI界面输入wifi密码,这个就一下难住了大多数的单片机开发者,常规的方案是借助手机来跨接,但这样又需要单片机开发人员会手机开发,这岂不是天方夜谭(如果作为商品开发,甚至还需要开发android和IOS两个版本),而使用sHMIctrl的方案,只需要单片机开发人员即可完成;用户也很简单,直接在屏幕上选择wifi热点后输入wifi密码即可;
硬件连接:
只需要4根线,就可以把屏幕和ESP-12S连接在一起,为了方便用户,我们特意使用了安信可的原始AT指令固件,因此无需再对ESP-12S进行编程;
通信有两种方式,一种是最简单的同步通信方式,也就是说发送数据后,系统一直在等待数据的到来,这样通信非常好理解,但是由于CPU一直等待数据,导致效率很低,当然对于常规单片机来说,是没有问题的;但是在有界面体系的单片机上,是肯定不行的,因为循环等待数据肯定会导致界面无法响应;
另外一种通信方式就是异步的,一般带有界面的系统都会启用异步方案,所谓异步方案,就是指发送数据后程序继续执行,当收到合适的数据后,自动启动预先设置好的处理代码来完成数据处理;这种方式效率高,但是对于C语言来说实现不好实现(JS、lua、python等比较容易实现);而对于嵌入式系统来说,一般通用的做法是利用线程把异步代码改成同步的代码,但是需要考虑线程的并发性,对于只熟悉单片机C代码用户的开发者都不是优选;
为了更好的利用C语言完成异步加载,我们通过研究,提出了“状态机队列”这个体系,通过状态机队列将异步的通信变成了好理解的伪同步代码
这样就很容易的把ESP-12S带的各种AT指令集给控制下来了
具体详细操作请下载源代码和工程文件查看;
上电后,系统会自动检测是否有ESP-12S模块,并且检测是否有已经记忆的热点,第一次使用的时候,需要点击“进入”来设置wifi热点
这两个界面可以点击控制IO的变化,同时如果外网页面有动作,页面开关也会自动变化
相关资料下载:
原理图与PCB :https://lceda.cn/apachectl/shmictrl-28-wifi
sHMIctrl工程文件:http://shmictrl.com/download/shmictrl-wifictrl.sz
控制页面的PHP代码:http://shmictrl.com/download/shmictrl_wifi_php.zip
说明文档:http://shmictrl.com/shmidoc/
资料下载:https://weidian.com/item.html?itemID=2209655941&spider_token=d72d