文章目录
随着物联网智能化的不断发展,越来越多人选择了无线通信设备,比如WiFi、蓝牙、Lora、zigbee、2G/4G模块等物联网无线通信模块,从而可以更好地达到无线控制目的。
1.这款调试助手支持的功能比较齐全,可以自行到手机应用市场下载。

2.串口调试助手用的是正点原子提供的 XCOM 软件。

如下图:
| USB-TTL模块 | WiFi模块 |
|---|---|
| VCC(5V) | VCC(5V) |
| GND | GND |
| RXD | TXD |
| TXD | RXD |
| GND | IO_0 (刷固件) |

模块作为客户端时,那么手机就要选作服务器。
STA 模式,TCP 客户端 配置指令
指令 作用
AT //测试指令
AT+CWMODE=1 //设置模块 WIFI 模式为 STA 模式
AT+RST //重启模块生效
AT+CWJAP="xxxx","xxxxxxxxx" //连接 WIFI热点,路由名字:xxx,密码:12345678
AT+CIPSTART="TCP","192.168.xx.xxx",8088 //建立 TCP 连接到” 192.168.xx.xxx”,8088
AT+CIPMODE=1 //开启透传模式
AT+CIPSEND //开始传输
+++(不加回车) //退出透传模式,发送一次即可(可以发+++后勾上发送新行再发AT测试是否退出透传模式)
将模块通过USB-TTL模块接到电脑后选择串口端口号,波特率要根据模块来选择,后续可以自行用指令来配置合适的波特率。
1.发送AT指令测试模块是否连接成功,才可正常通信。这里要注意的是发指令时是要勾选这个回车换行的(发送新行),不然指令是发送返回失败的提示。

2.发AT+CWMODE=1 设置模块 WIFI 模式为 STA 模式

3.发送复位指令,重启后提示模板的固件版本信息等。

4.连接路由器网络,提示WIFI CONNECTED 表示成功连接上路由器 WiFi了。

5.手机建立TCP服务器,打开软件如下图:点击TCP服务器创建。

6.然后点击底部加号添加一个服务器。

7.填服务器的名称,地址是固定了的,无法修改,端口号随便一个四位数即可,最后点击保存。

8.建好的服务器如下图:点击进去服务器界面。

9.PC端调试助手发AT+CIPSTART=“TCP”,“192.168.31.244”,8088 建立 TCP 连接到”192.168.xx.xxx”,8088,这里的地址和端口必须要和创建的服务器保持一致。

10.PC发送后就可以在手机助手界面看到已连接的提示。

这里要注意手机和模块要在同一个局域网才可以(即手机和模块都连同一个WiFi)。
电脑调试助手分别发送下面的指令:
AT+CIPMODE=1 开启透传模式
AT+CIPSEND 开始透传数据
在串口助手发送数据:



上面的就是串口调试助手和手机网络助手对发数据的过程。如果这个调试通过了就可以用程序发指令收发数据啦,可以用于手机和单片机开发板通信了。
在发+++退出透传模式时,注意退出透传模式时是不需要勾发送新行的,否则就把+++当数据处理了。

模块作为服务器时,那么手机就要选作客户端。
STA 模式,TCP 服务器 配置指令
指令 作用
AT //测试
AT+CWMODE=1 //设置模块 WIFI 模式为 STA 模式
AT+RST //重启模块生效
AT+CWJAP="xxx","xxxxxxx" //连接 WIFI热点,路由名字:xxx,密码:12345678
AT+CIPMUX=1 //开启多连接模式,即可以连接多个客户端
AT+CIPSERVER=1,8086 //开启服务器,端口号为 8086
AT+CIFSR //查询WiFi设备IP,用于客户端
AT+CIPSEND=0,5 //向 ID0 发送 5 字节的数据(多少个字符就对应输入多少,5则表示5个字符)
12345 //模块发送数据,在该模式下,每发一次数据之前都要发一次AT+CIPSEND=0,5指令才可以,接收端则不用每次都发,直接发数据即可。
1.发送AT指令测试模块是否连接成功,才可正常通信。这里要注意的是发指令时是要勾选这个回车换行的(发送新行),不然指令是发送返回失败的提示。

