草庐IT

正点原子ESP8266模块的刷固件流程,以及常用AT指令:设置波特率,AP模式下实现合泰单片机与手机互相通信(HT32双串口),降低WiFi的范围(即降低发射功率)

黎临 2023-06-22 原文

         先来一张实物接线图吧,其中TX为发送,RX为发送,两个设备的收发是要交叉对接的,3.3V供电而且8266需要的电流可达500ma,转串口的质量尽量好一点,5v供电有可能损坏8266,但是根据我无数次接错的经验看,短暂的接错没有关系。其他厂家的8266模块虽然有的引脚很多,但是也是只需要这四根引脚就可以实现通信。

        接线完成,测试一下8266是否支持AT指令。打开任意一种串口助手(记得装CH340驱动),正点原子以及大多数ESP8266模组波特率默认115200,发送AT\r\n,如果你勾选发送新行,就不需要\r\n了。(正点原子的8266比较奇怪,修改波特率要使用这句  AT+UART=9600,8,1,0,0\r\n,一般其他WIFI模块我使用的是AT+CIOBAUD=9600\r\n

        如果模块支持AT指令就会回复OK。如果没有回复OK,那么就是出厂的固件被覆盖了,想要继续使用AT指令就需要刷固件,可以跳到文末。

我们先来设置8266的AP模式,也就是使用8266产生一个热点(8266还有STA模式和混合模式,STA模式下8266作为一个设备接入一个设定好的WiFi网络)

AT+RST    /      AT+RESTORE   复位 / 恢复出厂设置(擦除flash)这句为非必要语句

AT+CWMODE=2  设置为AP模式

AT+CWSAP="ESP8266","0123456789",11,3  设置发出的WIFi名称和密码, ch通道是11,ecn加密方式是3。

        此时WiFi已经建立,手机可以接入了,接入后8266会发送两句字符串,第一句包含手机的唯一序列号,第二句会为其分配地址。(8266本机地址为192.168.4.1),有可能大家会发现ESP8266没有这两句,这是因为固件版本不同,出厂的版本好像没有这个功能,这个版本是我特地找毕业在乐鑫的学长拿的,文末会把这个链接发出来。使用AT+GMR可以查询版本号,我的版本如下

        如果手机想要和电脑(单片机)通信,需要设置另外两句AT指令(这两句每次掉电都需要重新设置,上面那些不用),而且要使用手机app,个人用的是第二个TCP连接,比较好用,百度一下就可以找到。(记得先连接上8266发出的WIFI再开TCP连接!!!!)

AT+CIPMUX=1  启用多连接            

AT+CIPSERVER=1,8080   开启服务器模式,端口号8080(端口随意设置)      

 

        我们尝试发送手机发送几个信息,电脑端串口助手效果如下。8266会中转手机的信息给电脑,格式为(\r\n+IPD,设备号,字节长度:有效信息)最前面两个是回车换行,收到汉字是两个字节,可以百度查询该汉字的字符集。

        解决手机向电脑发送,那么电脑向手机发送呢,只需要一句AT指令。前提是手机使用APP接入主机192.168.4.1,(即ESP8266有回复:0,CONNECT)

AT+CIPSEND=0,13 (记得勾选发送新行)向设备0发送13个字节数据

 

         如果是单片机通过8266与手机互相通信,也就是上面你用电脑串口助手对8266发送的指令,变成了单片机的串口对8266发送而已,记得单片机串口与8266波特率要一致。这个截图是题主参加合泰杯做的HT32单片机手机上架考勤系统,包含单片机和手机互相通信的部分,到时候B站会有演示视频,感兴趣的可以搜索。

 

还有两句降低8266的WiFi强度的AT指令。这两句我不太理解但是确实有效。

AT+RFPOWER=0    设置 RF TX Power上限(范围0-82)

AT+RFVDD=1900    根据 VDD33 设置 RF TX Power (1900-3300)

放上我单片机关于ESP8266的部分,delay是必要的,需要给8266执行命令的时间,波特率越高,delay可以越短。

void esp8266_init(void) //初始化esp8266工作模式
{	

	Usart_SendStr(HT_USART1,"AT+CWMODE=2\r\n");							//AP模式
	delay_ms(250);
	Usart_SendStr(HT_USART1,"AT+CWSAP=\"ESP8266\",\"0123456789\",11,3\r\n");    //本处应该为双引号,但与字符串冲突加上转义符
	delay_ms(250);
	Usart_SendStr(HT_USART1,"AT+CIPMUX=1\r\n");					//多连接模式
	delay_ms(250);
	Usart_SendStr(HT_USART1,"AT+CIPSERVER=1,8080\r\n");//设置端口号
	delay_ms(250);	
	Usart_SendStr(HT_USART1,"AT+RFPOWER=0\r\n");			//设置 RF TX Power 上限					0-82
	delay_ms(250);	
	Usart_SendStr(HT_USART1,"AT+RFVDD=1900\r\n");			//根据 VDD33 设置 RF TX Power   1900-3300
	delay_ms(250);	

}


//先前已经通过串口AT指令,设置wifi模块为波特率9600,一次设置即可
//AT+CIPMUX=1\r\n     AT+CIPSERVER=1,8080\r\n是每上电都要开启的

附上一个AT指令表。

        博主的作品以及获得了福建省合泰杯的二等奖了,b站视频链接【高校手机上架考勤系统-哔哩哔哩】 https://b23.tv/zJ5GAIS。

        下面把HT32F52352的代码开源,写的不好,但能跑。(此处滑稽)。里面涉及HT32双串口(ESP8266模块,RFID模块,语音模块),0.96寸OLED屏。

链接:https://pan.baidu.com/s/10FDULTa5_5DP9ZYdSQpVWA 
提取码:tb30

ESP8266刷固件

①接线,如文首

②下载刷固件软件(打开安信可官网-点击WiFi模组-ESP8266-热门问题3-烧录WiFi固件工具)

 

③选择ESP8266下载工具,把页面设置成这样。

 

④最关键的操作,点击START,然后把模块的IO_0接地,这样8266会从工作模式变为下载模式,然后RST触一下地,进行复位,正式进入下载。下载完成后,IO_0悬空,切记切记切记,将RST接地复位一下,进入运行模式,不然它依旧是下载模式。

 

        手要一直接着杜邦线,而且下载很慢,就挺累。建议面包板操作。切记下载完复位一下。

刷固件工具,固件、手机与8266通信的APP链接:(12条消息) WiFi模块的刷固件工具,WiFi模块和手机互相通信的app,一个esp8266固件(AP模式下会识别接入设备的唯一序列号)-嵌入式文档类资源-CSDN文库

有关正点原子ESP8266模块的刷固件流程,以及常用AT指令:设置波特率,AP模式下实现合泰单片机与手机互相通信(HT32双串口),降低WiFi的范围(即降低发射功率)的更多相关文章

  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 - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  3. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  4. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  5. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  6. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

  7. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值: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

  8. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  9. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的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

  10. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

随机推荐