论坛首页 > 创客天地 > 方案应用展 > 可跑C代码的串口屏之6路WIFI外网...
查看:223  |  回复:1
可跑C代码的串口屏之6路WIFI外网可控电子开关(含源码和PCB)
jetbin
4
主题
48
回复
发表于2019-05-29 13:30:14   |  只看该作者 1# 电梯直达

六路WIFI外网IO控制器

一直以来,物联网的控制一直都是电子界发展的一个热点,但是物联网的开发却不是一个简单的工程,而对于只是熟悉单片机这样的硬件开发者来说确实一件很难的事情,原因是除了掌握单片机的开发外,还的掌握互联网服务器的开发、手机端等开发等等,导致难度一再上升,为此我们在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语言完成异步加载,我们通过研究,提出了“状态机队列”这个体系,通过状态机队列将异步的通信变成了好理解的伪同步代码

que_do(通道号,步骤号,超时时间){
    //在此书写通信发送代码
}then{
    //在此书写接收数据处理代码
    //要区分通信结果正常和异常并分别处理
}else{
    //在此书写超时处理代码
}
这样就很容易的把ESP-12S带的各种AT指令集给控制下来了


具体详细操作请下载源代码和工程文件查看;


上电后,系统会自动检测是否有ESP-12S模块,并且检测是否有已经记忆的热点,第一次使用的时候,需要点击“进入”来设置wifi热点

选择“WIFI设置”

选择左侧AP 热点,然后再右侧输入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/

核心部件采购链接:

3.5吋: https://item.szlcsc.com/370959.html

2.8吋:https://item.szlcsc.com/370958.html



  该帖子已被jetbin于2019-05-29 13:35编辑过
DIY玩家:a-diy.cn
回复 收藏
  举报
jetbin
4
主题
48
回复
发表于2019-06-17 10:59:10   |  只看该作者 2#

  点击查看大图

斐讯的智能排插 TC1  因为斐讯关门,服务器关闭,智能排插变成了普通六路排插,直接把模块装上,重新变成了智能排插

DIY玩家:a-diy.cn
  • 温馨提示:标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考:社区发帖规则
  • 您当前输入了 0个文字。还可以输入8000个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

顶部