2.发AT+CWMODE=1 设置模块 WIFI 模式为 STA 模式

3.发送复位指令,重启后提示模板的固件版本信息等。

4.连接路由器网络,提示WIFI CONNECTED 表示成功连接上路由器 WiFi了。

5.依次发送下面的指令:
AT+CIPMUX=1 开启多连接模式
AT+CIPSERVER=1,8086 开启服务器,端口号为 8086
AT+CIFSR 查询WiFi设备IP,用于客户端
6.手机建立TCP客户端,打开软件如下图:点击TCP客户端创建。

7.点击底部的加号添加。

8.编辑信息,名字随便起,IP是WiFi模块的IP,端口号是上面指令发的8086。

9.创建好的TCP 客户端如下图:

10.进入客户端界面,正常连接成功是会提示连接成功的,如果没有,可以再次在电脑发送AT+CIPSERVER=1,8086指令就可以提示连接上了。

提示连接成功之后可以正常收发数据了。

在该模式下,电脑发送数据,每发一次数据之前都要发一次AT+CIPSEND=0,5指令才可以正常发送数据,否则提示错误。手机端则不用每次都发,直接发数据即可。

上面的就是串口调试助手和手机网络助手对发数据的过程。
该模式下透传完数据之后不需要发+++退出透传,直接发AT指令就可进入配置模式了。
另外如果不想用手机,可以在电脑用网络调试助手测试,步骤一样的,都是建立服务器的过程,特别要注意的就是网络要在同一个局域网。

STA 模式,TCP 服务器 配置指令
指令 作用
AT //测试
AT+CWMODE=1 //设置模块 WIFI 模式为 STA 模式
AT+RST //重启模块生效
AT+CWJAP="Ryan","12345678" //连接 WIFI热点,路由名字:Ryan,密码:12345678
AT+CIPSTART="TCP","192.168.1.168",8080 //建立 TCP 连接到” 192.168.1.XXX”,8080
AT+CIPMODE=1 //开启透传模式
AT+CIPSEND //开始传输
+++(不加回车) //退出透传模式
对应发相应的指令

开启透传模式后,可以给网络调试助手发送数据了

网络调试助手可以手动串口调试助手发过来的信息了,同时也可以发送数据到串口调试助手

发送+++退出数据透传,不要回车。

这里要注意的是,虽然退出了透传模式,但是网络调试助手还是可以给串口调试助手发消息的,只是串口助手数据发不出而已。
模块作为客户端时,那么手机就要选作服务器。
AP 模式,TCP 客户端 配置指令
指令 作用
AT //测试指令
AT+CWMODE=2 //设置模块 WIFI 模式为 AP 模式
AT+RST //重启模块生效
AT+CWSAP="ATK-ESP8266","12345678",1,4 //AP 参数:SSID 为 ATK-ESP8266,密码为 xxx,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CIPMUX=0 //开启单连接模式
AT+CIFSR //查询模块IP,与客户端建立连接时用到
AT+CIPSTART="TCP","192.168.xx.xxx",8086 //建立 TCP 连接到” 192.168.xx.xxx”,8088
AT+CIPMODE=1 //开启透传模式
AT+CIPSEND //开始传输
+++(不加回车) //退出透传模式,发送一次即可(可以发+++后勾上发送新行再发AT测试是否退出透传模式)
略:可以参考上面的STA的用法,用法一样。
模块作为客户端时,那么手机就要选作服务器。
AP 模式,TCP 服务器 配置指令
指令 作用
AT //测试指令
AT+CWMODE=2 //设置模块 WIFI 模式为 AP 模式
AT+RST //重启模块生效
AT+CWSAP="ATK-ESP8266","12345678",1,4 //AP 参数:SSID 为 ATK-ESP8266,密码为 xxx,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CIPMUX=1 //开启多连接模式,作为服务器最多支持5个客户端连接,id分配顺序是0-4
AT+CIPSERVER=1,8086 //开启 SERVER(服务器)模式,设置端口为 8086(自己定义)
AT+CIFSR //查询模块IP,与客户端建立连接时用到
AT+CIPSEND=0,5 //向 ID0 发送 5 字节数据包
12345 //模块发送数据,在该模式下,每发一次数据之前都要发一次AT+CIPSEND=0,5指令才可以,接收端则不用每次都发,直接发数据即可。
略:可以参考上面的STA的用法,用法一样。
原子云即原子云服务器,是ALIENTEK(正点原子)推出的物联网云服务平台,它可以实现数据的远程监控、转发和管理等功能,在未来也会持续更新更多的功能以满足用户的需求。原子云域名为:loud.alientek.com,端口号为:59666。
原子云服务器地址入口:https://cloud.alientek.com/, 进去之后注册账号和设置登录密码。
WiFi模块连接云服务器之前需要确保该模块是否有刷了对应云服务器的固件才行,如果模块里面没有对应的固件的话是无法连接云服务器的。比如WiFi模块需要连接原子云,那么模块里面就需要有原子云的固件支持才行。
原子云固件目录:

