草庐IT

ESP8266-01S的AT指令调试与TCP连接

夜半良辰 2023-04-03 原文

AT指令ESP-01S与TCP连接

主要是有两点,一个是将ESP-01S作为客户端(STA)模式,连接好WIFI后与TCP服务器相连,二是将ESP-01S作为服务器接收TCP客户端的连接。


文章目录


硬件

直接上图
这两个都要有的,要不然就只能自己利用USB-TTL串口连接了,比较麻烦。这个连接网上也有教程,这里就不在讲解,因为不管是什么方式,只要能与上位机进行串口通信都可以。


一、ESP-01S作为客户端

首先我在学校里没有路由器,暂时用手机热点代替。固件就用原始的固件就行,先不修改。WIFI名称qqlaoban1,密码12345678。下面进行测试。


首先上电,他会有信息显示。你会看到乱码,这是因为上电时ESP-01S发送信息的波特率为74880,所以会有乱码。然而AT指令所用波特率为115200,所以乱码先不管。而且进行AT调试时,一定先把发送新行选中,否则你每打一个指令,都需要在末尾加一个enter键,比较麻烦。

测试一下

说明没问题。然后将工作模式设为STA。

STA就相当于手机,要连WIFI。AP相当于路由器,其它设备连接它。STA对应1。AP对应2。STA和AP对应3,即两种都能用。

然后如图所示,输入该条指令进行连接,如果连接不上可以AT+RST复位一下,他应该会自动再连接。我遇到问题,就是无法连接,总是显示+CWJAP:3。 然后某一次我复位了一下就好了,可能是凑巧,也可能是ESP-01S的STA的模式问题,后者最有可能。如果连接不上,可以过10分钟左右再连接试试,最好能保持手机热点不断。
这里显示WIFI Connected, WIFI GOT IP,说明已经连接上了。

然后输入上图命令,发现它的IP为192.168.19.245。后面有大用。然后打开上位机网络调试助手(netAssist.exe),网上有,可自行下载。

然后本机地址选择与ESP-01S在同一个局域网下的IP地址。注意,此时电脑也连接的手机热点。如下


协议类型为TCP Server,端口8080。打开之后返回串口调试助手。再继续AT发指令,让ESP-01S进行连接。

可见,发送完AT指令后,显示CONNECT,即连接成功。而网络调试助手也成功显示,有客户端连接。
然后利用ESP-01S进行发送数据。

输完AT+CIPSEND=10(意思发送10个字符)之后,然后它会有提示,让你输入10个字符,输完之后点击发送,他会显示SEND OK。然后看网络调试助手有没有结果。

看,有了。那么PC端给ESP-01S发送,

可见,串口端(ESP-01S)也收到了。那么ESP-01S作为客户端,PC作为服务器端就到此为止,后续可根据此步骤在单片机上编写程序了。

二、EPS-01S作为服务器

首先用串口发送AT指令,设为AP模式,如下。

然后让ESP-01S作为WIFI发射器, WIFI名称为esp01s_123,密码为12345678。

然后电脑看一下有没有这个名称的WIFI。

看一下,有了,如果没有的话请AT+RST一下。连接即可。然后查看一下IP地址,如下,后面有用。

然后AT+CIPMUX=1开启多连接。

然后AT+CIPSERVER=1,8081开启服务器,端口8081


然后可以通过网络调试助手进行连接了。如下图所示

注意串口收到的数据,0,Connected。说明连接号为0,那么ESP-01S发送数据,就需要指定连接号。AP向STA发数据如下。发送连接号为0,10个字符

STA向AP发送数据


总结

那么以上就是大致流程了,具体其它协议,如MQTT等等还有待研究。调试ESP-01S需要有耐心,若已知出错,可以查一下是不是AT指令输错了,如果没有可以把ESP-01S断电一会再试试(玄学),或者看一下哪里没有配置好,都没有的话就重新刷一下固件(万一固件坏了呢),或者AT+RST一下等等。总之,需要耐心。
另外,最好能找到一份完整的AT手册,我这里就没有找到,在各大网站上不断搜寻才勉强完成这次实践。提供一下安信可的官网,上面资料还算全面。
https://docs.ai-thinker.com/esp8266

有关ESP8266-01S的AT指令调试与TCP连接的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  3. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  4. ruby-on-rails - 无法让 rspec、spork 和调试器正常运行 - 2

    GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'

  5. ruby - JetBrains RubyMine 3.2.4 调试器不工作 - 2

    使用Ruby1.9.2运行IDE提示说需要gemruby​​-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall

  6. ruby-on-rails - 如何调试 cucumber 测试? - 2

    我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element

  7. ruby - 导轨 4 : column reference "updated_at" is ambiguous with Postgres - 2

    我正在尝试使用“updated_at”字段的日期时间范围查询数据库。前端在JSON数组中发送查询:["2015-09-0100:00:00","2015-10-0223:00:00"]在RailsController中,我使用以下方法将两个字符串解析为DateTime:start_date=DateTime.parse(params[:date_range_arr][0])end_date=DateTime.parse(params[:date_range_arr][1])#...@events=@events.where('updated_atBETWEEN?AND?,start_d

  8. ruby - Ruby 是否有类似于 Perl 的 "perl -d"的逐步调试器? - 2

    Ruby是否有逐步调试器,类似于Perl的“perl-d”? 最佳答案 ruby-debug(对于ruby1.8),debugger(对于ruby1.9),byebug(对于ruby​​2.0)以及trepanning系列都有一个-x或--trace选项。在调试器内部,命令setlinetrace将打开或关闭线路跟踪。这是themanualforruby-debug原来的答案已经修改,因为数据噪声文章的链接,唉,不再有效了。还添加了ruby​​-debug的后继者 关于ruby-Ruby

  9. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  10. ruby-on-rails - 连接字符串时如何在 <%=%> block 内输出 html_safe? - 2

    考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://

随机推荐