今天试了一下用51单片机来发送AT指令的方式实现对ESP8266的配置,我配置的是Client的透传模式,这样就可以直接传输数据了。交流交流~同时本贴我也有一些困惑想问大佬们
图片里面我用了两个单片机,实际上只用了小的那个,大的开发板我只用了上面的一些配件(led和按键),连接按键是因为我把每一条指令和按键关联起来了,只要根据顺序按按键就可以了,这里一定要注意一下,如果你下载了附件准备试验,就必须修改代码(路由器的名称和密码,TCP协议的ip地址和端口号)。
其中路由器的名称和密码就不用我多说了,然后是TCP协议的ip地址和端口号,发送这条指令的前提是你的手机也连接了同一个的路由器,在手机里面进行配置端口号的时候点击链接会有ip地址的显示(附件里面有安卓版的软件),完全从零开始摸的可以先看看我的上一篇帖子~
在写keil的代码过程中我发现一个小困惑,如果我想传送一个字符串到ESP8266里面然后再由单片机接受并处理,我能想到的方式就是:比如字符串“qa”,我在手机上输入qa后点击发送,因为串口的传输方式是8位一个数据段进行传输(一般情况下,ESP8266我想应该也是这种方式进行的传送,因为之前进行调试的时候,串口调试助手的配置就是如此,而且只有这样单片机和ESP8266才能进行通信,一个字符一个字符),单片机的接收方式也就是一个字符一个字符进行,然后再用一个字符数组保存这两个字符‘q’和‘a’,就组成了一个字符串,那么我的困惑就来了,既然传输方式是一个字符一个字符进行传输,那么就应该有间隔,如果这个要传输的字符串有很多个字符,ESP8266从发送第一个字符开始,单片机会有一个SBUF进行保存,如果单片机在处理第一个字符的时候,ESP8266就传送第三个字符了,这样的情况下SBUF里面不就是第三个字符的内容吗,那第二个字符不就被漏掉了吗???在字符串数组里面不就少了一些字符么???这种情况我还没试过,所以只是我的一个猜测,如果有大佬路过请帮我理一理,我想知道是不是会存在这样的问题,还有就是我对ESP8266串口传输到单片机是一个字符一个字符的理解是不是对的?
具体操作步骤和细节我就不多写了,如果是从零开始准备学的伙伴们,你们可以先买一个小的开发板来试一试,建议用ESP-01和ESP-12F,我买的是这两种,淘宝上都有卖,比较便宜,而且也有免费的资料。
完全从零开始,建议先从AT指令开始走,这也是最简单的开发方式,搭配外部的MCU,只把ESP8266当成一个无线传输的工具。
全部资料51hei下载地址:
lot.zip
(14.59 MB, 下载次数: 478)
|