固件烧写步骤可以参考下面章节的固件烧写步骤教程即可。
注意:在连接原子云服务器之前,模块需要设置为 STA 模式,然后模块连接 wifi 路由器,最后使用配置指令AT+ATKCLDSTA 就可以连接原子云服务器了。
指令如下:
WiFi模块连接原子云服务器 配置指令
指令 作用
AT //测试指令
AT+CWMODE=1 //设置模块为 STA 模式
AT+CWJAP="xxx","xxx" //模块连接 Wifi 路由器
AT+ATKCLDSTA="33597475321057190297","12345678" //连接原子云服务器,添加编号和密码
准备工作都完成后就可以进行连接了。
第一步:创建一个原子云服务器的ESP8266 WiFi设备。如下:


新增完成后是这个效果:
此时,可以看到设备的状态是处于断开的。需要等WiFi模块连接成功后才可以提示已连接,并进行消息的收发。

第二步:打开串口调试助手。
依次按照上面的指令步骤发即可。

调试助手回显OK后表示已经连接上了原子云了,服务器这边也可以有提示已连接的字样如下。

接下来就可以通过串口调试助手和原子云进行数据透传了。点击右边的消息收发按钮,弹出消息框,输入。


两边就可以进行数据的收发了。
注意:
1、一段时间不收发数据,服务器是会断开的。
2、突然需要断开服务器,只能把模块的电拔掉,无法用指令断开服务器的。
在之前使用的基础上,烧写固件之前,注 意 I0_0 需 在 模 块 上 电 之 前 连 接 到 GND, 然 后 打 开 固 件 烧 写 软 件ESPFlashDownloadTool.exe 。点击 START,然后重新给模块上电,即可自动烧录。

我双击这个软件的时候,啥反应都没有,于是把整个文件夹拷贝到桌面就可以正常打开了,估计是中文路径太长了导致无法打开。

依次添加这两个固件,路径【正点原子】WIFI模块ATK-ESP8266资料\6,ESP8266相关资料\固件烧写及说明\原子云固件v2.4

选择相关的参数,注意串口号的选择,然后点击START。

重新给模块上电,等待烧写完成

最后提示完成就表示刷好了。
上面是WiFi模块的一些简单测试过程,感觉蛮好玩的,由于时间有限,只是测试了STA模式的,没有时间去测试AP模式了,后续可以抽空的话,再去玩玩。
8266WiFi模块总体使用还是比较简单的,只要发对了指令就可以正常工作在对应的模式下,其它的指令就没有写出来了,具体可以去看指令集。
在后面补充一下,电脑调试助手输入指令是需要选择半角输入法(即是英文输入法),如果是中文输入法的话,会提示指令错误的,特别是双引号,之前学习就踩了这些坑。
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO